【web安全】CSRF漏洞攻击与防御

前言

总结,仅供学习。

csrf的理解

我们了解一个网站有修改信息,密码,添加删除管理,支付转账的功能之后。

通过抓包抓取对方修改操作的数据包样式,

然后在自己网站搭建一个指令。

当别人来访时,

如果正好打开着目标网站,就发送修改信息的数据包,从而实现被修改信息。

简而言之就是用目标的名义去发送数据包

csrf目前的存在情况

大型网站一般都是有防护的。

小中型的网站后台常有。

但是中小型网站,信息价值确实也就那样。。。。

csrf的前提条件

登录要修改信息的网站。

在不退出该网站的同时,再登录攻击网站。

(所以条件还是蛮苛刻的,不是太好用)

csrf的判断

可以自己创建个号来测试一下有没有该漏洞。

csrf与xss的区别

csrf与xss很多人会混淆

xss是在目标网站上写入javascript语句,盗取他的cookie然后登录自己改他的东西。

csrf是在不登陆的形况下,让他自己发送数据包改他自己的东西。

get型csrf入侵案例

本处用的是pikachu的靶场进行演示。

这里假设目标人物叫做kobe,我的名字叫做lili

kobe被黑需要做的

首先第一点,目标要登录网站。

 目标登录网站,获取了cookie。

因为,我们想要修改信息,转账支付添加管员等操作都是需要cookie的,所以本处必须要目标登录网址。

接下来是lili需要做的。

我们先要搞清楚这个修改信息是发送的什么样的数据包。

先改一下信息查看数据包

我们抓取数据包,看到这个标识部分是他修改的方式,他通过get的形式发送的修改数据包。

也就是说,lili如果想要改kobe的个人信息,lili要让kobe自己发送修改自己信息的数据包。

那么lili需要搭建一个网站,让kobe访问这个网站的时候,自动向目标网站发送这个数据包。

lili搭建网站的过程

如果没有服务器,自己用自己的phpstudy搭建也可以。

我们自己建一个网站,在网站中创建这个文件。

这时我们用我们自己的账号结合burp抓一下修改我们信息的包

右键burp找到这个按钮,按下去。

这个界面就可以生成我们csrf的攻击代码。

我们在url中修改想要修改的kobe的数据然后点左下角按钮刷新后复制这些代码。放入我们网站的文件中。

 我们做好网站后发给kobe等他来访问。

kobe视角

kobe登录着记录自己信息的网站,忽然发现lili发给他了一个网站,一点开发现一个按钮

其实这个是burp默认的,你完全可以改变成自己想要的形式。

这时kobe点击了按钮

瞬间发现自己的信息被人恶搞了

气不打一处来,于是线下单杀了lili。

是的有点繁琐的利用方式。

防御方法

1、当用户发送重要的请求时需要输入原始密码

2、设置随机Token

3、检验referer来源,请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)

(但是referer可以被篡改)

4、设置验证码

5、限制请求方式只能为POST

最好用的是token。

token是每次用户更改信息时,后台产生一个随机编号,仅当数据包与后台的编号一直时,才会允许更改,kobe这次更改信息就是这个编号,下次就更改数据包就会变化,所以我们用上次的数据就无法更改了。

类似这个

可以看到数据包多了一行编码。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++基础 -30- 双目运算符重载

c的运算符如,只能实现标准的加法,无法让两个类的参数相加 通过运算符重载可以实现更高级的运算(此处为类外重载) 运算符重载(类内重载) #include "iostream"using namespace std;class data1 {public :int a;data1…

Go语言实现大模型分词器tokenizer

文章目录 前言核心结构体定义构造函数文本初始处理组词构建词组索引训练数据编码解码打印状态信息运行效果总结 前言 大模型的tokenizer用于将原始文本输入转化为模型可处理的输入形式。tokenizer将文本分割成单词、子词或字符,并将其编码为数字表示。大模型的toke…

Linux下Docker 离线安装详细步骤,亲测成功

1.离线原因:公司新创不能使用开元linux,使用了一个变种centOS,致使yum被禁 2.步骤: 2.1 下载docker tar包,下载地址:Index of linux/https://download.docker.com/linux/ 2.2 新建自己的软件目录&am…

DBeaver 社区版(免费版)下载、安装、解决驱动更新出错问题

DBeaver 社区版(免费版) DBeaver有简洁版,企业版,旗舰版,社区版(免费版)。除了社区版,其他几个版本都是需要付费的,当然相对来说,功能也要更完善些&#xff…

Screenshot To Code

