csrf自动化检测调研

https://github.com/pillarjs/understanding-csrf/blob/master/README_zh.md

CSRF

攻击者在钓鱼站点,可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求:

<form action="https://my.site.com/me/something-destructive" method="POST"><button type="submit">Click here for free money!</button>
</form>

csrf防御

  1. 只接收JSON:通过只接收JSON数据作为API的输入,可以降低CSRF攻击的风险。因为JSON数据在请求中是作为数据负载(payload)的一部分发送的,而不是在URL参数或表单数据中。这使得攻击者无法通过构造恶意URL或表单来伪造请求。

  2. 禁用CORS(Cross-Origin Resource Sharing)是一种减轻CSRF攻击的方法之一。CORS是一种机制,用于控制浏览器在跨域请求时是否允许访问资源。默认情况下,浏览器会执行同源策略,即在一个域名下的页面只能请求同一域名下的资源。但是,通过CORS机制,服务器可以发送特定的响应头,告诉浏览器允许来自其他域名的请求访问资源。建议限制跨域请求只允许使用特定的HTTP方法,如OPTIONS、HEAD和GET。这是因为这些方法通常不会对服务器端产生副作用,即不会执行对数据的修改或删除等操作。 需要注意的是,禁用CORS并不能完全阻止CSRF攻击。因为在CSRF攻击中,攻击者利用用户在已登录状态下的身份执行操作,而不是直接通过JavaScript发起请求(使用JavaScript发起AJAX请求是限制跨域的)。因此,即使禁用了CORS,攻击者仍然可以通过其他方式欺骗用户执行恶意请求。

  3. 检验referer。检验referrer头部很麻烦, 但是你可以阻止那些referrer头部不是来自你的页面的请求。

  4. 代码编写者不要让get请求具体副作用,不要让get请求可以去增删改数据库。应该确保将GET请求用于无副作用的操作,仅用于获取资源的信息。对于具有副作用的操作,应使用POST、PUT、DELETE等方法

  5. CSRF Tokens(跨站请求伪造令牌)是一种解决CSRF攻击的安全措施。以下是CSRF tokens的工作原理:

    1. 服务器向客户端发送一个令牌(token)。
    2. 客户端在提交表单时将该令牌包含在表单中。
    3. 如果该令牌不合法,服务器将拒绝该请求。

    攻击者需要通过某种方式获取你站点的CSRF令牌,他们只能使用JavaScript来实现。因此,如果你的站点不支持CORS(跨域资源共享),攻击者无法获取到CSRF令牌,从而降低了威胁。

    确保CSRF令牌无法通过AJAX访问!不要创建一个用于获取令牌的/CSRF路由,并且尤其不要在该路由上支持CORS!

因为web正在向JSON API转移,并且浏览器变得更安全,有更多的安全策略, CSRF正在变得不那么值得关注。 阻止旧的浏览器访问你的站点,并尽可能的将你的API变成JSON API, 然后你将不再需要CSRF token。

s0md3v/Bolt 自动化csrf

https://github.com/s0md3v/Bolt
https://pentesttools.net/bolt-cross-site-request-forgery-csrf-scanning-suite/

1、Crawling
Bolt 将目标网站抓取到指定的深度,并将找到的所有 HTML 表单存储在数据库中以供进一步处理。

2、Evaluating
Bolt 找出强度不够的令牌以及不受保护的表单。

3、Comparing
这一阶段的重点是检测重放攻击场景,从而检查令牌是否已发出多次。它还计算所有标记之间的平均编辑距离,以查看它们是否相似。
令牌还会与包含 250 多个哈希模式的数据库进行比较。

4、Observing
在此阶段,向单个网页发出 100 个同时请求,以查看是否为这些请求生成相同的令牌。

5、Testing
此阶段致力于主动测试CSRF保护机制。包括但不限于检查移动浏览器是否存在保护、使用自行生成的令牌提交请求以及测试令牌是否检查到一定长度。

6、Analysing
在此阶段执行各种统计检查,以查看令牌是否确实是随机的。在此阶段执行以下测试

其他maybe可以参考的项目:
https://github.com/0ang3el/EasyCSRF/blob/master/EasyCSRF.py
https://github.com/andresriancho/w3af/blob/master/w3af/plugins/audit/csrf.py

尝试分析

使用pikachu搭建环境
在这里插入图片描述
当测试者访问的到这个页面的时候,他就一定可以拿到一个正确的token

后面的逻辑就主要结合w3af和bolt
后续要基于的代码的话,应该就是完全基于bolt项目了

自动化检测CSRF(第二篇)

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

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

相关文章

The Cherno C++笔记 03

目录 Part 07 How the C Linker Works 1.链接 2.编译链接过程中出现的错误 2.1 缺少入口函数 注意:如何区分编译错误还是链接错误 注意&#xff1a;入口点可以自己设置 2.2 找不到自定义函数 2.2.1缺少声明 2.2.2自定义函数与引用函数不一致 2.3 在头文件中放入定义 …

编译原理----算符优先级的分析(自底向上)

自底向上分析的分类如下所示&#xff1a; 算符优先分析 算符优先分析只规定算符之间的优先关系&#xff0c;也就是只考虑终结符之间的优先关系。 &#xff08;一&#xff09;若有文法G&#xff0c;如果G没有形如A->..BC..的产生式&#xff0c;其中B和C为非终结符&#xff…

rtsp视频在使用unity三维融合播放后的修正

1 rtsp 接入 我们使用unity UE 等三维渲染引擎中使用c编写插件来接入rtsp 视频。同时做融合的时候&#xff0c;和背景的三维颜色要一致&#xff0c;这就要使用视频融合修正技术。包括亮度&#xff0c;对比度&#xff0c;饱和度的修正。在单纯颜色上的修正可以简单使用rgb->…

