Tomcat文件包含漏洞CNVD-2020-1048

2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2020-1938)。攻击者利用该漏洞,可在未授权的情况下远程读取特定目录下的任意文件。厂商已发布新版本完成漏洞修复。

0x01、漏洞情况分析

Tomcat是Apache软件基金会Jakarta 项目中的一个核心项目,作为目前比较流行的Web应用服务器,深受Java爱好者的喜爱,并得到了部分软件开发商的认可。Tomcat服务器是一个免费的开放源代码的Web应用服务器,被普遍使用在轻量级Web应用服务的构架中。

2020年1月6日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的Apache Tomcat文件包含漏洞。Tomcat AJP协议由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行。

CNVD对该漏洞的综合评级为“高危”。

0x02、漏洞影响范围

漏洞影响的产品版本包括:
  • Apache Tomcat 6
  • Apache Tomcat 7 < 7.0.100
  • Apache Tomcat 8 < 8.5.51
  • Apache Tomcat 9 < 9.0.31

CNVD平台对Apache Tomcat AJP协议在我国境内的分布情况进行统计,结果显示我国境内的IP数量约为55.5万,通过技术检测发现我国境内共有43197台服务器受此漏洞影响,影响比例约为7.8%。

0x03、漏洞复现环境搭建

有两种方法可以迅速搭建漏洞复现环境,

1、通过docker拉取tomcat环境

docker search tomcat-8.5.32
docker pull duonghuuphuc/tomcat-8.5.32
docker images
docker run -d -p 8080:8080 -p 8009:8009 --name ghostcat duonghuuphuc/tomcat-8.5.32

附:进入docker容器内部命令

docker exec -it ghostcat /bin/bash

2、在tomcat官网下载(https://tomcat.apache.org/

然后打开startup.bat

出现上面画面则说明tomcat启动完毕。

如果无法启动的话,很可能是java环境未配置好,在setclasspath.bat中添加我框选的两行java路径,其中具体的jre路径和jdk路径以你自己的实际存放路径为准。

0x04、漏洞利用

批量检测Poc地址如下:

https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner

1、将需要扫描的域名/ip放于 ip.txt

ip.txt中不需要加协议,比如

127.0.0.1
www.baidu.com

2、python threading-find-port-8009.py

将会生成8009.txt,作用为扫描ip.txt中域名/ip找出开放8009端口

3、python threading-CNVD-2020-10487-Tomcat-Ajp-lfi.py

从8009.txt中筛选出符合漏洞的url,放置于vul.txt中 最后vul.txt中存在的域名即为含有漏洞的域名.

0x05、漏洞处置建议

目前,Apache官方已发布9.0.31、8.5.51及7.0.100版本对此漏洞进行修复,CNVD建议用户尽快升级新版本或采取临时缓解措施:

1. 如未使用Tomcat AJP协议:

如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51或 7.0.100 版本进行漏洞修复。

如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。

具体操作:

(1)编辑 /conf/server.xml,找到如下行( 为 Tomcat 的工作目录):

<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″ />

(2)将此行注释掉(也可删掉该行):

<!–<Connectorport=”8009″ protocol=”AJP/1.3″redirectPort=”8443″ />–>

(3)保存后需重新启动,规则方可生效。

2、如果使用了Tomcat AJP协议

建议将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复,同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):

<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″address=”YOUR_TOMCAT_IP_ADDRESS” secret=”YOUR_TOMCAT_AJP_SECRET”/>

如无法立即进行版本更新、或者是更老版本的用户,建议为AJPConnector配置requiredSecret来设置AJP协议认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):

<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″address=”YOUR_TOMCAT_IP_ADDRESS”requiredSecret=”YOUR_TOMCAT_AJP_SECRET” />

参考:

Apache Tomcat存在文件包含漏洞CNVD-2020-1048/CVE-2020-1938介绍

Tomcat文件包含漏洞CNVD-2020-1048批量检测

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注