Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Ghostcat-Tomcat-AJP-Exploit-Py3 — 一个完全重构、兼容 Python 3 的 Tomcat Ghostcat(CVE-2020-1938 / CNVD-2020-10487)AJP 本地文件包含漏洞利用脚本 | Kitploit
工具/GitHubGitHub/si1ence90/ghostcat-tomcat-ajp-exploit-py3
漏洞分析漏洞利用Web应用程序漏洞利用信息收集渗透测试学习与教育
GitHubsi1ence90/ghostcat-tomcat-ajp-exploit-py3

Ghostcat-Tomcat-AJP-Exploit-Py3

一个完全重构、兼容 Python 3 的 Tomcat Ghostcat(CVE-2020-1938 / CNVD-2020-10487)AJP 本地文件包含漏洞利用脚本

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
14个月前尚未审核
分享

Tomcat Ghostcat (CVE-2020-1938 / CNVD-2020-10487) 漏洞检测工具

简介

本项目提供了一个用于验证 Apache Tomcat AJP 协议本地文件包含漏洞(俗称 Ghostcat 幽灵猫,CVE-2020-1938 / CNVD-2020-10487)的 Python 验证脚本。

此脚本基于最初流传的 Python 2 版本进行了全面重构与修复,完全兼容 Python 3 环境,修复了 StringIO、base64 编码以及二进制数据与字符串拼接时的兼容性问题,增强了在现代操作系统上的稳定性。

漏洞原理

Apache Tomcat 在处理 AJP(Apache JServ Protocol)协议时,默认开启 8009 端口,且未对传入的请求属性进行严格的安全校验。 攻击者可以通过构造恶意的 AJP 请求,注入 javax.servlet.include.request_uri、javax.servlet.include.path_info 和 javax.servlet.include.servlet_path 等属性:

  1. 任意文件读取 (LFI):欺骗 Tomcat 的 DefaultServlet,读取 Web 应用目录下的任意文件(如 WEB-INF/web.xml、配置文件等)。
  2. 远程代码执行 (RCE):如果目标服务器存在文件上传漏洞,攻击者可先上传包含恶意 JSP 代码的普通文件(如 txt、png 等),随后利用此 AJP 漏洞强制 JspServlet 将该文件作为 JSP 解析编译,从而实现远程命令执行。

注:该漏洞仅支持本地文件包含(LFI),不支持直接的远程文件包含(RFI)。

环境要求

  • Python 3.6+
  • 仅使用 Python 标准库,无需额外安装第三方依赖。

使用方法

命令行语法:

python CNVD-2020-10487-Tomcat-Ajp-lfi.py <目标IP> [-p 目标端口] [-f 目标文件路径]

参数说明:

  • target (必填): 目标主机的 IP 地址或域名。
  • -p, --port (可选): AJP 端口,默认为 8009。
  • -f, --file (可选): 想要读取的目标文件相对路径,默认为 WEB-INF/web.xml。

示例用法:

  1. 基础检测(读取默认的 web.xml):

    python CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1
    
  2. 指定端口和文件(读取自定义配置文件):

    python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.100 -p 8009 -f WEB-INF/classes/application.properties
    

修复与防御

如果您的系统受到此漏洞影响,建议立即采取以下防护措施:

  1. 升级 Tomcat:更新至官方发布的安全版本(9.0.31, 8.5.51, 7.0.100 或更高版本)。
  2. 禁用 AJP 服务:如果业务环境无需通过 AJP 协议进行反向代理集群通信,建议直接在 conf/server.xml 中注释或删除 <Connector port="8009" protocol="AJP/1.3" ... /> 配置。
  3. 强化 AJP 认证:如果必须开启 AJP 服务,请为 AJP Connector 添加 requiredSecret(Tomcat 8.5.51/9.0.31 及以后版本为 secret)属性以强制进行认证。

免责声明

本脚本仅供网络安全研究、教育和企业内部合规的安全审计使用。 请勿使用该脚本对未授权的目标进行非法探测或攻击。使用者在使用该脚本时必须遵守当地法律法规,因使用不当或非法使用造成的任何后果,由使用者自行承担。

下载工具