tenda某路由器信息泄露查找
本文作者:i春秋作家——icqb32d3a26
1: 前期准备:
(1) 路由器固件
一般获取固件的方法有以下几种
- 官方网站根据对应版本下载(√),点击下载
- 在点击更新固件时抓取对应的更新固件链接
- 拆开路由器,找到flash芯片后,通过热风枪取下flash芯片,使用编程器读取
- 通过uart串口进入路由器调试界面,进行flash的备份
(2) binwalk工具
https://github.com/ReFirmLabs/binwalk
2: 固件信息提取
(1) 解压并用binwalk获取固件一些信息解压
binwalk获取信息
(2)从binwalk的结果,我们可以得知tenda这一个固件有trx header和lzma压缩后的数据组成。关于trx header的结构可以参考文章最后的参考链接,
下面使用通过binwalk -e解包
如图所示,解包结果如下
(3)进入到对应提取后的目录查看提取后的文件,对lzma压缩后的数据解压后得到1C这一个文件,再对1C进行binwalk操作。
如图所示,这一次binwalk返回足够多的信息,我们可以了解到这一个tenda路由器使用eCos小端的嵌入系统,在binwalk的结果中我们,我们看到还有一些html文件。
3: 对解压后的固件镜像再次进行提取(1)解压后的固件再次提取
如图所示,提取结果如下
但是我们可以发现,提取后的每一个文件都是data,并不是我们已知的类型,这到底是肿么回事?
我们查看具体的一个xml文件看一下,可以看到这并不是一个正常的xml文件,其中还混杂这其它二进制数据,应该是binwalk在处理xml或者html这类文件时,无法像其它文件一样通过文件头来确定整个文件的大小,github上也有对应的issue在讨论。
(2)如何继续分析
思路:
- 寻找另外一个能够更好处理xml和html数据的工具进行提取
- 分析路由对应cfe如何对镜像进行处理
- 通过正则查找脚本语言相关的代码段进行分析
(3) 我们采用最简单的方法,通过正则查找脚本语言相关的代码段进行分析
Step 1. 使用strings命令将解压后的1C字符串输出到文本
strings 1C > tenda.txt
Step 2. 对应的这款tenda路由器使用asp脚本语言,我们可以通过查找<%xx%>这样的asp代码片段
grep -e "<%.*%>" tenda.txt
如图所示,asp代码片段全部用于在js中初始化一些关于路由器的参数值,没有相关的敏感信息
Step 3. 查找tenda路由器中的cgi处理程序,是否有一些隐藏的链接。
grep -e "cgi" tenda.txt
获取到的信息
/cgi-bin/upgrade
/cgi-bin/DownloadCfg/RouterCfm.cfg
/cgi-bin/UploadCfg
从命名上来看,我们可以得知,upgrade是用来更新固件的、DownloadCfg是用来下载配置文件、UploadCfg是用来上传配置文件的,我们测试下直接访问/cgi-bin/DownloadCfg/RouterCfm.cfg,是否能下载路由器的配置文件。
成功下载路由器的配置文件,文件中包含拨号连接的账号信息。
4: 现网案例查找
在路由器页面里面,我们可以通过js的一些特征作为搜索关键字
fofa中搜索
公网的一些案例
5:总结
也许一个信息泄露漏洞不能代表什么,但是却能够在你继续前行的道路给你力量。对固件静态分析也许也会有些收获,所以不拘泥于分析方法,多思考,或许会有新的发现。
参考链接:
1. trx header
>>>>>>黑客入门必备技能 带你入坑和逗比表哥们一起聊聊黑客的事儿他们说高精尖的技术比农药都好玩