本文作者: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

2. binwalk 提取xml和html的问题

>>>>>>黑客入门必备技能   带你入坑和逗比表哥们一起聊聊黑客的事儿他们说高精尖的技术比农药都好玩

tenda某路由器信息泄露查找的更多相关文章

  1. 如何安全使用公共Wifi,防止信息泄露?

    购物中心,机场,餐厅,咖啡馆,图书馆,公共交通,酒店客房均提供免费无线网络连接,这些网络每天被数百万人使用.然而,大多数人没有意识到的是,免费的公共Wi-Fi并不安全.即使需要密码才能登录,这并不一定 ...

  2. MS10-070 ASP.NET Padding Oracle信息泄露漏洞项目测试

    MS10-070 ASP.NET Padding Oracle信息泄露漏洞1         漏洞描述:ASP.NET由于加密填充验证过程中处理错误不当,导致存在一个信息披露漏洞.成功利用此漏洞的攻击 ...

  3. CTFHub_技能树_信息泄露

    常用备份文件名: www.zip bak文件 在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容 以 ind ...

  4. WordPress Backdoor未授权访问漏洞和信息泄露漏洞

    漏洞名称: WordPress Backdoor未授权访问漏洞和信息泄露漏洞 CNNVD编号: CNNVD-201312-497 发布时间: 2013-12-27 更新时间: 2013-12-27 危 ...

  5. Linux kernel 内存泄露本地信息泄露漏洞

    漏洞名称: Linux kernel 内存泄露本地信息泄露漏洞 CNNVD编号: CNNVD-201311-467 发布时间: 2013-12-06 更新时间: 2013-12-06 危害等级:    ...

  6. Linux Kernel ‘/net/socket.c’本地信息泄露漏洞

    漏洞名称: Linux Kernel ‘/net/socket.c’本地信息泄露漏洞 CNNVD编号: CNNVD-201312-037 发布时间: 2013-12-04 更新时间: 2013-12- ...

  7. Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞

    漏洞名称: Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞 CNNVD编号: CNNVD-201311-054 发布时间: 2013-11-06 更新时间: 2013- ...

  8. Linux Kernel ‘/bcm/Bcmchar.c’本地信息泄露漏洞

    漏洞名称: Linux Kernel ‘/bcm/Bcmchar.c’本地信息泄露漏洞 CNNVD编号: CNNVD-201311-053 发布时间: 2013-11-06 更新时间: 2013-11 ...

  9. 【转】Android应用开发allowBackup敏感信息泄露的一点反思

    转载:http://blog.csdn.net/yanbober/article/details/46417531 1 背景 其实这篇文章可能有些小题大作,但回过头想想还是很有必要的,有点阴沟里翻船的 ...

随机推荐

  1. struts spring 整合

    错误 :Unable to load jar:file:WEB-INF/lib/struts2-spring-plugin-2.3.15.1.jar!/struts-default.xml 原因: 我 ...

  2. Metro Revealed: Building Windows 8 apps with XAML and C# 阅读笔记

    第一章1.1.3中提到 Jesse Liberty 的<Pro Windows 8 Development with XAML and C#>,这是一本关于win8更全面的书,以后看.

  3. XE7 里面添加自定义View

    经过xe4,xe5,xe6 这么几个版本的磨合,易博龙终于在今年9月推出了统一的多平台开发版本-XE7. 经过最近几天的测试,非常不错.如果各位同学在做移动开发,强烈建议使用XE7. 前面几个版本可以 ...

  4. 支持向量机(SVM)算法

    支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计 ...

  5. Python 析构方法__del__

    class Car: def __init__(self): print('---ok---') def __del__(self): print('----deconstrcut-------') ...

  6. Netty学习第二节Java IO通信

    一.Java IO通信 名词解释: BIO通信:       采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端连接,在接收到客户端请求后,为每一个客户端建立一个新的线程负 ...

  7. Can not issue data manipulation statements with executeQuery().

    这个错误提示是说无法发行sql语句到指定的位置 就是如图的两端代码的问题,excuteQuery是查询语句,而我要调用的是更新的语句,所以这样数据库很为难到底要干嘛,我实际的操作是要更新数据,所以把 ...

  8. POJ 1458 Common Subsequence (DP+LCS,最长公共子序列)

    题意:给定两个字符串,让你找出它们之间最长公共子序列(LCS)的长度. 析:很明显是个DP,就是LCS,一点都没变.设两个序列分别为,A1,A2,...和B1,B2..,d(i, j)表示两个字符串L ...

  9. UVa 12034 Race (递推+组合数学)

    题意:A,B两个人比赛,名次有三种情况(并列第一,AB,BA).输入n,求n个人比赛时最后名次的可能数. 析:本来以为是数学题,排列组合,后来怎么想也不对.原来这是一个递推... 设n个人时答案为f( ...

  10. [翻译]Spring MVC RESTFul Web Service CRUD 例子

    Spring MVC RESTFul Web Service CRUD 例子 本文主要翻译自:http://memorynotfound.com/spring-mvc-restful-web-serv ...