vlambda博客
学习文章列表

Tomcat幽灵猫任意文件读取漏洞复现




漏洞描述


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

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

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






影响范围


Apache Tomcat 9.x < 9.0.31

Apache Tomcat 8.x < 8.5.51

Apache Tomcat 7.x < 7.0.100

Apache Tomcat 6.x





环境搭建


Kali Linux IP:192.168.174.128




漏洞复现


首先是Tomcat的安装,在http://archive.apache.org/dist/tomcat/查看所有的tomcat版本。

这次我选择的是存在幽灵猫漏洞的最后一个版本tomcat9.0.30,选择linux版本进行下载。

Tomcat幽灵猫任意文件读取漏洞复现

对tomcat安装包进行解压,进入bin文件夹,sh startup.sh启动tomcat。

Tomcat幽灵猫任意文件读取漏洞复现

浏览器打开

http://localhost:8080,看到熟悉的tom猫就证明tomcat启动成功。

Tomcat幽灵猫任意文件读取漏洞复现

我们以黑盒测试的角度,使用nmap获取靶机信息。

Tomcat幽灵猫任意文件读取漏洞复现

我们查看到系统开放了ajp13服务,端口号8009。

接下来试着使用tomcat脚本获取版本信息,
脚本地址:
http://github.com/hypn0s/AJPy.git。

运行python tomcat.py version192.168.174.128,

结果如下:

Tomcat幽灵猫任意文件读取漏洞复现

可以看到成功获取tomcat版本号为9.0.30,存在CVE-2020-1938的漏洞。

在tomcat webapps/ROOT/下新建了cve-2020-1938.txt写入内容,方便用来验证。

运行python cve-2020-1938_exp.py-p8009-f/cve-2020-1938.txt 192.168.174.128

结果如下:

Tomcat幽灵猫任意文件读取漏洞复现

当我们看到Hello world!说明我们成功利用cve-2020-1938漏洞获取了任意文件。






漏洞处置建议



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

1.如未使用Tomcat AJP协议:

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

具体操作: 

(1)编辑

<CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE>为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" />



参考连接

CNVD国家信息安全漏洞共享平台:

https://www.cnvd.org.cn/webinfo/show/5415

当Apache tomcat漏洞可以获取webapps下任意的文件,影响变得十分巨大,webapps下各类配置和程序包变得透明,各种重要的配置包括数据库密码随之曝光,配和网页进行文件注入,很容易进行RCE操作,后果将不堪设想。

Tomcat幽灵猫任意文件读取漏洞复现
长按上方二维码关注我们吧!