CSRF跨站请求伪造(一)

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

1、CSRF简介

CSRF,全称:Cross-Site Request Forgery,跨站请求伪造,也被称为One Click Attack或Session Riding,是一种网络安全漏洞,攻击者通过引诱用户在已登录的Web应用程序中执行非自愿操作,以利用用户在应用程序中的身份和权限来执行未经授权的操作。

在这里插入图片描述

图片来源网络

2、CSRF攻击原理

CSRF攻击就是利用网站地用户网页浏览的信任,挟持用户当前已登录的Web应用程序,去执行用户非本意的操作。在cookie有效期间,通过构造或包含CSRF脚本链接发送给用户,得到信息后再伪造成用户身份,执行相关操作。cookie在浏览器一段时间内不会过期,不关闭浏览或退出登录情况,再次访问默认是登录状态。

一个CSRF漏洞攻击的实现,需要由“三个部分”来构成
1、漏洞风险存在;
2、伪装数据操作请求的恶意链接或者页面;
3、诱使用户主动访问或登录恶意链接,触发非法操作。

2.1、存在漏洞风险

目标网站可系统存在可新增或修改的操作,操作过程中没有作任何身份识别或校验,就把数据新增或修改。出现比较多的场景有:修改用户密码、添加用户、修改收货地址、新增或修改后台管理账户等,其它一些对话框钓鱼页面,CSRF一般与XSS结合使用,这时被称为XSRF攻击。

2.2、伪装请求

要CSRF漏洞被触发,成功新增或修改当前用户的数据信息,需要对【新增或修改】数据操作请求进行伪装,然后恶意攻击者把伪装好的请求发送给被攻击者,或通过社工的方式诱导被攻击者在cookie有效期间点击请求链接。

2.3、用户非本意操作

当前用户在不知情的情况下,访问了黑客恶意构造的页面或链接,实现了对当前用户个人信息的恶意操作。

在这里插入图片描述

图片来源网络

3、CSRF常见类型

常见的CSRF攻击主要有两种类型,GET类型和POST类型。GET类型,一般是通过url,在url里面拼接上参数,CSRF中最常见,危害最大,也是最简单的一种类型;POST类型一般都是表单提交,可以在body里面携带数据。

4、CSRF进阶

4.1、JSONP劫持

只支持GET请求,不支持POST等其他HTTP方法,通过动态创建script标签实现。挖掘方法:校验referer,如果抓取一个正常请求的数据包,如果没有Referer字段和token,极有可能存在CSRF漏洞;如果有Referer字段,去掉Referer字段后再重新提交还有效,那么基本上可以确定存在CSRF漏洞。

4.2、CORS劫持

CORS跨域资源共享——Cross-origin resource sharing,是H5提供的一种机制,可以限制指定域外的资源访问。如果配置不当则可能遭受跨域的攻击,并且该机制并不能用来抵御CSRF攻击。相关响应头:Access-Control-Allow-Origin,表示服务端允许的请求源,*标识任何外域,多个源 , 分隔;Access-Control-Allow-Credentials,表示是否允许发送Cookie,ajax请求设置,withCredentials = true,浏览器的cookie就能发送到服务端。

挖掘技巧:查看ACAO响应头是否为具体的值以及ACAC响应头是否为true,如果ACAO 为*或者null,说明服务器配置错误,存在CORS劫持漏洞,它返回的头里面必须要有Access-Control-Allow-Credentials这个头,并且设置的值为true才有意义。

Access-Control-Allow-Origin: http://www.xxxx.com
Access-Control-Allow-Credentials: true

5、CSRF防御

1、尽量使用POST,限制GET,GET接口太容易被拿来做CSRF攻击;
2、加验证码(二次确认),验证码,强制用户必须与应用进行交互,才能完成最终请求。
3、Referer Check(请求来源检查),检查HTTP请求头部的Referer字段,该字段标明请求来源URL。
4、Anti CSRF Token,加密。

