Netgear RAX30 漏洞分析
2022年Pwn2Own比赛前一天,Netgear官方修复了RAX30设备多个高危漏洞。
设备品牌: Netgear
设备型号: RAX30
固件版本: [RAX30 1.0.7.70](Nighthawk RAX30 | WiFi 6 Router | NETGEAR Support)
-
CVE-2022-47208
-
CVE-2022-47209
-
未查到CVE号
2.1 CVE-2022-47208
漏洞利用条件
漏洞原理
2.2 CVE-2022-47209
硬编码
admin:$1$redacted:0:0:Administrator:/:/bin/sh
support:$1$QkcawmV.$VU4maCah6eHihce5l4YCP0:0:0:Technical Support:/:/bin/sh
user:$1$9RZrTDt7$UAaEbCkq.Qa4u0QwXpzln/:0:0:Normal User:/:/bin/sh
nobody:$1$OWpQjger$j7CFLUn8yoD8agVf6x5gA0:0:0:nobody for ftp:/:/bin/sh
2.3 pucfu 引发的命令注入
漏洞原理
pucfu在启动过程中会向域名https://devcom.up.netgear.com/的netgear官网获取一个json数据,该数据最终北SetFileValue函数接卸,该函数存在命令执行漏洞,如果获取得到的json数据可以伪造的话,就会执行任意命令。
漏洞触发
graph LR
A[pucfu] -->B(fwcheck.so) -->C(fw_check_api) -->D(curl_post) -->E(libpu_tuil.so) -->F(SetFileValue) -->G(pegaPopen) -->H(libc.so) -->J(execve)
2.3.1 pucfu
将获取得到的json数据存储到v29变量中,最后将v29数据传递给SetFileValue函数。
2.3.2 get_check_fw
从D2数据库中获取UpBaseURL,调用Netgear API 将从服务器端获取的数据进行保存。
2.3.3 fw_check_api
最终pucfu bufferA获取到的数据就是url对应的数据内容,strcpy(bufferB,bufferA)
2.3.4 SetFileValue
判断是否有’/’
SetFileValue("/tmp/fw/cfu_url_cache", "lastURL", bufferB); #lastURL 可控
sed -i 's|^lastURL=.*|lastURL=/'可控数据;# /'/tmp/fw/cfu_url_cache
sed -i 's|^lastURL=.*|lastURL=|'可控数据;# |'/tmp/fw/cfu_url_cache
pegaPopen
构造数据,实现命令执行
"url":"';reboot#"
漏洞利用条件
运行DHCP和DNS服务端劫持路由器原来指向的域名,然后通过伪造响应来实现任意命令执行。
3.1 puhttpsniff 漏洞修复
使用带参数的调用而不是直接命令调用。
3.2 pucfu漏洞修复
使用带参数的调用而不是直接命令调用。
此次Netgear RAX30设备漏洞,主要还是开发者没能处理好数据是否可控、是否存在危险字符。Netgear官方在Pwn2own比赛前一天修复漏洞,对参赛选手来说也是一种考验。
固件下载地址:https://www.netgear.com/support/product/RAX30#download
原文始发于微信公众号(山石网科安全技术研究院):美国网件Netgear RAX30路由器RCE漏洞分析