CSRF一-WEB攻防-CSRF请求伪造Referer同源置空配合XSSToken值校验复用删除

演示案例:

  • CSRF-无检测防护-检测&生成&利用
  • CSRF-Referer同源-规则&上传&XSS
  • CSRF-Token校验-值删除&复用&留空

#CSRF-无检测防护-检测&生成&利用
检测:黑盒手工利用测试,白盒看代码检验(有无token,来源检验等)
生成:BurpSuite->Engagement tools->Generate CSRF Poc
利用:将文件防止自己的站点下,诱使受害者访问(或配合XSS触发访问)#CSRF-Referer同源-规则&上传&XSS
https://blog.csdn.net/weixin_50464560/article/details/120581841
严谨代码PHP DEMO
<?php
// 检测来源
function checkReferrer() {$expectedReferrer = "http://example.com"; // 期望的来源页面if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] !== $expectedReferrer) {die("非法访问");}
}// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {// 检测来源checkReferrer();// 获取用户输入的数据$name = $_POST['name'];$email = $_POST['email'];// 输出用户输入的数据echo "姓名:$name<br>";echo "邮箱:$email<br>";exit;
}
?><!DOCTYPE html>
<html>
<head><title>检测来源示例</title>
</head>
<body><h1>检测来源示例</h1><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"><label for="name">姓名:</label><input type="text" name="name" id="name" required /><br><label for="email">邮箱:</label><input type="email" name="email" id="email" required /><br><input type="submit" value="提交" /></form>
</body>
</html>绕过0:规则匹配绕过问题(代码逻辑不严谨)
1<meta name="referrer" content="no-referrer">
2、http://xx.xx.xx.xx/http://xx.xx.xx.xx
绕过1:配合文件上传绕过(严谨使用同源绕过)
绕过2:配合存储XSS绕过(严谨使用同源绕过)#CSRF-Token校验-值删除&复用&留空
https://blog.csdn.net/weixin_50464560/article/details/120581841
严谨代码PHP DEMO
<?php
session_start();// 生成并存储 CSRF Token
function generateCSRFToken() {$token = bin2hex(random_bytes(32));$_SESSION['csrf_token'] = $token;return $token;
}// 检查 CSRF Token 是否有效
function validateCSRFToken($token) {return isset($_SESSION['csrf_token']) && $_SESSION['csrf_token'] === $token;
}// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {// 检查 CSRF Tokenif (!isset($_POST['csrf_token']) || !validateCSRFToken($_POST['csrf_token'])) {die("CSRF Token 验证失败");}// 获取用户输入的数据$name = $_POST['name'];$email = $_POST['email'];// 输出用户输入的数据echo "姓名:$name<br>";echo "邮箱:$email<br>";exit;
}// 生成 CSRF Token
$csrfToken = generateCSRFToken();
?><!DOCTYPE html>
<html>
<head><title>CSRF Token 示例</title>
</head>
<body><h1>CSRF Token 示例</h1><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"><input type="hidden" name="csrf_token" value="<?php echo $csrfToken; ?>" /><label for="name">姓名:</label><input type="text" name="name" id="name" required /><br><label for="email">邮箱:</label><input type="email" name="email" id="email" required /><br><input type="submit" value="提交" /></form>
</body>
</html>绕过0:将Token参数值复用(代码逻辑不严谨)
绕过1:将Token参数删除(代码逻辑不严谨)
绕过2:将Token参数值置空(代码逻辑不严谨)

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

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

相关文章

【ESP32S3 Sense接入百度在线语音识别】

视频地址&#xff1a; ESP32S3 Sense接入百度在线语音识别 1. 前言 使用Seeed XIAO ESP32S3 Sense开发板接入百度智能云实现在线语音识别。自带麦克风模块用做语音输入&#xff0c;通过串口发送字符“1”来控制数据的采集和上传。 步骤概括    (1) 在百度云控制端选择“语音…

2023年全国职业院校技能大赛(网络系统管理赛项)样题三

2023****年全国职业院校技能大赛 GZ073****网络系统管理赛项 赛题第3套 模块A:网络构建 ​ 目 录 任务清单… 1 (一)基础配置… 1 (二)有线网络配置… 1 (三)无线网络配置… 3 (四)出口网络配置… 6 (五)网络运维配置… 6 (六)SDN网络配置… 7 附录1…

YiYi-Web项目介绍

YiYi-Web项目介绍 1. 简介2. 使用2.1 后端开发环境2.2 前端开发环境 3. 测试环境&#xff1a;4. 更新日志5. 打包情况6.项目截图 本项目前端是html、css、js、jQuery基础技术。 后端都是最新的SpringBoot技术&#xff0c;不分离版本&#xff0c; 是最基础的项目开发教程&#x…

挺后悔,我敷衍地回答了“程序员如何提升抽象思维“

分享是最有效的学习方式。 博客&#xff1a;https://blog.ktdaddy.com/ 大家好&#xff0c;我是老猫。 大概在月初的时候&#xff0c;我发了一篇文章【当程序员之后&#xff1f;(真心话)】,在这篇文章中&#xff0c;提及了抽象思维对一名程序员的重要性。可能说得也比较笼统&a…

【Flask】Flask数据模型关系

数据模型关系 一对多 如上所示&#xff0c;一个作者关联多个文章&#xff0c;暂时认定&#xff0c;一篇文章只能有一个作者。 作者以及文章的类定义如下所示&#xff1a; class Author(db.Model):id db.Column(db.Integer, primary_keyTrue)name db.Column(db.String(128)…

