某网关设备白盒审计
字数 1261 2025-08-29 08:30:06

网关设备白盒审计漏洞分析与利用教学文档

1. XSS漏洞分析

1.1 密码修改处XSS漏洞

漏洞位置: /modify_passwd.php

漏洞分析:

  • 代码直接使用$_REQUEST['user']进行拼接,未做任何过滤
  • 前端虽然限制了用户名输入框,但可通过GET/POST直接提交参数
  • 通过闭合value属性实现XSS注入

利用方法:

https://ip:port/modify_passwd.php?user=";<script>alert(1)</script>

修复建议:

  • 对用户输入进行HTML实体编码
  • 使用htmlspecialchars()函数过滤输出

1.2 USB目录创建处XSS漏洞

漏洞位置: /mkdir_usb.php

漏洞分析:

  • 直接接收path参数并拼接输出
  • 无任何过滤措施
  • 可通过闭合HTML标签注入恶意脚本

利用方法:

https://ip:port/mkdir_usb.php?path="><script>alert(1)</script>

修复建议:

  • 对所有用户可控的输出进行编码处理
  • 实现严格的输入验证

2. RCE漏洞分析

2.1 VPN自定义配置处RCE

漏洞位置: /vpn/list_vpn_web_custom.php

漏洞分析:

  • 存在exec函数调用
  • 通过config_mod函数执行命令
  • 需要Nradius参数为true才能进入执行分支

利用方法:

https://ip:port/vpn/list_vpn_web_custom.php?Nradius_submit=1&template=`echo+-e+'<?php phpinfo();?>'>/www/tmp/info.php`

修复建议:

  • 避免直接执行用户可控的命令
  • 使用白名单限制可执行的命令
  • 对用户输入进行严格过滤

2.2 样式配置处RCE

漏洞位置: /xxx/xxx_style.php

漏洞分析:

  • 同样调用config_mod函数
  • 通过mySubmit参数控制执行流程
  • 直接拼接用户输入执行命令

利用方法:

https://ip:port/xxx/xxx_style.php?mySubmit=1&template=`echo+-e+'<?=phpinfo();?>'>/www/tmp/info1.php`

修复建议:

  • 移除不必要的命令执行功能
  • 实现最小权限原则
  • 使用安全的API替代命令执行

3. 审计方法论

3.1 代码审计技巧

  1. 全局搜索关键函数:

    • $_GET, $_POST, $_REQUEST
    • exec, system, passthru, shell_exec
    • include, require, file_get_contents
  2. XSS审计要点:

    • 查找未过滤的输出点
    • 检查HTML属性拼接处
    • 验证所有用户可控的输出
  3. RCE审计要点:

    • 识别命令执行函数调用
    • 跟踪用户输入流向
    • 分析执行条件分支

3.2 漏洞利用流程

  1. 信息收集:

    • 分析URL结构
    • 识别关键参数
    • 理解业务逻辑
  2. 漏洞验证:

    • 构造简单payload测试
    • 确认执行环境
    • 评估利用难度
  3. 深度利用:

    • 编写webshell
    • 提权尝试
    • 持久化控制

4. 防御措施

4.1 通用防御策略

  1. 输入验证:

    • 白名单验证
    • 数据类型检查
    • 长度限制
  2. 输出编码:

    • HTML实体编码
    • URL编码
    • JavaScript编码
  3. 安全配置:

    • 禁用危险函数
    • 最小权限原则
    • 定期更新补丁

4.2 具体修复方案

  1. XSS防御:
// 错误示例
echo "<input value='".$_GET['user']."'>";

// 正确示例
echo "<input value='".htmlspecialchars($_GET['user'], ENT_QUOTES)."'>";
  1. RCE防御:
// 错误示例
exec($_GET['cmd']);

// 正确示例
$allowed = ['ls', 'pwd'];
if(in_array($_GET['cmd'], $allowed)) {
    exec(escapeshellcmd($_GET['cmd']));
}

5. 总结

本文档分析了网关设备中存在的多个高危漏洞,包括XSS和RCE漏洞,提供了详细的漏洞分析、利用方法和修复建议。安全开发人员应引以为戒,在开发过程中严格遵循安全编码规范,避免类似漏洞的出现。

网关设备白盒审计漏洞分析与利用教学文档 1. XSS漏洞分析 1.1 密码修改处XSS漏洞 漏洞位置 : /modify_passwd.php 漏洞分析 : 代码直接使用 $_REQUEST['user'] 进行拼接,未做任何过滤 前端虽然限制了用户名输入框,但可通过GET/POST直接提交参数 通过闭合value属性实现XSS注入 利用方法 : 修复建议 : 对用户输入进行HTML实体编码 使用 htmlspecialchars() 函数过滤输出 1.2 USB目录创建处XSS漏洞 漏洞位置 : /mkdir_usb.php 漏洞分析 : 直接接收 path 参数并拼接输出 无任何过滤措施 可通过闭合HTML标签注入恶意脚本 利用方法 : 修复建议 : 对所有用户可控的输出进行编码处理 实现严格的输入验证 2. RCE漏洞分析 2.1 VPN自定义配置处RCE 漏洞位置 : /vpn/list_vpn_web_custom.php 漏洞分析 : 存在 exec 函数调用 通过 config_mod 函数执行命令 需要 Nradius 参数为true才能进入执行分支 利用方法 : 修复建议 : 避免直接执行用户可控的命令 使用白名单限制可执行的命令 对用户输入进行严格过滤 2.2 样式配置处RCE 漏洞位置 : /xxx/xxx_style.php 漏洞分析 : 同样调用 config_mod 函数 通过 mySubmit 参数控制执行流程 直接拼接用户输入执行命令 利用方法 : 修复建议 : 移除不必要的命令执行功能 实现最小权限原则 使用安全的API替代命令执行 3. 审计方法论 3.1 代码审计技巧 全局搜索关键函数 : $_GET , $_POST , $_REQUEST exec , system , passthru , shell_exec include , require , file_get_contents XSS审计要点 : 查找未过滤的输出点 检查HTML属性拼接处 验证所有用户可控的输出 RCE审计要点 : 识别命令执行函数调用 跟踪用户输入流向 分析执行条件分支 3.2 漏洞利用流程 信息收集 : 分析URL结构 识别关键参数 理解业务逻辑 漏洞验证 : 构造简单payload测试 确认执行环境 评估利用难度 深度利用 : 编写webshell 提权尝试 持久化控制 4. 防御措施 4.1 通用防御策略 输入验证 : 白名单验证 数据类型检查 长度限制 输出编码 : HTML实体编码 URL编码 JavaScript编码 安全配置 : 禁用危险函数 最小权限原则 定期更新补丁 4.2 具体修复方案 XSS防御 : RCE防御 : 5. 总结 本文档分析了网关设备中存在的多个高危漏洞,包括XSS和RCE漏洞,提供了详细的漏洞分析、利用方法和修复建议。安全开发人员应引以为戒,在开发过程中严格遵循安全编码规范,避免类似漏洞的出现。