记一次绕过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 实际应用步骤

  1. 文件上传测试

    • 准备包含修改后标签的JSP文件
    • 上传至目标服务器
  2. 访问验证

    • 访问上传的JSP文件
    • 确认脚本能够正常解析执行
  3. MIME编码相关问题

    • 有用户提问如何判断后端是否会对MIME编码进行解码
    • 经验回答:通常需要通过实际测试验证
    • 尝试上传不同编码格式的文件观察服务器响应

0x04 防御建议

对于防御方:

  1. 不要仅依赖jsp:前缀的检测
  2. 应该检测所有可能的命名空间前缀后的scriptlet标签
  3. 考虑使用语义分析而非简单的字符串匹配

对于攻击方:

  1. 此方法适用于基于简单规则匹配的WAF
  2. 需要根据实际环境调整前缀选择
  3. 可结合其他绕过技术如MIME编码、大小写变异等

0x05 总结

这种绕过技术利用了JSP命名空间的灵活性,展示了WAF规则设计中的一个常见盲点。安全防护需要从语义层面而不仅是语法层面进行检测,才能有效防御此类攻击。

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