1、什么是CSRF漏洞

Cross-Site Request Forgery

跨站请求伪造

从一个第三方的网站,利用其他网站生效的cookie,直接请求服务器的某一个接口,导致攻击发生!

2、CSRF案例分析

Gmail CSRF漏洞(设置邮件转发)

Weibo CSRF漏洞(自动关注账号)

2.1 CSRF漏洞危害

例如:

  • 修改账号信息
  • 利用管理员账号,上传木马文件
  • 传播蠕虫病毒(点击、扩散、点击......)
  • 和利用其它手段配合,实现攻击,比如XSS、SQL注入

2.2 CSRF和XSS区别

2.3 CSRF的payload1

2.3.1 通过图片的img src属性,自动加载,发起GET请求:

<img src="http://xxx/xxx/xx.php?nameid=2002&amount=1000" width="0" height="0">

2.3.2 构建一个超链接,用户点击以后,发起GET请求

<a href="http://xxx/xxx/xx.php?nameid=2002&amount=1000" taget="_blank"> 小姐姐在线视频聊天!! </a>

2.3.3 构建一个隐藏表单,用户访问,自动提交,发起POST请求

<from action="http://xxxx/withdraw" method=POST>

<input type="hidden" name="account" value="xiaoming" />

<input type="hidden" name="amount" value="1000" />

<input type="hidden" name="to" value="jiangang" />

</form>

<script> document.forms[0].submit(); </script>

3、CSRF漏洞挖掘

3.1 怎么确定一个接口地址有没有CSRF漏洞呢?

答:在第三方网站,发起目标网站接口的请求,看是否成功

3.2 具体怎么操作呢?

答:在目标网站,正常输入数据,通过抓包获取调用的接口以及参数

3.3 有没有工具可以使用?

答:BurpSuite、CSRF Tester、https://github.com/s0md3v/Bolt 、云产品

3.4 示例

传递参数,然后BP抓包,右键Engagement tools -> Generate CSRF Poc

把HTML代码复制出来,保存在本地,然后在浏览器中打开

4、CSRF漏洞防御

4.1 防御思路

  • 思路一:我们能不能区分一个请求是来自于自己的前端页面,还是第三方的网站?
  • 思路二:怎么让自己的前端页面和伪造的请求变得不一样呢?

4.2 思路一:HTTP Request Header请求头

Referer字段:引用页;引荐;来源页面

作用:跟踪来源,比如访问统计、广告效果1

可以知道用户是从哪个搜索引擎过来的,搜索了那些信息

实现:在后端代码中加入拦截器/过滤器,判断Referer值

如:DVWA中的Medium防护

绕过:抓包,修改Referer中的值进行伪造

4.3 思路二:user_token

在请求中加入一些随机的字段(第三方不知道,也猜不出来),让第三方网站无法伪造请求

实现:DVWA中的Hight防护

1、在用户使用用户名密码登录,服务端下发一个随机的token字段给客户端,并且服务端把这个字段保存在session中。

2、客户端把这个token保存起来,放到隐藏字段,不能放在cookie中!

(CSRF的防护,就是即使你有cookie也不能让你访问成功!)

3、用户在登陆状态下,在之后访问的时候,都要携带这个token字段

4、服务器从session中拿出token值进行对比,如果一致,说明请求合法。

5、用户退出,session销毁,token失效

绕过:如果目标网站还存在xss漏洞,可以利用xss漏洞获取某个字段的值

payload = <iframe src="../csrf" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>

4.4 二次验证

请输入当前密码!

在输入新密码!

短信验证

验证码

ip验证

浏览器的保护措施 -> referrer policy -> strict-origin-when-cross-origin

当你在第三方域名调用另一个域名的接口,他会把参数干掉

