当前位置: 首页 > news >正文

Pikachu靶场——跨站请求伪造(CSRF)

文章目录

  • 1. 跨站请求伪造(CSRF)
    • 1.1 CSRF(get)
    • 1.2 CSRF(post)
    • 1.3 CSRF Token
    • 1.4 CSRF漏洞防御

1. 跨站请求伪造(CSRF)

还可以参考我的另一篇文章:跨站请求伪造(CSRF)

全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密码等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。

什么是CSRF?

CSRF,跨站域请求伪造,通常攻击者会伪造一个场景(例如一条链接),来诱使用户点击,用户一旦点击,黑客的攻击目的也就达到了,他可以盗用你的身份,以你的名义发送恶意请求。CSRF攻击的关键就是利用受害者的cookie向服务器发送伪造请求。

1.1 CSRF(get)

这里是一个登录界面,使用提示的用户名和密码进行登录

image-20230817202634396

发现是个人信息页面

image-20230817202724408

点击修改个人信息,点击提交

image-20230817202815885

所以这时候可以使用burpsuit进行抓包修改,在点击提交修改个人信息的时候,可以抓包,看到下面的内容。

image-20230817203208173

从上面的url可见,修改用户信息的时候,是不带任何不可预测的认证信息的。那么我们可以修改路径中的参数。

例如将电话好修改为一个新的参数。

127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=150666666668&add=%E5%8C%97%E4%BA%AC&email=2488%40qq.com&submit=submit

image-20230817204543665

但是这个路径太明显了,可以使用短路径的方法,来伪造我们的路径。

image-20230817204434743

https://s.r.sn.cn/vEARsG

如果被攻击者此时登录状态或cookie/session没有过期,如果用户登录了淘宝,在没有退出淘宝(或身份认证信息还未过期时)打开了新的(黑客设计好的修改淘宝登录密码的链接),就会把淘宝的密码改了。

1.2 CSRF(post)

登陆allen账号进行修改

image-20230817205148900

然后使用burpsuit进行抓包修改,在点击提交修改个人信息的时候,可以抓包,看到下面的内容

image-20230817205300480

发现采用的传递数据的方式是POST提交,同样知道本页面中有的标签以及name,方便后面构造表单时使用。

攻击者可以通过构造恶意站点,将POST请求隐藏在站点中的表单中,然后诱骗用户进行点击,当用户点击后触发表单,数据自然就POST到存在CSRF漏洞的网站,用户的信息则被恶意修改。

<html><script>                                                                                                       <!-- 这个script是用来自动提交表单的 -->window.onload = function() {document.getElementById("submit").click();}</script>              <body><form action="http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">    <input type="hidden" name="sex" value="girl" /><input type="hidden" name="phonenum" value="15088888888" /><input type="hidden" name="add" value="缅甸" /><input type="hidden" name="email" value="222488@qq.com" /><input type="hidden" name="submit" value="submit" /><input id="submit" type="submit" value="Submit request" style="display:none"/>                    <!-- style设置为display:none起到隐藏submit按钮的作用 --></form></body>
</html> 

image-20230817215704754

将写好的表单部署到攻击者的站点,这里因为是本机做演示,所以位置在WWW\pikachu\vur\scrf目录下。

image-20230817213536035

用户访问攻击者的站点127.0.0.1/pikachu/vul/csrf/CSRF.html并点击提交按钮,那么其个人信息将会被恶意修改,可以在控制台中看到点击按钮后触发的POST请求。

点击前

image-20230817215717853

点击后

image-20230817215732022

1.3 CSRF Token

token验证原理

CSRF的主要问题是敏感操作的链接容易被伪造,每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对随机码进行验证。

网页接受从后台发过来的token,类型不可见。将其一并提交给后台进行验证。每次刷新,后台发送过来的token都不一样,起到了防止伪造的作用。

使用bp抓包查看,可以看到报文中包含token

image-20230819162127015

