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
环境搭建
漏洞复现
首先是Tomcat的安装,在http://archive.apache.org/dist/tomcat/查看所有的tomcat版本。
对tomcat安装包进行解压,进入bin文件夹,sh startup.sh启动tomcat。
浏览器打开
我们以黑盒测试的角度,使用nmap获取靶机信息。
我们查看到系统开放了ajp13服务,端口号8009。
运行python tomcat.py version192.168.174.128,
结果如下:
可以看到成功获取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
当我们看到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" />
<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
2.如果使用了Tomcat AJP协议:
建议将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复,同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将
YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
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操作,后果将不堪设想。