6、下期内容预告

下期内容分享pikachu靶场实验,敬请关注我的公众号:大象只为你,持续更新中…

靶场环境搭建详参考《靶场环境搭建【XP、pikachu、dvwa、sqli-labs】》

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

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

相关文章

小程序配置服务器域名的操作步骤(入门级)

将详细列出小程序配置服务器域名的操作步骤: 服务器选购推荐:腾讯云轻量服务器 点击以下任一云产品链接,跳转后登录,自动享有所有云产品优惠权益: 经过笔者亲测,强烈推荐腾讯云轻量应用服务器作为游戏服…

计算机网络_2.1 物理层概述

2.1 物理层概述 一、物理层要实现的功能二、物理层接口特性 B站 深入浅出计算机网络 2.1物理层概述 一、物理层要实现的功能 物理层要实现的功能就是在各种传输媒体上传输比特0和1,进而给上面的数据链路层提供透明传输比特流的服务。 数据链路层“看不见”&#xff…

ssm172旅行社管理系统的设计与实现

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一 、设计说明 1.1 研究…

RDD算子介绍

1. RDD算子 RDD算子也叫RDD方法,主要分为两大类:转换和行动。转换,即一个RDD转换为另一个RDD,是功能的转换与补充,比如map,flatMap。行动,则是触发任务的执行,比如collect。所谓算子…

python自动化之项目架构搭建与思路讲解(第二天)

1.自动化测试的概念 自动化测试是指使用自动化工具和脚本来执行测试任务,以验证软件或系统的正确性和稳定性。它可以提高测试的效率和准确性,并节约时间和成本。 2.自动化脚本编写的思路 xmind文档如有需要,可在资源里自行下载 3.项目代码工程创建 lib :基本代码库包 …

像用Excel一样用Python:pandasGUI

文章目录 启动数据导入绘图 启动 众所周知,pandas是Python中著名的数据挖掘模块,以处理表格数据著称,并且具备一定的可视化能力。而pandasGUI则为pandas打造了一个友好的交互窗口,有了这个,就可以像使用Excel一样使用…

基于SpringBoot多模块项目引入其他模块时@Autowired无法注入

基于SpringBoot多模块项目引入其他模块时Autowired无法注入 一、问题描述1、解决方案 一、问题描述 启动Spring Boot项目时报 Could not autowire. No beans of ‘xxxxxxxx’ type found. 没有找到bean的实例,即spring没有实例化对象,也就无法根据配置文…

AcWing 788. 逆序对的数量 解题思路及代码

先贴个题目: 以及原题链接: 788. 逆序对的数量 - AcWing题库https://www.acwing.com/problem/content/790/ 这题也是板子题,就是对归并排序的衍生,我们先分析下如果用归并排序对排序区间进行二分的话,逆序对可能出现的…

回溯是怎么回事(算法村第十八关青铜挑战)

组合 77. 组合 - 力扣(LeetCode) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],…

3.3 序列式容器-deque、stack、queue、heap、priority_queue

deque 3.1定义 std::deque(双端队列)是C标准模板库(STL)中的一种容器,表示双端队列数据结构。它提供了在两端高效地进行插入和删除操作的能力。与vector的连续线性空间类似,但有所不同,deque动…

【嵌入式——QT】QListWidget

QListWidget类提供了一个基于项的列表小部件,QListWidgetItem是列表中的项,该篇文章中涉及到的功能有添加列表项,插入列表项,删除列表项,清空列表,向上移动列表项,向下移动列表项。 常用API a…

python接口自动化(一)--什么是接口、接口优势、类型(详解)

简介 经常听别人说接口测试,接口测试自动化,但是你对接口,有多少了解和认识,知道什么是接口吗?它是用来做什么的,测试时候要注意什么?坦白的说,笔者之前也不是很清楚。接下来先看一下…