文章总结: 本文详细介绍了某米路由器漏洞挖掘实战,从固件解包到命令注入的完整过程。研究者分析了路由器的安全机制,主要针对授权接口进行漏洞挖掘,通过二进制层面和Lua脚本层面两种方法发现多个漏洞。在二进制层面,通过分析plugincenter程序发现命令注入漏洞;在Lua层面,通过自动化搜索危险函数发现了setNfcStatus和setMacFilter等接口的命令注入漏洞,并利用白名单机制绕过过滤。文章还提供了厂商修复方案和安全研究建议,强调自动化工具和绕过技巧的重要性。
综合评分: 85
文章分类: IoT安全,漏洞分析,渗透测试,命令注入,固件分析
某米路由器漏洞挖掘实战:从固件解包到命令注入的完整复盘
原创
使者安全
使者安全
2025年7月2日 16:15
河南
引言
在IoT安全研究领域,路由器一直是漏洞挖掘的热门目标。国内某米路由器因其市场占有率高、固件更新频繁,成为许多安全研究人员的关注对象。
对某米路由器的漏洞挖掘经历,成功发现多个中高危漏洞,并获得了厂商的漏洞赏金。本文将结合他的实战经验,详细解析漏洞挖掘的思路、技术细节及绕过技巧,希望能为安全爱好者提供参考。
1. 目标分析:某米路由器的安全机制
某米路由器采用魔改版OpenWRT系统,固件未加密,可通过ubireader和unsquashfs解包分析。主要关注点:
-
Lua脚本逻辑
位于
/usr/lib/lua/luci/controller/和/usr/lib/lua/xiaoqiang/ -
二进制程序
如
/sbin/plugincenter、/sbin/smartcontroller
由于未授权接口已被严格修复,本次挖掘主要针对授权接口,即需要登录后才能访问的API。
2. 漏洞挖掘思路
(1)二进制层面:寻找命令注入点
目标:分析/sbin目录下的关键二进制文件,寻找未过滤的用户输入。
案例:
-
在Redmi AC2100固件中,
plugincenter程序的parseUninstallPluginApi接口存在命令注入: -
当访问
/api/xqdatacenter/request?api=605时,用户输入未经校验直接拼接进system()执行。 -
利用方式
构造恶意参数,如
api=605;id,可执行任意命令。 -
结果
该漏洞已被内部记录,无法获得赏金。
工具:IDA Pro静态分析 + 动态调试(如gdbserver)。
(2)Lua层面:批量搜索危险函数
由于Lua接口数量庞大(数百个),采用自动化搜索方式:
-
反编译Lua脚本
使用
unluac_miwifi工具。 -
搜索危险函数
xiaoqiang.common.XQFunction.forkExecos.executeluci.util.exec
-
检查参数来源
是否来自未过滤的
formvalue。
案例1:setNfcStatus命令注入(部分绕过)
-
漏洞位置
/usr/lib/lua/luci/controller/api/xqnetwork.lua -
触发条件
当设备处于whc_cap模式时,nfc_enable参数由用户控制。
最终拼接进命令:
/sbin/whc_to_re_common_api.sh action '{"cmd":"sync_nfc","nfc_enable":"用户输入"}'
绕过限制:
\n已被过滤,但’(单引号)未过滤,可闭合命令并插入>重定向符,覆盖系统文件(如/sbin/init)。
- Poc
python:
import requeststoken = "登录后的token"path = "/usr/lib/lua/luci/dispatcher.lua" # 目标覆盖文件payload = f"'>{path} '"requests.get(f"http://192.168.0.1/cgi-bin/luci/;stok={token}/api/xqnetwork/set_nfc_status?nfc_enable={payload}")
-
影响
可导致设备拒绝服务(DoS),但无法直接获取shell。
案例2:
setMacFilter完全绕过过滤
-
关键发现
hackCheck函数对name、password等字段不检查(白名单机制)。 -
漏洞位置
/usr/lib/lua/luci/controller/api/xqsystem.lua -
利用方式
-
传入合法的MAC地址,绕过重复性检查。
-
通过
name参数注入命令(如name=$(id>/tmp/test))。 -
奖励
该漏洞被评为高危,获得较高赏金。
3. 漏洞修复与防御建议
(1)厂商修复方案
- 严格过滤所有用户输入,包括白名单字段。
- 使用参数化调用(如
luci.sys.call)替代字符串拼接。
(2)安全研究建议
-
固件分析
优先解包Lua脚本和关键二进制程序。
-
自动化扫描
编写脚本批量搜索危险函数调用。
-
绕过技巧
- 尝试转义字符(如
\x24代替$)。 - 利用重定向符(
>)覆盖文件。
-
关注历史漏洞
从CVE漏洞(如CVE-2023-26315)中寻找新变种。
4. 总结
本次漏洞挖掘的核心思路:
✅ 从二进制和Lua双层面入手
✅ 批量搜索危险函数+参数来源分析
✅ 利用白名单机制绕过过滤
虽然部分漏洞已被修复,但类似逻辑的漏洞仍可能存在于其他IoT设备中。安全研究的关键在于耐心和自动化,希望本文能为你提供启发!
互动话题
你在漏洞挖掘过程中遇到过哪些有趣的绕过技巧?欢迎在评论区分享!
相关资源
- 吾爱破解论坛
- 小米SRC漏洞提交平台
- OpenWRT固件分析工具
(本文仅用于技术研究,请勿用于非法用途。)
关注我们,获取更多安全技术干货!
🔗 微信公众号:使者云
📅 每周更新IoT/Web/二进制安全分析
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:使者安全 使者安全《某米路由器漏洞挖掘实战:从固件解包到命令注入的完整复盘》