CSRF基本概念
CSRF(Cross-Site Request Forgery, 跨站请求伪造)
攻击者伪造一个请求(一般是个链接),欺骗目标用户点击。用户点击这个请求,攻击完成。
CSRF攻击条件:
- 网站没有对个人信息修改的请求进行防CSRF处理,导致请求容易被伪造;
- 受害者必须登录该网站,并且点击该链接
示例:
- 正常情况下,Jack想编辑个人信息,因此修改自己的新地址:
http://www.xxxx.com/sex=男&phonenum=123456&add=地球村56789号&email=jack@qq.com&submit=submit/ - 但是Tom想将地址改成他自己的,但是没有Jack的用户名密码;
- Tom可以自己注册一个账号,将GET修改地址的请求抓取下来,再将其改成Jack的信息(http://www.xxxx.com/sex=男&phonenum=123456&add=火星村56789号&email=jack@qq.com&submit=submit/),最后将该URL发给Jack骗其点击。
如何确认一个web系统存在CSRF漏洞:
- 对目标网址增删改的地方进行标记,并观察其逻辑,判断请求是否被伪造;
(1)修改管理员账号时,是否需要验证旧密码,导致请求容易被伪造;
(2)对敏感信息的修改有没有使用安全的token验证,导致请求容易被伪造; - 确认凭证的有效期(会提高CSRF被利用的概率)
(1)虽然退出或关闭了浏览器,但cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变简单