拿到一个待测页面,如何用PayloadsAllTheThings跑通XSS漏洞检测?
【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址: https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings
XSS就是网页里混进了不属于它的脚本代码,在别人的浏览器里替攻击者执行。这篇教程直接拿开源仓库 PayloadsAllTheThings 里的 XSS Injection 模块开讲,按"定位输入点 → 选 payload → 验证执行 → 被拦了怎么绕"的顺序走一遍,顺带整理几件常用的 XSS检测工具。
第一步:把输入点和XSS类型定下来
打开页面,把"我的输入能出现在哪"列出来。三类XSS的区别在于代码走没走服务器:
- 反射型:payload 藏在 URL 里,受害者一点链接就中招;
- 存储型:payload 写进数据库,之后每个访问者都中招;
- DOM型:代码从没过服务器,浏览器自己把页面改坏了。
检测时别偷懒用alert(1)。项目里给的建议是弹出document.domain,确认脚本到底在哪个域名下执行;存储型场景改用console.log,不然每执行一次都要手动关弹窗。
<script>console.log("test".concat(document.domain))</script>第二步:按注入点选payload,再验证真实执行
payload 跟着注入点走,仓库 [XSS Injection/](https://link.gitcode.com/i/452e79b53f6ed165647e30c90b608e5d/blob/5443cbde384134094f25b1b440695757a2803d55/XSS Injection/?utm_source=gitcode_repo_files) 目录里按场景分好了类:
- HTML 上下文:
<img src=x onerror=alert(1)>、<svg onload=alert(1)>这类事件属性标签最常用; - JS 字符串上下文:避开引号,用括号包裹的函数调用;
- URL 里:
javascript:、data:这类伪协议。
判断上下文的土办法:输入一个"和<,看返回里谁被吃掉、谁原样出现,就知道你在 HTML、属性还是 JS 里。

验证"弹出来了"只是及格线。写报告时直接演示数据外带,比如把 cookie 发到你控制的地址,这样的 XSS漏洞检测结论才站得住脚。
第三步:payload被WAF拦截时,按过滤特征换思路
被拦别急着换词,先弄清过滤器在拦什么:
- 编码层:HTML 实体、URL 编码、Unicode 转义改写关键词;
- 协议层:
javascript://%0aalert()这种换行加注释的变形,专门骗基于特征的正则; - 大小写层:
<sCrIpt>对付只认全小写或全大写的规则; - 上下文层:换标签、换属性、引号成不成对。
不同 WAF 脾气差异很大,项目里专门有按 Cloudflare、Akamai、Incapsula 等厂商归档、经过实战验证的 payload 清单(见 3 - XSS Common WAF Bypass 和 1 - XSS Filter Bypass),照厂商清单挨个试比盲目堆词有效得多。
第四步:用XSS检测工具把手活交给脚本
手测慢,可以让工具代劳:
- Dalfox:Go 写的,速度快、功能全,批量扫站首选;
- XSStrike:名气大,但维护不太活跃;
- XSpear:Ruby 实现,思路和 Dalfox 接近;
- xsser:走无头浏览器,能检测真实执行。
这几款多数兼做盲 XSS:payload 埋进 Referer、User-Agent 或联系表单,等管理后台打开页面时才触发并回传结果。本地起个ruby -run -ehttpd就能当回显服务器用。
跑通"定位输入点、按上下文选 payload、照拦截特征换绕过手法"这三步,XSS漏洞检测的基本盘就立住了。完整 payload 库执行git clone https://link.gitcode.com/i/452e79b53f6ed165647e30c90b608e5d即可。动手前确认拿到书面授权,用无害 payload 验证,发现问题第一时间上报维护方。
【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址: https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考