因为买了新的路由器,之前的小米 4A 千兆版被淘汰下来了,因此想刷个 OpenWrt 测试一下
依赖
- 电脑 Win/Mac/Linux,需要支持网线连接,如果是 Mac,需要一个网线转接器
- 小米路由器 4A 千兆版
- Python3 环境
- 网线
开启路由器 SSH
需要先开启路由器的 SSH,小米的固件只有开发版支持 SSH,但是现在所有的版本基本都不会放出开发版;所以只能通过破解的方式开启(开启后不支持保修);
因为小米路由器系统存在 CVE-2019-18370 漏洞,所以可以通过该漏洞开启 SSH;需要使用项目 acecilia/OpenWRTInvasion 提供的脚本
- 下载 acecilia/OpenWRTInvasion ,并安装依赖
git clone https://github.com/acecilia/OpenWRTInvasion.git
cd OpenWRTInvasion
pip3 install -r requirements.txt
- 执行脚本
通过 WiFi 或有线的方式连接到路由器,然后进入命令行,执行以下命令,运行
remote_command_execution_vulnerability.py
脚本;执行脚本时需要输入路由器的地址和后台访问密码;地址如果没有改动默认就是
192.168.31.1
,或者访问
miwifi.com
也可以直接访问到;如果选择了离线模式,会在本地启动一个 ftp server
python3 remote_command_execution_vulnerability.py
在执行结束后,会输出提示信息,用于通过 SSH 访问路由器
here two options to provide the files needed for invasion:
1. Use a local TCP file server runing on random port to provide files in local directory `script_tools`.
2. Download needed files from remote github repository. (choose this option only if github is accessable inside router device.)
Which option do you prefer? (default: 1)1
****************
router_ip_address: miwifi.com
stok: f19c778f7bc6fbe92cc70a6c6bd2bd4f
file provider: local file server
****************
start uploading config file...
start exec command...
local file server is runing on 0.0.0.0:57165. root='script_tools'
local file server is getting 'busybox-mipsel' for 192.168.31.1.
local file server is getting 'dropbearStaticMipsel.tar.bz2' for 192.168.31.1.
done! Now you can connect to the router using several options: (user: root, password: root)
* telnet miwifi.com
* ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc -o UserKnownHostsFile=/dev/null [email protected]
* ftp: using a program like cyberduck
- SSH 访问路由器
通过指定参数的方式,使用 SSH 访问路由器,用户名密码都是
root
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc -o UserKnownHostsFile=/dev/null [email protected]
刷入 Breed
启用 SSH 之后,就可以刷入 Breed 了;Breed 是由 HackPascal 开发的 Bootloader(引导装载程序),最大的特点是支持通过访问网页刷机,刷机失败后可以直接重置而不会导致机器变砖
- 下载
小米路由器 4A 使用的 CPU 是 mt7621,可以在
https://breed.hackpascal.net/
下载,名称为
breed-mt7621-pbr-m1.bin
- 上传
下载 Breed 后,需要通过 FTP 的方式上传到路由器,可以使用 Cyberduck
连接地址为路由器的地址,默认是
192.168.31.1
,选择上传到
/tmp
目录下(其他目录可能会因为权限导致上传失败)
- 刷入
通过 SSH 登录路由器,执行以下命令,刷入 Breed 固件,需要注意的是,输入 Breed 后路由器不会开启 WiFi,只能通过网线的方式访问;另外刷入 Breed 后,路由器的指示灯会变得很暗或完全不亮,可以通过网线连接电脑,查看连接属性,如果分配了 IP 则说明路由器正常进入 Breed
cd /tmp