查看源代码,修改用户信息时,服务器会比较url中的token字段和session中的token字段,如果相同才能修改用户信息。并且在修改完用户信息之后,会用set_token()函数生成新的token,将其返回到html表单中并隐藏起来,以便下次用户修改信息时代入url。

image-20230819162741827

image-20230819163615005

set_token()函数在生成新token之前会先销毁老token,避免token重复使用。

image-20230819164654524

1.4 CSRF漏洞防御

  • 验证Referer字段
  • 添加Token验证
  • 二次验证:在关键操作之前,再输入密码或者验证码。
  • HttpOnly:某些情况下禁止JS 脚本访问Cookie 信息。
  • SameSite:Cookie 属性,浏览器自带的安全机制。

相关文章:

Pikachu靶场——跨站请求伪造(CSRF)

文章目录 1. 跨站请求伪造&#xff08;CSRF&#xff09;1.1 CSRF(get)1.2 CSRF(post)1.3 CSRF Token1.4 CSRF漏洞防御 1. 跨站请求伪造&#xff08;CSRF&#xff09; 还可以参考我的另一篇文章&#xff1a;跨站请求伪造(CSRF) 全称Cross-site request forgery&#xff0c;翻译…...

软件测试简历项目经验怎么写?大厂面试手拿把掐

前言 在写简历之前&#xff0c;我们先来看看失败者的简历和成功者的简历之间有什么区别。为什么成功者的简历可以在求职中起到“四两拨千斤”的作用&#xff0c;而失败者的简历却被丢进了垃圾桶&#xff0c;这两者到底有什么不同&#xff1f; 成功的简历与失败的简历 我们发现…...

图像处理与计算机视觉--第七章-神经网络-单层感知器

文章目录 1.单层感知器原理介绍2.单层感知器算法流程3.单层感知器算法实现4.单层感知器效果展示5.参考文章与致谢 1.单层感知器原理介绍 1.单层感知器是感知器中最简单的一种&#xff0c;有单个神经元组成的单层感知器只能用于解决线性可分的二分性问题2.在空间中如果输入的数据…...

pyserial,win11,串口总是被占用

之前哪里看到的忘记了&#xff0c;记录&#xff1a; win11&#xff0c;用pyserial这个库&#xff0c;打开COM后&#xff0c;程序退出&#xff0c;关闭串口&#xff0c;下次打开仍然会报错。每次都要拔串口线&#xff0c;很烦。 去设备管理器里&#xff0c;把usb串口线的驱动页…...

网站上线如何检查?

网站上线如何检查?很多企业搭建好网站之后&#xff0c;不知道如何检查网站&#xff0c;其实网站上线之后&#xff0c;要对网站的代码&#xff0c;网站的SEO细节&#xff0c;等重要因素检查&#xff0c;下面我们就来讲述一下企业优化网站建站、上线检查要求。 网站上线如何检查…...

如何理解pytorch中的“with torch.no_grad()”?

torch.no_grad()方法就像一个循环&#xff0c;其中循环中的每个张量都将requires_grad设置为False。这意味着&#xff0c;当前与当前计算图相连的具有梯度的张量现在与当前图分离了我们将不再能够计算关于该张量的梯度。直到张量在循环内&#xff0c;它才与当前图分离。一旦用梯…...

Linux虚拟机克隆之后使用ip addr无法获取ip地址

Linux虚拟机克隆之后使用ip addr无法获取ip地址 因为克隆得到的虚拟机&#xff0c;与原先的linux系统是一模一样的包括MAC地址和IP地址。需要修改信息。 设置IP地址&#xff1a; 使用vi命令打开linux的网卡 //ifcfg-enth0是虚拟网卡的名称&#xff0c;如果你的不叫这个名字&a…...

日报系统:优化能源行业管理与决策的利器

日报系统&#xff1a;优化能源行业管理与决策的利器 引言&#xff1a; 随着能源行业的快速发展和复杂性增加&#xff0c;管理各个部门的数据变得至关重要。为了提高运营效率和决策的准确性&#xff0c;能源行业普遍采用日报系统作为综合数据汇报和分析的工具。本文将探讨日报系…...

