点击蓝字 · 关注我们
下载链接:
http://www.totolink.cn/home/menu/detail.html?menu_listtpl=download&id=62&ids=36
1
infostat.cgi
查看main函数:
可以看到,该cgi文件先接收了前端通过post传递过来的数据,然后通过strtol函数去进行处理。然后将处理后的长整数字符赋值到了v9,然后通过fread从v9里面读取数据到v11,但是没有限制数据的长度,
—-所以这里存在一个缓冲区溢出漏洞—-
后注:该cgi经过审计没找到其它的漏洞 所以 换!
2
downloadFlile.cgi
依旧是main函数:
v14获取前端通过 get方式传递过来的数据,然后直接拼接到了v24然后用system()去直接运行了命令这是很明显的命令执行,但是该漏洞已被提交,没关系我们继续往下看
v3=strchr(v14,’=’) (这个等号按r转换一下就行)该行获取get传参的方式中“=”后面数据然后赋值到了v3,然后通过strcpy(v25, v3 + 1);直接复制到了v25
然后通过strtok去分割了 url中的”/“数据,然后又直接通过strcpy复制到了v26,
(初次判断这里应该是处理url中的目录文件)
然后通过
sprintf(v24, “echo appId:%s versionId:%s path:%s fileName:%s >>/tmp/download”, v26, v27, (const char *)v8, v20);
老样子 没看到别的洞 换!
3
cstecgi.cgi
依旧是老朋友 main函数
v26获取了程序通过post方式传递过来的数据,然后经过strtol处理后赋值给了v31
然后有直接将sprintf复制到了v32数组然后直接system去执行命令
if ( v28 && (v27 = strstr(v28, “CSAuthUrl=”)) != 0 )
获取CSAuthUrl=后的数据,所以这里的参数就是CSAuthUrl,然后再下一行通过sprintf直接拼接复制到了v33里面
可以看到totolink路由器有些型号的路由器代码逻辑简单,且安全性来说较为适合新手去挖,唯一缺点,totolink环境模拟较为复杂,通过qemu去模拟的环境需要自己去hook,所以推荐购买真机去进行漏洞挖掘和代码审计。
本文水平较低,仅帮助iot新手去过渡iot的漏洞挖掘,欢迎师傅找我一起学习,一起进步。
EDI安全
扫二维码|关注我们
一个专注渗透实战经验分享的公众号
原文始发于微信公众号(EDI安全):对totolink的简单代码分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论