CSRF跨站请求伪造,零基础入门到精通,收藏这篇就够了

CSRF跨站请求伪造——原理及复现 转自行云博客https://www.xy586.top/ 原理 CSRF(Cross-site request forgery)跨站请求伪造:通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。 尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。 与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性 你这可以这么理解CSRF攻击:攻击者盗用了. 阅读详情

一、CSRF漏洞原理

我们不能挟持用户,但是我们可以挟持用户的浏览器发送任意的请求。某些html标签是可以发送HTTP GET类型的请求的。
例如<img>标签:<img src="http://www.baidu.com" />
浏览器渲染img标签的时候,并不知道img标签中src属性的值,到底是不是一个图片,浏览器做的就是根据src中的链接,发起一个HTTP GET请求,并且携带上当前浏览器在目标网站上的凭证,也就是cookies,获取返回结果以图片的形式渲染。根据这个特性,可以挟持用户的浏览器携带用户凭证发送任意的请求。

二、CSRF漏洞攻击流程

image.png
从图中可以看到,要完成一次CSRF攻击,受害者必须一次完成两个步骤:
1.登录信任站点A,并在本地生成Cookie。
2.同一浏览器中在不退出的情况下,访问危险网站B。
如果不满足以上两个条件中的一个,就不会受到CSRF的攻击。

三,CSRF类型

CSRF分为get型与post型。
因为html大多数标签中src属性默认是get请求方式。认为CSRF只能由GET请求发起,因此一些开发者认为只要把重要的操作改为只允许POST请求就能防CSRF。如果一些请求是POST类型的,最简单的方法就是在攻击页面构造好一个form表单,然后用javascript自动提交这个表单。虽然没有get型那么隐蔽,但是也可以利用。
image.png
注意:
get型CSRF会使受害者神不知鬼不觉地触发CSRF陷阱,但POST型,因为会跳转到提交的页面所以会直观的看到,没有隐蔽性。

四,如何检测是否存在csrf漏洞

在漏洞的检测方面,不管是GET型还是POST型。
第一步、先判断重要操作的数据包中是否有随机值,比如token。如果存
在先去除随机值查看能否正常请求,如果不可以就不存在CSRF。
第二步、如果可以正常请求,再去掉referer参数的内容,如果可以则存在CSRF漏洞。

五、CSRF漏洞的攻击

1.get型通过构造连接进行CSRF攻击

当发现存在csrf漏洞的点使用的是get型传参时,可以直接通过构造连接的方式进行攻击

1、构造攻击连接

http://192.168.0.106/dvwa/vulnerabilities/csrf/?password_new=456&password_conf=456&Change=Change

2、通过短链接隐藏构造的URL

直接构造出的url隐蔽性太低,可以通过短链接的方式对url进行隐蔽 生成短链接常用网址: 站长工具 点击短链接,会自动跳转到真实网站。

3、通过img标签隐蔽URL

通过img标签中的src属性来加载CSRF攻击利用的URL,并进行布局隐藏,然后在公网上传下面这个攻击页面,诱骗受害者去访问,真正能够在受害者不知情的情况下完成CSRF攻击。

<html>
  <head> 
   <title>福利</title>
</head>
<body>
    <h1>福利</h1>
    <img width="0" height="0" src="http://127.0.0.1/csrf.html">//隐藏钓鱼图片
    <input name="ee" value="856887" type="hidden">
<img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.FaG6dzohGs3q45-DwsEyQQHaEK?w=308&h=180&c=7&r=0&o=5&dpr=2.2&pid=1.7">
</body>
</html>

当用户访问该页面时,只是一个图片网页(也可以换成小姐姐图片),但实际上已经遭受了CSRF攻击
image.png

2.POST型漏洞通过构造表单进行CSRF攻击

1、使用BurpSuite获取数据包

检测是否有随机值等不可控的,若没有

2、使用BurpSuite构造CSRF攻击表单

image.png

3、进一步对构造好的表单进行修饰,使自动提交请求,

image.png

防御csrf

1.验证 HTTP Referer 字段