序言 对于GPT-4我只是一个门外汉,至于我为什么要了解screenshot to code,只是因为我想知道,在我不懂前端设计的情况下,能不能通过一些工具辅助自己做一些简单的前端界面设计。如果你想通过此文深刻了解GPT-4或者该开源项目&#…

Redis--11--Redis事务的理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Redis事务事务回滚机制Redis 事务是不支持回滚的,不像 MySQL 的事务一样,要么都执行要么都不执行; Redis的事务原理 Redis事务 …

【C++】类和对象——初始化列表和static修饰成员

首先我们来谈一下初始化列表,它其实是对于我们前边构造函数体内初始化的一种补充,换一种说法,它以后才是我们构造函数的主体部分。 我们先考虑一个问题,就是一个类里面有用引用或const初始化的成员变量,比如说&#xf…

数据库系统原理——备考计划2:数据库系统的概述

前言: 基于课本、上课ppt、复习总结ppt进行一个知识点的罗列,方便后期高效地复习 目录 前言: 一、基本概念 1.数据: (1)概念: (2)数据的种类: (3&…

安装selenium+chrome详解

1、创建yaml文件 创建yaml文件,命名为:docker-compose-chrome.yaml,具体内容如下: version: "3.9" services:spiderdriver:image: selenium/standalone-chrome:114.0restart: alwayshostname: spiderdrivercontainer_name: spiderdriverdeploy:resources:limit…

springboot基础配置及maven运行

目录 1、spring快速开始: 2、通过idea工具打开导入包 3、maven打包 1、springboot快速开始: 环境依赖:jdk17 Spring | Quickstart spring初始化包下载: 点击generate,下载包 2、通过idea工具打开导入包 我之前写了…

[英语学习][6][Word Power Made Easy]的精读与翻译优化

[序言] 针对第18页的阅读, 进行第二次翻译优化以及纠错, 这次译者的翻译出现的严重问题: 没有考虑时态的变化导致整个翻译跟上下文脱节, 然后又有偷懒的嫌疑, 翻译得很随意. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西,…

WebUI自动化学习(Selenium+Python+Pytest框架)003

1.元素操作 在成功定位到元素之后,我们需要对元素进行一些操作动作。常用的元素操作动作有: (1)send_keys() 键盘动作:向浏览器发送一个内容,通常用于输入框输入内容或向浏览器发送快捷键 (2…

TCP 基本认识

1:TCP 头格式有哪些? 序列号:用来解决网络包乱序问题。 确认应答号:用来解决丢包的问题。 2:为什么需要 TCP 协议? TCP 工作在哪一层? IP 层是「不可靠」的,它不保证网络包的交付…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、springboot分层架构、IDEA修改快捷键、vue代码风格

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)spring boot项目搭建、vue项目搭建、微信小程序项目搭建 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(2)后端跨域、登录模块、sp…

Excel导入组件的封装以及使用页面点击弹出该弹框

封装的组件 <template><el-dialogwidth"500px"title"员工导入":visible"showExcelDialog"close"$emit(update:showExcelDialog, false)"><el-row type"flex" justify"center"><div class&q…

leetCode 131.分割回文串 + 动态规划 + 回溯算法 + 优化 + 图解 + 笔记

我的往期文章&#xff1a; leetCode 647.回文子串 动态规划 优化空间 / 中心扩展法 双指针-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/133883091?spm1001.2014.3001.5501leetCode 131.分割回文串 回溯算法 图解 笔记-CSDN博客https://blog.csdn.n…

SVN下载使用和说明

一、SVN <1>SVN的简介 1、svn是什么&#xff1f; 2、作用 3、基本操作 <2>服务器端的软件下载和安装 1、下载 2、查看环境变量 3、验证安装是否成功 <3>创建项目版本库 1、创建项目版本库&#xff08;svn reponsitory&#xff09; 2、svn版本控制文件说明…

python弹球小游戏

import pygame import random# 游戏窗口大小 WIDTH 800 HEIGHT 600# 定义颜色 WHITE (255, 255, 255) BLACK (0, 0, 0) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)# 球的类 class Ball:def __init__(self):self.radius 10self.speed [random.randint(2, 4),…

第8关:定义一个名为PROC_AVGWEIGHT的有参数存储过程

USE mydata; #请在此处添加实现代码 ########## Begin ########## DELIMITER $ CREATE PROCEDURE PROC_AVGWEIGHT(IN SNO VARCHAR(10), IN JNO VARCHAR(10), OUT AVG_WEIGHT INT) BEGINSELECT ROUND(SUM(P.WEIGHT * SPJ.QTY) / SUM(SPJ.QTY)) INTO AVG_WEIGHTFROM PJOIN SPJ ON…