NXP iMX8MM 通过 TFTP和 NFS 启动示例

By Toradex秦海 1). 简介 嵌入式 Linux 设备开发调试时候为了方便部署各种配置和修改常用的一种方法就是通过网络启动&#xff0c;具体就是将 Linux Kernel&#xff08;以及 Device tree/Device Tree overlays) 从开发主机的 TFTP 服务加载&#xff0c; Linux rootfs 通过开发…

听GPT 讲Rust源代码--src/tools(18)

File: rust/src/tools/rust-analyzer/crates/ide-ssr/src/from_comment.rs 在Rust源代码中的from_comment.rs文件位于Rust分析器&#xff08;rust-analyzer&#xff09;工具的ide-ssr库中&#xff0c;它的作用是将注释转换为Rust代码。 具体来说&#xff0c;该文件实现了从注…

【即插即用篇】YOLOv8改进实战 | 引入 Involution(内卷),用于视觉识别的新一代神经网络!涨点神器!

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成…

Centos7在安装Graylog时新安装MongoDB报错端口不监听服务不启动无法运行启动失败

由于虚拟机服务器上需要安装Graylog需要安装MongoDB&#xff0c;尝试官网下载安装包&#xff0c;和yum安装均无法正常启动&#xff0c;折腾了好几天&#xff0c;重装了十几次&#xff0c;网上搜索了很多很多资料&#xff0c;均无法正常运行&#xff0c;百度上搜索各种文档&…

华为端口隔离简单使用方法同vlan下控制个别电脑不给互通

必须得用access接口&#xff0c;hybrid口不行 dhcp enable interface Vlanif1 ip address 192.168.1.1 255.255.255.0 dhcp select interface interface MEth0/0/1 interface GigabitEthernet0/0/1 port link-type access port-isolate enable group 1 interface GigabitEther…

Node.js-模块化(二)

1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层将系统拆分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 1.2 编程领域中的模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&…

Python之Django项目的功能配置

1.创建Django项目 进入项目管理目录&#xff0c;比如&#xff1a;D盘 执行命令&#xff1a;diango-admin startproject demo1 创建项目 如果提示diango命令不存在&#xff0c;搜索diango-admin程序的位置&#xff0c;然后加入到环境变量path中。 进入项目&#xff0c;cd demo…

嵌入式开发网络配置——windows连热点,开发板和电脑网线直连

目录 电脑 WiFi 上网&#xff0c;开发板和电脑直连 使用场景 设置VMware虚拟机的网络配置 Ubuntu设置——版本18.04 ​编辑 windows设置 开发板设置 原因&#xff1a;虚拟机Linux移植可执行程序到开发板失败 最后发现虚拟机的Linuxping不通开发板 下面是我的解决方法 …

微软的word文档中内置背景音乐步骤(打开自动播放)

目录 一、前言 二、操作步骤 一、前言 有时候需要在word文档里面打开的时候就自动播放音乐或者音频&#xff0c;那么可以用微软的word来按照操作步骤去这样完成。 如果没有微软office的&#xff0c;可以下载这个是2021专业版的。因为office只能免费使用一段时间&#xff0c…

猜数字游戏 C语言xdoj490

问题描述 猜数字游戏是令游戏机随机产生一个 100 以内的正整数&#xff0c;用户输入一个数对其进行猜测&#xff0c;需要你编写程序自动对其与随机产生的被猜数进行比较&#xff0c;并提示大了&#xff08;“Too big”&#xff09;&#xff0c;还是小了&#xff08;“Too smal…

Java小案例-Sentinel的实现原理

前言 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 要想理解一个新的技…

vue3引入使用高德地图,不显示地图问题

将全局引入的mockjs去除&#xff0c;就可以了。

Springboot+vue的装饰工程管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的装饰工程管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的装饰工程管理系统&#xff0c;采用M&#xff08…

【uniapp】uniapp中本地存储sqlite数据库保姆级使用教程(附完整代码和注释)

数据库请求接口封装 uniapp中提供了plus.sqlite接口&#xff0c;在这里我们对常用的数据库请求操作进行了二次封装 这里的dbName、dbPath、recordsTable 可以根据你的需求自己命名 module.exports {/** * type {String} 数据库名称*/dbName: salary,/*** 数据库地址* type {…

.Net Core webapi RestFul 统一接口数据返回格式

在RestFul风格盛行的年代&#xff0c;大部分接口都需要一套统一的数据返回格式&#xff0c;那么我们怎么才能保证使用统一的json数据格式返回呢&#xff0c;下面给大家简单介绍一下&#xff1a; 假如我们需要接口统一返回一下数据格式&#xff1a; {"statusCode": …

任天堂,steam游戏机通过type-c给VR投屏与PD快速充电的方案 三type-c口投屏转接器

游戏手柄这个概念&#xff0c;最早要追溯到二十年前玩FC游戏的时候&#xff0c;那时候超级玛丽成为了许多人童年里难忘的回忆&#xff0c;虽然长大了才知道超级玛丽是翻译错误&#xff0c;应该是任天堂的超级马里奥&#xff0c;不过这并不影响大家对他的喜爱。 当时FC家用机手柄…

【Xcode】解决Unable to process request - PLA Update available

出现场景 IOS更新app时&#xff0c;使用Xcode上传新版本的包时&#xff0c;提示无法上传。 Unable to process request -PLA update available you currently dont have access to this membership resource. To resolve this issue ,agree to the latest program license a…