Tomcat Ajp(CVE-2020-1938)

Tomcat Ajp(CVE-2020-1938)

漏洞概况

漏洞影响范围:
Apache Tomcat 6
Apache Tomcat 7-7.0.100
Apache Tomcat 8-8.5.51
Apache Tomcat 9-9.0.31
漏洞分析

Tomcat服务器通过Connector连接器组件与客户端程序建立连接,“连接器”表示接收请求并返回响应的端点。即Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。

Web客户访问Tomcat服务器的两种方式:

两种访问方式

Tomcat默认在其配置文件server.xml中配置了两种Connector:

1.HTTP Connector
2.AJP Connector

HTTP Connector监听8080端口,负责建立HTTP连接。通过浏览器访问Tomcat服务器的Web应用时,使用的就是HTTP Connector组件。

<!-- Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

AJP Connector可以通过AJP协议和另一个web容器进行交互。它监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。AJP连接器可以通过AJP协议和一个web容器进行交互。

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

通过Gh0stcat漏洞,攻击者可以读取Tomcat下部署的所有webapp目录下的任意文件。同时,如果此应用在网站服务中具备上传功能,攻击者也可以先向服务端上传一个含有JSP代码的恶意文件(上传文件可以是任意类型,图片、纯文本文件等),然后利用Gh0stcat进行文件包含,从而达到代码执行的危害。

漏洞复现

  • 利用docker部署环境
docker run -d -p 8080:8080 -p 8009:8009 --name ghostcat duonghuuphuc/tomcat-8.5.32
  • 浏览器访问部署的服务出现如下图片

  • 攻击
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.195.133 -p 8009 -f WEB-INF/web.xml
# -p:指定端口;默认指定为8009
# -f:指定文件;默认指定为WEB-INF/web.xml
#默认路径为/usr/local/tomcat/webapps/ROOT
#使用python2

EXP

https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

参考

1

2

原文地址:https://www.cnblogs.com/Wuser/p/12401498.html