CVE-2020-1938 Apache-Tomcat-Ajp漏洞复现
目录
一、概述
1.1漏洞编号:CVE-2020-1938
1.2危险等级:高
1.3描述
2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布关于Apache Tomcat的安全公告,Apache Tomcat文件包含漏洞是由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。
二、影响的版本
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
三、漏洞分析
通过对源码的分析,发现Tomcat在处理ajp协议时存在漏洞,可通过调用request.setAttribute为Tomcat设置任意request属性。复现发现Tomcat ajp协议存在web目录下任意文件读取漏洞以及JSP文件包含漏洞。
当ajp URI设置为非jsp路径时,Tomcat会调用DefaultServlet处理,此时会导致web目录任意文件读取漏洞。
当ajp URI设置为jsp路径时,Tomcat会调用JspServlet处理,此时会导致JSP文件包含漏洞
四、复现步骤
环境介绍
目标机win7(IP):192.168.91.132
攻击机kali(IP):192.168.91.128
Tomcat版本:8.5.5
注:顺带附上Tomcat各个版本下载链接:http://archive.apache.org/dist/tomcat/
4.1查看tomcat是否部署
4.2主机发现
4.3扫描端口(8009开放)
4.4下载读取文件的poc
Poc链接:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
4.5输入参数并执行
可以看到已经成功读取了我们的文件信息
五、防御措施
1.禁用AJP协议,在tomcat安装路径中找到/conf/server.xml文件,删除或注释下面这行代码:<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
2.升级到tomcat最新版本,
3.配置secret来设置AJP协议的认证凭证,如:<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>
六、危害
攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行