路由器0day漏洞挖掘实战

栏目: 编程工具 · 发布时间: 5年前

内容简介:去年7月的时候在公司内部分享过这个议题,说来也将近一年了,懒得现在才发出来。在2018年的3,4月两个多三个月的时间里,花了比较多的时间去搞一个国产的路由器,挖了一些漏洞后,之后也就没搞了。

路由器0day漏洞挖掘实战

去年7月的时候在公司内部分享过这个议题,说来也将近一年了,懒得现在才发出来。

在2018年的3,4月两个多三个月的时间里,花了比较多的时间去搞一个国产的路由器,挖了一些漏洞后,之后也就没搞了。

也写了个有一点作用的MIPS IDAPYTHON审计辅助脚本

https://github.com/giantbranch/mipsAudit

基础知识

简介

1、路由器基本都是阉割版的 linux 系统

2、架构以MIPS和ARM为主

3、一般含有telnet服务

4、很多基础命令以busybox的方式实现(如cat,chmod,date,echo,ifconfig,ls,kill等)

比如下面路由器中的busybox

路由器0day漏洞挖掘实战

路由器常见漏洞

Web漏洞

  • XSS
  • CSRF

二进制漏洞

  • 主要是栈溢出

自带后门

  • 磊科路由器后门:私有协议,硬编码密码的后门

环境及工具

Ubuntu虚拟机

python

IDA

Binwalk

QEMU

对应架构的qemu虚拟机

gdb及静态编译的gdbserver

Burp,filefox插件

。。。。。。

固件的提取与解压

总览

路由器0day漏洞挖掘实战

固件提取

1、对智能硬件(路由器)的升级进行抓包,提取url

2、通过烧录器读取拆卸下来的芯片

路由器0day漏洞挖掘实战

3、通过mtd的方式

  • 查看分区信息

路由器0day漏洞挖掘实战

  • 一般别人用dd命令来提取,其实用cp和cat也可以

路由器0day漏洞挖掘实战

4、通过串口的方式

假如串口可以获得shell,那么可以使用第三种方法

固件解压

binwalk -Me XXXXXX.bin

M ,—matryoshka 递归扫描可解压的

e,—extract 提取

解压到的是_XXXXXX.bin.extracted/

路由器0day漏洞挖掘实战

以某个路由器为例的漏洞挖掘

Web安全漏洞

审计web源码,发现有些目录(下面的goform)不存在,代码在二进制中实现,故使用黑盒测试

路由器0day漏洞挖掘实战

随便试了一下搞了几个XSS

路由器0day漏洞挖掘实战

路由器0day漏洞挖掘实战

路由器0day漏洞挖掘实战

还有自带命令执行的

路由器0day漏洞挖掘实战

添加路由处存在命令注入漏洞,这个是找到溢出后顺便发现的

路由器0day漏洞挖掘实战

二进制漏洞挖掘之静态分析

这个我编写了个IDAPYTHON审计辅助脚本,用处嘛,有一点点吧。。。

开源地址: https://github.com/giantbranch/mipsAudit

辅助脚本功能如下:

1、找到危险函数的调用处,并且高亮该行(也可以下断点)

2、给参数赋值处加上注释

3、最后以表格的形式输出函数名,调用地址,参数,还有当前函数的缓冲区大小

详细见下图

路由器0day漏洞挖掘实战

路由器0day漏洞挖掘实战

针对不确定参数的函数

路由器0day漏洞挖掘实战

我们可以点击addr那一列直接到达函数调用处,方便审计

其实跑出来的量还是很大的,我只不过是偶然的机会遇到了刚好又漏洞的。。

我定位到的是下面这里,有strcat和sprintf

路由器0day漏洞挖掘实战

向上回溯有个route add的字符串

路由器0day漏洞挖掘实战

那应该是添加路由的地方

路由器0day漏洞挖掘实战

测试

路由器0day漏洞挖掘实战

发现后面goahead的pid都变了,那应该溢出崩溃,重启了

路由器0day漏洞挖掘实战

上gdb调试确认溢出

路由器0day漏洞挖掘实战

那么漏洞成因就是:strcat和sprintf的拼接

动态调试

1、基于qemu

2、在设备上调试

qemu

qemu有两种运作模式

用户模式(User mode),启动不同架构的Linux程序

系统模式(System mode),模拟整个电脑系统(这个暂时还没能够实现动态调试)

注:有些程序比较依赖于特定的函数(比如nvram系列函数)就很难用qemu启动了

将对应的qemu程序及其依赖库拷贝到对应目录,使用静态的就没这烦恼了

路由器0day漏洞挖掘实战

路由器0day漏洞挖掘实战

启动一个mipsel的程序

sudo chroot ./ ./qemu-mipsel ./bin/busybox

路由器0day漏洞挖掘实战

调试只要加-g参数即可(下面会监听23946端口)

sudo chroot ./ ./qemu-mipsel -g 23946 ./bin/busybox

ida 使用remote gdb debuger即可

路由器0day漏洞挖掘实战

在设备上调试

条件

1、有 shell 权限

2、有静态编译的gdbserver或者gdb

路由器0day漏洞挖掘实战

路由器0day漏洞挖掘实战

路由器0day漏洞挖掘实战

Reference

《揭秘家用路由器0day漏洞挖掘技术》

《IDA Pro权威指南》

《python 灰帽子》

https://github.com/wangzery/SearchOverflow/blob/master/SearchOverflow.py

https://www.hex-rays.com/products/ida/support/idapython_docs/

以上所述就是小编给大家介绍的《路由器0day漏洞挖掘实战》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法技术手册(原书第2版)

算法技术手册(原书第2版)

George T. Heineman、Gary Pollice、Stanley Selkow / 杨晨、曹如进 / 机械工业出版社 / 2017-8-1 / 89.00元

本书使用实际代码而非伪代码来描述算法,并以经验主导支撑数学分析,侧重于应用且规范严谨。本书提供了用多种程序设计语言实现的文档化的实际代码解决方案,还介绍了近40种核心算法,其中包括用于计算点集的Voronoi图的Fortune算法、归并排序、多线程快速排序、AVL平衡二叉树实现以及空间算法。一起来看看 《算法技术手册(原书第2版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具