前言
漏洞原理:
Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938),该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。
影响版本:
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
漏洞复现
使用docker环境部署
docker search tomcat-8.5.32 #搜索镜像
docker pull duonghuuphuc/tomcat-8.5.32 #拉取镜像
docker images #查看镜像
docker run -d -p 8080:8080 -p 8009:8009 duonghuuphuc/tomcat-8.5.32 #运行镜像并映射端口
docker ps -a #查看进程
检测工具xray:https://github.com/chaitin/xray
检测命令:
./xray_linux_amd64 servicescan --target 127.0.0.1:8009
漏洞修复
1.版本升级
更新到以下版本号可以修复该漏洞:
Apache Tomcat 7.0.100
Apache Tomcat 8.5.51
Apache Tomcat 9.0.31
2.无法升级版本,可以关闭AJP Connector
- 找到tomcat目录下的
/conf/server.xml
文件,打开定位到
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
- 将其注释掉
<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
- 重启tomcat服务
3.设置AJP认证凭证
使用tomcat 7和tomcat 9的配置为
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="AJP_SECRET"/>
使用tomcat 8的配置为
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="AJP_SECRET" />
参考文章
https://www.cnblogs.com/ethtool/p/12455139.html
http://blog.nsfocus.net/cve-2020-1938/