白帽工具箱:DVWA中CSRF攻击与防御的入门指南

news2024/9/22 10:03:42

🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀
🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。
🌟🧭 在这里,每个错误都是成长的阶梯,每条建议都是前进的动力。
🌟🧭 在这里,我们一起成长,一起进步,让我们在知识的世界里畅游无阻,共同创造一个充满智慧和创新的明天。
🌟📚 点击关注,加入我们的技术探索之旅吧!❤️📖✨
✨博客主页:远见阁小民的主页
📕本文专栏:白帽学徒笔记
📕其他专栏:后端专栏 AI专栏 Python专栏 其他专栏 Linux专栏

1 简介

  CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击,攻击者通过伪造用户请求,使得用户在不知情的情况下执行一些操作,例如更改账户信息、发送消息等。
  这种攻击利用了用户已经登录的身份,向目标网站发送恶意请求。

1.1 CSRF的工作原理

(1)用户登录: 用户在某网站(例如银行网站)登录,并获得一个合法的会话Cookie。
(2)访问恶意网站: 用户在登录状态下访问了一个包含恶意代码的第三方网站。
(3)伪造请求: 恶意网站使用用户的会话Cookie,向目标网站发送伪造的请求。
(4)执行操作: 目标网站接收到伪造请求后,由于用户已经登录,会认为请求是合法的,并执行相应操作。

1.2 防御CSRF的常用方法

(1)使用CSRF令牌: 在每个请求中包含一个唯一的、不可预测的令牌,服务器验证令牌的有效性。
(2)检查Referer头: 服务器检查请求的来源,确保请求是从同一站点发出的。
(3)双重提交Cookie: 将CSRF令牌同时存储在Cookie和请求参数中,服务器验证这两个值是否一致。

2 实战演练

2.1 演示一:设置DVWA Security安全级别为Low

在这里插入图片描述

2.1.1 打开CSRF界面

我们可以看到这是一个修改密码的界面

在这里插入图片描述
如上图所示,当我们把密码修改为:111111 后,点击Change,提示修改成功。
在这里插入图片描述

  这个时候,我们发现这是一个get型请求提交,所以我们可以直接在url中对密码进行修改,然后回车即可发出请求并修改密码完成。
  这里我们已经在url中把密码修改为222222,回车后发现再使用111111密码已经无法登录成功了👇
在这里插入图片描述

2.2 演示二:提升安全级别为Medium

  • 此时我们再按照《演示一》的流程操作一遍,可以发现已经不能直接通过url进行密码的修改了。

在这里插入图片描述

  • 正常点击Change进行密码修改,然后使用BP进行抓包可以发现,该安全等级下多了Referer的验证,这就是我无法通过url修改密码的原因。
    在这里插入图片描述

2.2.1 了解Referer 验证

  Referer 验证是一种用于增强Web应用程序安全性的技术,主要用于防止跨站请求伪造(CSRF)攻击。通过验证HTTP请求头中的Referer字段,服务器可以确保请求来源于合法的页面,而不是由第三方恶意网站伪造的。

(1)Referer 头字段
  HTTP请求头中的Referer字段包含了发起请求的页面的URL。比如,当用户在一个页面上点击链接或提交表单时,浏览器会在随后的请求中自动添加Referer字段,指明用户是从哪个页面发起的请求。
(2)Referer 验证的作用
   Referer 验证主要用于防御CSRF攻击。
  CSRF攻击的基本流程是:攻击者诱导用户在登录状态下访问攻击者控制的页面,从而在用户不知情的情况下向合法网站发送恶意请求。如果没有Referer验证,服务器可能会信任这些请求,导致安全问题。

  通过Referer验证,服务器可以确保请求确实是从合法页面发出的,从而有效防止CSRF攻击。例如,银行网站可以通过Referer验证来确保修改密码的请求是从银行网站的账户设置页面发出的,而不是从其他不可信的来源发出的。
