CSRF漏洞概述:
Cross- site request forgery简称为“CSRF“
在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接)然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。所以CSRF攻击也被称为为“ one click“攻击。
CSRF漏洞测试流程
举例:
假如小黑想要修改lucy在购物网站tianxiewww.xx.com上填写的收货地址。
首先看下大白是如何修改自己的密码的:
登录—修改会员信息,提交请求—修改成功。
那么小黑想要修改lucy的信息,他需要拥有:
1.lucy登录权限
2.修改个人信息的请求。
但是lucy又不会把自己xxx网站的账号密码告诉小黑,那小黑怎么办?
于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:
【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
于是,他实施了这样一个操作:把这个链接伪装一下,在lucy登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。
为什么小黑的攻击可以成功?
条件1:ⅹx购物网站没有对个人信息修改的请求进行防CSRF处理,导致该请求容易被伪造。
因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
条件2:lucy在登录了后台的情况下,点击了小黑发送的“埋伏”链接。如果lucy不在登录状态下,或者lucy根本就没有点击这个链接,则攻击不会成功
CSRF和xss的区别
如果小黑事先在x网的首页如果发现了一个XS漏洞,则小黑可能会这样做:
1 欺骗ucy问埋伏了XSS脚本(盗取 cookie的脚本)的页面
2 lucy中招,小黑盗取到到ucy的 cookie;
3 小黑顺利登录到ucy的后台,小黑自己修改uoy的相关信息;
所以跟上面比一下,就可以看出CSRF与XS的区别
CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
CSRF(get/post)实验演示和解析
Anti CSRF token
常见CSRF防范措施
如何确认一个Web系统存在CSRF漏洞
1.对目标网站增删改的地方进行标记,并观察其逻辑,判断请求是否可以被伪造
–比如修改管理员账号时,并不需要验证旧密码,导致请求容易被伪造
–比如对于敏感信息的修改并没有使用安全的 token验证,导致请求容易被伪造
2.确认凭证的有效期(这个问题会提高CSRF被利用的概率)
虽然退出或者关闭了浏览器,但 cookie仍然有效,或者 session并没有及时过期,导致CSRF攻击变的简单