CSRF漏洞很好玩(注意以下人物的转换)
我是黑客甲:今天盗个人的号来玩玩。
受害人乙:今天是个做题的好日子啊!
于是受害人通过自己的账号,和密码登陆了某个做题页面
当成功登陆进去之后,本页面就有了被服务检验并且通过合法的cookie或者某种其他的凭证
黑客甲此时也拥有一个这个平台的账号
黑客甲此时也登陆了自己的这个网站的账号
黑客甲在这个网站的更改密码页面更改了自己的密码
黑客甲原本的账号密码为admin和admin
黑客甲在这个页面将自己的账号密码更改为了admin1,admin1
当更改成功之后黑客甲发现他的url栏目变成了这样:
http://xxxx.com/csrf/?password_new=admin1&password_conf=admin1&Change=Change#
黑客甲惊讶的发现,这个网站竟然是通过get传值来进行密码更改,同时也没有对cookie(身份凭证)等等其他的来源进行过滤
黑客甲尝试自己构造一个url
http://xxxx.com/csrf/?password_new=admin1&password_conf=admin1&Change=Change#
黑客甲访问这个人为构造的url栏目之后,发现竟然可以直接更改自己密码
这里就要涉及cookie的作用了
cookie
储存在用户端的临时身份凭证
当用户登陆成功之后便会把这个经过验证的cookie存储在浏览器上,这个cookie是有时间限制和访问限制的
黑客甲于是便想到了一个好法子去盗取受害人乙的密码的方法了:
一旦受害人成功登陆过这个网站,那么受害人的浏览器上便会存储有这个临时cookie,在这个cookie还没有过期的时效下,就可以将人为构造的url栏目放在受害人随时可能会点到的地方,一旦受害人点击就会自动更改密码。
假设受害人某天突然看到一个url
http://baidu.com/csrf?password_new=admin1&password_conf=admin1&Change=Change#
他蠢蠢欲动没有防范意识边点了进去,那么他的密码就被不经意间更改了
如果你觉得这个太显眼,那么我们再用短链接加密一下
上面的这个短链接和之前构造的url本质上是一样的,如果你觉得还不够隐蔽:
一旦点击进去,用户还没有反应过来,以为只是点了个垃圾网站而已,殊不知他的密码已经被悄悄更改了
所以奉劝大家不要随便乱点不明链接,真的很可怕
SCRF漏洞的本质
因为后端对用户凭证和来源(cookie,ip,session)的过滤未充分行为,导致的其他用户获取到合法访问凭证(别人的qq密码)的行为
那么session和token是什么呢?
session
session也是一种用户凭证,但是这个凭证是存储在服务器上的(更安全),用于记录客户访问时的一些信息,下一次客户访问只需要查找session就可以了
token
token也称为令牌,是服务器生成的一串字符串,作为客户端进行请求的一个标识 (用户的身份证),
token存在哪儿都行,客户端可存放在localstorage或者cookie,而服务器端则会存放于数据库(服务器端的session是直接放在内存中的)
token的可拓展性更强。
token可抵御csrf,因为cookie容易伪造,但是token是不容易伪造的。