当前位置: 首页 > news >正文

CSRF漏洞原理及利用

文章目录

  • 一、同源策略
    • 1.应用
    • 2. 同源的比较
  • 二、跨站请求伪造
    • 1.漏洞成因
    • 2. 漏洞危害
    • 3. 攻击流程
    • 4. CSRF三要素
    • 5.漏洞类型
      • (1)GET型CSRF
      • (2)POST型CSRF
    • 6.漏洞修复
    • 7.XSS与CSRF组合攻击

一、同源策略

同源策略是浏览器的核心安全机制,主要限制不同源的文档或脚本对当前文档的读取、修改等操作,以防止恶意网站窃取数据(如Cookie、LocalStorage)或执行未授权操作(如表单提交、DOM操作)。

1.应用

常见应用场景:限制跨域AJAX请求、阻止跨域访问DOM元素、控制跨域Cookie共享等。
目的:隔离不同源的内容,保护用户数据安全和网站正常运行。

2. 同源的比较

“同源”指两个URL的协议、域名、端口三者完全相同,任一不同则为“不同源”。

示例(以http://example.com:80/path为基准):

  • 同源:http://example.com:80/path2(协议、域名、端口均相同)
  • 不同源:
    • https://example.com:80/path(协议不同:http vs https)
    • http://sub.example.com:80/path(域名不同:主域 vs 子域)
    • http://example.com:8080/path(端口不同:80 vs 8080)

二、跨站请求伪造

跨站请求伪造(CSRF)是一种利用用户已认证身份发起非预期操作的攻击。攻击者诱导用户在已登录目标网站的情况下,访问包含恶意代码的页面或点击链接,使浏览器在用户不知情时,以其身份向目标网站发送伪造请求(如转账、修改信息等),利用用户的登录状态绕过验证,完成未授权操作,危害用户数据安全或财产安全。

1.漏洞成因

CSRF漏洞的核心成因是目标网站对请求的来源合法性缺乏有效验证,仅依赖用户的登录状态(如Cookie)来确认请求权限。

  • 浏览器在发送请求时,会自动携带目标网站的Cookie(即使请求来自其他域名),导致网站无法区分请求是用户主动发起,还是第三方恶意诱导。
  • 若网站的关键操作(如转账、修改信息)未验证请求的真实来源(如Referer、CSRF Token等),攻击者即可利用这一特性伪造请求。

2. 漏洞危害

  • 用户权限滥用:攻击者以用户身份执行非预期操作,如转账、修改密码、绑定恶意手机号、发布不良内容等。
  • 数据安全风险:可能导致用户个人信息泄露、账号被盗用,甚至财产损失(如金融类网站)。
  • 网站信誉受损:用户因非自身操作遭受损失后,可能对网站的安全性产生质疑,影响平台公信力。

3. 攻击流程

  1. 用户登录目标网站:用户成功登录A网站(如银行网站),浏览器保存A网站的登录Cookie。
  2. 攻击者诱导操作:用户在未退出A网站的情况下,被诱导访问攻击者控制的恶意网站B(或点击包含恶意代码的链接)。
  3. 发送伪造请求:恶意网站B向A网站发送一个伪造的请求(如转账请求),浏览器自动携带用户在A网站的登录Cookie。
  4. 目标网站执行操作:A网站因验证了用户的登录状态(Cookie有效),误认为是用户主动操作,从而执行该伪造请求。

4. CSRF三要素

  • 操作
    你想让受害者做什么,转账、修改密码等。
  • 认证
    基于cookie的会话处理,因为要携带Cookie进行访问,其他认证字段是无法携带的,所以需要那个应用程序仅通过cookie进行会话处理。
  • 没有不可预测的参数
    因为要事先构造请求,所以不能含有不可预测的参数,比如密码等。

5.漏洞类型

根据请求的方式不同,可以分为GET型CSRF和POST型CSRF。

(1)GET型CSRF

  1. 受害者A(admin/password)登录了网站,网站里有修改密码的功能。
    在这里插入图片描述
  2. 攻击者B(smithy/passwrod)也登录网站获取网站里修改密码的参数,因为同样的网站同等级的用户里面的功能是一样的。
    在这里插入图片描述
  3. 攻击者B将构造好的链接发送给受害者A(如果网站存在存储型的XSS漏洞,还可以将链接插入进去),受害者A在没有退出网站的情况下点击了链接,则密码无意中被修改了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(2)POST型CSRF

  • 攻击者视角:
  1. 登陆成功后,进入个人中心编辑资料。
    在这里插入图片描述
  2. 找到有修改操作的数据包,抓包并构造恶意请求。
    在这里插入图片描述
    构造好之后诱使受害者访问该文件。
  • 受害者视角:
    受害者也在网站上有账号(没有的话注册一个),然后受害者在登录网站的情况下在同一个浏览器打开该文件,受害者的个人信息就被修改了。

6.漏洞修复

  1. 验证请求来源(Referer检查)。由于CSRF攻击的请求实际来自攻击者控制的恶意网站(如B网站),其请求头中的Referer字段会显示该恶意网站地址。通过设置合法来源的白名单,服务器可校验Referer是否在白名单内,若不在则判定为可疑请求并拒绝,以此阻断来自第三方的伪造操作。

  2. 添加Token验证机制。CSRF攻击能成功,核心在于利用了浏览器自动携带的用户登录Cookie。为突破这种“仅靠Cookie认证”的缺陷,可在请求中额外加入一个随机生成的Token(以参数形式传递),并在服务器端对应验证。服务器通过拦截器检查请求中是否包含有效Token,若缺失或Token不匹配,则判定为可能的CSRF攻击并拒绝处理,从而通过“Cookie+Token”的双重验证确保请求合法性。

7.XSS与CSRF组合攻击

XSS 与 CSRF 的组合攻击,本质是利用两种攻击的互补性突破防御限制,让攻击更隐蔽、更高效。具体来说,两者的特性能够互相弥补对方的短板,形成 “1+1>2” 的攻击效果。

  1. 攻击者(admin)在存在xss漏洞的A网站上注入恶意代码。
    在这里插入图片描述
    在这里插入图片描述
  2. 当用户点击之后,进入攻击者提前写好的网站B,触发网站B中的恶意代码。
<img src=“http://网站A/test.php?password_new=123123&password_conf=123123&Change=Change#”/>


在这里插入图片描述
这时候由于用户带有A网站的认证信息,B网站利用用户此时的请求,篡改GET或POST表单内的参数,在用户不知情的情况下请求A网站,完成修改密码等恶意操作。
在这里插入图片描述

http://www.lryc.cn/news/604146.html

相关文章:

  • 子数组和 问题汇总
  • Mysql缓冲池和LRU
  • Accessibility Insights for Windows 使用教程
  • Adv. Sci. 前沿:非零高斯曲率3D结构可逆转换!液晶弹性体多级形变新策略
  • Javaweb————HTTP请求头属性讲解
  • [leetcode] 电话号码的排列组合
  • Vue El 基础
  • PyTorch 数据类型和使用
  • 第二课 P-MOS管应用
  • LRU(Least Recently Used)原理及算法实现
  • 【SQL】Windows MySQL 服务查询启动停止自启动(保姆级)
  • DAY27 函数专题2:装饰器
  • Android 解决键盘遮挡输入框
  • 老年护理实训室建设方案:打造安全、规范、高效的实践教学核心平台
  • C++ 编程问题记录
  • 对象的创建过程
  • Linux学习--C语言(指针4、结构体)
  • 【Spring】日志级别的分类和使用
  • Qt小技巧 QStandardPaths详解
  • C语言14-指针4-二维数组传参、指针数组传参、viod*指针
  • JAVA_TWENTY—ONE_单元测试+注解+反射
  • 在 Cloudflare 平台上完整部署 GitHub 项目 MoonTV 实现免费追剧流程
  • vite + chalk打印输出彩色命令行
  • 并查集介绍及典型应用和编程题
  • Python爬虫01_Requests第一血获取响应数据
  • __getattr__和 __getattribute__ 的用法
  • Docker学习相关视频笔记(二)
  • linux内核报错汇编分析
  • 云原生周刊:2025年的服务网格
  • JSON-RPC 2.0 规范