(保姆级教学)跨站请求伪造漏洞

news2025/1/16 16:13:33

1. CSRF漏洞

CSRF(Cross-site request forgery)跨站请求伪造,也被称为One Click Attack 或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常 不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击性往往不大流行(因此对其进行防范的资源也相对少)和难以防范,所以被认为比XSS更具危险性。

我本身有一个网站 我自己能操作修改密码 你有一个同样的网站 我搞了一个其他的点击按钮 那你点了一下 ,你在当前的浏览器上有这个网站的登录状态 ,(并且你是在当前浏览器中)这个时候可能触发csrf漏洞

测试方法:

安全扫描;使用burpsuite进行抓包,将参数中的token删除,或者设置为空,重放请求,若正常访问则说明有漏洞;

同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功,如果仍然能操作成功即存在风险。

使用工具发送请求,在http请求头中不加入referer字段,检验返回消息的应答,应该重新定位到错误界面或者登录界面。

检测csrf漏洞一般是看每一个操作是否有验证码验证,是否有token或者referer,可以注册多个账户然后利用A用户生成的poc去检测B用户

csrf 客户端请求伪造 ,该漏洞通常由攻击者构造的请求传递给服务端,服务器端对传回的请求未作特殊处理直接执行而造成的。

攻击者通过跨站请求,以合法的用户的身份进行非法操作

CSRF的攻击过程两个条件:

1。目标用户已经登录了网站,能够执行网站的功能

2、目标用户访问了攻击者构造的URL.

3、熟悉网站数据包构造(CSRFTester)

CSRF安全问题黑盒怎么判断(防御)

1、看验证来源不-修复(同源策略referer,两个相同的链接,一个是网站直接点过去的,一个是连接访问效果不一样,就是有同源策略,一样就没有)

2、看凭据有无token--修复

3、看关健摄作有无验证-修复(密码验证、验证码)

CSRF安全问题白盒怎么审计:

同黑盒思路一样,代码中分析上述三看

流程

1、获取目标的触发数据包

2、利用CSRFTester构造导出

3、诱使受害者访问特定地址触发

2. 漏洞简介

跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件、发消息、甚至财产操作:转账、购买商品等)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份认证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

3. CSRF的成因

CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。CSRF漏洞能够做的事情包括:以目标用户的名义发送邮件、发消息、盗取目标用户的账号,甚至购买商品、虚拟货币转账,这会泄露个人隐私并威胁到了目标用户的财产安全

Csrf漏洞的攻击过程有两个重点:

1.目标用户已经登录了网站,能够执行网站的功能

2.目标用户访问了攻击者构造的URL

4. CSRF攻击实例

1、角色

正常浏览网页的用户:User

正规的但是具有漏洞的网站:WebA

利用CSRF进行攻击的网站:WebB。

2、流程

(1)步骤一

用户登录、浏览并信任正规网站WebA,同时,WebA通过用户的验证并在用户的浏览器中产生Cookie。

(2)步骤二

攻击者WebB通过在WebA中添加图片链接等方式诱导用户User访问网站WebB。

(3)步骤三

在用户User被诱导访问WebB后,WebB会利用用户User的浏览器访问第三方网站WebA,并发出操作请求。

(4)步骤四

用户User的浏览器根据WebB的要求,带着步骤一中产生的Cookie访问WebA。

(5)步骤五

网站WebA接收到用户浏览器的请求,WebA无法分辨请求由何处发出,由于浏览器访问时带上用户的Cookie,因此WebA会响应浏览器的请求,如此一来,攻击网站WebB就达到了模拟用户操作的目的。

二、CSRF原理

1、用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

2、在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

3、用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

4、网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

5、浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

5. CSRF与XSS漏洞区别

**CSRF:**利用网站对用户网页浏览器的信任(没有盗用用户的cookie,直接利用浏览器存储的cookie让用户去执行某个操作。)
**XSS:**利用用户对指定网站的信任

6. CSRF漏洞检测

1.检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

2.随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞检测的工具,若CSRFTester,CSRF Request Builder等

7. CSRF的高危触发点

  1. 论坛交流
  2. 用户中心
  3. 反馈留言
  4. 交易管理
  5. 后台管理

8. CSRF漏洞的危害

  • 伪造HTTP请求进行未授权操作
  • 篡改、盗取目标网站上的重要用户数据
  • 未经允许执行对用户名誉或者资产有害的操作,比如:散播不良信息、进行消费等
  • 如果通过使用社工等方式攻击网站管理员,会危害网站本身的安全性
  • 作为其他攻击向量的辅助攻击手法,比如配合XSS
  • 传播CSRF蠕虫

9. CSRF挖掘技巧

