CSRF漏洞初解

2024-04-15 03:44
文章标签 漏洞 csrf 初解

本文主要是介绍CSRF漏洞初解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CSRF漏洞初解

1.什么是CSRF漏洞

CSRF(Cross-Site Request Forgery)漏洞是一种Web应用程序安全漏洞,也被称为"One-Click Attack"或"Session Riding"。它利用了Web应用程序对用户在其他网站上已经验证过的身份的信任,通过伪装请求来执行非授权的操作

可以通俗的理解为:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等

2.CSRF漏洞的原理和流程

CSRF攻击利用了Web应用程序对用户在该应用程序中已经建立的会话的信任。攻击者构造恶意网站或链接,诱使受害者在另一个网站上进行操作,例如点击一个链接或提交一个表单。如果受害者已经在目标网站上建立了有效的身份验证会话,那么他们的浏览器将自动包含相应的身份验证凭据(例如cookie)在请求中,当受害者点击恶意链接时,他们的浏览器会发送一个包含恶意操作请求的请求,例如更改密码、发布消息或执行其他敏感操作。由于浏览器会自动包含目标网站的身份验证凭据,目标网站会误认为请求是合法的,然后执行相应的操作

在这里插入图片描述

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的恶意代码被执行

3.CSRF漏洞的分类

3.1 GET型

如果一个网站某个地方的功能,比如用户修改邮箱是通过GET请求进行修改的。如:/user.php?id=1&email=123@163.com ,这个链接的意思是用户id=1将邮箱修改为123@163.com。当我们把这个链接修改为 /user.php?id=1&email=abc@163.com ,然后通过各种手段发送给被攻击者,诱使被攻击者点击我们的链接,当用户刚好在访问这个网站,他同时又点击了这个链接,那么悲剧发生了。这个用户的邮箱被修改为 abc@163.com 了

3.2POST型

在普通用户的眼中,点击网页->打开试看视频->购买视频是一个很正常的一个流程。可是在攻击者的眼中可以算正常,但又不正常的,当然不正常的情况下,是在开发者安全意识不足所造成的。攻击者在购买处抓到购买时候网站处理购买(扣除)用户余额的地址。比如:/coures/user/handler/25332/buy.php 。通过提交表单,buy.php处理购买的信息,这里的25532为视频ID。那么攻击者现在构造一个链接,链接中包含以下内容

<form action=/coures/user/handler/25332/buy method=POST>
<input type="text" name="xx" value="xx" />
</form>
<script> document.forms[0].submit(); </script> 

当用户访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作,自动购买了id为25332的视频,从而导致受害者余额扣除

4.CSRF漏洞挖掘

4.1缺少CSRF保护(Lack)

最简单的漏洞类型,没有任何针对CSRF的防护,也是挖掘中最常见的情形:关注每一个关键操作的请求包,若参数中没有CSRF令牌参数,篡改referer仍然返回正常,则大概率存在CSRF漏洞

4.2CSRF防护绕过(Bypass)

4.2.1Referer绕过
  • 空referer绕过:其他协议(data:)或https跳http
  • 包含referer:若只检查是否包含网址,只需在我们的网站上创建一个文件/文件夹即可,如https://www.yoursite.com/https://www.theirsite.com/
4.2.2CSRF-token绕过
  • 删除令牌:删除cookie/参数中token,免服务器验证

  • 令牌共享:创建两个帐户,替换token看是否可以互相共用;

  • 篡改令牌值:有时系统只会检查CSRF令牌的长度;

  • 解码CSRF令牌:尝试进行MD5或Base64编码

  • 修改请求方法:post改为get

  • 窃取token:重定向、XSS、web缓存欺骗、clickjacking等都可能导致token泄露

5.CSRF漏洞的防御

  • 在表单提交时增加token验证:在表单中添加一个隐藏字段,该字段的值由服务器端生成并返回给前端。在表单提交时,将该字段的值一起提交给服务器端进行验证。如果提交的token与服务器端生成的token不一致,则拒绝请求处理。

  • 使用HTTP严格传输安全(HSTS):通过设置HSTS头部信息,强制浏览器使用HTTPS协议进行通信,确保传输的数据不被篡改或窃取。这样可以防止CSRF攻击中的数据篡改问题。

  • 在后端验证请求来源:在后端处理请求时,验证请求的来源是否合法。可以通过检查HTTP请求头的Referer字段或使用自定义的请求头信息来判断请求是否来自同一网站。如果请求来源不合法,则拒绝处理该请求。

  • 增加验证码验证环节:对于一些高风险的操作,可以在表单中增加验证码字段。用户在输入验证码后才能提交表单。这样可以防止攻击者利用CSRF漏洞伪造用户的身份进行非法操作。

  • 定期更新token值:为了防止攻击者获取到token值后进行恶意操作,可以定期更新token值。这样即使攻击者获取到旧的token值,也无法进行有效的伪造请求。

