• pikachu-跨站请求伪造(CSRF)


    一、CSRF漏洞概述

    1.1 什么是CSRF漏洞

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

    1.2 如何确认一个web系统存在CSRF漏洞

    (1)对目标网站增删改的地方进行标记,并观察其逻辑,判断你请求是否可以被伪造

        例如:修改管理员账号时,不需要验证旧密码,导致请求容易被伪造;

    例如:对于敏感信息的修改并没有使用安全的token认证,导致请求容易被伪造。

    (2)确认凭证的有效期(整个问题会提高CSRF被利用的概率)

        例如:虽然用户退出或者关闭了浏览器,但是cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变的简单。

    1.3 进行CSRF攻击需要具备什么条件?

    例如我们要修改网站用户的信息。

    (1)网站没有对个人信息修改的请求进行防CSRF处理

    (2)用户本身已经登陆后台,并点击了攻击者的恶意链接

    1.4 CSRF与XSS的区别

    CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限;

    XSS是直接盗取了用户的权限,然后实施破坏。

    二、CSRF(get/post)实验演示和解析

    2.1 GET方式

    1、来到我们的pikachu平台CSRF(get)模块,打开burp suite进行抓包。然后执行下图中的操作。

    2、来到burp suite,将截取的数据包里边的GET请求内容复制到notepad++,进行URL链接的伪造。

    3、复制上边的地址,然后再浏览器新开一个标签页,输入刚才的链接,回车。

    4、这时候如果用户刷新自己的页面,信息确实被做了修改。

    2.2 POST方式

    1、来到pikuchu平台的CSRF(post)模块,我们同样使用lucy进行登陆,登录之后我们将地址改回usa,性别改回girl。然后提交修改的数据,来到burp suite观看结果。

     

    三、CSRF token

    token是如何防止CSRF的?

        CSRF的主要问题是敏感操作的链接容易被伪造,我们需要做的就是让这个链接不容易被伪造,我们可以采取每次请求,都增加一个随机码(应该够随机,不容易伪造)的方法,这样后台每次都会对随机码进行验证。

    下面我们来演示一下。

    1、来到pikachu的CSRF token 模块,仍然拿lucy进行登陆,然后进入到信息修改页面。

    2、我们再看一下抓到的包。打开burp suite

    3、下面我们再来看一下源码。

    四、常见的CSRF防范措施

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

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

    2、关于安全的会话管理(避免会话被利用)

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

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

    (3)设置会话国企机制,比如几分钟内误操作,自动登陆超时。

    3、访问控制安全管理

    (1)敏感信息的修改时需要对身份进行二次认证,例如:修改账号时,需要验证旧的密码。

    (2)敏感信息的修改使用POST,而不是GET

    (3)通过http投不中的referer来限制原页面。

    4、增加验证码:

        一般用在登陆(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

  • 相关阅读:
    虚拟机简介
    关于JavaScript的那些话
    关于Python的那些话
    JavaScript教程大纲
    一个resin启动bug的解决
    Python教程大纲
    zinnia项目功能分析
    CDN公共资源
    Django Web项目部署参考
    Django Web项目代码规范参考
  • 原文地址:https://www.cnblogs.com/Feng-L/p/12371958.html
Copyright © 2020-2023  润新知