项目标题与描述
Apache Tomcat CVE-2025-24813 PoC检测工具
本项目是一个专门用于检测Apache Tomcat服务器CVE-2025-24813漏洞的概念验证(PoC)工具。该工具通过非侵入式的方式,对目标Tomcat服务器进行安全检查,包括版本识别、HTTP PUT权限测试和会话信息收集,所有操作均记录到详细的日志报告中。
功能特性
- CSV批量处理:支持从CSV文件批量读取目标主机(需要包含"Hostname"和"IP address"两列)
- 非侵入式检测:执行安全检测而不对目标系统造成破坏
- 三重安全检查 :
- 从HTTP "Server"头中提取Tomcat版本信息
- 测试DefaultServlet的写权限(上传测试文件后立即删除)
- 获取目标服务器的会话ID
- 完整日志记录:所有操作都带有时间戳和严重级别记录到控制台和报告文件
- SSL支持:可处理HTTPS连接(默认禁用SSL警告用于测试)
安装指南
系统要求
- Python 3.x
- 网络连接权限
- 对目标服务器的网络访问权限
依赖安装
bash
pip install requests
安装步骤
- 克隆或下载项目文件到本地
- 确保Python环境已安装
- 安装所需的requests库
- 准备包含目标信息的CSV文件
使用说明
基础使用
- 准备CSV文件(如
targets.csv),格式如下:
csv
Hostname,IP address
TestServer,192.168.56.101
AnotherServer,192.168.56.102
- 运行检测脚本:
bash
python3 cve_2025_24813_poc.py --csv targets.csv
输出说明
- 控制台实时显示检测进度和结果
- 在当前工作目录生成
CVE_2025_24813_report.txt报告文件 - 报告包含时间戳、检测目标和详细结果
核心代码
1. 报告初始化模块
python
def init_report():
"""Initializes the report file in the current working directory."""
global REPORT_FILE
REPORT_FILE = os.path.join(os.getcwd(), "CVE_2025_24813_report.txt")
try:
with open(REPORT_FILE, 'w') as f:
f.write("CVE-2025-24813 PoC Check Report\n")
f.write(f"Start Time: {datetime.now()}\n")
f.write("=" * 60 + "\n")
log_message("INFO", "Report initialized.")
except Exception as e:
log_message("ERROR", f"Failed to initialize report file '{REPORT_FILE}': {e}")
2. 日志记录模块
python
def log_message(level, message):
"""
Logs a message with a timestamp and severity to the report file and prints it to the console.
"""
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
formatted = f"{timestamp} - {level} - {message}"
print(f"{level}: {message}")
try:
with open(REPORT_FILE, 'a') as f:
f.write(formatted + "\n")
except Exception as e:
pass
3. 主脚本结构
python
#!/usr/bin/env python3
"""
PoC for CVE-2025-24813 (HTTP-based Checks Only) with CSV Input and Incremental Reporting
This script accepts a CSV file (with columns "Hostname" and "IP address") from the current working directory.
For each target, it performs the following non-intrusive checks:
1. Extracts the Tomcat version from the HTTP "Server" header.
2. Attempts an HTTP PUT on "CVE-2025-24813-check.txt" (with content "ThreatOPS was here --> MichaelFry@livenation.com")
to determine if the DefaultServlet is write-enabled, then deletes the file.
3. Retrieves a session ID from the target.
All actions are logged (with timestamps and severity levels) to the console and a report file in the CWD.
"""
4. 安全配置
python
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
# Disable SSL warnings for testing purposes
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
该代码设计为模块化结构,核心功能包括报告生成、日志记录和HTTP请求处理,确保检测过程的安全性和可追溯性。 6HFtX5dABrKlqXeO5PUv/xT3pvZhDSsm+vWSaxtXdTeO7ytUMNgVPToBhhL/tOZRxYBBwPndIbnaQlVbqmBmGQ==