(3)Referer 验证的局限性

  • Referer字段可以被伪造
    高级攻击者可以通过工具伪造Referer字段,从而绕过验证。
  • 浏览器隐私设置
    某些浏览器或浏览器插件可能会屏蔽Referer字段,导致合法请求被拒绝。
  • 跨站请求
    对于需要跨站请求的合法操作,Referer验证可能会带来不便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1907973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

镜舟科技:国产数据库角逐金融赛道,开年斩获数家银行订单

在国产数据库领域,镜舟科技正迅速崛起,成为一匹瞩目的基础数据技术黑马。 开年伊始,镜舟科技便成功斩获中信银行、南京银行、某股份制银行、某头部民营银行、某大型综合类券商以及某消费金融公司等多家金融企业订单,其锚定需求匹…

最优化方法 运筹学【】

1.无约束 常用公式 线搜索准则:求步长 精确线搜索(argmin) 最速下降:sd:线性收敛 2.算法 SD dk:付梯度-g newton dk:Gkd-g 二阶收敛,步长为1 阻尼牛顿:步长用先搜…

HBuilder X 小白日记03-用css制作简单的交互动画

:hover选择器,用于选择鼠标指针浮动在上面的元素。 :hover选择器可用于所有元素,不只是链接 :link选择器 设置指向未被访问页面的链接的样式 :visited选择器 用于设置指向已被访问的页面的链接 :active选择器 用于活动链接

【Java14】构造器

Java中的构造器在创建对象(实例)的时候执行初始化。Java类必须包含一个或一个以上的构造器。 Java中的构造器类似C中的构造函数。 Java中对象(object)的默认初始化规则是: 数值型变量初始化为0;布尔型变量…

记录一次Nginx的使用过程

一、Docker安装配置nginx 1.拉取镜像 docker pull nginx2.创建挂载目录 启动前需要先创建Nginx外部挂载目录文件夹 主要有三个目录 conf:配置文件目录log:日志文件目录html:项目文件目录(这里可以存放web文件) 创建挂…

智能视频监控中心 - 详细介绍

