[IoT]D-LINK DIR-830L路由器漏洞挖掘汇总
字数 2704 2025-08-22 12:23:30
D-LINK DIR-830L路由器漏洞挖掘与分析教程
1. 厂商与设备概述
D-Link(友讯科技):
- 成立于1986年,全球前三大专业网络公司
- 产品包括交换机、无线、宽带及数字家庭网络产品
- 全球70余国设立超过160个行销据点
DIR-830L A1路由器:
- 固件版本:DIR830LA1_FW100B07
- 固件下载地址:legacyfiles.us.dlink.com/DIR-830L/REVA/FIRMWARE/
- 固件未加密,可使用
binwalk -Me提取
2. 环境搭建与准备
仿真环境
- 使用FirmAE进行仿真:https://github.com/pr0v3rbs/FirmAE
关键二进制文件
- 核心文件:
sbin/ncc2 - Web与二进制文件间的桥梁:
callback_xxx类型函数
3. 漏洞详细分析
3.1 cancelPing缓冲区溢出漏洞
漏洞点:
- 位于
callback_ccp_ping函数 - 触发格式:
ccp_act=cancelPing&nextPage=xxxx - 变量
char v10[260]存在栈溢出风险
PoC:
- 使用登录cookie(空密码)
- 发送超长
nextPage参数请求 - 需要发送两次请求
3.2 ping_v4命令注入漏洞
漏洞点:
ping_addr参数用户可控- 过滤不全面(仅过滤了
;) - 可使用
%0a换行符绕过
PoC:
ccp_act=ping_v4&ping_addr=127.0.0.1%0a[恶意命令]
3.3 ping_v6命令注入漏洞
漏洞点:
- 与ping_v4原理相同
ping_addr参数用户可控
PoC:
ccp_act=ping_v6&ping_addr=::1%0a[恶意命令]
3.4 sub_450E7C缓冲区溢出漏洞
漏洞点:
- 在
callback_ccp_get_set中调用sub_450E7C - 使用危险函数
sprintf,参数完全可控 - 访问路径:
get_set.ccp
3.5 web_access.ccp目录遍历漏洞
漏洞点:
callback_ccp_web_access函数- 当
ccp_act=setfolder时调用sub_4B188C - 未过滤
.和/,导致路径穿越
利用方式:
- 在任意可写路径下创建文件夹
- 示例:在
/www目录创建poc4.html
3.6 mydlink_api.ccp拒绝服务漏洞
漏洞点:
- 不传任何payload会导致网页崩溃
3.7 mydlink_api.ccp命令注入漏洞
漏洞点:
api_page参数用户可控- 直接拼接至
_system调用中
PoC:
ccp_act=[恶意命令]&api_page=[恶意参数]
3.8 do_login硬编码凭证漏洞
漏洞点:
sbin/ncc2的do_login函数中存在硬编码凭证
3.9 pingV4Msg命令注入漏洞
初始限制:
- 会先做DNS解析,解析失败则不执行system
绕过方法:
- 使用
%0a换行符绕过正则匹配
PoC:
ccp_act=pingV4Msg&ping_addr=127.0.0.1%0a[恶意命令]
4. 漏洞汇总表
| 编号 | 漏洞类型 | 影响组件 | 攻击方式 | 修复建议 |
|---|---|---|---|---|
| 1 | 缓冲区溢出 | cancelPing | 发送超长nextPage参数 | 增加输入长度检查 |
| 2 | 命令注入 | ping_v4 | 通过ping_addr注入,%0a绕过 | 严格过滤用户输入 |
| 3 | 命令注入 | ping_v6 | 同上 | 同上 |
| 4 | 缓冲区溢出 | sub_450E7C | 发送超长Interface字段 | 增加输入长度检查 |
| 5 | 目录遍历 | web_access.ccp | 利用路径穿越上传文件 | 严格过滤路径参数 |
| 6 | 拒绝服务 | mydlink_api.ccp | 不传有效payload | 增加无效输入检测 |
| 7 | 命令注入 | mydlink_api.ccp | 通过api_page注入 | 严格过滤api_page参数 |
| 8 | 硬编码凭证 | do_login | 使用硬编码凭证登录 | 删除硬编码凭证 |
| 9 | 命令注入 | pingV4Msg | 通过ping_addr注入,%0a绕过 | 严格过滤ping_addr参数 |
5. 漏洞挖掘经验总结
-
关键桥梁定位:
- 找到web端和bin端连接的桥梁(如
callback_xxx函数)
- 找到web端和bin端连接的桥梁(如
-
搜索技巧:
- 使用
grep -r搜索关键信息 - 通过web端抓包参数定位关键二进制文件
- 使用
-
绕过技巧:
- Web安全中的bypass技巧(如
%0a换行符)同样适用于IoT的web端输入
- Web安全中的bypass技巧(如
-
漏洞模式识别:
- 关注危险函数(
system、sprintf等) - 检查用户输入过滤是否全面
- 注意缓冲区大小限制
- 关注危险函数(
-
测试方法:
- 对每个用户可控参数进行边界测试
- 尝试各种特殊字符和超长输入
6. 免责声明
本文提到的所有漏洞均已报送CVE、CNVD,仅供学习交流使用,请勿用于非法用途。