
XSS payload 被 WAF 拦下的 3 层原因从检测到绕过的思路拆解【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址: https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings你往回显参数里塞一段script标签页面没弹框刷新后参数只剩半截乱码——大概率是 WAF 在中间动了手脚。本文带你把 PayloadsAllTheThings 仓库当弹药库走通检测 → 绕过 → 验证的完整闭环拿到一套能落地的 XSS payload 选型方法。 WAF 拦下 payload 的三层原因很多人第一反应是换个编码就能绕但拦截往往发生在不同层面归因错了就白折腾。过滤层正则或关键字匹配。WAF 直接扫请求体里的script、javascript:等特征串命中就断。这一层对明文特征敏感对实体编码如#x3C;的识别则参差不齐。解析层WAF 会自己做一遍标签结构解析判断你塞的片段是不是一个合法标签。结构不完整或协议名被截断时它可能直接跳过检测。上下文层同一串字符放在body文本节点和属性引号里浏览器最终渲染结果完全不同。WAF 若没做上下文感知就可能在错误的位置放行或误拦。理解了这三层你再看绕过方案就不会盲目试错——先判断目标 WAF 卡在哪一层再选对应策略。 把仓库当弹药库payload 清单怎么读XSS Injection/目录本身就是按场景 → 技巧两级组织的。打开XSS Injection/README.md你能看到它从基础 payload、HTML5 标签、DOM 型、JS 上下文一路排到 Blind XSS 和变异 XSS每节都附了可直接粘贴的示例。想快速定位可用 payload建议按这个顺序翻XSS Injection/1 - XSS Filter Bypass.md针对过滤层的编码与结构变形适合第一手排查XSS Injection/3 - XSS Common WAF Bypass.md按 Cloudflare、Akamai 等具体 WAF 归档的历史绕过记录适合对标目标环境Upload Insecure Files/文件上传场景的完整绕过路线和 XSS 交叉的部分主要在 SVG、HTML 等可执行载体上 三种注入场景的 payload 选型同一个漏洞点payload 长什么样取决于它落在什么位置。下面三种是新手最常碰到的。HTML 标签属性回显框!-- src 故意写错以激活 onerror 事件 -- img srcx onerroralert(document.domain) !-- 用 domain 替代数字可确认脚本跑在哪个源下 --要点alert(1)只能证明能弹框换成document.domain你能确认执行域后续判断 cookie 是否可拿才有依据。URL 伪协议跳转参数# Tab 字符(%09)打断协议名 # 绕过按 javascript: 整串连续匹配的检测规则 java%09script:prompt(document.domain)要点这类 payload 的关键不是编码多花哨而是找到 WAF 正则里必须连续匹配的缝隙。文件上传头像、附件!-- SVG 原生支持 onload无需闭合的 script 标签 -- svg xmlnshttp://www.w3.org/2000/svg onloadalert(document.domain)/要点上传场景先确认服务器是否改写了 Content-Type 或做了二次校验如果只查扩展名SVG 里的事件属性通常能存活。 检测工具速查手动构造 payload 效率有限下面几个工具各管一段配合仓库里的 payload 清单使用工具是什么适合谁DalfoxGo 编写的自动 XSS 扫描器内置大量 polyglot payload想批量跑参数、快速筛出疑似点的人XSStrikePython 框架支持反射/存储/DOM 三种模式探测需要对单个注入点做深度调试的人xsser基于 headless 浏览器执行并回传结果关注 DOM 型、服务端无日志的场景domdig专注 DOM 型 XSS 的无头 Chrome 测试器专门排查前端 sink 点的人建议先用 Dalfox 扫一遍全量参数把疑似点筛出来再用手动 payload 逐个确认避免对着几百个参数盲打。 盲 XSS 闭环与合规红线有些注入点联系表单、工单系统、管理后台的 Referer 日志你在自己浏览器里根本看不到回显。这就是盲 XSS脚本在别人通常是管理员打开页面时才执行服务器日志里查不到你的输入。闭环思路不复杂把 payload 换成一个回调请求比如img src//your-collab/x当你的协作平台收到这个请求时说明 payload 在某个人的浏览器里跑了。XSS Injection/README.md里的 Blind XSS 小节给了完整的 endpoint 列表和最小验证方法。合规红线只有三条但每条都是硬约束授权范围只测书面授权的目标和路径不碰未列出的子域或 API无害 payload验证阶段用alert(document.domain)或回调图片不执行真实数据外传及时报告发现后 48 小时内走漏洞披露流程附最小复现步骤WAF 不是换种编码就绕过去的简单关卡它卡你的位置不同解法完全不同。PayloadsAllTheThings 的价值不在于给你一份永远够用的清单而在于让你知道被拦在哪一层之后该翻哪一页。把检测、绕过、验证串成闭环再守住合规底线你手上的 payload 才算真正能用。【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址: https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考