pikachu靶场-CSRF(跨站请求伪造)-CSRF Token login – 作者:知非知非知非

1626739973_60f615058eb2ce30d115d.png!small

登录抓包信息如下:

1626739978_60f6150ad68f102e59165.png!small

我们这里做一下,修改操作,并查看BURP抓包结果!!!

1626739984_60f61510545b672bbc98a.png!small

这里发现修改操作中,带了一个TOKEN值!!!

我们看一下提示!!!

1626739993_60f61519083d05b711919.png!small

源码里面有一个隐藏TOKEN,干啥用的?

1626740000_60f61520574ff3668e807.png!small

小知识:  CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造

每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证。

防范CSRF措施:

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

对关键操作增加token参数,token值必须随机,每次都不一样,防止暴破。

关于安全的会话管理(避免会话被利用):(CSRF的攻击必须是登录态)

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

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

访问控制安全管理:

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

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

通过http 头部中的referer来限制原页面(比如修改个人信息的referer必须来自本域,不能是其他域的或者没有referer)

增加验证码(也可以看成 小token但需要人机交互):

至于那个隐藏的TOKEN是干啥用的?我们试着,把隐藏TOKEN的TYPE修改成TEXT

1626740017_60f6153100aa17b4258d6.png!small

就是提交修改信息时,需要提交一个TOKEN值才能修改!!!

我们看下TOKEN是如何生成的!!!

此时,我看一下,后台代码!!!!

在文件token_get_edit.php中,我们也可以看到服务端会生成token,并获取TOKEN值传入参数修改界面,随参数修改一起提交!!!!

1626740033_60f61541e7138a14cbfb2.png!small

$_SESSION[‘token’]:

在PHP中,使用$_SESSION[]可以存储特定用户的Session信息。并且每个用户的Session信息都是不同的。读取Session变量信息(可赋值给一个变量或者直接输出):变量=$_SESSION[“Session名称”];

生成TOKEN方法!!!

1626740042_60f6154ae7d4edcd9c490.png!small

在目录 D:\phpStudy\PHPTutorial\WWW\pikachu\inc\function.php可以看到token的生成方式:

1626740048_60f61550ef76bb7756447.png!small

大佬说:这里我们就要分析一下这个token的作用了。按照前面csrf get的方法,攻击者会伪造一个GET URL去让用户点击。但用户正常提供GET请求时,会把服务器返回的token填入和提交,而攻击者伪造URL时除非前期抓包获取到这个返回的token,否则他是不会知道这个token的。所以攻击者无法构造GET URL。同理,对于POST方法也是一样。所以,使用token是一个很好的防御CSRF攻击的方法。

来源:freebuf.com 2021-07-20 08:14:52 by: 知非知非知非

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论