拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CSRF 与 SSRF 实战区分,附挖掘思路与防御方案

CSRF 与 SSRF 实战区分,附挖掘思路与防御方案

CSRF 与 SSRF 实战区分,附挖掘思路与防御方案

前言

很多刚入行做 Web 渗透、漏洞挖掘的朋友,很容易把 CSRF 和 SSRF 搞混,两个名字都带 “请求伪造”,但攻击主体、攻击链路、危害场景完全不同。

CSRF(跨站请求伪造)是用户浏览器帮攻击者发起请求,利用用户已登录的身份;SSRF(服务端请求伪造)是目标服务器帮攻击者发起请求,利用服务器在内网中的网络位置。

在 SRC 漏洞挖掘、渗透测试过程中,经常会遇到这两类漏洞,但是测试方法、Payload、修复方案完全不一样。本文从原理、实战案例、快速区分技巧、挖掘思路、常见绕过,到生产环境防御方案一次性讲清楚,适合渗透测试、代码审计、安全开发学习。

免责声明:本文技术内容仅用于已获得书面授权的安全测试、网络安全学习。严禁在未授权业务系统上进行漏洞探测与攻击,未经授权的测试行为违反网络安全相关法律法规。

0x01 CSRF 跨站请求伪造原理

全称 Cross-Site Request Forgery,跨站请求伪造。
核心本质:利用浏览器自动携带 Cookie 的特性,诱导已登录用户,在不知情的情况下发起非预期请求。

攻击完整流程

  1. 用户登录目标网站 A,浏览器保存网站 A 的 Session Cookie;
  2. 用户没有关闭浏览器,访问攻击者搭建的恶意网站 B;
  3. 恶意页面中的图片、表单、JS 自动发起请求,访问网站 A 的接口;
  4. 浏览器自动带上网站 A 的 Cookie,网站 A 收到请求,认为是用户本人操作,执行请求。

关键点:攻击者拿不到用户 Cookie,只是利用浏览器自动携带 Cookie 的机制。

典型业务场景

  • 修改个人邮箱、修改密码、绑定手机号;
  • 提交表单、发布文章;
  • 后台添加管理员、转账操作;
  • GET 型接口:shturl.cc/SUBOh0NK1EsQUtwrXiSxwRT95yh0vAjdbtOk1FBi,放在 img 标签中,用户访问页面自动触发。

简单恶意 POC 页面示例:

<img src="http://test.com/user/setemail?email=attacker@hack.com">

用户打开这个 HTML 页面,浏览器自动请求该地址,携带 Cookie,直接修改邮箱。

POST 型 CSRF 表单 POC:

<form action="http://test.com/user/changePwd" method="POST"> <input type="hidden" name="password" value="123456"> </form> <script>document.forms[0].submit()</script>

CSRF 利用前提(缺一不可)

  1. 用户已经登录目标站点,Cookie 有效;
  2. 接口仅依靠 Cookie 做身份认证,没有 CSRF Token、验证码、二次密码校验;
  3. 攻击者可以诱导用户访问恶意页面。

0x02 SSRF 服务端请求伪造原理

全称 Server-Side Request Forgery,服务端请求伪造。
核心本质:业务服务存在远程请求功能,用户可控 URL 传入后端,服务器主动去访问这个 URL。攻击者借服务器作为跳板,访问外网无法直达的内网资源。

攻击完整流程

  1. 业务接口接收用户传入的 URL 参数,服务端发起网络请求拉取内容(图片预览、网页摘要、webhook、图片代理);
  2. 攻击者传入内网地址、本地回环地址、云元数据地址;
  3. 服务器在内网环境中访问目标地址,拿到内网服务数据;
  4. 服务器将返回内容回显给攻击者(有回显 SSRF),或者通过时间、状态判断内网端口存活(盲 SSRF)。

典型业务场景

  • 网页预览、URL 截图、RSS 订阅;
  • Webhook 回调地址自定义;
  • 图片远程抓取、头像远程下载;
  • PDF 生成,输入 URL 渲染页面。

Payload 示例:

