Sapido RB-1732 远程命令执行漏洞 漏洞介绍 sapido 是SAPIDO公司开发的一款家用路由器,其RB-1732系列v2.0.43
之前的固件版本存在一处命令执行漏洞。该漏洞的产生原因是。服务器的syscmd.asp 页面没有对传递过来的参数进行过滤,这使得用户以参数的形式将系统命令发送给服务器,并在服务器上执行
漏洞影响 1 2 3 4 BR270 n-v2.1 .03 BRC76 n-v2.1 .03 GR297 -v2.1 .3 RB1732 -v2.0 .43
网络测绘
环境搭建 首先下载固件 然后binwalk解包
![image-20240814110220059](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814110220059-17236045405711.png)
发现是Squashfs文件系统的,然后使用FirmAE搭建环境,或者使用Firmware Analysis Toolkit ,但是我的这个环境老是搭建不起,于是使用的是FirmAE
1 2 3 sudo ./run.sh -c RB-1732 ~/Desktop/SAPIDO/RB-1732_TC_v2.0.43.bin sudo ./run.sh -r RB-1732 ~/Desktop/SAPIDO/RB-1732_TC_v2.0.43.bin
稍微等一会就启动成功了
![image-20240814110421768](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814110421768.png)
![image-20240814110450439](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814110450439.png)
漏洞分析 前面提到了我们的漏洞点在syscmd.asp 页面上于是找到这个syscmd.asp
文件的位置
1 2 3 4 earch:~/Desktop/SAPIDO/_RB-1732_TC_v2.0.43.bin.extracted/squashfs-root$ ls bin dev etc home init lib mnt proc sys tmp usr var web iot@research:~/Desktop/SAPIDO/_RB-1732_TC_v2.0.43.bin.extracted/squashfs-root$ find . -name syscmd.asp ./web/syscmd.asp
打开这个文件,查看其源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 <html> <! Copyright (c) Realtek Semiconductor Corp., 2003. All Rights Reserved. -> <head> <meta http-equiv="Content-Type" content="text/html"> <title>System Command</title> <script> function saveClick(){ field = document.formSysCmd.sysCmd ; if(field.value.indexOf("ping")==0 && field.value.indexOf("-c") < 0){ alert('please add "-c num" to ping command'); return false; } if(field.value == ""){ alert("Command can't be empty"); field.value = field.defaultValue; field.focus(); return false ; } return true; } </script> </head> <body> <blockquote> <h2><font color="#0000FF">System Command</font></h2> <form action=/goform/formSysCmd method=POST name="formSysCmd"> <table border=0 width="500" cellspacing=0 cellpadding=0> <tr><font size=2> This page can be used to run target system command. </tr> <tr><hr size=1 noshade align=top></tr> <tr> <td>System Command: </td> <td><input type="text" name="sysCmd" value="" size="20" maxlength="50"></td> <td> <input type="submit" value="Apply" name="apply" onClick='return saveClick()'></td> </tr> </table> <input type="hidden" value="/syscmd.asp" name="submit-url"> </form> <script language="JavaScript"> </script> <textarea rows="15" name="msg" cols="80" wrap="virtual"><% sysCmdLog(); %></textarea> <p> <input type="button" value="Refresh" name="refresh" onClick="javascript: window.location.reload()"> <input type="button" value="Close" name="close" onClick="javascript: window.close()"></p> </blockquote> </font> </body> </html>
可以看到form表单的action,于是数据会移交给/goform/formSysCmd
1 <form action=/goform/formSysCmd method=POST name="formSysCmd">
![image-20240814112335585](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814112335585.png)
于是查看formSysCmd,发现存在一个二进制程序,可能就是在这里实现了对formSysCmd
的调用,于是用ida打开webs
找到字符串formSysCmd
,然后发现对应的函数为formSysCmd,于是去查看一下
![image-20240814112501978](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814112501978.png)
发现关键的参数是syscmd
![image-20240814113019678](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814113019678.png)
抓包分析一下sysCmd是哪个参数,发现就是system command命令
![image-20240814113100990](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814113100990.png)
漏洞利用 访问目标:
1 2 http://xxx.xxx.xxx.xxx/syscmd.asp http://xxx.xxx.xxx.xxx/syscmd.htm
[ ](https://github.com/Apibug/SecPost/blob/main/images/202202162237444.png )
直接输入就可以命令执行了