记一次对totolink A860R 的简单的漏洞挖掘

admin 2022年9月16日00:04:28IoT评论3 views1642字阅读5分28秒阅读模式
记一次对totolink A860R 的简单的漏洞挖掘

作者:庄周恋蝶蝶恋花


固件信息

TOTOLINK:A860R V4.1.2cu.5182_B20201027

如需下载链接请在文末跳转原文


开始挖掘


思路


拿到固件第一时间分析固件结构

固件web服务器是lighttpd,但经过简单的判断和分析,处理前端传递的数据主要由cgi-bin/中的各个cgi组件去处理的,所以我的思路就放在了去对这些各个.cgi文件去进行代码分析


►►►

infostat.cgi


查看main函数:


记一次对totolink A860R 的简单的漏洞挖掘


可以看到,该cgi文件先接收了前端通过post传递过来的数据,

然后通过strtol函数去进行处理。然后将处理后的长整数字符赋值到了v9,然后通过fread从v9里面读取数据到v11,但是没有限制数据的长度


—-所以这里存在一个缓冲区溢出漏洞—-


注:如果不明白getenv(‘CONTENT_LENGTH’)为什么是接收post传递的数据,推荐可以去学习一下简单的cgi开发,能帮助自己理解代码即可,这里我放一个之前找的一个getenv参数记录的网站

https://www.cnblogs.com/ser0632/p/5498228.html


后注:该cgi经过审计没找到其它的漏洞,所以,换!


►►►

downloadFlile.cgi


依旧是main函数:


记一次对totolink A860R 的简单的漏洞挖掘


同样的简单的代码审计

v14获取前端通过 get方式传递过来的数据,然后直接拼接到了v24 然后用system()去直接运行了命令

这是很明显的命令执行,但是该漏洞已被提交,没关系我们继续往下看

v3=strchr(v14,’=’) (这个等号按r转换一下就行)该行获取get传参的方式中“=”后面数据然后赋值到了v3,然后通过strcpy(v25, v3 + 1);直接复制到了v25


—-这里存在一个缓冲区溢出漏洞—-


用v3+1是为了去除掉这个’=’号,

然后通过strtok去分割了 url中的”/“数据,然后又直接通过strcpy复制到了v26,

(初次判断这里应该是处理url中的目录文件)


—-这里同样也是一个缓冲区溢出漏洞—-


然后程序在经过多次的分割”/“后的数据,将数据复制到了v27中(这个洞不管了太多了)

然后通过

sprintf(v24, “echo appId:%s versionId:%s path:%s fileName:%s >>/tmp/download”, v26, v27, (const char *)v8, v20);

这行函数将数据复制到了v24数组中,然后再一次的直接用system去执行


—-这里又是一个明显的命令执行—-


所以该函数经过简单审计后截图如下


记一次对totolink A860R 的简单的漏洞挖掘


老样子 没看到别的洞 换!


►►►

cstecgi.cgi


依旧是老朋友 main函数


记一次对totolink A860R 的简单的漏洞挖掘


代码逻辑同样比较简单

v26获取了程序通过post方式传递过来的数据,然后经过strtol处理后赋值给了v31

然后有直接将sprintf复制到了v32数组

然后直接system去执行命令


—-这里存在一个命令注入—-

(能直接shell谁还看缓冲区溢出呀)


然后第51行程序获取了通过get方式传递的数据

然后通过下面这个if语句

if ( v28 && (v27 = strstr(v28, “CSAuthUrl=”)) != 0 )

获取CSAuthUrl=后的数据,所以这里的参数就是CSAuthUrl,然后再下一行通过sprintf直接拼接复制到了v33里面


—-这里存在一个缓冲区溢出—-


然后该cgi没看到其它较为明显的漏洞



该型号路由器简单的代码审计就此结束,复现poc就不发出来了(开摆!),上述提到的漏洞已接连上报


可以看到totolink路由器有些型号的路由器代码逻辑简单,且安全性来说较为适合新手去挖,唯一缺点,totolink环境模拟较为复杂,通过qemu去模拟的环境需要自己去hook,所以推荐购买真机去进行漏洞挖掘和代码审计


本文水平较低,仅帮助iot新手去过渡iot的漏洞挖掘,欢迎师傅找我一起学习,一起进步


点击文末“阅读原文”跳转社区



记一次对totolink A860R 的简单的漏洞挖掘

原文始发于微信公众号(IOTsec Zone):记一次对totolink A860R 的简单的漏洞挖掘

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月16日00:04:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  记一次对totolink A860R 的简单的漏洞挖掘 http://cn-sec.com/archives/1297601.html

发表评论

匿名网友 填写信息

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