9.1漏洞产生的条件

  1. 被害用户已经完成身份认证
  2. 新请求的提交不需要重新身份认证或确认机制
  3. 攻击者必须了解Web APP请求的参数构造
  4. 诱使用户触发攻击的指令(社工)

9.2 漏洞产生的位置

密码修改处、点赞、转账、注销、删除等,有交互个数据传输的地方就可能有存在CSRF,但是注意,挖掘时最好通过判断有无二次验证(修改密码需要旧密码验证)或着通过有无token等来快速判断。

10. CSRF防御措施

(1)验证用户

当用户发送重要的请求时需要输入原始密码或验证码

(2)限制请求方式

限制请求方式只能为POST

(3)只使用JSON API

使用JavaScript发起AJAX请求是限制跨域的,并不能通过简单的表单来发送JSON,所以,通过只接收JSON可以很大可能避免CSRF攻击。

  1. Referer验证

根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问http://bank.test/test?page=10&userID=101&money=10000页面完成,用户必须先登录bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的Referer值就会是转账按钮所在页面的URL(本例中,通常是以bank. test域名开头的地址)。而如果攻击者要对银行网站实施CSRF攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的Referer是指向攻击者的网站。因此,要防御CSRF攻击,银行网站只需要对于每一个转账请求验证其Referer值,如果是以bank. test开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果Referer是其他网站的话,就有可能是CSRF攻击,则拒绝该请求

  1. Token验证

CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,该请求中所有的用户验证信息都存在于Cookie中,因此攻击者可以在不知道这些验证信息的情况下直接利用用户自己的Cookie来通过安全验证。由此可知,抵御CSRF攻击的关键在于:在请求中放入攻击者所不能伪造的信息,并且该信息不存在于Cookie之中。鉴于此,系统开发者可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。

  1. 增加验证码验证

Spring security的表单验证是通过过滤器链中的 UsernamePasswordAuthenticationFilter 来完成的,我们增加的验证码过滤器应该插在 UsernamePasswordAuthenticationFilter 之前,如果验证码校验不通过,直接返回,无需进行账户密码的校验。

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

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

相关文章

Linux内核启动过程图解(全程高能)

文章目录 1、进入第一条指令 _text2、start_kernel3、总结(内核启动流程描述) 1、进入第一条指令 _text 编译内核后,打开System.map文件,找到对应的_text和start_kernel ffffff8008080000 T _text //第一条指令 ffffff80096007f4 T start_kernel //…

代码随想录算法训练营第四十四天| 完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

一、完全背包 题目链接/文章讲解/视频讲解:https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85.html 状态:已解决 1.问题介绍 完全背包的模板题目:…

dp思维 枚举

题目链接 #include<bits/stdc.h> using namespace std; #define i64 long long const i64 mod 1e9 7; int main() {int n;cin >> n;vector<char>s(n 1);for (int i 1; i < n; i) {cin >> s[i];}//用ans记录所有满足条件的答案数量&#xff0c;c…

linux下使用qt+mpv调用GPU硬件解码

linux下GPU硬件解码接口&#xff0c;常用的有vdpau和vaapi。 mpv是基于mplayer开发的一个播放器。此外&#xff0c;mpv还提供了函数库libmpv&#xff0c;通过使用libmpv可以编写一个简单的播放器。 基于qtlibmpv的demo&#xff0c;官方例子代码如下&#xff1a;https://github.…

STM32之串口中断接收丢失数据

五六年没搞STM32了,这个项目一切都挺顺利,万万没想到被串口接收中断恶心到了。遇到的问题很奇怪 HAL_UART_Receive_IT(&huart1, &rx_buffer[rx_index], LCD_UART_LEN); 这个代码中 LCD_UART_LEN=1的时候,接收过来的数据,数据包的第一个字节总是会跑到rx_buffer的末…

UE5集成gRPC

最近有项目需要在UE5里做RPC&#xff0c;对比了thrift、gRPC、rcplib等开源rpc框架&#xff0c;由于习惯使用protobuf&#xff0c;故选择了gRPC。然而&#xff0c;Google出品也是一言难尽啊&#xff0c;最起码编译太繁琐了。 本次使用的gRPC版本为1.62.1&#xff0c;UE5.2&…

面试stm32基础知识

1.ISP 第一步进入bootloader模式&#xff1a;先置BOOT0为高&#xff0c;BOOT1为低&#xff0c;再复位单片机进入bootloader模式&#xff0c;之后通过上位机下载程序&#xff1b; 第二步配置启动代码的地方&#xff1a;代码下载完毕后&#xff0c;置BOOT0为低&#xff0c;BOOT1…

【NTN 卫星通信】NTN的信关站应该建在哪些地方

