CSRF跨站请求伪造学习

csrf是什么?

csrf也叫做on click攻击

和xss非常容易混淆,主要区别就是CSRF是借用户权限完成攻击的,攻击这没有拿到用户的权限,而xss是直接盗取了用户的权限

一个例子就是CSRF攻击是当用户正在访问某个购物网站的话,他已经登录了,这个时候我们只需要自己注册一个账号,然后看一下修改个人信息的请求是什么,如果安全性不高的话,可能请求里面只有要修改的信息,不会携带原始信息进行验证,这样的话把这个链接发给他,他点击后,个人信息就被修改了。

而使用XSS攻击的话就是获取到他的cookie,然后用他的cookie进行登录,然后修改个人信息

如何确认一个web系统存在CSRF漏洞

  1. 对网站增删改的地方进行标记,并观察其逻辑,判断请求是否可以被伪造

    ​ 比如修改管理员账号时,并不需要验证旧密码,导致请求容易被伪造

    ​ 比如对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造

  2. 确认凭证的有效期(这个问题会提高CSRF被利用的概率)

  3. ​ 虽然退出或者关闭了浏览器,但cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变的简单

实例

使用pikachu平台的题目

提示里面给了一些账号密码

我们用vince登陆

点击:修改个人信息

我们点submit抓一下包,看看传的是什么内容

1
http://10.211.55.4/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=18626545453&add=chain&email=vince%40pikachu.com&submit=submit

发送的是这样一个请求,没有携带cookie并且直接把修改的信息放在url上面,猜测存在csrf漏洞

我们复制一下这个请求

现在我们退出登陆,登陆另一账号allen

然后我们直接把刚刚的请求输入到地址栏回车

我们发现allen的个人信息被改成vince的个人信息了,攻击成功。

总结实际利用方式:

vince的账号就是攻击者的,攻击者获取自己修改个人信息的请求,然后对这个请求进行伪造,比如可以把电话改成123456,然后这个请求就是一个链接,攻击者可以把这个链接发给被攻击者allen,如果被攻击者刚好登陆了这个网站,那么点击链接后,自己的个人信息就被改掉了。

注意这个攻击成功是有条件的:1、被攻击者当前登陆了该网站 2、点击攻击者的恶意链接使用的浏览器和登陆网站使用的浏览器相同。

用户防范措施:

  1. 使用完账号后及时退出登陆
  2. 不随便点击恶意链接
  3. 点击奇怪链接的时候换一个浏览器

程序员防范措施:

  1. 使用token
  2. 验证码
  3. 敏感操作前必须二次验证身份

但是如果网站本身存在xss攻击,那就没必要防范csrf了,因为xss可以获取cookie,token等,比csrf的权限高得多,所以必须先修复xss


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!