Tomcat漏洞修复纪实

Tomcat漏洞修复纪实

【事件描述】

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

Tomcat漏洞修复纪实_第1张图片
附录:查找安全漏洞地址:
1)https://www.anquanke.com/vul/id/1147247
2)https://tomcat.apache.org/security.html
Tomcat漏洞修复纪实_第2张图片

【漏洞修复评估】

1、漏洞修复补丁官网:
http://tomcat.apache.org/security-7.html
http://tomcat.apache.org/security-8.html
http://tomcat.apache.org/security-9.html
2、漏洞分析结果:
Tomcat漏洞修复纪实_第3张图片
3、中危漏洞评估表:

Tomcat漏洞修复纪实_第4张图片
Tomcat漏洞修复纪实_第5张图片
Tomcat漏洞修复纪实_第6张图片
注: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/#降低cgi应用的httpoxy风险
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/

2、下载Tomcat7.0.94:
地址:https://tomcat.apache.org/
Tomcat漏洞修复纪实_第7张图片
找到对应版本,点击进入,找到镜像网站,进入下载:
镜像站地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.94/bin/
Tomcat漏洞修复纪实_第8张图片
3、上传到系统中:
执行rz命令,选中你的tomcat所下载的版本包,上传
4、进入目录:将源业务系统tomcat7.9更名备份:

mv ./tomcat7.9 /tomcat7.9.old

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
9、将原 /tomcat7.9.old中的conf下的文件全部拷贝到新的conf下:
cp -p ./tomcat7.9.old/conf/* ./tomcat7.9/conf
10、进入新tomcat的bin目录下,执行启动脚本,启动tomcat;
11、输入业务URL验证,至少应该出现:
Tomcat漏洞修复纪实_第9张图片
出现上图是因为我的业务在升级jdk8.0后导致业务异常。
注:因为这是升级版本,这里在原安装目录下替换tomcat并未全新安装,环境变量使用照旧(因路径未变),否则需要修改环境变量为你的实际变量路径:

参考如下:

#编辑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、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
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 重启防火墙,修改生效

你可能感兴趣的:(Linux知识点)