记一次绕过waf的文件上传
字数 639 2025-08-10 08:28:42
JSP文件上传WAF绕过技术分析
0x01 漏洞发现背景
在JSP文件上传场景中,常见的WAF(Web应用防火墙)通常会过滤jsp:scriptlet这类标签以防止恶意脚本执行。本文介绍了一种有效的绕过方法。
0x02 技术原理分析
JSP命名空间特性
- JSP中
jsp:是默认的命名空间前缀 - 实际上这个命名空间前缀可以替换为任意其他名称
- WAF通常只检测
jsp:scriptlet这种固定格式 - 通过修改命名空间前缀可以绕过基于固定字符串匹配的WAF规则
绕过方法示例
将标准的:
<jsp:scriptlet>
// 恶意代码
</jsp:scriptlet>
修改为:
<任意前缀:scriptlet>
// 恶意代码
</任意前缀:scriptlet>
0x03 实际应用步骤
-
文件上传测试:
- 准备包含修改后标签的JSP文件
- 上传至目标服务器
-
访问验证:
- 访问上传的JSP文件
- 确认脚本能够正常解析执行
-
MIME编码相关问题:
- 有用户提问如何判断后端是否会对MIME编码进行解码
- 经验回答:通常需要通过实际测试验证
- 尝试上传不同编码格式的文件观察服务器响应
0x04 防御建议
对于防御方:
- 不要仅依赖
jsp:前缀的检测 - 应该检测所有可能的命名空间前缀后的
scriptlet标签 - 考虑使用语义分析而非简单的字符串匹配
对于攻击方:
- 此方法适用于基于简单规则匹配的WAF
- 需要根据实际环境调整前缀选择
- 可结合其他绕过技术如MIME编码、大小写变异等
0x05 总结
这种绕过技术利用了JSP命名空间的灵活性,展示了WAF规则设计中的一个常见盲点。安全防护需要从语义层面而不仅是语法层面进行检测,才能有效防御此类攻击。