跨站脚本(XSS)是一种通常存在于 Web 应用程序中的计算机安全漏洞。XSS 允许攻击者将客户端脚本注入到其他用户查看的网页中。这可能允许攻击者绕过访问控制、窃取 cookie 和会话令牌等敏感信息、操纵 Web 内容或将用户重定向到恶意网站。
有关 XML 外部实体注入的信息,请参阅XML 外部实体 (XXE) 注入。有关命令注入技术,请参阅命令注入。
XSS 攻击主要有三种类型,每种类型都有不同的特征和攻击向量
来源:XSS Injection/README.md45-53
反射型 XSS:恶意代码嵌入在一个发送给受害者的链接中。当受害者点击该链接时,代码将在其浏览器中执行。此攻击不是持久性的,并且需要受害者与特制的链接进行交互。
存储型 XSS:恶意代码存储在服务器上(例如,数据库、留言板、评论字段)。当受害者查看受影响的页面时,代码将在其浏览器中执行。此攻击是持久性的,并且可以影响多个用户。
基于 DOM 的 XSS:漏洞存在于客户端 JavaScript 代码中。当 Web 应用程序以不安全的方式修改用户浏览器中的文档对象模型 (DOM) 时,通常会使用来自不受信任源的数据。攻击向量不会发送到服务器,这使得检测更加困难。
在利用 XSS 漏洞时,攻击者通常旨在捕获敏感数据或以受害者的身份执行操作。以下是典型的 XSS 攻击进程:
来源:XSS Injection/README.md61-70
这些载荷可以捕获受害者浏览器中的敏感信息
来源:XSS Injection/README.md66-69
攻击者可以使用简单的服务器端脚本收集这些数据
来源:XSS Injection/README.md74-80
此技术会修改页面的 HTML 内容以显示一个伪造的登录表单
来源:XSS Injection/README.md100-103
捕获受害者的击键记录
在测试 XSS 时,了解载荷将被执行的上下文很重要。使用 alert(document.domain) 而不是仅仅使用 alert(1) 有助于确认执行上下文
用于在沙盒环境中测试
一些工具可以帮助识别 XSS 漏洞
| 工具 | 描述 |
|---|---|
| XSSStrike | 流行但维护不佳 |
| xsser | 使用无头浏览器进行检测 |
| Dalfox | 快速且功能丰富(Go) |
| XSpear | 类似于 Dalfox,但基于 Ruby |
| domdig | 无头 Chrome XSS 测试器 |
来源:XSS Injection/README.md165-169
XSS 载荷会因插入的上下文而异。以下是常见场景和相应的载荷:
来源:XSS Injection/README.md176-195 XSS Injection/README.md218-219
基本脚本标签
具有错误事件的图片标签
SVG 元素
来源:XSS Injection/README.md176-207
HTML5 引入了可用于 XSS 的新标签和事件
来源:XSS Injection/README.md221-236
注入到 JavaScript 上下文时
来源:XSS Injection/README.md278-280
使用 JavaScript 协议
来源:XSS Injection/README.md288-309
使用 data 协议
来源:XSS Injection/README.md315-317
XML
来源:XSS Injection/README.md341-346
SVG
通过 postMessage 利用跨域通信
来源:XSS Injection/README.md466-486
盲注 XSS 发生于载荷在一个攻击者无法直接看到的环境中执行时,例如管理员面板或日志审查界面。
来源:XSS Injection/README.md492-529
一些工具专门用于检测和利用盲注 XSS
来源:XSS Injection/README.md502-504
其他工具包括
来源:XSS Injection/README.md509-511
来源:XSS Injection/README.md515-525
变异 XSS 利用浏览器的一些怪癖,在 HTML 标签被安全过滤器处理后重新创建它们
来源: XSS Injection/README.md549
许多应用程序都实现了旨在阻止恶意输入的 XSS 过滤器。以下是一些常见的绕过技术
来源: XSS Injection/1 - XSS Filter Bypass.md48-49
来源: XSS Injection/1 - XSS Filter Bypass.md58-59
HTML 编码
Unicode 编码
来源: XSS Injection/1 - XSS Filter Bypass.md431-432 XSS Injection/1 - XSS Filter Bypass.md477
Polyglot XSS 有效载荷可以在多种上下文中工作
来源: XSS Injection/2 - XSS Polyglot.md8
为了获得 XSS 漏洞的实践经验,请尝试以下实验室
来源: XSS Injection/README.md555-566
有关特定 XSS 技术和真实世界示例的更多信息,请参考