当前位置: 首页 > 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.dtcms.com/a/304853.html

相关文章:

  • 镜像源加速下载
  • 编辑距离:理论基础、算法演进与跨领域应用
  • 百度前端面试题目整理
  • 通过Power Automate获取SharePoint的Share Link
  • 计算机视觉(CV方向)算法基础
  • Apache Ignite 的连续查询(Continuous Queries)功能的详细说明
  • Apache Ignite 关于 容错(Fault Tolerance)的核心机制
  • 零件边界线提取处理原理详解
  • 如何解决人工智能在社会治理中面临的技术和伦理挑战?
  • 【工具】图床完全指南:从选择到搭建的全方位解决方案
  • 赢在AI时代:从创造力到编程力的教育突围
  • 聊聊自动化测试用例维护成本高应对策略
  • IntelliJ IDEA 配置 Maven 阿里云镜像加速源全流程
  • AAA 与 FTP:网络认证授权及文件传输的原理与实践
  • AT8236-4A单通道直流有刷电机驱动芯片
  • Qt 移动应用性能优化策略
  • 编程技术杂谈3.0
  • [CSP-J 2022] 逻辑表达式
  • 仓颉编程语言类型特点
  • 如何用USRP捕获手机信号波形(下)协议分析
  • 小孙学变频学习笔记(十二)机械特性的调整 机械特性的改善
  • 山东重工集团:以全自动化生产重构重卡制造业新范式
  • Docker运行Ollama
  • stm32的can总线
  • 简历美容院:如何把“打杂经历“包装成“核心项目“?
  • 在Word和WPS文字中把全角数字全部改为半角
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——7. AI赋能(上):训练你自己的YOLOv8瑕疵检测模型
  • 城市元宇宙:未来城市治理的革新路径
  • 【数据结构初阶】--二叉树(四)
  • 硬件学习笔记--73 电能表新旧精度等级对应关系