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

本文主要是介绍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参数值置空(代码逻辑不严谨)

这篇关于CSRF一-WEB攻防-CSRF请求伪造Referer同源置空配合XSSToken值校验复用删除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/844246

相关文章

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

MybatisPlus中removeById删除数据库未变解决方案

《MybatisPlus中removeById删除数据库未变解决方案》MyBatisPlus中,removeById需实体类标注@TableId注解以识别数据库主键,若字段名不一致,应通过value属... 目录MyBATisPlus中removeBypythonId删除数据库未变removeById(Se