pikachu学习——CSRF(跨站请求伪造)

    Cross-site request forgery简称为“CSRF”

  在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了,所以CSRF攻击也被称为"one click"攻击。

        CSRF攻击要想成功需要特定条件:

        1.我们登录的网站没有对我们关键信息(比如密码等敏感信息)进行CSRF保护,当我们提交信息修改时(增删改)请求时,请求易被伪造

   2.当用户点击伪造链接的同时必须登陆着网站

   CSRF和XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。

         下面我在pikachu平台具体演示一下CSRF漏洞

 CSRF(get)

 

         首先我们输入已注册过的用户名密码登录,例如kobe,123456

 

        

 

 

更改kobe信息,并抓包

 

 

 

 

我们发现它是通过get请求提交并且没有防CSRF的token

所以我们可以拿到他get请求的这个链接,然后修改他提交的这个信息,例如手机号改成6666666,然后将这个更改后的get请求以任何方式发送给kobe。

http://192.168.131.246 /pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=%E7%94%B7&phonenum=6666666&add=111&email=111&submit=submit 

假设kobe在他的浏览器访问了这个网址,那么他的手机号就会被修改。

 

 

 

CRSF  (post):

     还是登录kobe账号,修改其信息并抓包,可以看到请求是通过post方式进行提交的,所以没有办法通过URL来伪造请求

 

 

 

 

 我们可以做一个站点,然后在站点上做一个 表单,让kobe去点击我们站点中的恶意表单的URL。通过这个恶意表单向存在CSRF漏洞的页面提交post请求,类似于XSS的post型漏洞

 

CRSF  Token:

          我们可以用Token去防止CSRF漏洞的产生,每次请求,都给他增加一个随机码让后台去验证,确保请求不会被伪造

           我们可以看一下pikachu平台的Token使用

           登录pikachu的CSRF Token页面kobe账号,修改其信息,并抓包

 

 

 我们发现在get请求提交的基础上增加了Token,当我们刷新页面时Token值会发生变化,这样也就完全防止了GRSF漏洞的产生。

 

CRSF漏洞常见防范措施:

        增加token验证(常用的做法):

  1、对关键操作增加token参数,token值必须随机,每次都不一样;

  关于安全的会话管理(避免会话被利用,及时关闭登录态)

  1、不要在客户端保存敏感信息(比如身份认证信息);

  2、测试直接关闭,退出时,的会话过期机制;

  3、设置会话过期机制,比如15分钟内无操作,则自动登入超时;

  访问控制安全管理:

  1、敏感信息的修改时需要对身份进行二次认证,比如修改账号时,需要判断旧密码;

  2、敏感信息的修改尽量使用post,而不是get;(post的安全性比get高些)

  3、通过http 头部中的referer来限制原页面
  一般用在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

 

 

posted @ 2020-04-04 20:41  一个aaa  阅读(624)  评论(0编辑  收藏  举报