csrf与ssrf学习笔记

news/2025/3/4 17:18:19/

一、CSRF(Cross-Site Request Forgery)

1. 定义

  • 攻击目标:利用用户已登录的合法身份,在用户不知情的情况下发起恶意请求。

  • 核心条件:受害者需已登录目标系统,且浏览器会自动携带身份凭证(如 Cookie)。

2. 攻击流程

  1. 用户登录可信网站 A,Cookie 保存在浏览器。

  2. 用户访问恶意网站 B,B 诱导用户点击链接或加载资源。

  3. 恶意网站 B 触发对网站 A 的请求(自动携带用户 Cookie)。

  4. 网站 A 误认为请求来自用户本人,执行操作(如转账、改密)。

3. 攻击类型

  • GET 型:通过 <img src="恶意URL"> 自动触发请求。

  • POST 型:通过隐藏表单 + JavaScript 自动提交。

  • 其他方法:如 JSON CSRF(需 CORS 配置错误配合)。

4. 防御方案

  • Token 验证:请求中携带随机 Token,服务端校验合法性。

  • SameSite Cookie:设置 Cookie 的 SameSite 属性为 StrictLax

  • 验证 Referer:检查请求来源是否合法(注意隐私和误判问题)。

  • 二次确认:敏感操作需用户再次输入密码或验证码。


二、SSRF(Server-Side Request Forgery)

1. 定义

  • 攻击目标:利用服务端发起未授权的内部或外部请求,探测或攻击内网资源。

  • 常见触发点:URL 参数处理(如图片加载、网页代理、Webhook 回调等)。

2. 攻击类型

  • 基本 SSRF:通过 http://https:// 协议访问内网资源。

  • 高级 SSRF

    • 利用 file:// 协议读取本地文件。

    • 利用 dict://gopher:// 协议与 Redis、MySQL 等交互。

    • 绕过黑名单(如 IP 编码、域名重定向)。

3. 攻击场景

  • 访问云服务器元数据(如 AWS/Aliyun 的 169.254.169.254)。

  • 扫描内网端口和服务(如 Redis 未授权访问)。

  • 攻击本地应用(如 http://127.0.0.1:8080/admin)。

4. 防御方案

  • 输入校验:禁止用户控制请求的协议、IP 或域名。

  • 白名单机制:仅允许访问预设的合法域名。

  • 禁用危险协议:如 file://gopher://

  • 网络隔离:限制服务器出站流量,避免访问内网敏感服务。


三、CSRF vs SSRF 对比

特性CSRFSSRF
攻击方向用户 → 可信网站服务器 → 内网/外部资源
依赖条件用户已登录且会话有效服务端存在未过滤的请求参数
利用场景修改用户数据、执行操作探测内网、读取敏感数据
防御重点身份验证机制输入校验与网络隔离

四、实战技巧

1. CSRF 检测

  • 检查敏感操作是否缺少 Token 或 Referer 验证。

  • 使用 Burp Suite 生成 CSRF PoC 模板测试。

2. SSRF 利用

  • 尝试协议转换(如 http://127.0.0.1:800x7f000001)。

  • 利用 DNS Rebinding 绕过 IP 限制。

  • 工具推荐:SSRFmapGopherus

3. 注意事项

  • SSRF 可能结合其他漏洞(如 Redis 未授权写入 SSH 密钥)。

  • 合法授权测试,避免攻击非目标系统。


五、学习资源

  • CSRF

    • OWASP CSRF 指南:Cross Site Request Forgery (CSRF) | OWASP Foundation

    • PortSwigger CSRF 实验:What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy

  • SSRF

    • SSRF 漏洞详解:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery

    • 云厂商元数据泄露案例:AWS/Aliyun/GCP 元数据 API 文档


http://www.ppmy.cn/news/1576594.html

相关文章

Spring源码分析の配置类解析

文章目录 前言一、processConfigBeanDefinitions1.1、checkConfigurationClassCandidate1.2、parse1.2.1、处理配置类标记了Component 的情况1.2.2、处理 ComponentScan 注解 总结 前言 在Spring的注解模式中&#xff0c;通常在构造AnnotationConfigApplicationContext时需要传…

vue全局注册组件

1、Vue.component 是 Vue 提供的一个全局 API&#xff0c;用于注册一个全局组件。这意味着你可以在应用的任何地方使用这个组件&#xff0c;而无需再次引入。 使用方法&#xff1a; import Vue from vue; import MyComponent from ./MyComponent.vue;// 注册全局组件 Vue.com…

游戏引擎学习第129天

仓库:https://gitee.com/mrxiao_com/2d_game_3 小妙招: vscode:定位错误行 一顿狂按F8 重构快捷键:F2 重构相关的变量 回顾并为今天的内容做准备 今天的工作主要集中在渲染器的改进上&#xff0c;渲染器现在运行得相当不错&#xff0c;得益于一些优化和组织上的改进。我们计…

蓝桥备赛(七)- 函数与递归(中)

一、函数重载 1.1 重载概念 引入&#xff1a; 比如&#xff1a;如果我们现在想要写一个函数 &#xff0c; 求两个整数的和 &#xff1a; #include <cstdio> #include <iostream> using namespace std;int IntAdd(int x, int y) {return x y; } int main() {in…

图数据库Neo4j面试内容整理-Cypher 查询优化

Cypher 查询优化 是在 Neo4j 中提高查询性能的关键部分。Cypher 是 Neo4j 的查询语言,允许我们通过图的结构进行高效的数据检索。然而,随着数据量的增大和查询复杂度的提高,查询性能可能会变差。为了优化 Cypher 查询,我们可以使用多种策略,包括合理设计查询、利用索引和约…

二氧化钛的制备:高科技背后的简单原理 京煌科技

二氧化钛是什么&#xff1f; 二氧化钛&#xff08;TiO₂&#xff09;是一种广泛应用的白色无机化合物&#xff0c;具有高折射率、强遮盖力和优异的化学稳定性。它不仅是涂料、塑料、纸张等行业的重要原料&#xff0c;还在化妆品、食品、医药等领域发挥着重要作用。本文将深入探…

详解DeepSeek模型底层原理及和ChatGPT区别点

一、DeepSeek大模型原理 架构基础 DeepSeek基于Transformer架构,Transformer架构主要由编码器和解码器组成,在自然语言处理任务中,通常使用的是Transformer的解码器部分。它的核心是自注意力机制(Self - Attention),这个机制允许模型在处理输入序列时,关注序列中不同位…

LeetCode 每日一题 2025/2/24-2025/3/2

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/24 1656. 设计有序流2/25 2502. 设计内存分配器2/26 1472. 设计浏览器历史记录2/27 2296. 设计一个文本编辑器2/28 2353. 设计食物评分系统3/1 131. 分割回文串3/2 132. …