Aapache Tomcat AJP 文件包含漏洞(CVE-2020-1938)【项目中遇到过】
1. 背景简述
java是目前WEB开发中主流的编程语言,而Tomcat是当前流行的Java中间件服务器之一。
Ghostcat(幽灵猫)是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害
Tomcat AJP Connector是什么?
Tomcat Connector是Tomcat与外部连接的通道,他使用Catalina能够接受来自外部的请求,传递给对应的web应用程序处理,并返回请求的响应结果。
默认情况下,Tomcat配置了两个Connector,它们分别是HTTP Connector和AJP Connector
HTTP Connector:用于处理 HTTP 协议的请求(HTTP/1.1),默认监听地址为 0.0.0.0:8080
AJP Connector:用于处理 AJP 协议的请求(AJP/1.3),默认监听地址为 0.0.0.0:8009
HTTP Connector就是用来提供我们经常用到的HTTP Web服务。而AJP Connector,他使用的是AJP协议(Apache Jserv Protocol),AJP协议可以理解为HTTP协议的二进制性能优化版本,它能降低HTTP请求的处理成本,因此主要在需要集群、反向代理的场景被使用。
2. 漏洞危害
通过Ghostcat漏洞,攻击者可以读取Tomcat所有webapp目录下的任意文件。
此外如果网站应用提供文件上传的功能,攻击者可以先向服务器上传一个内容含有恶意JSP脚本的文件(上传的文件本身可以是任意类型的文件,比如图片、纯文本文件等),然后利用Ghostcat漏洞进行文件包含,从而达到代码执行的危害。
3. 影响版本
Apache Tomcat 9.x < 9.0.31
Apache Tomcat 8.x < 8.5.51
Apache Tomcat 7.x < 7.0.100
Apache Tomcat 6.x
4. 利用条件
对于处于漏洞影响版本范围内的Tomcat而言,若其开启AJP Connector并且攻击者能够访问AJP Connector服务端口的情况下,即存在被Ghostcat漏洞利用的风险。
***注意 Tomcat AJP Connector 默认配置下即为开启状态,且监听在 0.0.0.0:8009 ***
5. 复现过程
- xray复现
xray servicescan --target 10.10.10.152:8009 - 使用msf
auxiliary/admin/http/tomcat_ghostcat - 使用脚本
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py -p 8009 -f WEB-INF/web.xml 10.10.10.152