目录 一、概述 (一)定义 (二)作用 1、系统安全性 2、整体管理效率 3、数据支持决策 4、促进企业集团化和智慧城市发展 二、原理和组成 (一)原理 (二)组网图 (…

MATLAB常用的插值方法

在数学建模中,我们拿到的数据经常会有缺失值,在缺失值不是很多的情况下,我们在数据预处理阶段会采用插值方法来将数据补齐,之后再开始我们的建模。 目录 1.Matlab 实现分段线性插值 2.拉格朗日插值多项式 3.牛顿(…

OSCNET+ 代码复现

项目github 已有,开个博客大家如果复现有问题可以随时在下面留言 github :GitHub - hongwang01/OSCNet: 【MICCAI 2022, TMI 2023】Orientation-Shared Convolution Representation Model 1、从github 下载项目并解压 2、下载数据集 当然自己用肯定是自…

C语言实现顺序表字符型数据排序

实现直接插入、冒泡、直接选择排序算法。 #include <stdio.h> #include <stdlib.h>typedef char InfoType;#define n 10 //假设的文件长度&#xff0c;即待排序的记录数目 typedef char KeyType; //假设的关键字类型 typedef struct { //记录类型KeyType…

超详细版阿里云控制台环境配置+数据库配置

一、登录阿里云控制台 登录阿里云控制台&#xff0c;找到实例&#xff0c;切到阿里云服务器所在地址 &#x1f36d;不知道自己的服务器地址在哪边也没有关系&#xff0c;随便选择一个&#xff0c;查询不到记录的话会有以下提示&#xff0c;可以根据提示进行切换&#xff08;适…

Mac系统清理工具:您的数字生活杂务处理师

有没有觉得您的Mac有时候像是需要一个好的春季大扫除一样&#xff1f;随着我们不断使用电脑&#xff0c;各种不需要的文件、老旧的数据和忘记的安装包就像家里的灰尘一样慢慢积累。幸运的是&#xff0c;有了一些出色的Mac系统清理工具&#xff0c;我们可以轻松将这些数字灰尘拂…

含金废水的特性?如何提取含金废液中的黄金?

在金的工业使用过程和回收过程中都会产生含金废液&#xff0c;通常来自金矿冶炼、电子废弃物处理、珠宝制作和其他工业过程。由于黄金是一种贵重的贵金属&#xff0c;金废水的回收和处理是环保和资源可持续利用的关键领域之一&#xff0c;但是金的含量多数较低、甚至是微量、痕…

华为od相关信息分享

2024年OD统一考试&#xff08;D卷&#xff09;完整题库&#xff1a;华为OD机试2024年最新题库&#xff08;Python、JAVA、C合集&#xff09; 问 1.什么是华为od&#xff1f; 答&#xff1a;OD全称是Outsourcing Dispacth&#xff0c;即外包派遣&#xff0c;是华为和外企德科…

昇思MindSpore学习笔记5-02生成式--RNN实现情感分类

摘要&#xff1a; 记录MindSpore AI框架使用RNN网络对自然语言进行情感分类的过程、步骤和方法。 包括环境准备、下载数据集、数据集加载和预处理、构建模型、模型训练、模型测试等。 一、概念 情感分类。 RNN网络模型 实现效果&#xff1a; 输入: This film is terrible 正…

Kotlin linkedMapOf filterKeys

Kotlin linkedMapOf filterKeys fun main(args: Array<String>) {val lhm linkedMapOf<String, Any>(Pair("name", "phil"), //因为key相同都为 name&#xff0c;被后面的覆盖。Pair("year", 2024),Pair("name", "f…

顶会FAST24最佳论文|阿里云块存储架构演进的得与失-1.引言

今年早些时候&#xff0c;2月份举办的全球计算机存储顶会USENIX FAST 2024&#xff0c;最佳论文来自阿里云&#xff0c;论文名称《What’s the Story in EBS Glory: Evolutions and Lessons in Building Cloud Block Store》 &#xff0c;论文详尽地探讨了阿里云在过去十年中开…

新增多种图表类型,新增插件管理模块,DataEase开源数据可视化分析工具v2.8.0发布

2024年7月8日&#xff0c;人人可用的开源数据可视化分析工具DataEase正式发布v2.8.0版本。 这一版本的功能变动包括&#xff1a;图表方面&#xff0c;新增组合图、热力地图、符号地图、K线图等图表类型&#xff0c;并对已有的仪表盘、明细表、指标卡、富文本等图表类型进行了功…

Java之父James Gosling宣布正式退休 创造无数人的饭碗

编程语言Java的创始人&#xff0c;被誉为“Java之父”的James Gosling&#xff0c;近日在社交媒体上宣布了自己正式退休的消息。Gosling表示&#xff1a;“我终于退休了。做了这么多年的软件工程师&#xff0c;现在是时候享受人生了。”他透露&#xff0c;在亚马逊的过去7年是非…

手写《C++20设计模式》中介者模式

文章目录 一、前言二、实现1、UML类图2、实现 一、前言 个人感觉最后几种行为模式都很难&#xff0c;而且很重要。 对于中介者模式浅层理解就是&#xff0c;从原来所有相关对象彼此通信变为&#xff0c;引入一个中介者对象&#xff0c;让所有的相关对象通过中介者来通信&#…

wait和sleep在同步方面的区别

在 Java 中&#xff0c;wait 和 sleep 都用于让线程进入等待状态&#xff0c;但它们在同步操作和线程管理方面有显著区别。以下是它们的主要区别&#xff1a; 1. 所属的类 wait 是 Object 类的方法。sleep 是 Thread 类的静态方法。 2. 使用场景 wait 用于线程间通信&#…