Sapido RB-1732漏洞复现及漏洞分析

新发布命令执行路由器
2025-01-19 18:59
4755

漏洞复现设备:Sapido RB-1732
漏洞原理:路由器中存在漏洞执行命令
漏洞产生原因:服务器的syscmd.asp页面没有对传递过来的参数进行过滤,让用户以参数的形式发送系统命令,在web上执行
复现环境:FirmAE IDA

漏洞复现

首先在本地搭建固件模拟环境,这里使用了FirmAE将bin固件加载进来,开始模拟固件环境。
sudo ./run.sh -d sapido ~/Desktop/rb1732/RB-1732_TC_v2.0.43_2.bin

Pasted image 20250118172840.png

FirmAE启动后会自动模拟网络环境,可以直接通过浏览器访问192.168.1.1可以访问到web页面代表着模拟成功了

Pasted image 20250118173012.png

由于需要授权才可以进入到syscmd.asp页面,输入账号密码admin/admin进行登陆,登陆成功后会直接跳转到home.asp界面

Pasted image 20250118174139.png

紧接着直接访问192.168.1.1/syscmd.asp,可以看到system command 以及输入命令的窗口

Pasted image 20250118174432.png

输入ls,查看当前路径下的所有文件,得到返回的结果

Pasted image 20250118174456.png
可以看到命令执行成功,漏洞复现成功。

漏洞分析

binwalk -Me分析固件,识别并提取其中的文件系统和其他有用的文件

Pasted image 20250118183917.png

命令执行漏洞的原因是出在SysCmd.asp中,所以直接查找syscmd.asp文件
find ./ -name "syscmd.asp"

Pasted image 20250118184326.png
得知是在web文件夹下

点进查看到action指向了/goform/formSysCmd

Pasted image 20250118184556.png

action指向了/goform/formSysCmd直接跟进一下formSysCmd,在命令行使用grep进行查找字符串

Pasted image 20250118185049.png

发现字符串都是在asp文件中,但还有一个字符串是在/bin/webs,这说明webs这个二进制文件里也包含了”FormSysCmd“,找到这个二进制文件

Pasted image 20250118185341.png

使用readelf -h查看webs文件类型

Pasted image 20250118185510.png
得知文件是MIPS大端,是ELF结构体

将webs文件拖进ida里进行分析,查找字符串“formSysCmd”搜索相关函数

Pasted image 20250118190512.png

由于是ELF的结构体,直接点进formSysCmd就是函数的实际地址

Pasted image 20250118190715.png

Pasted image 20250118191009.png

按F5查看代码,进行分析

Pasted image 20250118191746.png

可以看到变量V3的值是通过websGetVar函数获取sysCmd传递的,if(v3)检查sysCmd参数是否为有效字符串,snprintf将从sysCmd参数中获取的命令(v3)格式化一个新的字符串,并将其存储在v20中,2>&1表示将标准错误输出重定向到标准输出,而>/tmp/system.log会将输出结果保存到/tmp/system.log文件中,system(v20)执行格式化命令。

结论

个人猜测此命令注入疑似厂家预留后门,若想避免攻击者对路由器进行攻击,可以通过白名单的方式,对输入进行验证并限制sysCmd参数只能执行安全的命令即可!

分享到

参与评论

0 / 200

全部评论 0

暂无人评论
投稿
签到
联系我们
关于我们