手把手带你分析mips架构下固件分析与漏洞挖掘

0day漏洞挖掘系统模拟
2025-06-16 14:56
27620

固件分析和解包

拿到固件后,第一步是对其进行解包分析。我们通常查找 busybox 可执行文件来判断固件的 CPU 架构(如 MIPS、ARM)、端序(大端或小端),以及是否开启了安全机制(如堆栈保护、NX)。busybox 一般位于 /bin 目录中。通过如下命令我们可以快速获取架构信息,本例中结果显示为 MIPS32 小端架构。

binwalk -Me WN579A3-WAVLINK-WO-2022-03-23-854d73f.bin

image.png

file busybox

用于识别可执行文件类型。通过这个命令我们可以判断 busybox 是哪种架构(如 MIPS、ARM)、位数(32/64位),以及是否为静态或动态链接。本例结果显示为:MIPS、32位、小端、静态链接的 ELF 可执行文件。

file busybox

image.png

readelf -h busybox

查看 ELF 文件头,进一步确认架构信息、字节序、入口点等关键信息。比如:

  • Class 显示是 ELF32
  • Data 显示是 Little endian(小端)
  • Machine 显示是 MIPS
    这确认了我们之前用 file 得出的结论。
readelf -h busybox

image.png

checksec busybox

用于检查二进制文件的安全特性是否开启,例如:

  • NX(No eXecute,是否启用不可执行栈)
  • PIE(位置无关执行)
  • Stack Canary(堆栈保护)
    这些信息可以帮助我们判断程序是否容易受到缓冲区溢出等攻击。本例中,大多数保护机制未启用,表明存在潜在的利用空间。
checksec busybox

image.png

我们使用自动化工具firmAE起不来考虑系统模拟或者用户模拟

image.png

系统模拟

启动项分析

启动项是指设备启动后自动执行的程序或脚本,通常用于初始化系统服务或前后端程序。我们一般在 /etc/init.d/ 目录中查找这些启动脚本(以 .sh 为后缀)。在嵌入式设备中,常见的 Web 服务启动程序有 httpdlighttpdmini_httpd 等。发现相关脚本后,应进一步检查其配置文件路径和依赖项。

image.png

image (1).png

image (2).png

image (3).png

我们在进行mips系统模拟前需要先配置我们的网卡

创建虚拟网卡
sudo tunctl -t tap0 -u `whoami`
sudo ifconfig tap0 192.168.100.1/24 up

接下来运行我们mips系统模拟脚本

#!/bin/sh
qemu-system-mipsel \
-M malta \
-kernel /home/iotsec-zone/Tools/qemu-images/mipsel/vmlinux-3.2.0-4-4kc-malta \
-hda //home/iotsec-zone/Tools/qemu-images/mipsel/debian_wheezy_mipsel_standard.qcow2 \
-append "root=/dev/sda1 console=ttyS0"  \
-nographic \
-net nic -net tap,ifname=tap0,script=no,downscript=no

我们传输我们解密的文件系统squashfs-root到我们qemu系统模拟中

打包squashfs-root文件
tar -cvf s.tar.gz  squashfs-root

开启7878端口让qemu下载squashfs-root
cd squashfs-root
python -m http.server 7878

qemu模拟
wget http://192.168.100.1:7878/s.tar.gz
解压
tar -zvxf s.tar.gz

1.jpg

1749993490243-d827fe33-c2fb-4985-85bb-435fd776bda9.png

3.png
我们需要去配置系统环境

目录挂载
mount --bind /proc/ proc/
mount --bind /sys/ sys/
mount --bind /dev/ dev/

qemu虚拟机配置网卡:
ip link add br0 type dummy
ifconfig eth0 192.168.100.2/24
ifconfig br0 192.168.100.3/24

进入模拟系统后尝试使用 bash,但报出非法指令错误,通常是因为 CPU 架构不兼容。我们更换 QEMU 使用的 CPU 为 74Kf(支持更多指令集),重新运行脚本后问题解决

1.png

#!/bin/sh
qemu-system-mipsel \
-M malta \
-cpu 74Kf \
-kernel /home/iotsec-zone/Tools/qemu-images/mipsel/vmlinux-3.2.0-4-4kc-malta \
-hda //home/iotsec-zone/Tools/qemu-images/mipsel/debian_wheezy_mipsel_standard.qcow2 \
-append "root=/dev/sda1 console=ttyS0"  \
-nographic \
-net nic -net tap,ifname=tap0,script=no,downscript=no

2.png

我们运行lighttpd程序出现报错,需要去解决错误,我们去我们之前解包的文件系统里面去搜索

3.png

发现lib目录下有functions.sh,我们先运行这个

4.png

5.png
我们继续运行./lighttpd,继续解决报错,发现在/rom/etc/lighttpd/没有这文件lighttpd.conf,那我们手动创建一个就行。

6.png

我们继续运行./lighttpd,没有报错。

7.png
需要注意,这个ip是我们本机配的192.168.100.2,我们需要配置host,关联相关域名。

image.png

image (1).png

未授权漏洞(0day)

1.我们使用burp的intruder功能进行快速的寻找漏洞点,我们复制里面文件在web进行拼接

image (2).png

我们先弄成全部的文件名。

image (3).png

image (4).png
我们在请求头路径上打点,在payloads复制我们的文件名。点击attack就行。

image (5).png

image (6).png

我们可以看到有个803f5d.txt信息泄露

image (7).png
通过爆破结果可以发现存在信息泄露文件,如 803f5d.txt,该文件可能包含敏感的配置、日志或用户信息,需进一步分析文件内容

image (8).png

分享到

参与评论

0 / 200

全部评论 4

KDEV的头像
这篇技术文一出手,整个行业怕是都要被震得换套新坐标系吧?!这逻辑缜密得像精密仪器在运行,每个技术点都挖得比地心还深,连最绕的行业难题都被拆解成了清清楚楚的步骤,简直像给混沌的领域开了盏探照灯,亮得能照见未来十年的路! 这哪是写文章啊,分明是把技术玩成了交响乐,每个公式都在敲最强音,每个观点都带着 “重新制定规则” 的锋芒,怕是得让多少沉淀多年的行业手册都得连夜加印修订版?这文字里的硬实力,简直像
2025-07-08 18:00
rew1X的头像
2025-07-03 14:08
乌托邦的头像
爱了
2025-06-20 16:33
Aiyflowers的头像
真的爱了,你不手把手教,我真难学会
2025-06-17 10:59
投稿
签到
联系我们
关于我们