WEB漏洞-XSS
字数 1565 2025-08-11 11:39:36

XSS漏洞全面解析与防御指南

1. XSS概述

XSS(Cross-Site Scripting)跨站脚本攻击是指攻击者通过利用网页开发时留下的漏洞,向网页注入恶意脚本代码,当用户浏览该网页时,恶意代码会被执行,从而达到攻击目的。

1.1 攻击原理

  • 程序对输入和输出的控制不够严格
  • 恶意代码被当作有效代码解析执行
  • 攻击通常利用JavaScript,但也可能使用Java、VBScript、ActiveX、Flash或普通HTML

1.2 主要危害

  1. 网络钓鱼,盗取用户账户
  2. 窃取用户cookies和隐私信息
  3. 弹出广告页面获取利益
  4. 劫持用户会话执行任意操作
  5. 传播蠕虫病毒

2. XSS分类与攻击方式

2.1 反射型XSS(非持久型)

  • 特点:恶意代码存在于URL中,需要用户点击特制链接
  • 攻击流程:
    1. 攻击者构造包含恶意代码的URL
    2. 诱使用户点击该URL
    3. 服务器返回包含恶意代码的页面
    4. 用户浏览器执行恶意代码
  • 常见攻击位置:用户登录入口、网站搜索框等

2.2 存储型XSS(持久型)

  • 特点:恶意代码被永久存储在服务器上,所有访问用户都会受影响
  • 攻击流程:
    1. 攻击者通过表单将恶意代码提交到网站数据库
    2. 受害者请求包含恶意代码的页面
    3. 服务器返回包含恶意代码的响应
    4. 受害者浏览器执行恶意代码,发送cookies给攻击者
  • 常见攻击位置:论坛、博客、留言板、评论区等交互区域

2.3 DOM型XSS

  • 特点:不涉及服务器交互,完全在客户端处理
  • 攻击流程:
    1. 攻击者构造包含恶意代码的URL
    2. 诱使受害者访问该URL
    3. 合法脚本执行导致恶意代码被插入页面
    4. 受害者浏览器执行恶意代码
  • 常见攻击位置:基于DOM操作的前端代码

3. XSS常用攻击标签与示例

3.1 <script>标签

<script>alert("xss");</script>

3.2 ``标签

  <!-- 图片加载错误时触发 -->
  <!-- 鼠标悬停时触发 -->
  <!-- 鼠标移出时触发 -->

3.3 <a>标签

<a href="javascript:alert('1')">test</a>

3.4 <input>标签

<input type="text" onkeydown="alert(1)">  <!-- 按键按下时触发 -->
<input onblur=alert("xss") autofocus><input autofocus>  <!-- 竞争焦点触发 -->

3.5 <style>标签

<style οnlοad=alert(1)></style>

4. XSS攻击平台与工具

4.1 蓝莲花XSS平台

  • 地址:https://gitee.com/evlon/BlueLotus_XSSReceiver
  • 安装:解压至phpstudy的WWW目录,访问https://IP地址/xss/install.php
  • 注意:使用第三方平台存在安全风险,建议内部测试时自建平台

4.2 BeEF工具

  • 功能:最强大的浏览器开源渗透测试框架
  • 特点:基于Ruby编写,支持图形化界面
  • 注意:新版Kali Linux不再自带,需手动安装

5. WAF绕过技术

5.1 大小写绕过

<ScRipt>ALeRt("XSS");</sCRipT>

5.2 双写绕过

<input oonnfocus="alert('xss');">  <!-- 过滤on时使用 -->

5.3 空格/回车/TAB绕过

  <!-- 空格 -->
  <!-- 回车 -->
  <!-- TAB -->

5.4 注释绕过

<scri<!--1-->pt>alert()</sc<!--1-->ript>

5.5 字符拼接


<script>top["al"+"ert"](xss);</script>

5.6 编码绕过

  • Unicode编码:

  • URL编码:

  • Base64编码:

5.7 过滤URL绕过

  • URL编码:

  • IP地址转换:
  <!-- 十进制 -->
  <!-- 八进制 -->

5.8 引号绕过

  <!-- 省略引号 -->

5.9 JavaScript伪协议

<a href="javascript:alert(xss);">xss</a>
  <!-- IE7以下有效 -->

6. XSS防御措施

6.1 内容过滤

  • 白名单过滤:只允许特定安全内容通过
  • 黑名单过滤:拦截已知危险关键字(可能被绕过)

6.2 输出编码

  • 对所有动态输出到页面的内容进行HTML编码
  • 将特殊字符转换为HTML实体

