CSRF漏洞和SSRF漏洞

声明:本文中所有操作均在合法合规的靶场环境、虚拟环境中进行。

任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。

一、CSRF 漏洞(跨站请求伪造)

1. 漏洞定义

CSRF(Cross-Site Request Forgery,跨站请求伪造),是一种劫持用户身份的攻击方式。攻击者构造恶意请求,欺骗用户在已登录状态下触发非预期操作,且用户对请求完全无感知。

2. 攻击核心逻辑

  1. 用户登录目标网站(如银行、论坛),浏览器中保存了有效 Cookie / 会话凭证;

  2. 攻击者构造恶意链接 / 页面,诱导用户点击;

  3. 用户浏览器自动携带 Cookie 向目标网站发送请求,服务器误判为用户主动操作,执行修改信息、转账等敏感操作。

3. Pikachu 靶场 CSRF(GET 型)复现

场景:修改个人信息

抓包获取请求

  • 登录靶场,进入 "修改个人信息" 页面;

  • 提交修改请求,按 F12打开开发者工具,在 "网络" 面板中找到请求 URL。

    示例:

    复制代码
    http://pikachu.test/vul/csrf/csrfget/csrf_get.php?sex=boy&phonenum=12345678901&add=china&email=test@test.com&submit=submit

攻击方式一:构造恶意链接

  • 将上述请求 URL 作为恶意链接,发送给已登录的目标用户;

  • 用户点击链接后,浏览器自动携带 Cookie 执行请求,个人信息被篡改。

攻击方式二:构造恶意 HTML 页面(方式一进阶)

  • 编写 sex1.html,将请求嵌入 <script> 标签,部署到恶意服务器;
复制代码
<script src="http://pikachu.test/vul/csrf/csrfget/csrf_get.php?sex=boy&phonenum=12345678901&add=china&email=test@test.com&submit=submit"></script>
  • 用户访问该页面时,脚本自动发送请求,无需用户主动点击链接。

攻击方式三:BP 抓包生成 PoC

  • 使用 Burp Suite 拦截修改个人信息的请求;

  • 右键请求 → Engagement toolsGenerate CSRF PoC,自动生成恶意 HTML 代码;

  • 保存为 sex2.html,发送给目标用户即可触发攻击。

攻击方式四:CSRF Tester 工具生成(POST 型)

  • 打开 CSRF Tester 工具,设置代理端口(默认 8008);

  • 点击 Start Recording,捕获目标网站的 POST 请求;

  • GET 请求可直接用 <img> 标签嵌入,POST 请求需用 <form> 表单模拟;

  • 点击 Generate HTML,生成 sex3.html,用户访问后自动提交 POST 请求。


二、SSRF 漏洞(服务器端请求伪造)

1. 漏洞定义

SSRF(Server-Side Request Forgery,服务器端请求伪造),是一种利用服务器身份发起请求的攻击方式。攻击者通过构造恶意请求,让服务器主动访问内网 / 本地资源,突破防火墙限制。

2. 攻击核心逻辑

  1. 服务器端存在可发起网络请求的功能(如图片加载、采集、代理服务);

  2. 攻击者输入恶意 URL,服务器未对目标地址做校验,直接发起请求;

  3. 攻击者借此探测内网、读取本地文件、攻击内网服务。

3. 常见攻击 Payload

攻击目标 Payload 示例 说明
内网探测(HTTP 服务) http://127.0.0.1:80 访问服务器本地 80 端口
读取本地文件(Windows) file:///C:/Windows/System32/drivers/etc/hosts 读取系统 hosts 文件
读取本地文件(Linux) file:///etc/passwd 读取系统用户信息
探测 FTP 服务 ftp://192.168.43.27:21 访问内网 FTP 服务器

4. 靶场实战 1:ssrf.php 基础靶场

  1. 访问靶场地址,输入上述 Payload;

  2. 服务器会根据 Payload 发起请求,返回内网 / 本地资源内容;

  3. 若服务器无协议限制,可尝试 dict:// gopher:// 等协议,攻击 Redis 等服务。

