当前位置:   article > 正文

Tomcat漏洞修复纪实_cve-2016-5388

cve-2016-5388

一、事件描述

最新集团扫描出一堆安全漏洞,要求限期整改,现场环境实际用的时候Apache Tomcat/7.0.94,漏洞见下图:

在这里插入图片描述
附录:查找安全漏洞地址:
1)https://www.anquanke.com/vul/id/1147247
2)https://tomcat.apache.org/security.html
在这里插入图片描述

二、漏洞修复评估

1、漏洞修复补丁官网:

http://tomcat.apache.org/security-7.html
http://tomcat.apache.org/security-8.html
http://tomcat.apache.org/security-9.html

2、漏洞分析结果:
在这里插入图片描述
3、中危漏洞评估表:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
:Apache Tomcat httpoxy CVE-2016–5195):

ApacheApacheTomcat是美国阿帕奇(Apache)软件基金会下属的Jakarta项目的一款轻量级Web应用服务器,它主要用于开发和调试JSP程序,适用于中小型系统。ApacheTomcat8.5.4及之前的版本中存在安全漏洞,该漏洞源于程序没有解决RFC3875模式下的命名空间冲突。程序没有正确处理来自HTTP_PROXY环境变量中不可信客户端数据应用程序。远程攻击者借助HTTP请求中特制的Proxyheader消息利用该漏洞实施中间人攻击,指引服务器发送连接到任意主机。httpoxy是一类影响到运行在CGI或者类CGI环境中应用的漏洞,它由一个简单的”命名空间冲突”导致。

  1. RFC3875(CGI)标准,会把请求中的Header加上HTTP_前缀,注册为环境变量。
  2. 将请求中的HTTP Proxy的header传递给环境变量HTTP_PROXY
  3. HTTP_PROXY是一个很常用的环境变量,被用来配置对外代理(outgoing proxy),这将导致远程利用漏洞。如果正在运行PHP或者CGI,你应该限制Proxy的header。HTTP_PROXY可能会被用来制造”中间人攻击”。下面的一些web服务器、web框架和编程语言受到影响:

Golang (CVE-2016-5386)
PHP(CVE-2016-5385)
HHVM (CVE-2016-1000109)
Python (CVE-2016-1000110)
Apache Tomcat (CVE-2016-5388)
web服务器 – Apache(CVE-2016-5387)、Nginx、Varnish、Httpoxy
受到影响的发行版 – RHEL、CentOS等

处理方法参考:

1)https://legolasng.github.io/2016/07/17/http-proxy-cgi-vulnerability/#%E9%99%8D%E4%BD%8Ecgi%E5%BA%94%E7%94%A8%E7%9A%84httpoxy%E9%A3%8E%E9%99%A9
2)https://www.cnblogs.com/yuzly/p/11202398.html这里说的比较详细,可惜是windows的,大家可以参考;

三、漏洞修复处理

1.备份业务系统tomcat文件:
进入Tomcat安装目录,现场环境安装在home下,一般安装在/usr/local/下:

