CSRF的简单理解

简介

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

条件

CSRF的利用条件是比较严苛的因此在实战中会很少遇到的,完成一次CSRF攻击需要达到三个条件,缺少其中一个条件都不能让这次攻击成功

1.用户处于该网站的登录状态

2.攻击者伪造的链接与目标web应用的请求链接一致

3.web应用的后台没有对用户业务开展合法性校验

CSRF攻击原理及过程

img

1.用户C打开受信任的网站(A),并且输入账号密码进行登录

2.用户C要登录的网站(A)会对用户C的登录请求进行验证,通过验证后会在后台产生并返回cookie给用户C的浏览器

3.用户C在登陆网站(A)后并没有退出账号,这时候访问到hacker构造的网站(B)

4.访问hacker构造的网站(B),该构造的网站有一个脚本文件会使用户C的浏览器发出一个请求

5.用户的浏览器会根据B在(4)的请求,带着在(2)处产生的cookie(前提是该cookie没有过期)访问网站(A)

实例

1.受害者“李白”在银行有一笔存款,通过银行的网站给“杜甫”转一百万,这时候银行的网站发送的请求为https://bank.example/withdraw?account=libai&amount=1000000&for=dufu

一般情况下,该请求发送到银行的网站后,服务器会先验证该请求是否来自一个合法的session,并且该session的用户“李白”已经成功登陆银行的网站。

2.黑客“李清照”在该银行也有一个账户,通过burp suite抓包他知道上面提到的URL可以进行转账的操作,李清照可以发送一个请求给银行https://bank.example/withdraw?account=libai&amount=1000000&for=liqingzhao但是这个请求是”李清照“发起的并非是“李白”,因此“李清照”并不能通过银行的安全认证,所以该恶意请求并不会起到任何作用

3.这时候“李清照”想到可以用CSRF的攻击方式,她先构造一个网站,在网站中放入这样的代码src="https://bank.example/withdraw?account=libai&amount=1000000&for=liqingzhao",然后通过钓鱼的方式来使李白访问他的网站,当“李白”访问“李清照”构造出来的网站时,上述的URL就会从“李白”的浏览器发向银行的网站,而这个请求会附带“李白”浏览器中的cookie一起发向银行的服务器,大多数情况下该请求会失败。因为服务器会验证“李白”的认证信息,但是,如果“李白”当时恰巧访问他的银行后不就,他的浏览器和银行服务器之间的session并没有过期,浏览器的的cookie之中含有“李白”的认证信息,这时悲剧就发生了,这个请求的URL会得到响应,钱将从“李白的账号转到“李清照”的账号,而当时“李白”一点异常也看不出来,等到银行的短信通知时才发现存在银行的钱不见了,即便他查账户的流水信息,他也只会发现有一笔源自自己的合法请求的转账,没有发现任何异常,而此时“李清照”关上电脑从此走上了人生巅峰

posted @ 2021-10-17 17:15  crany  阅读(192)  评论(0编辑  收藏  举报