Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
MIPS-CVE-2014-9222 — Amusons-nous en explorant le firmware d'un routeur Zyxel et l'architecture MIPS | Kitploit
Outils/GitHubGitHub/donfanning/mips-cve-2014-9222
Sécurité des Systèmes EmbarquésAnalyse des VulnérabilitésExploitationRétro-ingénierieHacking MatérielAnalyse de BinairesApprentissage et ÉducationAnalyse de Micrologiciel
GitHubdonfanning/mips-cve-2014-9222

MIPS-CVE-2014-9222

Amusons-nous en explorant le firmware d'un routeur Zyxel et l'architecture MIPS

Voir le dépôt
221il y a 7 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Avertissement

Les tutoriels sont fournis à titre informatif et éducatif uniquement. Je pense que le piratage éthique, la sécurité de l'information et la cybersécurité devraient être des sujets familiers pour quiconque utilise des informations numériques et des ordinateurs. Je pense qu'il est impossible de se défendre contre les pirates sans savoir comment le piratage est réalisé.

Prérequis

$ IDA Pro +7.0 (vous pouvez utiliser Radar2 car IDA est assez cher)
$ Routeur utilisant Rompager 4.07 : il en existe un très grand nombre, comme TP-Link TD-W8951*, ZyXEL P-660R, Billion BiPAC 51**/52**
$ UART vers USB

La vulnérabilité Misfortune Cookie existe depuis un certain temps, mais il manque encore une analyse publique qui illustre les détails techniques de la vulnérabilité. Selon Check Point, le logiciel concerné est le serveur web embarqué RomPager d'AllegroSoft. Les scans à l'échelle d'Internet suggèrent que RomPager est probablement le logiciel de serveur web le plus populaire au monde en ce qui concerne le nombre de points d'accès disponibles. RomPager est généralement intégré au firmware livré avec l'appareil. Cette vulnérabilité spécifique a été introduite dans la base de code en 2002. De plus, les appareils exposés sont ceux qui utilisent les services RomPager avec des versions antérieures à 4.34 (et plus précisément 4.07).

Pour ce didacticiel, j'utiliserai un ZXHN H108L équipé de Rompager 4.07

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:

Maintenant, utilisons le port série. D'abord, nous devons déterminer le débit en bauds.

$ sudo stty -F /dev/ttyUSB0

SORTIE :

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

appareil

J'utilise minicom, vous pouvez utiliser n'importe quoi, de screen à HyperTerminal, mais je préfère celui-ci pour sa stabilité ;)

Vous devez d'abord désactiver le contrôle de flux matériel

$ 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        |
            +--------------------------+

Maintenant, nous sommes prêts :

$ 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.
..........

Pour afficher les commandes possibles :

$ 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 >

Ce firmware dispose d'un ensemble de commandes cachées très utiles pour notre analyse dynamique. Le problème est que nous ne pouvons ni voir les registres ni définir de points d'arrêt. Espérons qu'avec ces commandes cachées nous disposerons de ces fonctionnalités ; pour les voir et les utiliser, nous devons utiliser ATEN. Cependant, cette commande nécessite un mot de passe. Que pouvons-nous faire alors ? Rétro-ingénierons le firmware pour trouver l'algorithme du générateur de mot de passe.

(Analyse statique) Regardons d'abord le fichier du firmware :

$ 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

Regardons maintenant la signature des fichiers extraits :

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

string est un excellent outil pour se faire une idée de ce qu'est un fichier binaire ou de ce qu'il contient. Voyons si nous pouvons trouver l'algorithme du mot de passe :

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

Apparemment, nous ne pouvons pas le voir car le firmware est encore compressé, ce qui signifie que nous devons le vider depuis le routeur en utilisant le mode de débogage :

$ ATDO bfc00000, 1f0000

xmodem

La première chose qui vient à l'esprit est de chercher une table de dispatch. Pourquoi ? Par simple intuition. L'autre alternative serait une série de if-elif, mais cela ferait un long ensemble de conditions pour vérifier la validité du mot de passe fourni par l'utilisateur. Voici ce que j'ai obtenu :

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

Gardez à l'esprit qu'un mot MIPS fait 4 octets. Regardons maintenant le CMD_ATEN :

Télécharger l’outil