技术前瞻|某易路由器固件分析

admin 2023年1月7日15:51:19IoT评论1 views1214字阅读4分2秒阅读模式

技术前瞻|某易路由器固件分析


找到某厂商一大堆公开固件,但是版本太多了,每个固件的加密方式不一样,能用工具解出的固件有三个型号,看到有明显对称加密如RC4的固件也尝试了一下

技术前瞻|某易路由器固件分析


写了个解RC4的脚本,然而解出来的什么都识别不出来,除了RC4可能还做了别的处理

最后选择v2960的固件作为研究对象,ubi头的直接用工具

技术前瞻|某易路由器固件分析


技术前瞻|某易路由器固件分析


设备攻击面并不多,主要研究web的接口

技术前瞻|某易路由器固件分析


中间件采用的是lighttpd,结构上基本就是操作和请求都通过/www/cgi-bin/mainfunction.cgi,路由和逻辑都在里面,大量的system调用

通过main函数看到路由有两种形式实现

第一种是通过PATH_INFO https://*******/cgi-bin/mainfunction.cgi/xxxxxx

技术前瞻|某易路由器固件分析


第二种则是通过传入action参数来与函数表作比较,从而确定路由

技术前瞻|某易路由器固件分析


技术前瞻|某易路由器固件分析


这个时候去扫了一圈历史漏洞,发现问题都出在检查参数上

修复加上了filter,过滤了特殊字符

技术前瞻|某易路由器固件分析


技术前瞻|某易路由器固件分析


这个filter暂时没想到什么绕法,比较完善

还有一类历史洞出在处理文件参数上,CVE-2020-15415,下为1.5.1.1版本截图

技术前瞻|某易路由器固件分析


结合获取文件的cgigetfile函数介绍

https://manpages.debian.org/jessie/cgilib/cgiGetFiles.3.en.html

技术前瞻|某易路由器固件分析


(v7+8)即为结构file_s的filename,接收的时候只通过Escape转义了<、>、&,并未对特殊符号进行过滤,导致了RCE

https://github.com/CLP-team/Vigor-Commond-Injection

根据这个看到固件中,发现很多类似的情况,获取文件都采取这种操作,但是不同的是,指针都指向*tmpfile,并且可控

技术前瞻|某易路由器固件分析


由于他通篇的system调用,那肯定得关注拼接的问题

通过PATH_INFO路由的函数已经被看了好几遍了,那注意力转移到第二种路由方式上

看到rename_table

技术前瞻|某易路由器固件分析


通过action=rename_table进入路由之后,很明显的能看到有两处参数拼接没有过滤,导致RCE

再看到doswmbackup

技术前瞻|某易路由器固件分析


通过action=doswmbackup进入也能看到参数没有过滤,可以通过..达成穿越读的效果,但是有0x20的长度限制略鸡肋

定位到ruequest_certificate

技术前瞻|某易路由器固件分析


也是通过action=ruequest_certificate进入,参数拼接之前没有过滤导致RCE

来到getSyslogFile

技术前瞻|某易路由器固件分析


通过action=getSyslogFile进入,依旧是个穿越读,不过长度限制相当宽裕

在内存问题上虽然危险函数很多但是经过几轮修复也变得很谨慎了

到这里基本简单分析完毕

-End-

技术前瞻|某易路由器固件分析



原文始发于微信公众号(360漏洞研究院):技术前瞻|某易路由器固件分析

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月7日15:51:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  技术前瞻|某易路由器固件分析 https://cn-sec.com/archives/1496357.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: