美国网件Netgear RAX30路由器RCE漏洞分析
美国网件Netgear RAX30路由器RCE漏洞分析
原创 B2eFly 山石网科安全技术研究院 2023-03-09 10:28
Netgear RAX30 漏洞分析
2022年Pwn2Own比赛前一天,Netgear官方修复了RAX30设备多个高危漏洞。
设备品牌: Netgear
设备型号: RAX30
固件版本: RAX30 1.0.7.70
01
漏洞概述
- CVE-2022-47208
默认情况下运行的“puhttpsniff”服务由于用户输入不当导致容易受到命令注入的影响。与路由器位于同一网段上的用户可无需身份验证即可在设备上执行任意命令。
– CVE-2022-47209
默认情况下,设备上有四个用户帐户。
admin -> 常规用户,通常为web服务和其他服务
support->后台技术支持后门账户
– 未查到CVE号
默认情况下运行的/bin/pucfu程序在boot过程中将会尝试连接Netgear域名并获得JSON响应数据。使用DHCP服务器去控制DNS服务器给路由器WAN口分配地址。通过控制DNS 查询响应报文触发命令注入。
02
漏洞分析
2.1 CVE-2022-47208
查看命令注入危险函数,发现获取User-Agent参数没有进行过滤,导致命令注入。
漏洞利用条件
伪造User-Agent
漏洞原理
Web服务在获取客户端请求包中User-Agent数据字段未能有效筛选危险字符导致设备任意命令执行。
2.2 CVE-2022-47209
硬编码
2.3 pucfu 引发的命令注入
漏洞原理
pucfu在启动过程中会向域名https://devcom.up.netgear.com/的netgear官网获取一个json数据,该数据最终北SetFileValue函数接卸,该函数存在命令执行漏洞,如果获取得到的json数据可以伪造的话,就会执行任意命令。
漏洞触发
/bin/pucfu->/usr/lib/fwcheck.so(get_check_fw)->fw_check_api->curl_post
/lib/libpu_util.so(SetFileValue)->pegaPopen->libc.so(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
判断是否有’/’
pegaPopen
构造数据,实现命令执行
漏洞利用条件
运行DHCP和DNS服务端劫持路由器原来指向的域名,然后通过伪造响应来实现任意命令执行。
03
漏洞修复
固件版本:
1.0.9.90
3.1 puhttpsniff 漏洞修复
使用带参数的调用而不是直接命令调用。
3.2 pucfu漏洞修复
使用带参数的调用而不是直接命令调用。
04
总结
此次Netgear RAX30设备漏洞,主要还是开发者没能处理好数据是否可控、是否存在危险字符。Netgear官方在Pwn2own比赛前一天修复漏洞,对参赛选手来说也是一种考验。
固件下载地址:https://www.netgear.com/support/product/RAX30#download