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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-55993 — CVE-2026-55993(Apache Camel camel-atmosphere-websocket)的 PoC 复现器:WebSocket 消费者会将连接查询参数未经过滤地复制到 Exchange 上,因此注入的 CamelHttpUri 会驱动服务器端请求(SSRF),并泄露已解析的属性占位符。已在 4.14.8/4.18.3/4.21.0 中修复。 | Kitploit
工具/GitHubGitHub/oscerd/cve-2026-55993
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试API 安全
GitHuboscerd/cve-2026-55993

CVE-2026-55993

CVE-2026-55993(Apache Camel camel-atmosphere-websocket)的 PoC 复现器:WebSocket 消费者会将连接查询参数未经过滤地复制到 Exchange 上,因此注入的 CamelHttpUri 会驱动服务器端请求(SSRF),并泄露已解析的属性占位符。已在 4.14.8/4.18.3/4.21.0 中修复。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

camel-atmosphere-websocket 消息头注入复现工具 (CVE-2026-55993)

本项目演示了 Apache Camel 的 camel-atmosphere-websocket 组件中的一个消息头注入漏洞,编号为 CVE-2026-55993。WebSocket 消费者将连接的查询参数复制到 Camel Exchange 上,未使用任何 HeaderFilterStrategy,因此客户端只需将这些参数添加到 WebSocket URL 的查询字符串中,即可注入 Camel 控制消息头——尤其是 CamelHttpUri:

// WebsocketConsumer.sendEventNotification (affected 4.18.2) — query params -> Exchange headers, unfiltered
for (Map.Entry<String, String> param : queryMap.entrySet()) {
    exchange.getIn().setHeader(param.getKey(), param.getValue());
}
// where queryMap = getQueryMap(request.getQueryString())  (a naive, non-filtering parser)

当路由将该消费者桥接到 HTTP 生产者时,注入的 CamelHttpUri 会覆盖生产者的目标 URI——形成服务端请求伪造。camel-http 生产者还会在该攻击者控制的 URI 上调用 resolvePropertyPlaceholders(),因此注入的 {{...}} 引用会被展开为其真实值并发送出去——泄露环境变量、应用属性或 Vault 机密。

该 PoC 将影响演示为 SSRF 加机密泄露(CWE-20 → CWE-918 + CWE-200)。它是 CAMEL-23532 下与 camel-vertx-websocket(CVE-2026-46726)、camel-iggy(CVE-2026-55994)一起修复的三个姊妹组件之一。

安全公告:https://camel.apache.org/security/CVE-2026-55993.html

漏洞摘要

属性值
组件camel-atmosphere-websocket
受影响类org.apache.camel.component.atmosphere.websocket.WebsocketConsumer(getQueryMap() / sendEventNotification() 将查询参数映射为消息头,且无任何过滤)
CWECWE-20(输入验证不当)→ CWE-918(SSRF)+ CWE-200(信息暴露)
影响未认证的 SSRF,以及通过对注入 URI 进行属性占位符解析而导致的机密泄露
前置条件路由将 atmosphere-websocket 消费者桥接到 HTTP 生产者;Servlet 以 events=true 运行
受影响版本4.0.0 至 4.14.8(不含),4.15.0 至 4.18.3(不含),4.19.0 至 4.21.0(不含)
修复版本4.14.8、4.18.3、4.21.0
JIRACAMEL-23532(PR apache/camel#23285)
致谢Kamalpreet Singh

修复将继承的 HttpHeaderFilterStrategy 应用于入站映射,以不区分大小写的方式过滤 Camel* / camel* 消息头,使其无法再通过 WebSocket 查询字符串注入。

此复现工具如何调用真实漏洞代码

WebsocketConsumer 的两个漏洞成员在未做任何修改、使用攻击者控制的查询字符串的情况下运行:

  1. 真实的 WebsocketConsumer.getQueryMap(String)——一个简单的、无过滤的解析器,将 WebSocket 连接的查询字符串转换为映射;
  2. 真实的 WebsocketConsumer.sendEventNotification(...)——将映射中的每个条目作为消息头复制到 Exchange 上,且不使用 HeaderFilterStrategy。

生成的 Exchange 流经真实路由到达真实的 camel-http 生产者,因此 SSRF 和 {{...}} 属性占位符泄露都是真实存在的。

为何不直接使用 WebSocket 传输。 在此组件版本(Camel 4.18.2 → Atmosphere 3.1.0)中,WebSocket 通过 JSR-356 提供服务,其升级由 Servlet 容器处理,绕过了 CamelWebSocketServlet.service()——而这是唯一将连接查询字符串复制到消费者 queryMap 的地方。sendEventNotification 读取的是该(空的)映射,而不是 WebSocket 会话上的查询,因此在当前的 Atmosphere 版本中,注入无法通过实时的 JSR-356 WebSocket 传递。(Atmosphere 3.1.0 仅提供 JSR-356 / Servlet30 / BlockingIO / Netty 支持——没有能够填充 queryMap 的基于 Servlet 的 WebSocket 传输。)因此,本复现工具直接以攻击者的查询字符串调用这两个真实漏洞方法;姊妹组件 camel-vertx-websocket 的 PoC(CVE-2026-46726)则通过实时 WebSocket 触发相同的缺陷,因为该组件会在每条消息上映射查询。

受害路由

from("atmosphere-websocket:///feed")
    .to("http://localhost:8080/legit-backend?throwExceptionOnFailure=false");

路由作者唯一预期的目标是 /legit-backend;注入的 CamelHttpUri 会覆盖它。

仓库结构

CVE-2026-55993/
├── pom.xml                 # camel-atmosphere-websocket + camel-http 4.18.2
├── Dockerfile
├── docker-compose.yml      # single self-contained service
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # atmosphere-websocket:///feed -> http://localhost:8080/legit-backend
    │   ├── SinkController.java     # SSRF collector: /legit-backend, /internal/secret, /collect/{secret}
    │   └── ExploitController.java  # drives the real getQueryMap + sendEventNotification with an injected query
    └── resources/
        └── application.properties  # app.secret=... (leaked via placeholder resolution)

环境要求

  • Docker 和 Docker Compose
  • Java 17+ 和 Maven 3.8+

复现步骤

mvn clean package -DskipTests
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

预期输出

1) Legitimate WebSocket connection (no query params)
     reached /legit-backend: true
     reached /internal/secret: false

2) Injected query 'CamelHttpUri=http://localhost:8080/internal/secret'  (SSRF)
     server-side request reached /internal/secret: true

3) Injected query 'CamelHttpUri=http://localhost:8080/collect/{{app.secret}}'  (secret disclosure)
     attacker's collector received leak = SUPER-SECRET-abc123
     equals the app's real secret: true

>>> SSRF=true, secret-disclosure=true

修复建议

升级到 4.14.8 / 4.18.3 / 4.21.0(CAMEL-23532)。升级后,消费者会从 WebSocket 查询字符串中过滤 Camel* 消息头,因此 CamelHttpUri 及其他控制消息头将无法再被注入。

缓解措施

在升级之前,除非先剥离 Camel 控制消息头(例如 removeHeaders("CamelHttp*")),否则不要将 atmosphere-websocket 消费者直接桥接到 HTTP 生产者,并从可信来源设置生产者的目标(或使用 bridgeEndpoint=true)。

免责声明

本复现工具仅供安全研究和授权测试使用,针对的是已公开披露并已修复的漏洞。未经明确许可,请勿将其用于任何系统。

下载工具