Godot.NET C# 工程化开发(1):通用Nuget 导入+ 模板文件导出,包含随机数生成,日志管理,数据库连接等功能

文章目录 前言Github项目地址&#xff0c;包含模板文件后期思考补充项目设置编写失误环境visual studio 配置详细的配置看我这篇文章 Nuget 推荐NewtonSoft 成功Bogus 成功Github文档地址随机生成构造器生成构造器接口(推荐) 文件夹设置Nlog 成功&#xff01;Nlog.configNlogHe…

C++笔记之argv[1]与字符串内容的比较

C++笔记之argv[1]与字符串内容的比较 code review! 文章目录 C++笔记之argv[1]与字符串内容的比较1.错误示例:if(argv[1]=="Hello")2.方法一:使用 `strcmp` 函数3.方法二:将 `argv[1]` 转换为 `std::string` 然后使用 `==` 运算符来比较1.错误示例:if(argv[1]=…

蓝桥杯day10刷题日记

P8604 [蓝桥杯 2013 国 C] 危险系数 思路&#xff1a;dfs&#xff0c;用深度优先搜索查找一次所有的线路&#xff0c;过程中记录每个点走过的次数&#xff0c;最后在与总路线数比较&#xff0c;相同即为每次必过的点&#xff0c;即关键点 #include <iostream> using na…

代码学习记录26----贪心算法

随想录日记part26【把这两天没写的补回来】 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.22-24 主要内容&#xff1a;今天开始学习贪心算法&#xff0c;基础知识可以看链接&#xff0c;&#xff1a;接下来是针对题目的讲解&#xff1a;1.分配饼干 &#x…

继承和多态(1)(继承部分)

继承 继承的概念 上文就是继承的概念。 必须记住父类也可以称为基类&#xff0c;超类。 子类也可以称为派生类。 继承的语法 在Java中如果要表示类之间的继承关系&#xff0c;需要借助extends关键字&#xff0c;具体如下&#xff1a; 修饰符 class 子类 extends 父类 {//…

网易web安全工程师进阶版课程

课程介绍 《Web安全工程师&#xff08;进阶&#xff09;》是由“ i春秋学院联合网易安全部”出品&#xff0c;资深讲师团队通过精炼的教学内容、丰富的实际场景及综合项目实战&#xff0c;帮助学员纵向提升技能&#xff0c;横向拓宽视野&#xff0c;牢靠掌握Web安全工程师核心…

pycharm搭建新的解释器及删除处理

目录 1.创建虚拟环境 个人实际操作&#xff1a; 对于“继承全局站点包”&#xff1a; 2.创建一个新项目 3.删除操作 &#xff08;1&#xff09;删除解释器 &#xff08;2&#xff09;删除新建项目 1.创建虚拟环境 Pycharm官方文档说明网址&#xff1a; Configure a virt…

【机器学习】包裹式特征选择之序列前向选择法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

向开发板上移植ip工具:交叉编译 ip工具

一. 简介 前面几篇文章学习了 CAN设备节点的创建&#xff0c;以及如何使能 CAN驱动。 本文学习向开发板上移植ip工具。 二. 向开发板上移植ip工具&#xff1a;交叉编译 ip工具 注意&#xff1a;在移植 ip 命令的时候必须先对根文件系统做个备份&#xff01;防止操作失误导…

ffmpeg实现媒体流解码

本期主要讲解怎么将MP4媒体流的视频解码为yuv,音频解码为pcm数据;在此之前我们要先了解解复用和复用的概念; 解复用:像mp4是由音频和视频组成的(其他内容流除外);将MP4的流拆分成视频流(h264或h265等)和音频流(AAC或mp3等); 复用:就是将音频和视频打包成MP4或者fl…

我重新理解了《重构》

我重新理解了《重构》 重构的定义 《重构&#xff1a;改善既有代码的设计》 书中给出了重构的定义&#xff1a;对软件内部结构的一种调整&#xff0c;目的是在不改变软件可观察前提下&#xff0c;提高其可理解性&#xff0c;降低其修改成本。每个人对重构有自己的理解&#x…

Cobalt Strike -- 各种beacon

今天来讲一下cs里面的beacon 其实cs真的功能很强大&#xff0c;自带代理创建&#xff0c;自带beacon通信&#xff01;&#xff01;&#xff01; 一张图&#xff0c;就能说明beacon的工作原理 1.Beacon 每当有一台机器上线之后&#xff0c;我们都会选择sleep时间&#xff0c;…

吴恩达2022机器学习专项课程(一) 3.6 可视化样例

问题预览 1.本节课主要讲的是什么&#xff1f; 2.不同的w和b&#xff0c;如何影响线性回归和等高线图&#xff1f; 3.一般用哪种方式&#xff0c;可以找到最佳的w和b&#xff1f; 解读 1.课程内容 设置不同的w和b&#xff0c;观察模型拟合数据&#xff0c;成本函数J的等高线…

linux命令(CentOS7)yum provides

在linux(CentOS7)服务器中&#xff0c;当执行某命令时&#xff0c;如果该命令不存在&#xff0c;会打印出“-bash: xxx: command not found”。 [rootelasticsearch ~]# shasum -bash: shasum: command not found [rootelasticsearch ~]# 使用yum install command安装其对应的…

nodejs+vue高校洗浴管理系统python-flask-django-php

高校洗浴管理系统采用数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写&#xff0c;使用了express框架。该系统从两个对象&#xff1a;由管理员和学生来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对学生管理、浴室信息、浴室预约、预约…