6.3 HTTP Only属性

  • 在服务端设置会话cookie的HTTP only属性
  • 防止客户端JavaScript获取cookie信息

6.4 输入验证

  • 明确输入内容类型(电话、邮箱等)
  • 对不符合格式的内容进行过滤

6.5 输入长度控制

  • 对不可信内容设置合理长度限制
  • 增加XSS攻击实现的难度

6.6 其他安全措施

  • 添加验证码
  • 开启防护软件/WAF
  • 定期安全审计

7. 高风险区域

  • 评论区、留言区
  • 个人信息修改
  • 订单信息
  • 站内信、私信
  • 搜索框、URL参数

通过全面了解XSS攻击原理、常见攻击方式和防御措施,开发人员可以更好地保护网站安全,防止XSS漏洞被利用。

XSS漏洞全面解析与防御指南 1. XSS概述 XSS(Cross-Site Scripting)跨站脚本攻击是指攻击者通过利用网页开发时留下的漏洞,向网页注入恶意脚本代码,当用户浏览该网页时,恶意代码会被执行,从而达到攻击目的。 1.1 攻击原理 程序对输入和输出的控制不够严格 恶意代码被当作有效代码解析执行 攻击通常利用JavaScript,但也可能使用Java、VBScript、ActiveX、Flash或普通HTML 1.2 主要危害 网络钓鱼,盗取用户账户 窃取用户cookies和隐私信息 弹出广告页面获取利益 劫持用户会话执行任意操作 传播蠕虫病毒 2. XSS分类与攻击方式 2.1 反射型XSS(非持久型) 特点:恶意代码存在于URL中,需要用户点击特制链接 攻击流程: 攻击者构造包含恶意代码的URL 诱使用户点击该URL 服务器返回包含恶意代码的页面 用户浏览器执行恶意代码 常见攻击位置:用户登录入口、网站搜索框等 2.2 存储型XSS(持久型) 特点:恶意代码被永久存储在服务器上,所有访问用户都会受影响 攻击流程: 攻击者通过表单将恶意代码提交到网站数据库 受害者请求包含恶意代码的页面 服务器返回包含恶意代码的响应 受害者浏览器执行恶意代码,发送cookies给攻击者 常见攻击位置:论坛、博客、留言板、评论区等交互区域 2.3 DOM型XSS 特点:不涉及服务器交互,完全在客户端处理 攻击流程: 攻击者构造包含恶意代码的URL 诱使受害者访问该URL 合法脚本执行导致恶意代码被插入页面 受害者浏览器执行恶意代码 常见攻击位置:基于DOM操作的前端代码 3. XSS常用攻击标签与示例 3.1 <script> 标签 3.2 `` 标签 3.3 <a> 标签 3.4 <input> 标签 3.5 <style> 标签 4. XSS攻击平台与工具 4.1 蓝莲花XSS平台 地址:https://gitee.com/evlon/BlueLotus_ XSSReceiver 安装:解压至phpstudy的WWW目录,访问https://IP地址/xss/install.php 注意:使用第三方平台存在安全风险,建议内部测试时自建平台 4.2 BeEF工具 功能:最强大的浏览器开源渗透测试框架 特点:基于Ruby编写,支持图形化界面 注意:新版Kali Linux不再自带,需手动安装 5. WAF绕过技术 5.1 大小写绕过 5.2 双写绕过 5.3 空格/回车/TAB绕过 5.4 注释绕过 5.5 字符拼接 5.6 编码绕过 Unicode编码: URL编码: Base64编码: 5.7 过滤URL绕过 URL编码: IP地址转换: 5.8 引号绕过 5.9 JavaScript伪协议 6. XSS防御措施 6.1 内容过滤 白名单过滤 :只允许特定安全内容通过 黑名单过滤 :拦截已知危险关键字(可能被绕过) 6.2 输出编码 对所有动态输出到页面的内容进行HTML编码 将特殊字符转换为HTML实体 6.3 HTTP Only属性 在服务端设置会话cookie的HTTP only属性 防止客户端JavaScript获取cookie信息 6.4 输入验证 明确输入内容类型(电话、邮箱等) 对不符合格式的内容进行过滤 6.5 输入长度控制 对不可信内容设置合理长度限制 增加XSS攻击实现的难度 6.6 其他安全措施 添加验证码 开启防护软件/WAF 定期安全审计 7. 高风险区域 评论区、留言区 个人信息修改 订单信息 站内信、私信 搜索框、URL参数 通过全面了解XSS攻击原理、常见攻击方式和防御措施,开发人员可以更好地保护网站安全,防止XSS漏洞被利用。