路由器漏洞挖掘利用的一些基础知识

提取固件的几种方法
1 从厂商网站下载
2 代理或镜像设备更新时的流量
    通过MITM提取出下载URL,或许还需要设置UA
3 直接从设备转储固件
    固件一般烧录在FlashROM上,通过以下几个方法获取
    1 用编程器+烧录夹读取
    2 用TTL小板连UART串口从bootloader中提取或者直接进shell
    3 把FlashROM 切下来,再用编程器+烧录底座读取
4 Google搜索
 

固件中提取文件系统
1 binwalk
    binwalk -e
    binwalk -E 进行熵分析,判断是否有加密

文件系统分析方法
1 查看配置文件,Web 目录, 口令文件,查找后门等
    find . -name "*.conf"
2 使用firmwalker
3 对二进制文件进行分析
 

动态分析
1 基于固件仿真的自动化脚本
        Firmware Analysis Toolkit(Firmadyne的自动化脚本)
        Firmadyne
2 手工下载目标架构的debian镜像,chroot运行web服务器或其他需要测试的组件
3 有真机的情况
    先root设备,再把gdb扔上去,在shell里面用gdb附加目标漏洞进程
4 qemu
 

路由器的构造
CPU FlashRom RAM 其他(网卡,天线,调试接口,各种元器件等)
挖洞主要关注FlashROM(可能需要真机提取固件) UART串口(可能用来getshell和调试)

路由器的攻击面
1 web
    几种不同web架构
    1 一个web后台进程+ 多个cgi程序 + 各种静态资源
        优先逆cgi程序,这些cgi一般实现管理业务,容易有命令注入,然后再逆web守护进程
    2 一个web后台进程 + 各种静态资源
    3 一个web后台进程 + 解析器与lua/php/asp + 各种静态资源
        先审计脚本程序,容易出现命令注入
2 实现upnp的代码
    几乎所有路由器都有实现upnp协议的代码,这个协议主要用于局域网中设备间的通信,路由器在实现upnp中某个自定义action时,可能会有输入数据处理不当的溢出漏洞,命令注入较少
3 实现一些私有协议的代码
    例如,很多路由器厂商有提供“设备发现”功能,容易出现溢出
4 后门类漏洞
    路由器自带telnetd/ftpd/sshd,可以看看有没有厂商留下的后门密码

路由器的漏洞利用技巧
1 基于http的命令注入漏洞
    ;cmd;
    || cmd ||
    && cmd &&
2 栈溢出
    基本套路和pc端一致,一些差异如下
    1 路由器大端字节序居多,遇到strcpy sprintf存在溢出时,返回地址有00会复制不过去,解决办法是跳到动态库中的代码,一般不会有00
    2 路由器一般不会开ASLR,NX经常开启,构造ROP即可
 

路由器shell的利用
1 wget
2 tftp
3 用echo写文件进去
    echo -e -n "\x11\x22\x33\x44" > /tmp/elf

路由器漏洞分析练习
DVRF
 
 
 
 
 
 
 
 
posted @ 2019-10-28 17:39  君莫笑hhhhhh  阅读(928)  评论(0编辑  收藏  举报