zoukankan      html  css  js  c++  java
  • 路由器漏洞挖掘利用的一些基础知识

    提取固件的几种方法
    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 "x11x22x33x44" > /tmp/elf

    路由器漏洞分析练习
    DVRF
     
     
     
     
     
     
     
     
  • 相关阅读:
    VUE 入门基础(8)
    VUE 入门基础(7)
    VUE 入门基础(6)
    VUE 入门基础(5)
    VUE 入门基础(4)
    VUE 入门基础(3)
    线程的通信
    如何实现一个简单的RPC
    Java程序员必须掌握的线程知识-Callable和Future
    同步函数死锁现象
  • 原文地址:https://www.cnblogs.com/junmoxiao/p/11753847.html
Copyright © 2011-2022 走看看