一、漏洞情况分析
Tomcat是Apache软件基金会Jakarta 项目中的一个核心项目,作为目前比较流行的Web应用服务器,深受Java爱好者的喜爱,并得到了部分软件开发商的认可。Tomcat服务器是一个免费的开放源代码的Web应用服务器,被普遍使用在轻量级Web应用服务的构架中。
2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞。Tomcat AJP协议由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行。
CNVD对该漏洞的综合评级为“高危”。
二、漏洞影响范围漏洞影响的产品版本包括:
Tomcat 6
Tomcat 7
Tomcat 8
Tomcat 9
三、漏洞复现1.环境搭建
tomcat版本:tomcat-8.5.32
tomcat搭建使用docker进行部署:
# 搜搜tomcat-8.5.32镜像
# 拉取tomcat-8.5.32镜像docker pull duonghuuphuc/tomcat-8.5.32
# 查看tomcat-8.5.32镜像docker images
# 启动tomcat-8.5.32镜像docker run -d -p 8080:8080 -p 8009:8009 duonghuuphuc/tomcat-8.5.32
# 查看容器运行状况docker ps
# 使用nmap探测服务器开放端口sudo nmap 192.168.126.215
访问tomcat页面
四、漏洞利用
1.POC
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi/
使用该POC读取WEB-INF/web.xml
读取ROOT目录下build.xml
我们可以看到读取WEB-INF/web.xml和build.xml均成功 三、漏洞处置建议Apache官方已经发布9.0.31、8.5.51及7.0.100对此漏洞进行修复
1. 如未使用Tomcat AJP协议: 如果没有使用AJP协议,可以直接将tomcat升级到官方发布的新版本来修复本漏洞如果无法进行升级版本或进程更新,可以AJP协议,或修改AJP协议的监听端口
具体操作:
(1)编辑 /conf/server.xml,找到如下行( 为 Tomcat 的工作目录):
(2)将此行注释掉(也可删掉该行):
(3)保存后需重新启动,规则方可生效。
2. 如果使用了Tomcat AJP协议:如果使用了AJP协议,建议将tomcat版本升级到官方发布的对应版本的升级版,同时为AJPConnector配置secret来这只AJP的凭证。
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>
如果使用的是版本较老的或是无法更新的版本,可以为AJPConnector配置requiredSecret设置AJP的凭证
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET" />
凭证的设置建议将其设置为一个不被猜解出的值