Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-55993 — PoC-Reproducer für CVE-2026-55993 (Apache Camel camel-atmosphere-websocket): Der WebSocket-Consumer kopiert die Query-Parameter der Verbindung ungefiltert auf den Exchange, sodass eine injizierte CamelHttpUri eine serverseitige Anfrage (SSRF) auslöst und aufgelöste Property-Platzhalter preisgibt. Behoben in 4.14.8/4.18.3/4.21.0. | Kitploit
Tools/GitHubGitHub/oscerd/cve-2026-55993
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsAPI-Sicherheit
GitHuboscerd/cve-2026-55993

CVE-2026-55993

Repository anzeigen
vor 29 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

PoC-Reproducer für CVE-2026-55993 (Apache Camel camel-atmosphere-websocket): Der WebSocket-Consumer kopiert die Query-Parameter der Verbindung ungefiltert auf den Exchange, sodass eine injizierte CamelHttpUri eine serverseitige Anfrage (SSRF) auslöst und aufgelöste Property-Platzhalter preisgibt. Behoben in 4.14.8/4.18.3/4.21.0.

Teilen

camel-atmosphere-websocket Header-Injection-Reproducer (CVE-2026-55993)

Dieses Projekt demonstriert eine Message-Header-Injection in der Apache-Camel-Komponente camel-atmosphere-websocket, die als CVE-2026-55993 geführt wird. Der WebSocket-Consumer kopiert die Query-Parameter der Verbindung ohne jede HeaderFilterStrategy auf den Camel Exchange, sodass ein Client Camel-Steuer-Header – insbesondere CamelHttpUri – injizieren kann, indem er sie einfach an die Query-Zeichenkette der WebSocket-URL anhängt:

root@kitploit:~
// 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)

Wenn die Route diesen Consumer an einen HTTP-Producer anbindet, überschreibt ein injiziertes CamelHttpUri – Server-Side Request Forgery. Der camel-http-Producer ruft für dieses angreiferkontrollierte URI außerdem auf, sodass eine injizierte -Referenz zu ihrem echten Wert aufgelöst und gesendet wird – wodurch Umgebungsvariablen, Anwendungskonfigurationen oder Vault-Geheimnisse offengelegt werden.

das Ziel-URI des Producers
resolvePropertyPlaceholders()
{{...}}

Dieser PoC demonstriert die Auswirkungen als SSRF plus Offenlegung von Geheimnissen (CWE-20 → CWE-918 + CWE-200). Er ist eine von drei verwandten Komponenten, die zusammen unter CAMEL-23532 behoben wurden (mit camel-vertx-websocket, CVE-2026-46726, und camel-iggy, CVE-2026-55994).

Advisory: https://camel.apache.org/security/CVE-2026-55993.html

Schwachstellenübersicht

EigenschaftWert
Komponentecamel-atmosphere-websocket
Betroffene Klasseorg.apache.camel.component.atmosphere.websocket.WebsocketConsumer (getQueryMap() / sendEventNotification() bilden Query-Parameter ohne Filter auf Header ab)
CWECWE-20 (Unzureichende Eingabevalidierung) → CWE-918 (SSRF) + CWE-200 (Offenlegung von Informationen)
AuswirkungNicht authentifizierte SSRF und Offenlegung von Geheimnissen über die Property-Placeholder-Auflösung beim injizierten URI
VoraussetzungenEine Route bindet einen atmosphere-websocket-Consumer an einen HTTP-Producer; das Servlet läuft mit events=true
Betroffene VersionenVon 4.0.0 bis vor 4.14.8, von 4.15.0 bis vor 4.18.3, von 4.19.0 bis vor 4.21.0
Behobene Versionen4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23532 (PR apache/camel#23285)
AnerkennungKamalpreet Singh

Der Fix wendet die geerbte HttpHeaderFilterStrategy auf die eingehende Zuordnung an und filtert Camel*- / camel*-Header ohne Beachtung der Groß-/Kleinschreibung, sodass sie nicht mehr über die WebSocket-Query-Zeichenkette injiziert werden können.

Wie dieser Reproducer den echten verwundbaren Code ausführt

Die beiden verwundbaren Methoden von WebsocketConsumer werden unverändert mit einer angreiferkontrollierten Query-Zeichenkette ausgeführt:

  1. die echte WebsocketConsumer.getQueryMap(String) – der naive, nicht filternde Parser, der die Query-Zeichenkette der WebSocket-Verbindung in eine Map umwandelt;
  2. die echte WebsocketConsumer.sendEventNotification(...) – die jeden Eintrag dieser Map als Header ohne HeaderFilterStrategy auf den Exchange kopiert.

Der resultierende Exchange fließt über die echte Route zum echten camel-http-Producer, sodass die SSRF und die Offenlegung über {{...}}-Property-Placeholder echt sind.

Warum der WebSocket-Transport nicht direkt verwendet wird. In dieser Komponentenversion (Camel 4.18.2 → Atmosphere 3.1.0) wird ein WebSocket über JSR-356 bereitgestellt, dessen Upgrade vom Servlet-Container durchgeführt wird und CamelWebSocketServlet.service() umgeht – die einzige Stelle, die die Query-Zeichenkette der Verbindung in das queryMap des Consumers kopiert. sendEventNotification liest diese (leere) Map, niemals die Query der WebSocket-Sitzung, sodass die Injection in dieser Atmosphere-Version nicht über einen aktiven JSR-356-WebSocket zugestellt werden kann. (Atmosphere 3.1.0 enthält nur JSR-356-/Servlet30-/BlockingIO-/Netty-Unterstützung – keinen servletbasierten WebSocket-Transport, der queryMap befüllen würde.) Dieser Reproducer ruft daher die beiden echten verwundbaren Methoden direkt mit der Query-Zeichenkette des Angreifers auf; der verwandte camel-vertx-websocket-PoC (CVE-2026-46726) treibt denselben Fehler über einen aktiven WebSocket, da diese Komponente die Query bei jeder Nachricht abbildet.

Die Opfer-Route

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

Das einzige vorgesehene Ziel des Routenautors ist /legit-backend; das injizierte CamelHttpUri überschreibt es.

Repository-Struktur

root@kitploit:~
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)

Voraussetzungen

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

Reproduktionsschritte

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

Erwartete Ausgabe

root@kitploit:~
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

Empfohlene Korrektur

Aktualisieren Sie auf 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23532). Nach der Aktualisierung filtert der Consumer Camel*-Header aus der WebSocket-Query-Zeichenkette, sodass CamelHttpUri und andere Steuer-Header nicht mehr injiziert werden können.

Gegenmaßnahmen

Bis zum Upgrade sollten Sie einen atmosphere-websocket-Consumer nicht direkt an einen HTTP-Producer anbinden, ohne vorher Camel-Steuer-Header zu entfernen (zum Beispiel removeHeaders("CamelHttp*")), und das Producer-Ziel aus einer vertrauenswürdigen Quelle setzen (oder bridgeEndpoint=true verwenden).

Haftungsausschluss

Dieser Reproducer wird ausschließlich für Sicherheitsforschung und autorisierte Tests bereitgestellt, für eine öffentlich bekannt gegebene und behobene Schwachstelle. Verwenden Sie ihn nicht gegen Systeme ohne ausdrückliche Genehmigung.

Tool herunterladen