token值:为了防止攻击者获取到token值后进行恶意操作,可以定期更新token值。这样即使攻击者获取到旧的token值,也无法进行有效的伪造请求。

这篇关于CSRF漏洞初解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

Java反序列化漏洞-TemplatesImpl利用链分析

文章目录 一、前言二、正文1. 寻找利用链2. 构造POC2.1 生成字节码2.2 加载字节码1)getTransletInstance2)defineTransletClasses 2.3 创建实例 3. 完整POC 三、参考文章 一、前言 java.lang.ClassLoader#defineClass defineClass可以加载字节码,但由于defineClas

【vulhub】thinkphp5 2-rce 5.0.23-rce 5-rce 漏洞复现

2-rec 1.启动环境  cd /.../vulhub/thinkphp/2-rce # cd进入2-rce靶场文件环境下docker-compose up -d # docker-compose启动靶场docker ps -a # 查看开启的靶场信息 2.访问192.168.146.136:8080网页 3.构造payload http

【漏洞复现】赛蓝企业管理系统 GetJSFile 任意文件读取漏洞

免责声明:         本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规或服务协议。同时,未经授权地访问系统、网络或应用程序可能导致法律责任或其他严重后果。作者不对读者基于本文内容而产生的任何行为或后果承担

【网络安全】Jenkins任意文件读取漏洞及检测工具(CVE-2024-23897)

原创文章,不得转载。 文章目录 漏洞成因影响范围检测工具更多细节 漏洞成因 Jenkins CLI 接口存在任意文件读取漏洞(CVE-2024-23897)。该问题源于 args4j 库在解析文件名参数时,会将@符号后的字符串视为文件名并尝试读取文件,而且该功能默认处于启用状态。 影响范围 Jenkins weekly <= 2.441 Jenkins LTS <=

MyBatis-Plus 框架 QueryWrapper UpdateWrapper 方法修复sql注入漏洞事件

什么是漏洞? 漏洞是指软件、系统或网络中存在的安全弱点或错误,这些弱点可能导致系统遭受攻击或被不当使用。在计算机安全领域,漏洞通常源于编程错误、设计缺陷或配置失误。 对于对象关系映射(ORM)框架来说,漏洞通常指的是设计或实施中的安全问题,这些问题可能让应用程序面临SQL注入攻击的风险。 SQL 注入漏洞 如果ORM框架在执行SQL操作时没有正确过滤或转义用户输入,攻击者可以利用输入的恶意数据

XSS 漏洞检测与利用全解析:守护网络安全的关键洞察

在网络安全领域,跨站脚本攻击(XSS)是一种常见的安全漏洞。XSS 漏洞可以让攻击者在受害者的浏览器中执行恶意脚本,从而窃取用户的敏感信息、篡改页面内容或者进行其他恶意操作。本文将介绍 XSS 漏洞的检测和利用方法。 一、XSS 漏洞的概念和类型 (一)概念 跨站脚本攻击(XSS)是指攻击者在网页中注入恶意脚本,当用户访问该网页时,恶意脚本在用户的浏览器中执行,从而达到攻击的目的。 (

代码执行漏洞-Log4j2漏洞

1.执行以下命令启动靶场环境并在浏览器访问 cd log4j/CVE-2021-44228docker-compose up -ddocker ps 2.先在自己搭建的DNSLOG平台上获取⼀个域名来监控我们注⼊的效果 3.可以发现 /solr/admin/cores?action= 这⾥有个参数可以传,可以按照上⾯的原理 先构造⼀个请求传过去存在JNDI注⼊那么ldap服务端会执⾏

用友UFIDA NC portal/pt/file/upload接口存在任意文件上传漏洞 附POC

@[toc] 用友UFIDA NC portal/pt/file/upload接口存在任意文件上传漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 用友UFIDA NC 简介 微信公众号搜索:南风漏洞复现文库 该文