内容提要
CNVD-2020-10487(CVE-2020-1938)是Apache Tomcat的AJP文件读取漏洞,影响Tomcat 6至9的特定版本。攻击者可利用默认开启的8009端口构造恶意请求,读取Web目录文件,甚至配合上传漏洞实现远程代码执行。防护措施包括关闭AJP服务或配置认证凭证。
延伸解读
漏洞本质与影响范围
该漏洞源于Tomcat默认开启的AJP服务(8009端口)存在文件包含缺陷,攻击者可构造恶意请求读取Web目录下的文件。影响范围覆盖Tomcat 6全系及7.0.100、8.5.51、9.0.31之前的版本,这些版本在配置上默认开放AJP,导致风险面较大。
利用条件与风险升级
直接利用仅能读取文件,但若配合上传漏洞,攻击者可上传恶意JSP文件,进而通过AJP漏洞触发执行,实现远程代码执行(RCE)。文中给出的命令执行示例和反弹Shell方法均依赖上传漏洞,说明单独利用该漏洞的破坏力有限,但组合攻击可造成严重危害。
防护要点与版本差异
防护措施分为两类:若无需AJP协议,直接注释server.xml中的Connector配置并重启即可;若需使用,则需配置认证凭证。注意Tomcat 7和9使用secret属性,而Tomcat 8使用requiredSecret属性,配置时需区分版本,且凭证值应设置为高强度的随机字符串。
Q&A
CNVD-2020-10487(CVE-2020-1938)是什么漏洞?
CNVD-2020-10487(CVE-2020-1938)是Apache Tomcat的AJP文件读取漏洞,攻击者可利用默认开启的8009端口构造恶意请求,读取Web目录文件,甚至配合上传漏洞实现远程代码执行。
CVE-2020-1938影响哪些Tomcat版本?
影响Apache Tomcat 6、7.0.100以下版本、8.5.51以下版本、9.0.31以下版本。
如何复现CVE-2020-1938漏洞?
使用poc.py脚本,命令为:python poc.py -p 8009 -f "/WEB-INF/web.xml" 127.0.0.1,其中-p指定端口,-f指定要读取的文件路径。
CVE-2020-1938如何实现远程代码执行?
利用修改后的poc脚本(支持--rce选项),配合上传漏洞,将恶意JSP文件上传到服务器,然后通过AJP协议执行命令,例如使用一句话木马或反弹shell。
如何防护CVE-2020-1938漏洞?
如果不需要使用AJP协议,可直接关闭AJP Connector或将其监听地址改为仅本机localhost;如果需要使用,则需配置认证凭证,Tomcat 7和9使用secret属性,Tomcat 8使用requiredSecret属性。
Tomcat 8和Tomcat 7/9在配置AJP认证凭证时有何不同?
Tomcat 7和9使用secret属性,Tomcat 8使用requiredSecret属性,两者都需要设置一个安全性高的值。