5. 靶场实战 2:YzmCMS SSRF 漏洞复现

环境信息

  • 靶场地址:yzm

  • 后台账号 / 密码:yzmcms / yzmcms

  • 漏洞触发点:模块管理采集管理(作为 SSRF 解析器)

复现步骤

  1. 登录后台

    访问靶场后台地址,输入账号密码登录。

  2. 配置采集任务

    • 网络配置:填写靶场自身 IP 地址,指向 ssrf.html 文件
    复制代码
    http://[靶场IP]/ssrf.html
    • 区域开始:<ssrf>

    • 区域结束:</ssrf>

  3. 编写 `ssrf.html`(核心 Payload)

    在靶场服务器根目录创建 ssrf.html,在 <ssrf>标签内写入 SSRF 目标地址:

    复制代码
    <ssrf>file:///C:/Windows/System32/drivers/etc/hosts</ssrf>
  4. 执行采集任务

    保存配置并执行采集,服务器会:

    1. 访问自身的 ssrf.html

    2. 解析 <ssrf> 标签内的内容;

    3. 执行 SSRF 请求,读取 hosts 文件并返回结果。


三、CSRF 与 SSRF 核心区别对比

维度 CSRF SSRF
发起请求主体 受害者浏览器 目标服务器
攻击对象 受害者账号(已登录状态) 服务器内网 / 本地资源
依赖条件 需用户登录且点击恶意链接 服务器存在可发起请求的功能
防护核心 校验 Referer、使用 CSRF Token 限制目标地址(禁止内网 / 本地)、禁用危险协议

四、漏洞防护要点

CSRF 防护

  1. 关键操作使用 POST 请求,避免 GET 直接触发;

  2. 引入 CSRF Token,服务器端校验请求中的 Token;

  3. 校验 Referer 字段,限制请求来源域名;

  4. 敏感操作添加验证码 / 二次确认。

SSRF 防护

  1. 限制请求协议,仅允许 http/https,禁用 file:// ftp:// 等;

  2. 校验目标 IP,禁止访问内网、本地回环地址;

  3. 设置请求超时时间,避免被用于端口扫描;

  4. 对请求内容做严格校验,过滤敏感字符。


五、学习拓展

  1. CSRF 进阶:结合 XSS 漏洞绕过 Referer 校验、利用 JSONP 发起跨域请求;

  2. SSRF 进阶:利用 gopher:// 协议攻击 Redis/MySQL、结合 302 跳转绕过 IP 限制;

  3. 靶场拓展:尝试 mi 靶场 中的 CSRF 场景,练习复杂场景下的漏洞利用。

相关推荐
南山丶无梅落1 天前
XSS漏洞
beef-xss·反射型xss·网安·xss漏洞·存储型xss·xsstrike
IT 青年1 个月前
网安面试经(13)
面试·网安
IT 青年1 个月前
网安面试经(12)
面试·网安
PyHaVolask1 个月前
云上元数据攻防:从信息泄露到实例控制
ssrf漏洞·云元数据·ram角色·临时凭证泄露·实例元数据
原来是你~呀~3 个月前
pikachu靶场10-15详解
网络安全·pikachu靶场
原来是你~呀~3 个月前
pikachu靶场1-3
网络安全·pikachu靶场
IT 青年4 个月前
网安面试经(2)
面试·网安
mooyuan天天9 个月前
CTFHub SSRF通关笔记10:DNS重绑定 Bypass 原理详解与渗透实战
ssrf·ctfhub·ssrf漏洞·数字ip·dns重定向·dns重绑定·ssrf dns重绑定
mooyuan天天9 个月前
CTFHub SSRF通关笔记8:数字IP Bypass 原理详解与渗透实战
ssrf·ssrf漏洞·数字ip·ssrf 数字ip