根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,比如需要访问 http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory,用户必须先登陆 bank.example,然后通过点击页面上的按钮来触发转账事件。这时,该转帐请求的 Referer 值就会是转账按钮所在的页面的 URL,通常是以 bank.example 域名开头的地址。而如果黑客要对银行网站实施 CSRF 攻击,他只能在他自己的网站构造请求,当用户通过黑客的网站发送请求到银行时,该请求的 Referer 是指向黑客自己的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求
这种方法的显而易见的好处就是简单易行,网站的普通开发人员不需要操心 CSRF 的漏洞,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的系统,不需要改变当前系统的任何已有代码和逻辑,没有风险,非常便捷
然而,这种方法并非万无一失。Referer 的值是由浏览器提供的,虽然 HTTP 协议上有明确的要求,但是每个浏览器对于 Referer 的具体实现可能有差别,并不能保证浏览器自身没有安全漏洞。使用验证 Referer 值的方法,就是把安全性都依赖于第三方(即浏览器)来保障,从理论上来讲,这样并不安全。事实上,对于某些浏览器,比如 IE6 或 FF2,目前已经有一些方法可以篡改 Referer 值。如果 bank.example 网站支持 IE6 浏览器,黑客完全可以把用户浏览器的 Referer 值设为以 bank.example 域名开头的地址,这样就可以通过验证,从而进行 CSRF 攻击。即便是使用最新的浏览器,黑客无法篡改 Referer 值,这种方法仍然有问题。因为 Referer 值会记录下用户的访问来源,有些用户认为这样会侵犯到他们自己的隐私权,特别是有些组织担心 Referer 值会把组织内网中的某些信息泄露到外网中。因此,用户自己可以设置浏览器使其在发送请求时不再提供 Referer。当他们正常访问银行网站时,网站会因为请求没有 Referer 值而认为是 CSRF 攻击,拒绝合法用户的访问
image.png

2.在请求地址中添加 token 并验证(Anti-CSRF token)

CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求
这种方法要比检查 Referer 要安全一些,token 可以在用户登陆后产生并放于 session 之中,然后在每次请求时把 token 从 session 中拿出,与请求中的 token 进行比对,但这种方法的难点在于如何把 token 以参数的形式加入请求。对于 GET 请求,token 将附在请求地址之后,这样 URL 就变成 http://url?csrftoken=tokenvalue。而对于 POST 请求来说,要在 form 的最后加上 ,这样就把 token 以参数的形式加入请求了。但是,在一个网站中,可以接受请求的地方非常多,要对于每一个请求都加上 token 是很麻烦的,并且很容易漏掉,通常使用的方法就是在每次页面加载时,使用 javascript 遍历整个 dom 树,对于 dom 中所有的 a 和 form 标签后加入 token。这样可以解决大部分的请求,但是对于在页面加载之后动态生成的 html 代码,这种方法就没有作用,还需要程序员在编码时手动添加 token
该方法还有一个缺点是难以保证 token 本身的安全。特别是在一些论坛之类支持用户自己发表内容的网站,黑客可以在上面发布自己个人网站的地址。由于系统也会在这个地址后面加上 token,黑客可以在自己的网站上得到这个 token,并马上就可以发动 CSRF 攻击。为了避免这一点,系统可以在添加 token 的时候增加一个判断,如果这个链接是链到自己本站的,就在后面添加 token,如果是通向外网则不加。不过,即使这个 csrftoken 不以参数的形式附加在请求之中,黑客的网站也同样可以通过 Referer 来得到这个 token 值以发动 CSRF 攻击。这也是一些用户喜欢手动关闭浏览器 Referer 功能的原因

3.在 HTTP 头中自定义属性并验证

这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 CSRFToken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去
然而这种方法的局限性非常大。XMLHttpRequest 请求通常用于 Ajax 方法中对于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而进行前进,后退,刷新,收藏等操作,给用户带来不便。另外,对于没有进行 CSRF 防护的遗留系统来说,要采用这种方法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,这样几乎是要重写整个网站,这代价无疑是不能接受的
​

​

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

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

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


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

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

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

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

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

跨站点请求伪造(CSRF) 是一种对网站的恶意利用,尽管听起来跟XSS跨站脚本攻击有点相似,但事实上CSRF与XSS差别很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。简单理解一种可以被攻击者用来通过用户浏览器冒充用户身份向服务器发送伪造请求并被目标服务器成功执行的漏洞被称之为CSRF漏洞。... 阅读详情

相关推荐

csrf跨站请求伪造详解

钓鱼网站搭建一个类似正规网站的页面用户点击网站链接,给某个用户打钱打钱的操作确确实实提交给了中国银行的系统,用户的钱也确实减少但是唯一不同的是,账户打钱的账户不是用户想要打钱的目标账户,变成了其他用户内部本质在钓鱼网站的页面针对对方账户,只给用户提供一个没有name属性的普通input框然后在内部隐藏一个已经写好带有name属性的input框如何避免上面的问题csrf跨域请求伪造校验网站在给用户返回一个具有提交数据功能的页面的时候会给这个页面加一个唯一标识。

