>
Январь 2017
Пн Вт Ср Чт Пт Сб Вс
« Дек    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Взлом роутеров ASUS с помощью эксплоита для сервиса infosrv.

В различных моделях роутеров от ASUS уже не впервые находят уязвимости. На этот раз ошибка была найдена в сервисе с именем infosvr, который слушает широковещательный UDP-порт 9999 на локальном или WLAN-интерфейсе.


Для лучшего понимания обратимся к открытой реализации прошивки под такие устройства от пользователя RMerl (bit.ly/1xVKSFO), представляющей собой более расширенную версию кода от ASUS:

Функция processPacket вызывается после получения пакета INFO_PDU_LENGTH, состоящего из 512 байт. Уязви-
мый код находится по следующему пути: main->processReq ->processPacket. Далее сервис раскладывает пакет на струк-
туру и проверяет, содержат ли поля ServiceID и PacketType ожидаемые значения.

Следующий блок кода включает код, из-за которого данная уязвимость возможна:

Он начинается с исключения пары значений переменной OpCode, которые предположительно не требуют аутентификации. Затем вызывается функция memcpy() с подозрительной проверкой на возврат значения 0. Очень похоже на то, что автор собирался использовать ее вместо memcmp. Хотя, честно говоря, использование MAC-адреса устройства как метод аутентификации совсем не достаточно.

Следующий блок закомментирован, но мы видим, что автор хотел добавить проверку паролем, правда с довольно простым паролем по умолчанию — admin. Следуем дальше. Проверяем полученные OpCode:

Если атакующий сможет указать значение NET_CMD_ID_MANU_CMD, то предыдущий блок обработает пакет и преобразует в структуру PKT_SYSCMD, где все части syscmd будут под полным контролем атакующего. Вследствие чего мы можем выполнить произвольный код, результат которого запишется во временный файл, прочитается и отправится обратно по адресу инициализирующего пакета.

EXPLOIT

На GitHub выложен один Python-скрипт (bit.ly/1ycYZFH) под данную уязвимость, но, судя по структуре, автор будет пополнять этот репозиторий.
Отправляем пакет со следующим содержимым:

В результате получаем следующий запрос:

Обрабатываем пакет…

…с помощью такого кода:

Помимо Python-версии, существует оригинальный эксплойт
на С, который находится в том же репозитории. Пример его работы:

TARGETS

Протестировано на устройствах:
• RT-N66U 3.0.0.4.376_1071-g8696125;
• RT-AC87U 3.0.0.4.378_3754;
• RT-N56U 3.0.0.4.374_5656.

SOLUTION

Есть исправление от производителя. Также можно воспользоваться следующим патчем. По умолчанию стоковая прошивка от ASUS не позволяет запускать произвольные скрипты при загрузке устройства, но при этом позволяет запускать скрипты в любое время при монтировании USB. Логинимся на устройстве через Telnet или SSH:

И создаем файл со следующим содержимым:

Другой путь — просто завершить уязвимый процесс.

Сохраняем файл с именем, указанным в переменной script_usbmount, и исполняем файл (или просто перезагружаем роутер). Ну и не забываем, что триггером служит монтирование USB-устройства, поэтому, если такого нет, советуем приобрести.

Share Button
[Всего голосов: 4    Средний: 3.8/5]

Вам может быть интересно также:

Last updated by at .

1 comment to Взлом роутеров ASUS с помощью эксплоита для сервиса infosrv.

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">