Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
MIPS-CVE-2014-9222 — Давайте повеселимся, копаясь в прошивке маршрутизатора Zyxel и архитектуре MIPS | Kitploit
Инструменты/GitHubGitHub/mercul1ninna/mips-cve-2014-9222
Безопасность встроенных системАнализ уязвимостейЭксплуатацияОбратная инженерияАппаратный ХакингАнализ Бинарных ФайловОбучение и ОбразованиеАнализ Прошивок
GitHubmercul1ninna/mips-cve-2014-9222

MIPS-CVE-2014-9222

Давайте повеселимся, копаясь в прошивке маршрутизатора Zyxel и архитектуре MIPS

Репозиторий
207 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Отказ от ответственности

Учебные материалы предназначены только для информационных и образовательных целей. Я считаю, что этичный хакинг, информационная безопасность и кибербезопасность должны быть знакомыми темами для всех, кто использует цифровую информацию и компьютеры. Я считаю, что невозможно защититься от хакеров, не зная, как осуществляется взлом.

Требования

$ IDA Pro +7.0 (можно использовать Radar2, так как IDA довольно дорогая)
$ Маршрутизатор с Rompager 4.07: их огромное количество, например TP-Link TD-W8951*, ZyXEL P-660R, Billion BiPAC 51**/52**
$ UART-USB

Уязвимость «Misfortune Cookie» существует уже некоторое время, но в открытом доступе по-прежнему не хватает анализа, иллюстрирующего технические детали уязвимости. По данным Check Point, уязвимым программным обеспечением является встроенный веб-сервер RomPager от AllegroSoft. Сканирование в интернете показывает, что RomPager, вероятно, является самым популярным веб-серверным программным обеспечением в мире по количеству доступных конечных точек. RomPager обычно встроен в прошивку, поставляемую с устройством. Эта конкретная уязвимость была внесена в кодовую базу в 2002 году. Кроме того, уязвимы устройства, использующие службы RomPager версий до 4.34 (и особенно 4.07).

Для этого урока я буду использовать ZXHN H108L с 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:

Теперь воспользуемся последовательным портом. Сначала нужно определить скорость передачи данных (Baud rate).

$ sudo stty -F /dev/ttyUSB0

ВЫВОД:

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

device

Я использую minicom, вы можете использовать что угодно, от screen до HyperTerminal, но я предпочитаю этот из-за его стабильности ;)

Сначала необходимо отключить аппаратное управление потоком (Hardware Flow Control)

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

Теперь можно начинать:

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

Чтобы просмотреть возможные команды:

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

Эта прошивка содержит набор скрытых команд, очень полезных для нашего динамического анализа. Проблема в том, что мы не можем видеть регистры или устанавливать точки останова, но, надеюсь, с помощью этих скрытых команд мы сможем получить такие возможности. Чтобы увидеть и использовать их, нужно использовать ATEN. Однако эта команда требует пароль. Итак, что мы можем сделать сейчас? Давайте проведем реверс-инжиниринг прошивки, чтобы найти алгоритм генерации пароля.

(Статический анализ) Сначала посмотрим на файл прошивки:

$ 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

Теперь посмотрим на сигнатуру в извлеченных файлах:

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

string — отличный инструмент, чтобы получить представление о том, что такое двоичный файл или что он содержит. Посмотрим, сможем ли мы найти алгоритм пароля:

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

По-видимому, мы не можем его увидеть, потому что прошивка все еще сжата, а значит, мы должны извлечь ее из маршрутизатора с помощью режима отладки:

$ ATDO bfc00000, 1f0000

xmodem

Первое, что приходит на ум, — начать поиск таблицы диспетчеризации. Почему? Просто интуиция. Единственная альтернатива — длинная цепочка if-elif, чтобы проверить правильность введенного пользователем пароля. Вот что я получил:

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

Помните, что слово MIPS состоит из 4 байт. Теперь посмотрим на CMD_ATEN:

ROM:8000FF84                 lw      $a0, 8($s0)
ROM:8000FF88                 jal     sub_80013654
ROM:8000FF8C                 li      $a1, 0
ROM:8000FF90                 jal     passwd_generator

и далее: passwd_generator

Скачать инструмент