m0_69962105的博客 1525

CSRF 跨站请求伪造(非常详细)零基础入门到精通,收藏这篇就够了

之前面试经常被问到 CSRF, 跨站请求伪造大概流程比较简单, 大概就是用户登录了A页面,存下来登录凭证(cookie), 攻击者有诱导受害者打开了B页面, B页面中正好像A发送了一个跨域请求,并把cookie进行了携带, 欺骗浏览器以为是用户的行为,进而达到执行危险行为的目的,完成攻击上面就是面试时,我们通常的回答, 但是到底是不是真是这样呢?难道这么容易伪造吗?于是我就打算试一下能不能实现。

喜欢Python编程的程序员柚柚呀 1355

基于FPGA的TDC延迟链优化与码密度校准方法(1)——原理与实现

本文深入探讨了基于FPGA的时间数字转换器(TDC)延迟链非均匀性问题及其码密度校准方法。通过分析工艺偏差、温度电压影响等根源,详细介绍了码密度测试原理、逐位校准技术及气泡消除算法,并分享了自适应校准策略与多场景应用实践,有效提升TDC测量精度至皮秒级。

kiwi8的博客 488

跨站请求伪造漏洞(CSRF)

CSRF(Cross-Site Request Forgery),也被称为 one-click attack 或者 session riding,即跨站请求伪造攻击。

qq_44484541的博客 1715

Quantum Espresso实战进阶:HSE混合泛函在能带计算中的精准应用

本文深入探讨了在Quantum Espresso中应用HSE混合泛函进行高精度能带计算的实战方法。针对传统DFT方法低估半导体带隙的问题,HSE通过混合精确交换能,显著提升计算精度。文章详细讲解了从输入文件配置、参数设置(如nqx网格、exxdiv_treatment)、到自洽与非自洽计算流程,以及结果可视化与对比的全过程,并提供了关键的调优与避坑指南,助力实现从PBE到HSE的精准进阶。

weixin_28363123的博客 226

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1117

CSRF(跨站请求伪造)深度解析

概念CSRF(Cross - Site Request Forgery),即跨站请求伪造,是一种网络安全攻击方式。攻击者利用用户在目标网站的登录状态,通过诱使受害者访问恶意页面或者点击恶意链接,在受害者不知情的情况下,让受害者的浏览器向目标网站发送请求,这些请求可能会执行一些对攻击者有利但对用户有害的操作,如修改用户信息、进行转账等。攻击原理大多数网站在用户登录后会建立一个会话(Session),并通过Cookie或者其他方式来识别用户身份。

你若盛开,清风自来 2495

STC单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能介绍和使用

perseverance51博客 3048

CSRF(跨站请求伪造)

csrf跨站请求伪造介绍、csrf攻击在dvwa环境中的应用

无痕的博客 8976

199、影像技术 roadmap 规划:未来移动影像的技术趋势与芯片算力展望

本文探讨了未来移动影像技术的发展趋势与芯片算力规划。作者从实际案例出发,指出影像技术演进需平衡传感器、ISP、算力和功耗。文章分为三部分:1)传感器将从堆像素转向提升信息密度,重点关注双层晶体管结构、混合快门和多光谱技术;2)ISP架构将向可编程计算单元转型,强调神经网络加速、硬件化多帧融合和语义处理;3)芯片算力瓶颈在于数据搬运,需优化存算一体架构、专用DMA和统一内存。最后给出五点建议:避免盲目追高像素、重视持续功耗、平衡ISP灵活性、预留算力余量、加强传感器与ISP协同设计。作者强调,影像技术的突破在

sundong_81的博客 60

华为OD机试 - 最佳对手(Python/JS/C/C++ 2025 A卷 200分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。游戏里面,队伍通过匹配实力相近的对手进行对战。但是如果匹配的队伍实力相差太大,对于双方游戏体验都不会太好。给定n个队伍的实力值,对其进行两两实力匹配,两支队伍实例差距在允许的最大差距d内,则可以匹配。要求在匹配队伍最多的情况下,匹配出的各组实力差

学Java,找哪吒 1379
上一篇: SQL注入漏洞SQL注入高级篇,零基础入门到精通,收藏这篇就够了
下一篇: CSRF跨站请求伪造,零基础入门到精通,收藏这篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值