4-CSRF漏洞渗透与防御的更多相关文章

  1. 用代码来细说Csrf漏洞危害以及防御

    开头: 废话不多说,直接进主题. 0x01 CSRF介绍:CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session ...

  2. CSRF 漏洞原理详解及防御方法

    跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1 是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻 ...

  3. CSRF攻击原理以及防御

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

  4. CSRF 攻击原理和防御方法

    1. CSRF攻击原理 CSRF(Cross site request forgery),即跨站请求伪造.我们知道XSS是跨站脚本攻击,就是在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息 ...

  5. CSRF的攻击与防御(转)

    add by zhj:CSRF之所有发生,是因为http请求中会自动带上cookies,我的解决办法是:前端不要将数据放在cookie中,而是放在其它本地存储 (HTML5中称之为Web Storag ...

  6. CSRF之攻击与防御

    0x01 什么是CSRF攻击 CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/PO ...

  7. CSRF 漏洞测试

    CSRF简介: CSRF中文名:跨站请求伪造,英文译为:Cross-site request forgery,CSRF攻击就是attacker(攻击者)利用victim(受害者)尚未失效的身份认证信息 ...

  8. 从Java的角度修复CSRF漏洞

    漏洞挖掘中,说实话挖过最多的漏洞就属CSRF漏洞了,提交CSRF漏洞很多次,绕过CSRF防御进行攻击也有很多次.CSRF漏洞是一个很容易引发的问题,今天我从Java的角度来说下这个安全漏洞的修复方案. ...

  9. PHP代码审计笔记--CSRF漏洞

    0x01 前言 CSRF(Cross-site request forgery)跨站请求伪造.攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻 ...

  10. CSRF漏洞原理说明与利用方法

    翻译者:Fireweed 原文链接:http://seclab.stanford.edu/websec/ 一 .什么是CSRF Cross-Site Request Forgery(CSRF),中文一 ...

随机推荐

  1. Electron加载服务器端JS:高效打造跨平台桌面应用与本地 API 交互

    在现代桌面应用开发中,使用 Electron 加载远程服务器托管的前端资源,再与本地 API 交互,能够带来灵活的部署和强大的本地功能支持.这种方式不仅提升了开发效率,还能充分利用 PC 端的资源和性 ...

  2. typescript 5.1

    http://www.patrickzhong.com/TypeScript/PREFACE.html 前言 TypeScript 官网大约从 2020 年开始要打造新版的官网,其中包括官网的样式,以 ...

  3. 新手指南-新人入职-maven相关

    一.前言 入职后,发现公司是用Maven对项目进行管理和构建. 一般来说,自己先确定以下几点: 1.公司对版本是否有要求. 2.是否要求IDEA对maven有特殊的配置. 3.确定自己的 MAVEN_ ...

  4. 《Neo4j 图数据库扩展指南:APOC和ALGO》

    https://detail.tmall.com/item.htm?spm=a2e2i.11532906.0.d2960ced2.f27a6abbrEMtHp&id=622478213458 ...

  5. Windows应急响应-灰鸽子远控木马

    目录 应急背景 木马查杀 1.查看异常连接 2.根据端口号查看对应进程文件 3.排查异常服务 4.发现启动项 开始查杀 入侵排查 1.账号排查 2.查看服务 3.查看启动项 4.查看计划任务 5.网络 ...

  6. SpringCloud入门(四)Ribbon负载均衡

    一.Ribbon负载均衡原理SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的. SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTempl ...

  7. linux下UsbMon-WireShark之USB协议抓取分析

    usbmon配置 使用usbmon抓包分的,是需要 内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko : make ARCH=arm64 CROSS_COMPILE=aarch64 ...

  8. 3个步骤轻松集成Push Kit,实现App消息推送

    推送通知作为App重要的消息传递工具,广泛应用于电子商务.社交媒体.旅游交通等领域的通知场景.比如当应用有新功能或安全补丁时,系统将推送消息提醒用户及时更新:如果是航班出行类的应用,会发送最新的班次时 ...

  9. FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库

    ijkplayer是一款由B站研发的移动端国产播放器,它基于FFmpeg3.4版本,同时兼容Android和iOS两大移动操作系统.ijkplayer的源码托管地址为https://github.co ...

  10. MongoDB面试专题33道解析

    大家好,我是 V 哥.今天给大家分享 MongoDB的道 V 哥整理的面试题,收藏起来,一定会对你有帮助. 1. 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什 ...