Vigor3900 UBI镜像经典漏洞复现
字数 1308 2025-08-29 22:41:10
Vigor3900 UBI镜像漏洞复现教学文档
1. UBI镜像处理
1.1 UBI镜像特点
- 常规工具如binwalk或dd if无法直接提取UBI镜像中的文件系统
- 需要专用工具处理UBI格式镜像
1.2 可用工具对比
-
ubi_reader
- Python脚本集合
- 可读取UBI和UBIFS镜像信息并提取数据
- 对UBI文件要求严格,兼容性较差
-
ubidump
- 位于pinephone_modem_sdk项目中
- 兼容性更好,推荐使用
- 路径:
pinephone_modem_sdk/tools/ubidump/ubidump.py
-
Fwanalyzer
- 文件系统镜像分析工具
- 可用于分析提取后的文件系统
1.3 解包流程
- 使用ubidump工具解包UBI镜像
- 提取文件系统内容
2. 环境搭建
2.1 目标信息
- Web服务: lighttpd
- 架构: ARM小端序
2.2 模拟工具
- 推荐使用Sevnup工具进行一键模拟
- 用户态模拟即可满足需求
2.3 启动问题解决
-
lighttpd启动报错
- 检查
./etc/init.d/lighttpd文件 - 发现
web_port变量无值导致报错 - 解决方案: 手动添加web_port值
- 检查
-
网络问题
- 模拟环境启动后可能出现无法互ping的情况
- 解决方案: 重启模拟环境的网卡
-
Web访问404
- 默认路径可能不正确
- 正确路径应为
www/index.html而非www/mobile - 使用unzip解压必要文件后重启服务
-
登录问题
- 默认密码可能无效
- 需要启动
/etc/init.d/boot_post服务
3. 漏洞分析
3.1 CVE-2024-44844
漏洞描述: DrayTek Vigor3900 v1.5.1.6通过run_command函数中的name参数存在经过身份验证的命令注入漏洞。
关键代码分析:
- 代码会替换以下字符为
+(ASCII 43):1. 分号 (; , ASCII 59) 2. 百分号 (% , ASCII 37) 3. 反引号 (`, ASCII 96) 4. 管道符 (| , ASCII 124) 5. 大于号 (> , ASCII 62) 6. 单引号 (' , ASCII 39) 7. 双引号 (" , ASCII 34) 8. 美元符号 ($ , ASCII 36) 9. 水平制表符 (\t , ASCII 9) 10. 换行符 (\n , ASCII 10) 11. 回车符 (\r , ASCII 13) - 连续的两个
&(&&)也会被替换为两个+
绕过方法:
- 使用单个
&进行绕过 - 攻击点:
get_cert_content
3.2 CVE-2024-44845
漏洞描述: DrayTek Vigor3900 v1.5.1.6通过filter_string函数中的value参数存在经过身份验证的命令注入漏洞。
关键点:
- 同样存在
&未完全过滤的问题 - 可利用单个
&进行命令注入
4. 复现总结
-
UBI镜像处理经验
- 掌握不同UBI解包工具的特点和使用场景
- 了解ubidump在兼容性方面的优势
-
模拟环境技巧
- 使用Sevnup进行一键模拟
- 解决lighttpd启动和网络问题的经验
-
漏洞分析要点
- 理解字符过滤机制和绕过方法
- 掌握基于
&的命令注入技巧
-
后续研究方向
- lighttpd和CGI的调试过程
- 通过环境变量修改进行调试的方法
5. 参考文献
[原创]Vigor3900固件仿真(CVE-2024-44844/CVE-2024-44845)-智能设备-看雪-安全社区|安全招聘|kanxue.com
建议详细阅读参考文章,获取更深入的仿真和漏洞分析细节。