CNVD-2020-10487(CVE-2020-1938)tomcat ajp 文件读取漏洞

CNVD-2020-10487(CVE-2020-1938)tomcat ajp 文件读取漏洞

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

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属性,两者都需要设置一个安全性高的值。

🏷️

标签

➡️

继续阅读