Cisco RV345路由器高危漏洞研究分享
字数 1438 2025-08-05 11:39:35

Cisco RV345路由器高危漏洞研究分析报告

0x00 漏洞概述

Cisco RV345路由器存在高危命令执行漏洞,该漏洞存在于固件更新功能中的upload.cgi文件,具体漏洞点为fileparam参数。攻击者可通过构造恶意请求实现远程命令执行,最终获取路由器root权限。

受影响版本

  • 高版本固件(存在upload.cgi文件)
  • 低版本固件(1.0.00.33及以下)

漏洞参考

  • ZDI-20-1100:https://www.zerodayinitiative.com/advisories/ZDI-20-1100/

0x01 环境准备

测试设备

  • Cisco RV345路由器真机(可通过淘宝或闲鱼购买)

固件下载

  • 固件版本1.0.00.33下载地址:
    https://software.cisco.com/download/home/286288298/type/282465789/release/1.0.03.20?catid=268437899

工具准备

  1. 静态分析工具:IDA Pro
  2. 固件解包工具:binwalk
  3. 网络测试工具:Burp Suite

0x02 漏洞分析流程

1. 固件解包分析

binwalk -Me 固件文件

2. 定位关键文件

find -name "*cgi"
  • 主要搜索upload.cgi文件位置(高版本固件特有)

3. 漏洞定位

  • 漏洞存在于upload.cgi文件的fileparam参数处理逻辑
  • 低版本固件(1.0.00.33)无此文件,但存在类似漏洞

0x03 漏洞利用过程

1. 低版本利用(1.0.00.33)

  1. 构造POC并通过Burp Suite发送

  2. 使用reboot命令测试,确认路由器重启

  3. 尝试执行其他命令:

    • 直接执行命令无回显时,使用重定向输出:
      command > /www/xxx.html
      
    • 然后通过浏览器访问生成的html文件查看结果
  4. 权限提升:

    • 低版本无telnetd命令
    • 尝试上传高版本busybox(可能因内核不兼容失败)
    • 需寻找兼容的busybox版本上传执行

2. 高版本利用

  • 执行权限为www-data用户,权限较低
  • 无法执行reboot等高权限命令
  • 只能执行基础命令

0x04 补丁分析

未修补版本:

  • 直接使用sprintf将输入复制给变量v11
  • 最终通过system函数执行,无任何过滤

已修补版本:

  • 增加了match_regex函数进行正则表达式过滤
  • 过滤特殊字符,防止命令注入

0x05 技术要点总结

  1. 版本选择策略

    • 高版本测试受阻时,可降级到低版本测试
    • 结合低版本测试结果反推高版本利用方式
  2. 命令执行技巧

    • 当命令无回显时,使用重定向输出到web目录
    • 通过创建可访问文件(xxx.html)查看命令结果
  3. 权限提升方法

    • 尝试上传兼容的busybox
    • 寻找其他提权路径
  4. 测试方法论

    • 灰盒测试:结合高低版本特性综合分析
    • 补丁对比:通过比对修补前后的代码差异确认漏洞点

0x06 防御建议

  1. 及时更新到最新固件版本
  2. 对路由器管理界面实施网络访问控制
  3. 禁用不必要的远程管理功能
  4. 监控路由器异常行为(如意外重启)

0x07 扩展思考

  1. 如何自动化检测此类漏洞?
  2. upload.cgi外,其他CGI接口是否也存在类似问题?
  3. 在受限环境下(无回显、低权限)如何有效利用漏洞?

本报告详细分析了Cisco RV345路由器的命令执行漏洞,涵盖了从环境搭建到漏洞利用的全过程,并提供了防御建议。研究人员可根据此报告复现漏洞或进行相关安全研究。

Cisco RV345路由器高危漏洞研究分析报告 0x00 漏洞概述 Cisco RV345路由器存在高危命令执行漏洞,该漏洞存在于固件更新功能中的 upload.cgi 文件,具体漏洞点为 fileparam 参数。攻击者可通过构造恶意请求实现远程命令执行,最终获取路由器root权限。 受影响版本 : 高版本固件(存在 upload.cgi 文件) 低版本固件(1.0.00.33及以下) 漏洞参考 : ZDI-20-1100:https://www.zerodayinitiative.com/advisories/ZDI-20-1100/ 0x01 环境准备 测试设备 Cisco RV345路由器真机(可通过淘宝或闲鱼购买) 固件下载 固件版本1.0.00.33下载地址: https://software.cisco.com/download/home/286288298/type/282465789/release/1.0.03.20?catid=268437899 工具准备 静态分析工具 :IDA Pro 固件解包工具 :binwalk 网络测试工具 :Burp Suite 0x02 漏洞分析流程 1. 固件解包分析 2. 定位关键文件 主要搜索 upload.cgi 文件位置(高版本固件特有) 3. 漏洞定位 漏洞存在于 upload.cgi 文件的 fileparam 参数处理逻辑 低版本固件(1.0.00.33)无此文件,但存在类似漏洞 0x03 漏洞利用过程 1. 低版本利用(1.0.00.33) 构造POC并通过Burp Suite发送 使用 reboot 命令测试,确认路由器重启 尝试执行其他命令: 直接执行命令无回显时,使用重定向输出: 然后通过浏览器访问生成的html文件查看结果 权限提升: 低版本无 telnetd 命令 尝试上传高版本busybox(可能因内核不兼容失败) 需寻找兼容的busybox版本上传执行 2. 高版本利用 执行权限为 www-data 用户,权限较低 无法执行 reboot 等高权限命令 只能执行基础命令 0x04 补丁分析 未修补版本: 直接使用 sprintf 将输入复制给变量v11 最终通过 system 函数执行,无任何过滤 已修补版本: 增加了 match_regex 函数进行正则表达式过滤 过滤特殊字符,防止命令注入 0x05 技术要点总结 版本选择策略 : 高版本测试受阻时,可降级到低版本测试 结合低版本测试结果反推高版本利用方式 命令执行技巧 : 当命令无回显时,使用重定向输出到web目录 通过创建可访问文件(xxx.html)查看命令结果 权限提升方法 : 尝试上传兼容的busybox 寻找其他提权路径 测试方法论 : 灰盒测试:结合高低版本特性综合分析 补丁对比:通过比对修补前后的代码差异确认漏洞点 0x06 防御建议 及时更新到最新固件版本 对路由器管理界面实施网络访问控制 禁用不必要的远程管理功能 监控路由器异常行为(如意外重启) 0x07 扩展思考 如何自动化检测此类漏洞? 除 upload.cgi 外,其他CGI接口是否也存在类似问题? 在受限环境下(无回显、低权限)如何有效利用漏洞? 本报告详细分析了Cisco RV345路由器的命令执行漏洞,涵盖了从环境搭建到漏洞利用的全过程,并提供了防御建议。研究人员可根据此报告复现漏洞或进行相关安全研究。