某网关设备白盒审计
字数 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 代码审计技巧
-
全局搜索关键函数:
$_GET,$_POST,$_REQUESTexec,system,passthru,shell_execinclude,require,file_get_contents
-
XSS审计要点:
- 查找未过滤的输出点
- 检查HTML属性拼接处
- 验证所有用户可控的输出
-
RCE审计要点:
- 识别命令执行函数调用
- 跟踪用户输入流向
- 分析执行条件分支
3.2 漏洞利用流程
-
信息收集:
- 分析URL结构
- 识别关键参数
- 理解业务逻辑
-
漏洞验证:
- 构造简单payload测试
- 确认执行环境
- 评估利用难度
-
深度利用:
- 编写webshell
- 提权尝试
- 持久化控制
4. 防御措施
4.1 通用防御策略
-
输入验证:
- 白名单验证
- 数据类型检查
- 长度限制
-
输出编码:
- HTML实体编码
- URL编码
- JavaScript编码
-
安全配置:
- 禁用危险函数
- 最小权限原则
- 定期更新补丁
4.2 具体修复方案
- XSS防御:
// 错误示例
echo "<input value='".$_GET['user']."'>";
// 正确示例
echo "<input value='".htmlspecialchars($_GET['user'], ENT_QUOTES)."'>";
- RCE防御:
// 错误示例
exec($_GET['cmd']);
// 正确示例
$allowed = ['ls', 'pwd'];
if(in_array($_GET['cmd'], $allowed)) {
exec(escapeshellcmd($_GET['cmd']));
}
5. 总结
本文档分析了网关设备中存在的多个高危漏洞,包括XSS和RCE漏洞,提供了详细的漏洞分析、利用方法和修复建议。安全开发人员应引以为戒,在开发过程中严格遵循安全编码规范,避免类似漏洞的出现。