Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
MIPS-CVE-2014-9222 — Lasst uns Spaß haben, indem wir in die Firmware eines Zyxel-Routers und die MIPS-Architektur eintauchen. | Kitploit
Tools/GitHubGitHub/mercul1ninna/mips-cve-2014-9222
Embedded-System-SicherheitSchwachstellenanalyseExploitationReverse EngineeringHardware-HackingBinäranalyseLernen & BildungFirmware-Analyse
GitHubmercul1ninna/mips-cve-2014-9222

MIPS-CVE-2014-9222

Lasst uns Spaß haben, indem wir in die Firmware eines Zyxel-Routers und die MIPS-Architektur eintauchen.

Repository anzeigen
27vor 7 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Haftungsausschluss

Tutorials dienen nur zu Informations- und Bildungszwecken. Ich bin der Überzeugung, dass ethisches Hacking, Informationssicherheit und Cybersicherheit Themen sein sollten, die jedem vertraut sind, der digitale Informationen und Computer nutzt. Ich bin der Meinung, dass es unmöglich ist, sich vor Hackern zu schützen, ohne zu wissen, wie Hacking funktioniert.

Anforderungen

$ IDA Pro +7.0 (you can use Radar2 since IDA is quite expensive)
$ Router running Rompager 4.07 : there're immense number of them such as TP-Link TD-W8951*, ZyXEL P-660R, Billion BiPAC 51**/52**
$ UART to USB

Die Misfortune-Cookie-Schwachstelle ist schon seit einiger Zeit bekannt, aber es mangelt immer noch an einer öffentlichen Analyse, die die technischen Details der Schwachstelle veranschaulicht. Laut Check Point ist die betroffene Software der eingebettete Webserver RomPager von AllegroSoft. Internetweite Scans legen nahe, dass RomPager gemessen an der Anzahl der verfügbaren Endpunkte wahrscheinlich die am weitesten verbreitete Webserver-Software der Welt ist. RomPager ist in der Regel in der Firmware eingebettet, die mit dem Gerät ausgeliefert wird. Diese spezielle Schwachstelle wurde im Jahr 2002 in den Code eingeführt. Darüber hinaus sind die Geräte betroffen, die RomPager-Dienste in Versionen vor 4.34 (und insbesondere 4.07) verwenden.

Für dieses Tutorial verwende ich eine ZXHN H108L, die Rompager 4.07 verwendet.

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="ZXHN H108L"
Content-Type: text/html
Transfer-Encoding: chunked
Server: RomPager/4.07 UPnP/1.0
EXT:

Jetzt nutzen wir den seriellen Port. Zuerst müssen wir die Baudrate bestimmen.

$ sudo stty -F /dev/ttyUSB0

Ausgabe:

speed 115200 baud; line = 0;
-brkint -imaxbel

device

Ich verwende minicom, du kannst alles von screen bis HyperTerminal verwenden, aber ich bevorzuge dieses wegen seiner Stabilität ;)

Zuerst musst du die Hardware-Flusskontrolle deaktivieren

$ sudo minicom -s
    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/modem                                |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : No                                        |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Jetzt können wir loslegen:

$ sudo minicom -D /dev/ttyUSB0 -b 115200
Bootbase Version: VTC_SPI1.26 |  2012/12/26 16:00:00    
RAM: Size = 8192 Kbytes
Found SPI Flash 2MiB GD25Q16 at 0xbfc00000
SPI Flash Quad Enable
Turn off Quad Mode

RAS Version: ZXHN H108LV4.0.0a_ZRQ_MA                                          
System   ID: $2.12.162.0(G94.BY.2)3.20.19.0| 2014/03/21   20140321_v006  | 2014 

Press any key to enter debug mode within 3 seconds.
..........

Um die möglichen Befehle anzuzeigen:

$ ATHE

