实战的科技与狠活
字数 1358 2025-08-11 22:57:12
文件上传漏洞实战:WAF绕过与权限提升技术详解
0x01 前言
本文记录了一次真实的攻防演练中遇到的系统渗透过程,重点分析了文件上传漏洞的WAF绕过技术和权限提升方法。通过本案例,我们可以学习到现代Web应用安全防护的绕过技巧以及权限维持的有效手段。
0x02 目标系统分析
目标系统存在以下安全漏洞组合:
- 弱口令漏洞(直接进入后台)
- 存在文件上传功能点
- 上传功能存在WAF防护但可绕过
- 系统权限配置不当(IIS权限)
0x03 文件上传WAF绕过技术
3.1 文件后缀名绕过
发现过程:
- 上传图片文件时发现WAF检测文件后缀名
- 常规测试方法无效
绕过方法:
- 在
filename参数值的最后位置添加一个双引号(")即可绕过检测
原理推测:
- WAF可能使用正则表达式匹配文件后缀,添加特殊字符可能导致解析异常
- 服务器端可能未严格处理文件名中的特殊字符
3.2 文件内容检测绕过
3.2.1 WAF规则触发点分析
使用二分法测试发现三个触发WAF规则的内容特征:
-
ASP代码标记:
- 任何
<%后跟字母的代码都会被拦截(如<%try)
- 任何
-
ASP.NET页面指令:
<%@ Page Language="CS" %>会被拦截- 推测WAF检测常见ASP.NET指令
-
特定.NET代码:
new System.IO.MemoryStream()object等特定.NET类和方法调用
3.2.2 绕过技术实现
针对第1和第3点:
- 使用注释添加脏字符破坏特征匹配:
/*asdasd--------asdas*/ <% // 恶意代码 %>
针对第2点:
- 替换页面指令为等效但较少检测的语法:
<script language=csharp runat=server> // 替代<%@ Page Language="CS" %>
0x04 权限提升与持久化
4.1 初始权限确认
- 执行
whoami确认当前为IIS应用程序池权限(通常为低权限)
4.2 命令执行限制
- 发现执行第一个命令后后续命令无响应
- Shell保持连接但无法执行更多命令
4.3 使用SweetPotato提权
- 利用哥斯拉(Behinder)内置的
SweetPotato提权模块 - 特点:可以提权但每次只能执行一个命令后会卡死
4.4 高效权限维持方案
-
上传远程管理工具:
- 上传Todesk等远程控制软件
-
单次有效执行:
- 使用SweetPotato执行安装命令
SweetPotato.exe -c "安装命令"
-
获取连接凭证:
- 通过文件管理功能查看Todesk配置文件
- 获取连接密码或认证信息
-
建立持久通道:
- 成功连接后获得稳定控制权限
0x05 防御建议
5.1 针对文件上传漏洞
- 实施多层防御:
- 前端校验+后端校验+文件内容扫描
- 严格文件名处理:
- 过滤特殊字符
- 重命名上传文件
- 内容检测增强:
- 检测注释中的脏字符
- 监控异常脚本语法变种
5.2 针对权限提升
- 最小权限原则:
- IIS应用程序池使用最低必要权限
- 命令执行监控:
- 检测异常进程创建(如远程工具安装)
- 定期审计:
- 检查服务器上未授权的远程管理软件
0x06 总结
本案例展示了从弱口令到文件上传,再到权限提升的完整攻击链。关键点在于:
- WAF绕过需要耐心测试和多种技术组合
- 受限环境下需要寻找"一击必杀"的权限提升方法
- 权限维持要考虑工具的特性和执行限制
通过分析攻击手法,防御方可以更有针对性地加强系统防护,特别是对文件上传功能的保护和服务器权限的严格控制。