# 访问本机后台管理面板 ?url=http://127.0.0.1:8080/admin # 读取本地文件 ?url=file:///etc/passwd # 云服务器元数据窃取(AWS) ?url=http://169.254.169.254/latest/meta-data/ # 内网端口扫描 ?url=http://192.168.1.100:3306

SSRF 利用前提

  1. 接口支持传入用户可控 URL;
  2. 后端使用 curl、file_get_contents 等函数发起请求;
  3. 没有对目标 IP、协议做严格过滤。

0x03 CSRF 和 SSRF 快速对比,实战区分

表格

对比项CSRF 跨站请求伪造SSRF 服务端请求伪造
请求是谁发起受害者用户浏览器目标业务服务器
信任对象网站信任用户 Cookie服务器信任外部传入的 URL
攻击目标以用户身份执行业务操作(改密码、新增管理员)内网主机、本地文件、云元数据、内网端口
是否需要用户登录必须用户登录不需要用户登录,只需要接口存在
攻击者能否直接访问目标攻击者不能直接执行用户操作,需要欺骗用户访问页面攻击者直接提交请求,不需要诱导其他人
危害冒用用户身份执行业务操作,篡改账号数据内网探测、读取本地文件、接管云服务器、内网服务攻击
核心检测点请求是否携带随机 Token、Origin/Referer 校验URL 参数是否可控,后端是否发起网络请求
防御重心Token、SameSite Cookie、请求源校验IP 黑名单 / 白名单、协议限制、DNS 重绑定防护

一句话区分记忆:

CSRF:骗人,浏览器代发包;SSRF:骗服务器,服务器代发包。

0x04 漏洞挖掘实战思路

4.1 CSRF 挖掘思路

重点寻找会修改业务状态的接口(增删改操作,查询类接口一般无危害)。

  1. 抓包,观察修改密码、修改邮箱、新增用户、表单提交这类接口;
  2. 检查请求参数中是否存在 CSRF Token:
    • Token 固定不变、可预测 → 存在漏洞;
    • 完全没有 Token 字段,仅依靠 Cookie 认证 → 大概率存在 CSRF;
  3. 检查请求源校验:是否校验 Referer、Origin 请求头;
  4. 构造 POC 页面,脱离目标站点,在本地打开页面,看操作是否成功执行;
  5. 优先级:管理员接口 > 普通用户账号修改接口。
CSRF 常见绕过场景
  1. Referer 校验缺陷:仅判断 Referer 包含域名,没有完全匹配;
  2. 允许 Referer 为空,攻击者直接删除 Referer 头绕过;
  3. Token 只在前端隐藏,后端不校验,只是前端展示。

注意:如果接口使用 Token 放在请求头(JWT、Authorization),且不是自动由浏览器 Cookie 携带,通常可以抵御 CSRF。

4.2 SSRF 挖掘思路

寻找业务中输入 URL,服务器去拉取资源的功能点。

  1. 寻找参数名:url、link、preview、webhook、imgurl、fetch;
  2. 基础测试:传入http://127.0.0.1,观察返回内容、响应时间、状态码变化;
  3. 协议测试:file://读取本地文件,gopher://、dict://拓展攻击;
  4. IP 绕过测试:
    • 域名 DNS 重绑定;
    • IP 进制转换:127.0.0.1 转为十进制、八进制;
    • 0.0.0.0、::1 等特殊回环地址;
  5. 区分有回显 SSRF、盲 SSRF:盲 SSRF 无返回内容,依靠请求延时判断端口是否开放;
  6. 云环境额外测试云元数据地址,是高危 SSRF 常见收益点。
SSRF 常见绕过场景
  1. 黑名单过滤127.0.0.1,但是不过滤域名解析到内网 IP(DNS 重绑定);
  2. 只过滤 http 协议,没有禁用 file、gopher 协议;
  3. 只在前端做 URL 过滤,后端没有校验;
  4. 过滤localhost,但是没有过滤0.0.0.0、IP 简写。

0x05 实战中容易踩的误区

❌误区 1:名字都叫请求伪造,原理一样

完全不同。CSRF 攻击依赖受害者浏览器,必须社工诱导用户;SSRF 攻击者直接发包,不需要任何人参与。

