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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/n0n4m3x41/cve-2026-22738-poc
漏洞分析漏洞利用Web应用程序漏洞利用论文与研究学习与教育
GitHubn0n4m3x41/cve-2026-22738-poc

CVE-2026-22738-POC

CVE-2026-22738 的概念验证漏洞利用程序,该漏洞是 Spring AI SimpleVectorStore 中的一个严重 SpEL 注入远程代码执行漏洞,用于演示未经身份验证的操作系统命令执行。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-22738 — Spring AI SimpleVectorStore 中的 SpEL 注入 RCE

CVSS CWE Status

通过 SimpleVectorStore.similaritySearch() 中的 Spring 表达式语言(SpEL)注入实现未认证远程代码执行。

受影响版本

| 参数 | 默认值 | 说明 | |---|---|---| | `--target` | `http://localhost:8082` | 目标易受攻击应用的基础 URL | | `--wait` | 关闭 | 轮询直至目标就绪(在 `docker compose up` 后使用) |
组件受影响版本已修复版本
org.springframework.ai:spring-ai-core1.0.0 – 1.0.41.0.5
org.springframework.ai:spring-ai-core1.1.0-M1 – 1.1.31.1.4

修复提交: ba9220b22383e430d5f801ce8e4fa01cf9e75f29


漏洞详情

SimpleVectorStore.similaritySearch() 会将调用方提供的过滤器键名原样传入由 StandardEvaluationContext 求值的 SpEL 模板中。由于 StandardEvaluationContext 暴露了完整的 JVM 反射 API,攻击者可以将以下内容注入过滤器键中,从而实现未认证的 OS 命令执行:

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec(...)

绕过细节

直接注入无法开箱即用——需要绕过两个解析器特性:

  1. 单引号剥离 — 以 ' 开头的键会被视为带引号的字符串;外层引号会被剥离,从而破坏载荷。
  2. 双引号包裹 — 将载荷包裹在 "..." 中会导致解析器剥离外层双引号,使内部 SpEL 表达式作为键值原样保留,并传递给 #metadata['<KEY>']。
  3. 空元数据键 — 在注入表达式的两侧使用 #metadata[''](而非未定义变量),可避免 unknown variable 的 SpEL 错误,同时仍能触发 exec()。

最终求值后的表达式形式如下:

root@kitploit:~
#metadata[''] + T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/bash','-c','<cmd>'}) + #metadata[''] == 'x'

成功标志

HTTP 响应体中将包含 EL1030E — SpEL 运行时错误:

root@kitploit:~
operator ADD not supported between null and java.lang.ProcessImpl

该错误在 exec() 返回之后触发,可确认 OS 级命令执行已成功,无需依赖带外回调。


使用方法

前置条件:

root@kitploit:~
pip install requests

运行漏洞利用程序:

root@kitploit:~
python3 exploit.py [--target http://localhost:8082] [--wait]
image

Docker Desktop(macOS/Windows): 回调载荷请使用 host.docker.internal 而非 127.0.0.1。


漏洞利用步骤

该 PoC 按顺序执行五个步骤:

步骤说明
1基线检查 — 确认端点可访问并返回种子数据
2盲 SpEL 探测 — 通过 T(java.lang.System) 读取 java.version 以确认注入点
3RCE:在容器内执行 touch /tmp/pwned_cve_2026_22738
4RCE:将 id / uname / hostname 的输出写入 /tmp/rce_proof.txt
5通过 docker exec 验证 — 打印证明文件内容

免责声明

本概念验证(PoC)仅供教育和授权安全测试之用。请勿将其用于您不拥有或未经明确书面许可进行测试的系统。

下载工具