tar -czvf tomcat7.92.bak.tar.gz ./tomcat7.9/* --exclude ./tomcat7.9/logs/ -C /home/vcloud/
  • 1

2、下载Tomcat 7.0.94:

地址:https://tomcat.apache.org/
在这里插入图片描述
找到对应版本,点击进入,找到镜像网站,进入下载:
镜像站地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.94/bin/

在这里插入图片描述
3、上传到系统中:

执行rz命令,选中你的tomcat所下载的版本包,上传

4、进入目录:将源业务系统tomcat7.9更名备份:

mv ./tomcat7.9 /tomcat7.9.old
  • 1

5、将新版tomcat7.0.94解压
6.将解压后的apache-tomat7.0.94xxx更名为./tomcat7.9
7、进入./tomcat7.9,删除tomcat自带的示例和文档:

cd ./tomcat7.9/webapps
rm -rf host-manager
rm -rf examples
rm -rf manager/
rm -rf docs

8、将原 /tomcat7.9.old中的webapps下的文件全部拷贝到新的webapps下:

cp -p ./tomcat7.9.old/webapps/*  ./tomcat7.9/webapps  
  • 1

9、将原 /tomcat7.9.old中的conf下的文件全部拷贝到新的conf下:

cp -p ./tomcat7.9.old/conf/*  ./tomcat7.9/conf
  • 1

10、进入新tomcat的bin目录下,执行启动脚本,启动tomcat;

11、输入业务URL验证,至少应该出现:
在这里插入图片描述
出现上图是因为我的业务在升级jdk8.0后导致业务异常。

**注:**因为这是升级版本,这里在原安装目录下替换tomcat并未全新安装,环境变量使用照旧(因路径未变),否则需要修改环境变量为你的实际变量路径;

12、如果你要再一台主机实现多tomcat实例,需要比纳基conf/server.xml文件,修改server的端口和connector的端口为不同,然后启动相应的tomcat实例即可。对应的nginx中upstream中添加相应的请求转发。

参考如下:

#编辑catalina.sh,追加以下文本行
sed -i -e '/#!\/bin\/sh/a\export CATALINA_HOME=\/usr\/local\/tomcat7' /usr/local/tomcat7/bin/catalina.sh
sed -i -e '/#!\/bin\/sh/a\export TOMCAT_HOME=\/usr\/local\/tomcat7' /usr/local/tomcat7/bin/catalina.sh
sed -i -e '/#!\/bin\/sh/a\JAVA_HOME=\/usr\/java\/jdk1.7.0_80' /usr/local/tomcat7/bin/catalina.sh
sed -i -e '/# OS specific support.  $var _must_ be set to either true or false./a\JAVA_OPTS="-Xms1024m -Xmx2048m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m"' /usr/local/tomcat7/bin/catalina.sh
sed -i -e 's/redirectPort=\"8443\"/redirectPort=\"8443\" URIEncoding=\"UTF-8\"/g'  /usr/local/tomcat7/conf/server.xml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

四、常用命令回顾

1、ps -ef|grep tomcat #查看指定应用的进程
2、tail -100f catalina.out #查看tomcat运行的日志
cat catalina-2015-09-20.log | grep '2015-09-20 18:50:15' #查看固定时间日志
3、sh bin/startup.sh #重启tomcat
4、sh bin/shutdown.sh #关闭toomcat
5、ln -s /home/tomcat/ /usr/locale/tomcat如果要在usr下安装建立软连接
6、解压命令如下:

tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2   //解压 tar.bz2
tar –xZvf file.tar.Z   //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
tar -xzf apache-tomcat-7.0.79.tar.gz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

7、修改iptables规则:

#开启端口(以443端口为例)
/sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT   写入修改
/etc/init.d/iptables save   保存修改
service iptables restart    重启防火墙,修改生效
#关闭端口(以80端口为例)
/sbin/iptables -I INPUT -p tcp --dport 443 -j DROP   写入修改
/etc/init.d/iptables save   保存修改
service iptables restart    重启防火墙,修改生效
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

五、容器内tomcat版本升级

因某次容器涉及tomcat多项漏洞,现场版本:7.0.52(tomcat-catalina-7.0.52.jar),官网建议升级到 upgrade to 8.5.x 或最新版,下载地址:https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.98/bin/;注:Tomcat7 和 Tomcat8的工厂类名称发生了变化,升级到8.5后要对应修改下conf目录下context.xml文件factory改为:factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory",另相关经验表明:tomcat7中一些参数名在Tomcat8中也发生了变化,比如:maxActive需改写为maxTotal,maxWait需改写为maxWaitMillis等;Tomcat8里不再支持JapperListener类,请注释掉server.xml中的相关项;

在这里插入图片描述
1)升级前注意

Tomcat版本与JDK版本之间的兼容关系:http://tomcat.apache.org/whichversion.html
Tomcat7升级到8注意:https://tomcat.apache.org/migration-8.html
7升级到8后,会存在后端兼容性问题,Tomcat 8.0.x 依赖Java 7,更多配置不同参看:configuration file differences

#版本确认
cat /usr/share/maven-repo/org/apache/tomcat/tomcat-catalina/7.0.52/tomcat-catalina-7.0.52.pom |grep version|head -3

<?xml version='1.0' encoding='UTF-8'?>
	<version>7.0.52</version>
……

#备份配置

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/741310
推荐阅读
相关标签
  

闽ICP备14008679号