1.CSRF(get)
我们先修改个人信息然后抓包看看
我们可以发现参数是以get型提交的,没有做任何的安全验证。
这时我们只需要将127.0.0.1:88/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=66666&add=77777&email=888888&submit=submit HTTP/1.1
修改成我们自己想要的资料,然后在用户打开该网页的时,点击这个网址,这样就可以吧资料修改成我们自己想要的资料。
这样我们可以悄然无声的修改别人的信息。
2.CSRF(post)
这个第一步我们做的就是修改个人信息然后抓包看看
我们不难看出这个不是get型
如果这样我们怎么攻击呢,这个不难,在前面我们学习过xss(post),这个原理也是一样,
我们需要搭建一个站点发送给目标用户,如果用户正在访问当前页面,就会自动的向后台发送请求修改个人信息。
我们编写一个post.html文件
将它放在pikachu文件下。
我们只需要将/http://127.0.0.1:88/pikachu/vul/csrf/csrfpost/csrf_post.php
发送给用户,就可以成功修改用户的资料。
3.CSRF(token)防范措施
CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造
---------每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证
我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求
与前面相比多了一个token(随机的),这样让我们没办法制造URL
看看token如何生成。
这样大大的提高了安全性。
防护措施总结:
增加Token验证(常用做法)
---对关键操作增加Token参数,token必须随机,每次都不一样
---关于安全的会话管理(避免会话被利用)
---不要在客户端保存敏感信息(比如身份验证信息)
---退出、关闭浏览器时的会话过期机制
---设置会话过机制,比如15分钟无操作,则自动登录超时
访问控制安全管理
---敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
---敏感信息的修改使用POST,而不是GET
---通过HTTP头部中的REFERER来限制原页面
增加验证码
----一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)