pikachu CSRF题解

CSRF(跨站请求伪造)概述
Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。

第一关.CSRF(get)

点击提示
进行登录
我们看一下Pikachu平台中CSRF(get)这个场景的使用,我们登录一下,账号有vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456

登录成功后可以来到个人中心,可以在这修改个人信息
我们尝试修改一下个人信息并提交,同时利用BurpSuite抓包查看修改个人信息的请求内容,我们改一下地址从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让lucy点击就好,我们构造的URL中把地址add改为hacker。lucy一点击就修改了地址。

第二关.CSRF(post)

这里需要借助CSRFTester软件进行抓包。先打开CSRFTester,用法和Brup差不多,不过这里需要配置的监听端口为8008。点击Start Recording开启监听后修改用户信息。提交表单后,可以看到已经抓到这个POST请求

需要软件的可以在评论区找我要

pikachu CSRF题解

将其它多余的请求删除,然后点击Generate HTML生成恶意网页index.html,使用编辑器将其打开。这里可以直接修改其中的数据,依然将邮箱修改为黑客邮箱[email protected],另外还需要添加一个提交按钮。修改完成后,部署到黑客站点,这里我放到Pikachu/vul/csrf/目录下
pikachu CSRF题解
最后,当用户在登录状态下,访问黑客站点http://127.0.0.1/pikachu/vul/csrf/index.html并点击提交按钮,那么其个人信息将会被恶意修改,可以在控制台中看到点击按钮后触发的POST请求
pikachu CSRF题解

第三关.CSRF Token

原理:CSRF的主要问题是敏感操作的链接容易被伪造。而只要在每次请求时都增加一个随机码Token,后台每次都对这个随机码进行验证,则可以有效地防止CSRF

在源码token_get_edit.php中看到,每次刷新页面,都会调用set_token()函数,该函数会把SESSION中Token销毁,然后生成一个新的Token,并将这个Token传到前端表单中

当每次提交表单时,这个Token值就会传到后台与SESSION中的Token进行比较,若不相等,此次表单则提交失败。所以黑客由于不能得知用户当前的Token值,从而无法进行CSRF攻击

其他防范措施

一.增加验证码:一般用于防止暴力**,也可以用在其它重要信息操作的表单中

二.安全的会话管理:
2.1不要在客户端保存敏感信息,如身份认证信息
2.2设置会话过期机制,如15分钟内无操作则自动登录超时

三.访问控制安全管理:
3.1敏感信息修改时需要对身份进行二次认证,如修改密码时,需要校验旧密码
3.2敏感信息的修改使用POST,而不是GET
3.3通过HTTP头部中的Referer来限制原页面