登录后台

页面导航

本文编写于 123 天前,最后修改于 92 天前,其中某些信息可能已经过时。

基础准备与工具

常见漏洞

  • 弱密码
  • 路由器web漏洞
  • 路由器后门漏洞
  • 路由器溢出漏洞

基础知识和工具

  • mips linux

    • 属精简指令集的一种
  • busybox命令

    • 由于内存空间的限制,所使用的shell是经过裁剪的busybox程序,不同路由器支持的命令可能不同;
    • 使用busybox --help查看当前路由器支持的命令
  • 文本编辑器

    • nano编辑器
    • 全屏幕编辑器vi
  • 编译工具GCC
  • 调试工具GDB

mips汇编语言基础

已经写了一篇mips的基础知识学习的文章,这部分略过,边学边用边查,面向百度编程~
mips学习

http协议

必备软件和环境

vmware
IDA Pro
以下安装可参考:mips-pwn环境搭建
binkwalk:固件分析
QEMU:模拟处理器自由软件
buildroot:编译交叉环境

路由器漏洞分析高级技能

修复路由器运行环境

p71附件:DIR-605L_FIRMWARE_1.13.zip
1.运行程度,定位异常函数;
2.分析异常函数,编写一个具有相同功能的函数,伪造执行流程和数据,并将编写的函数封装成一个函数库;
3.使用LD_PRELOAD环境变量加载新的动态库来劫持目标程序中的异常函数,使目标程序执行动态库中的函数;
这里有个坑,在72页
qemu-mips有可能无法运行程序,需要改成qemu-mips-static
我遇到的问题是这样,每个人可能不同

IDC语言

ida里面一种脚本语言,用到的时候再学吧

python编程

路由器web漏洞

XSS漏洞

跨站脚本攻击

CSRF漏洞

跨站请求伪造

基础认证漏洞

路由器后门漏洞

路由器溢出漏洞

mips堆栈的原理

mips32架构的函数调用与x86有相似也有不同之处

  • 所有命令全部是四字节
  • 没有ebp,对栈的操作必须指定偏移量
  • 前四个用$a0~$a3传递,多余四个参数时需要用栈保存参数
  • 返回地址存入$ra寄存器,
  • 叶子函数和非叶子函数的区别,当非叶子函数调用非叶子函数时,返回地址保存在堆栈上

在mips32架构下是否可以利用缓冲区溢出漏洞??

  • 非叶子函数可以溢出到上层函数保存在栈上的返回地址;
  • 叶子函数可以尝试覆盖main函数的返回地址,所需溢出可能会很大;

漏洞开发利用过程

1.劫持pc
2.确定偏移
3.确定攻击路径

  • mipsrop技巧

通过mipsrop.help()可以查看功能

命令作用
mipsrop.find(instruction_string)Locates all potential ROP gadgets that contain the specified instruction.
mipsrop.system()Prints a list of gadgets that may be used to call system().
mipsrop.doubles()Prints a list of all "double jump" gadgets (useful for function calls).
mipsrop.stackfinders()Prints a list of all gadgets that put a stack address into a register.
mipsrop.tails()Prints a lits of all tail call gadgets (useful for function calls).
mipsrop.set_base()Set base address used for display
mipsrop.summary()Prints a summary of your currently marked ROP gadgets, in alphabetical order by the marked name.

4.构建漏洞攻击数据

基于mips的shellcoed

shellcode构造

shellcode构造的大致过程同x86类似,构造execve("/bin/sh",0,0)这样的形式就可
需要注意mips的execve系统调用号和x86不同,
可参考这篇文章:MIPS 指令集 Shellcode 编写入门

shellcode优化

  • 指令优化

通过选择一些特殊指令避免生成空字节,

  • shellcode编码

在某些情况下会对shellcode限制,我们可以选择优化,也可以进行编码;
三种常用的编码方式:base64,alpha_ipper编码,xor编码
先执行前部分的解码程序,再执行shellcode

通用shellcode开发

  • reboot shellcode
  • reser_tcp shellcode

补充

pwntools生成:shellcode =asm(shellcraft.mips.linux.sh(),arch='mips')
msfvenom:metasploit-framework项目
shellcod数据库:Exploit Database Shellcodes

路由器文件系统与提取

  • 网上下载固件
  • 硬件接入,从Flash中提取

手动提取文件

不存在的,pass
p184附件:DIR-645_FIREWARE_1.04.B11.zip

自动提取文件

binkwalk -e就行

漏洞分析简介

  • 动态分析
  • 静态分析

D-Link DIR-645路由器溢出漏洞分析

D-Link DIR-505便携路由器越界漏洞分析

Linksys WRT54G路由器溢出漏洞分析————运行环境修复

磊科全系列路由器后门漏洞分析

D-Link DIR-600M路由器web漏洞分析