论坛首页 漏洞分析研究区 阅读主题

[原创]小米AX9000路由器CVE-2023-26315漏洞复现

429 浏览 1 回复
#1 楼主 2026-06-01 21:09:04
解压固件因为这是小米的固件,需要用到ubireader_extract_image,先下载pip install poetry
git clone 4e4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6B7M7Y4y4H3M7Y4g2A6N6s2c8Q4x3V1k6#2j5X3W2Q4y4h3k6J5k6h3q4V1k6i4t1`.
cd ubi_reader
poetry install安装好了后用source /root/.cache/pypoetry/virtualenvs/ubi-reader-lHfwYMKj-py3.10/bin/activate激活虚拟环境.解压固件binwalk -Me ./miwifi_ra70_firmware_cc424_1.0.168.bin --run-as=root
cd _miwifi_ra70_firmware_cc424_1.0.168.bin.extracted
ubireader_extract_images ./2B4.ubi
//然后解出三个.ubifs文件
//对其中的xxx-ubi_rootfs.ubifs用binwalk再解开,即可得到里面的SquashFS文件系统,也就是核心部分
binwalk -Me ./img-870537086_vol-ubi_rootfs.ubifs --run-as=root解压出来的文件系统如下:小米的前端也是用的Lua编写的,但是其中的Lua文件不是源码,而是编译后的二进制文件,所以我们需要对其进行反编译。这里使用unluac_miwifi进行反编译。还是先安装工具:git clone 00bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6z5P5h3q4y4K9i4y4@1P5g2)9J5c8Y4g2F1L8s2g2S2j5#2)9#2k6X3#2A6N6$3W2X3K9g2)9J5k6h3N6A6N6l9`.`.
cd unluac_miwifi
mkdir build
javac -d build -sourcepath src  src/unluac/*.java
jar -cfm build/unluac.jar src/META-INF/MANIFEST.MF -C build  .安装好了后就可以对Lua进行反编译了。但一次只能对一个Lua文件进行反编译,所以我们需要写一个批量处理的简单脚本:import os

res = os.popen("find ./ -name *.lua").readlines()

for i in range(0, len(res)) :
    path = res[i].strip("\n")
    cmd = "java -jar /home/saulgoodman/Desktop/IOT/unluac_miwifi/build/unluac.jar " + path + " > " + path + ".dis"
    print(cmd)
    os.system(cmd)然后就能批量处理了Lua的二进制文件。下面就进行固件仿真。仿真环境配置该固件是AArch64el架构.ZIKH26 师傅已经把环境给弄好了,直接用吧(一开始我用的Ubuntu18,启动qemu时会出现各种错误(比如qemu版本太低会出现rom: requested regions overlap (rom bootloader. free=0x0000000041a32fc0, addr=0x0000000040000000)),发现解决的话会十分麻烦,所以当本人换成Ubuntu20.04的时候再启动qemu就没有任何问题)arm64配置好的环境下载链接:https://drive.google.com/file/d/1FcbCkfGuHlvohGlzA-HRRyM8izqhHALE/view?usp=sharing (root/root)在本机先执行:sudo apt install libvirt-daemon-system libvirt-clients virt-manager
./net.sh
./start.sh然后就能顺利启动qemu启动后先配置网络,给 enp0s1 网卡分一个 ip (取决于网桥 virbr0 在宿主机的哪个网段,如下图我的网段在192.168.122.1),再设置一下网关,最后启用该网卡。ip add add 192.168.122.130/24 dev enp0s1
ip link set enp0s1 up
ip route add default via 192.168.122.1然后成功分配后(qemu机子):主机和qemu之间也能通信.开始然后就是将文件系统用scp传入qemu虚拟机,然后就是最经典的三行起手式(ssh需要使用普通用户再su)scp -r ../squashfs-root zikh@192.168.122.130:/home/zikh/
密码:root
然后在qemu的root目录下里面执行:
mv /home/zikh/squashfs-root/ ./squashfs-root
cd squashfs-root/
chmod -R 777 ./
mount --bind /proc proc
mount --bind /dev dev
chroot . /bin/sh如果要ssh连接的话就:ssh zikh@192.168.122.130
密码 root然后就是如下:根据openwrt的内核初始化流程,按理说应该先启动/etc/preinit,其中会执行/sbin/init进行初始化,但是在这套固件仿真的时候,这样会导致qemu重启,所以我们首先先执行/sbin/init中最重要的/sbin/procd &,启动进程管理器即可。启动httpd服务简单搜索了一下httpd服务,发现有好几个(uhttpd,mihttpd, sysapihttpd):例如查看配置文件/etc/sysapihttpd/sysapihttpd.conf,查看后就能发现这是一个小米路由器上的Nginx Web服务配置文件,主要提供路由器管理界面和API服务。监听了80端口,有了nginx自然就不需要再启动uhttpd了,而mihttpd中监听了8198端口,定义了一些文件上传下载的API,可以暂时先不启.所以,只需要启动sysapihttpd,执行/etc/init.d/sysapihttpd start即可执行发现报错首先,报错缺失/var/lock/procd_sysapihttpd.lock这个文件,这个创建一下对应的目录和文件就行了。接着,会报错Failed to connect to ubus,很显然这里是用到了ubus总线通信,我

...(已截断)

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289869.htm
#2 2026-06-01 21:09:04
排版有问题

请登录后参与讨论

立即登录 注册账号