linux安装idea

下载好之后是.tar.gz文件后缀的 使用命令解压安装包 tar -zxvf 你的安装包 解压好了之后进入解压好的目录找到bin文件里的idea.sh,使用命令启动它 ./idea.sh 这样你就可以在manjaro上使用idea了 在这里插入图片描述 需要手动创建快捷启动方式 每次都使用命令行启动是比较…...

vue启动项目,npm run dev出现error:0308010C:digital envelope routines::unsupported

运行vue项目&#xff0c;npm run dev的时候出现不支持错误error:0308010C:digital envelope routines::unsupported。 在网上找了很多&#xff0c;大部分都是因为版本问题&#xff0c;修改环境之类的&#xff0c;原因是对的但是大多还是没能解决。经过摸索终于解决了。 方法如…...

vue-devtools插件安装

拓展程序连接 链接&#xff1a;https://pan.baidu.com/s/1tEyZJUCEK_PHPGhU_cu_MQ?pwdr2cj 提取码&#xff1a;r2cj 一、打开谷歌浏览器&#xff0c;点击扩展程序-管理扩展程序 二、打开开发者模式&#xff0c;将vue-devtools.crx 拖入页面&#xff0c;点击添加扩展程序 成…...

const关键字

目录 修饰指针 指向常量的指针*ptr 指针常量:数据类型 * const 指针变量 修饰引用 const &...

HTML5+CSS3+JS小实例:仿优酷视频轮播图

实例:仿优酷视频轮播图 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=&quo…...

dart的Websocket为什么找不到onOpen方法?

我主要使用的是JAVA&#xff0c;而JAVA使用Websocket时&#xff0c;Websocket一定会有个onOpen方法。 ClientEndpoint public class WebsocketListener {OnOpenpublic void onOpen(Session session) throws IOException {}OnMessagepublic void onMessage(ByteBuffer byteBuff…...

VMware中Ubuntu(Linux)无法连接网络解决办法记录

问题&#xff1a; 操作系统&#xff1a;Ubuntu 22.04.3 LTS VMware 版本&#xff1a;VMware Workstation 17 Pro, 17.0.0 build-20800274今天在虚拟机用Ubuntu的时候&#xff0c;发现无法连接网络&#xff0c;如下&#xff1a; wdwd-virtual-machine:~$ ifconfig lo: flags73…...

js结合map对象等处理数组

cpp const INVENTORY_STATUS_MAP {7: { text: 全部 },0: { text: 出租, color: mary-green },1: { text: 已售, color: mary-green },2: { text: 丢失, color: mary-orange },3: { text: 闲置, color: mary-green },4: { text: 退役, color: mary-orange },5: { text: 售后, c…...

网络攻防实战演练

在经历了多年的攻防对抗之后&#xff0c;大量目标单位逐渐认识到安全防护的重要性。因此&#xff0c;他们已采取措施尽可能收敛资产暴露面&#xff0c;并加倍部署各种安全设备。但安全防护注重全面性&#xff0c;具有明显的短板... 1、供应链 在经历了多年的攻防对抗之后&…...

基于Keil a51汇编 —— 标准宏定义

定义标准宏 标准宏定义如下&#xff1a; macro-name MACRO <[>parameter-list<]> <[>LOCAL local-labels<]> . . . macro-body . . .ENDMmacro-name 宏的名称 parameter-list 可以传递给宏的形式参数的可选列表 LOAD_R0 MACRO R0_ValMOV R0, #R0_…...

遍历List集合

1.初始化 // 写法一 List<String> list new ArrayList<>(); list.add("a"); list.add("b"); list.add("c");// 写法二 List<String> list new ArrayList(){{add&#xff08;"a"&#xff09;;add&#xff08;&quo…...

k8s containerd查看镜像

直接查看crictl image会报错&#xff1a; 1) crictl config runtime-endpoint unix:///run/containerd/containerd.sock 2) vi /etc/crictl.yaml 3) systemctl daemon-reload 此时&#xff0c;再查看image:...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...