Vigor3900 UBI镜像经典漏洞复现
字数 1308 2025-08-29 22:41:10

Vigor3900 UBI镜像漏洞复现教学文档

1. UBI镜像处理

1.1 UBI镜像特点

  • 常规工具如binwalk或dd if无法直接提取UBI镜像中的文件系统
  • 需要专用工具处理UBI格式镜像

1.2 可用工具对比

  1. ubi_reader

    • Python脚本集合
    • 可读取UBI和UBIFS镜像信息并提取数据
    • 对UBI文件要求严格,兼容性较差
  2. ubidump

    • 位于pinephone_modem_sdk项目中
    • 兼容性更好,推荐使用
    • 路径: pinephone_modem_sdk/tools/ubidump/ubidump.py
  3. Fwanalyzer

    • 文件系统镜像分析工具
    • 可用于分析提取后的文件系统

1.3 解包流程

  1. 使用ubidump工具解包UBI镜像
  2. 提取文件系统内容

2. 环境搭建

2.1 目标信息

  • Web服务: lighttpd
  • 架构: ARM小端序

2.2 模拟工具

  • 推荐使用Sevnup工具进行一键模拟
  • 用户态模拟即可满足需求

2.3 启动问题解决

  1. lighttpd启动报错

    • 检查./etc/init.d/lighttpd文件
    • 发现web_port变量无值导致报错
    • 解决方案: 手动添加web_port值
  2. 网络问题

    • 模拟环境启动后可能出现无法互ping的情况
    • 解决方案: 重启模拟环境的网卡
  3. Web访问404

    • 默认路径可能不正确
    • 正确路径应为www/index.html而非www/mobile
    • 使用unzip解压必要文件后重启服务
  4. 登录问题

    • 默认密码可能无效
    • 需要启动/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. 复现总结

  1. UBI镜像处理经验

    • 掌握不同UBI解包工具的特点和使用场景
    • 了解ubidump在兼容性方面的优势
  2. 模拟环境技巧

    • 使用Sevnup进行一键模拟
    • 解决lighttpd启动和网络问题的经验
  3. 漏洞分析要点

    • 理解字符过滤机制和绕过方法
    • 掌握基于&的命令注入技巧
  4. 后续研究方向

    • lighttpd和CGI的调试过程
    • 通过环境变量修改进行调试的方法

5. 参考文献

[原创]Vigor3900固件仿真(CVE-2024-44844/CVE-2024-44845)-智能设备-看雪-安全社区|安全招聘|kanxue.com

建议详细阅读参考文章,获取更深入的仿真和漏洞分析细节。

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): 连续的两个 & (&&)也会被替换为两个 + 绕过方法 : 使用单个 & 进行绕过 攻击点: 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 建议详细阅读参考文章,获取更深入的仿真和漏洞分析细节。