1 概述 3GPP的卫星通信讨论了透传星和再生星两种方式。透传星方式&#xff0c;卫星主要是做为中继存在&#xff0c;基本上不做通信协议的处理。再生星方式&#xff0c;gNodeB的主要功能在卫星上&#xff0c;完成通信协议的主要内容。无论是透传星还是再生星&#xff0c;都需要通…

[C++]异常

基本使用 try {int a, b; std::cin >> a >> b;if(b 0) {throw std::runtime_error("unexpected zero");} else {cout << a / b << endl;}} catch(std::exception &e) { cout << "runtime_error: " << e.what() &…

战姬物语部署

一.准备环境 #关闭seliunx和防火墙 setenforce 0 systemctl stop firewalld systemctl disable firewalld #配置源&#xff0c;并安装常用工 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo …

用队列实现栈(力扣第225题)

#include "stdio.h" #include "stdbool.h" #include "string.h" #include "stdlib.h" #include "assert.h"//初始化队列 typedef int QueueDataType;typedef struct queue {QueueDataType val;struct queue* next; }Qnode;t…

信号处理相关知识

一&#xff1a; 1.序列——三种典型序列通过matlab绘图即可 2.数字信号的自变量一定是整数&#xff0c;幅度上取值是有限的状态&#xff08;不一定是整数&#xff09;。 3.抽取和插值 4.模拟正弦信号sin(wt):w是角频率&#xff0c;单位rad/s,f是频率w/2Π。 5.假设用采样周…

盒子模型之弹性盒模型

经常适用于手机端图标布局 display: flex;让这个盒子显示成弹性盒&#xff08;很适合移动端布局&#xff09; 影响&#xff1a;1.让里面的子元素默认横向排列 2.如果子元素是行内元素&#xff0c;则直接变成块元素 3.只有一个元素&#xff0c;margin: auto;自动居中 <!DOCT…

CDPR全力开发《巫师4》,吸取《2077》教训

爆料来啦&#xff01;CDPR全力开发《巫师4》&#xff0c;吸取《2077》教训&#xff01; CD Projekt Red&#xff08;CDPR&#xff09;今天透露&#xff0c;目前全公司都在专心致志地开发《巫师4》&#xff0c;而《赛博朋克2077》的续作暂时还在早期阶段。之前参与2077的大多数…

228 基于matlab的神经网络人脸识别

基于matlab的神经网络人脸识别。 人脸识别以视网膜、 虹膜、 指纹等生物特征的识别作为生物标识符。生物特征识别不很容易伪造、 放错位置。新型脸识别使用的方法 RobustPCA 和径向基函数网络。程序已调通&#xff0c;可直接运行。 228 人脸识别 生物特征识 神经网络 - 小红书 …

12. MyBatis(二)

源码位置&#xff1a;MyBatis_demo 上篇文章我们学习了MyBatis的定义以及增删查改操作&#xff0c;并且学习了如何在xml文件中编写SQL时使用#{}的方式将参数和对象的属性映射到SQL语句中&#xff0c;上篇的内容已经足以应对大部分场景&#xff0c;本篇文章我们就要学习一下MyBa…

Jmeter 测试Dubbo接口-实例

1、Dubbo插件准备 ①把jmeter-plugins-dubbo-2.7.4.1-jar-with-dependencies.jar包放在D:\apache-jmeter-5.5\lib\ext目录 ②重新打开Jmeter客户端 在线程组-添加-取样器-dubbo simple&#xff0c;添加dubbo接口请求 2、Jmeter测试lottery接口 ①配置zookeeper参数 由于dub…

MapReduce案例-电影网站数据统计分析

本文适合大数据初学者学习MapReduce统计分析业务问题的步骤和基础的MapReduce编程方法&#xff0c;初步掌握Hadoop对计算任务的管理。 本文末尾有全部数据集和完整代码连接。 1.准备工作 安装Hadoop:Hadoop 3.3.2 离线安装-CSDN博客 按照好Hadoop之后要检查一下datanode运行情况…

Python数据容器(三)

一.tuple&#xff08;元组&#xff09; 1.元组同列表一样&#xff0c;都可以封装多个、不同类型的元素在内。 但最大的不同点在于&#xff1a;元组一旦定义完成&#xff0c;就不可修改。 2.元组定义&#xff1a;定义元组使用小括号&#xff0c;且使用逗号隔开各个数据&#…

大气的免费wordpress模板

国产的wordpress模板&#xff0c;更适合中国人使用习惯&#xff0c;更符合中国老板的审美的大气wordpress企业官网建站模板。 WordPress模板&#xff0c;也称为主题&#xff0c;是用于定义WordPress网站或博客外观和功能的预设计文件集。这些模板使用HTML、CSS和PHP代码构建&a…