======= Debug Command Listing =======
AT          just answer OK
ATHE          print help
ATBAx         change baudrate. 1:38.4k, 2:19.2k, 3:9.6k 4:57.6k 5:115.2k
ATENx,(y)     set BootExtension Debug Flag (y=password)
ATSE          show the seed of password generator
ATTI(h,m,s)   change system time to hour:min:sec or show current time
ATDA(y,m,d)   change system date to year/month/day or show current date
ATDS          dump RAS stack
ATDT          dump Boot Module Common Area
ATDUx,y       dump memory contents from address x for length y
ATRBx         display the  8-bit value of address x
ATRWx         display the 16-bit value of address x
ATRLx         display the 32-bit value of address x
ATGO(x)       run program at addr x or boot router
ATGR          boot router
ATGT          run Hardware Test Program
ATRTw,x,y(,z) RAM test level w, from address x to y (z iterations)
ATSH          dump manufacturer related data in ROM
ATDOx,y       download from address x for length y to PC via XMODEM
ATTD          download router configuration to PC via XMODEM
ATUR          upload router firmware to flash ROM

< press any key to continue >

Diese Firmware verfügt über eine Reihe versteckter Befehle, die für unsere dynamische Analyse sehr nützlich sind. Das Problem ist, dass wir weder die Register sehen noch Haltepunkte setzen können. Mit diesen versteckten Befehlen hätten wir diese Funktionen jedoch hoffentlich zur Verfügung. Um sie zu sehen und zu nutzen, müssen wir ATEN verwenden. Dieser Befehl erfordert jedoch ein Passwort. Was können wir also jetzt tun? Lasst uns die Firmware per Reverse Engineering untersuchen, um den Algorithmus des Passwortgenerators zu finden.

(Statische Analyse) Schauen wir uns zuerst die Firmware-Datei an:

$ binwalk ras

binwalk1

$ dd if=ras of=rom1.lzma bs=1 skip=85043 count=66696
$ dd if=ras of=rom2.lzma bs=1 skip=350259 count=3350556
$ lzma -d <rom1.lzma> rom1
$ lzma -d <rom2.lzma> rom2

Schauen wir uns nun die Signatur in den extrahierten Dateien an:

$ binwalk -Y rom1
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             MIPS executable code, 32/64-bit, big endian, at least 1250 valid instructions

string ist ein großartiges Werkzeug, um eine Vorstellung davon zu bekommen, was eine Binärdatei ist oder was sie enthält. Mal sehen, ob wir den Passwort-Algorithmus finden können:

$ strings rom1 | grep -i aten
$ strings rom2 | grep -i aten

Anscheinend können wir ihn nicht sehen, weil die Firmware noch komprimiert ist. Das bedeutet, wir müssen sie mithilfe des Debug-Modus vom Router dumpen:

$ ATDO bfc00000, 1f0000

xmodem

Das Erste, was einem in den Sinn kommt, ist, nach einer Dispatch-Tabelle zu suchen. Warum? Nur Intuition. Die einzige Alternative wäre eine lange if-elif-Kette, um die Gültigkeit des vom Benutzer angegebenen Passworts zu prüfen. Und hier ist, was ich gefunden habe:

ROM:800158A0 CmdTable:       .word unk_80015C20       # DATA XREF: sub_8000E3D8+4Co
ROM:800158A0                                          # sub_8000E3D8+90o ...
ROM:800158A4                 .word sub_8000E6D0
ROM:800158A8                 .byte    0
ROM:800158A9                 .byte    0
ROM:800158AA                 .byte    0
ROM:800158AB                 .byte    0
ROM:800158AC                 .word aJustAnswerOk      # "          just answer OK"
ROM:800158B0                 .word aAthe              # "ATHE"
ROM:800158B4                 .word CMD_SHOW_HELP_ATHE
ROM:800158B8                 .byte    0
ROM:800158B9                 .byte    0
ROM:800158BA                 .byte    0
ROM:800158BB                 .byte    0
ROM:800158BC                 .word aPrintHelp         # "          print help"
ROM:800158C0                 .word aAtba              # "ATBA"
ROM:800158C4                 .word CMD_ATBA
...
ROM:800158D0                 .word aAten              # "ATEN"
ROM:800158D4                 .word CMD_ATEN

Bedenke, dass ein MIPS-Wort 4 Bytes lang ist. Schauen wir uns nun CMD_ATEN an:

Tool herunterladen