❌误区 2:GET 请求才有 CSRF,POST 不存在

POST 表单同样存在 CSRF,只是构造 POC 稍微复杂,很多后台 POST 接口经常出现。

❌误区 3:SSRF 只能访问 http 协议

如果后端没有限制协议,file 读取本地文件,gopher 可以对内网 Redis、Mysql 发送指令,危害极大。

❌误区 4:SSRF 只需要过滤 127.0.0.1 就安全

黑名单不可靠,攻击者可以使用域名解析、IP 编码绕过,推荐白名单域名。

❌误区 5:加了 Cookie 就一定存在 CSRF

如果 Cookie 设置SameSite=Strict,或者接口使用自定义请求头 Token,CSRF 很难利用。

0x06 安全防御方案

CSRF 防御方案(开发落地)

  1. CSRF Token(推荐首选)
    用户会话生成随机唯一 Token,放入表单或者请求头,后端每次提交必须校验 Token 和会话绑定。
    要点:每次会话刷新 Token,不能固定 Token。
  2. Cookie SameSite 属性
    设置 CookieSameSite=Strict或者 Lax,跨站场景浏览器不会自动携带 Cookie,现代浏览器原生防护 CSRF。
  3. 校验 Origin / Referer 请求头
    校验请求来源域名,拒绝非可信域名的跨站请求。
    注意:不能只做黑名单,同时兼容 Referer 为空的风险。
  4. 高危操作增加二次验证
    修改密码、转账、新增管理员,增加短信验证码、旧密码二次确认。
  5. 高危操作禁止使用 GET 方法,GET 请求容易被图片、链接触发 CSRF。

SSRF 防御方案(开发落地)

  1. 优先使用域名白名单,拒绝 IP 字面量
    只允许业务可信的外部域名,不允许用户直接输入 IP 地址。
  2. 协议白名单限制
    只开放 http/https,禁用file://、gopher://、dict://等危险协议。
  3. 禁止访问内网网段、回环地址
    解析域名之后拿到真实 IP,解析完成再做 IP 校验(抵御 DNS 重绑定),不能只对输入字符串做黑名单。
  4. 限制请求超时、重定向次数
    限制最大重定向次数(比如最多 1 次),防止跳转绕 IP 过滤;设置短超时,防止内网端口扫描。
  5. 网络层面隔离
    服务器出站防火墙,禁止业务服务器访问内网、元数据网段;
  6. 业务优化:能让前端直接拉取图片,就不要后端中转代理,从根源消除 SSRF 风险。

0x07 总结

CSRF 和 SSRF 虽然名字相似,但攻击链路完全相反:
CSRF 是借用户浏览器身份执行操作,攻击的是用户会话信任;SSRF 是借服务器的内网网络位置,攻击服务器对外部 URL 的信任。

在漏洞挖掘时,快速判断:需要骗用户打开页面的,优先考虑 CSRF;输入 URL、服务器去访问资源的,优先考虑 SSRF。
防御上,CSRF 核心是增加请求合法性校验,区分是否用户真实操作;SSRF 核心是严格限制服务器出站访问目标,使用白名单代替黑名单。

一句话记住:CSRF 骗浏览器代用户操作;SSRF 骗服务器去访问内网。


最后

关于网络安全技术储备

学好网络安全不论是就业还是做副业赚钱都不错,但要学会网络安全还是要有一个学习规划。最后大家分享一份全套的网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!

对于0基础小白入门:

如果你是零基础小白,想快速入门网络安全是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。

二方面是可以找到适合自己的学习方案

包括:网安成长学习路线图、SRC&黑客文档、护网行动、黑客必读书单、面试题、学习视频等教程。带你从零基础系统性的学好网络安全!

需要的可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)

👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

👉5.黑客必读书单👈

随着互联网技术的飞速发展,网络安全已经成为了当今科技领域的一大热点。这些SQL注入、CCNA、Web渗透、Linux服务器等,以其强大的语言理解和防御能力,正在守护着我们网络世界。 那以下这些PDF籍就是非常不错的学习资源。

👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

返回列表