热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

漏洞复现篇——CSRF漏洞的利用

CSRF漏洞原理CSRF(CrossSiteRequestForgery,跨站请求伪造)是一种网络的***方式,也被称为“OneClickAttack”或者SessionRidin

CSRF漏洞原理
CSRF(Cross Site Request Forgery, 跨站请求伪造)是一种网络的***方式,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF。
CSRF漏洞是因为web应用程序在用户进行敏感操作时,如修改账号密码、添加账号、转账等,没有校验表单token或者http请求头中的referer值,从而导致恶意***者利用普通用户的身份(COOKIE)完成***行为。
在这里插入图片描述
在这里插入图片描述



CSRF的高危触发点
  1. 论坛交流

  2. 用户中心

  3. 反馈留言

  4. 交易管理

  5. 后台管理


CSRF漏洞的危害
  • 伪造HTTP请求进行未授权操作

  • 篡改、盗取目标网站上的重要用户数据

  • 未经允许执行对用户名誉或者资产有害的操作,比如:散播不良信息、进行消费等

  • 如果通过使用社工等方式***网站管理员,会危害网站本身的安全性

  • 作为其他***向量的辅助***手法,比如配合XSS

  • 传播CSRF蠕虫


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***,则拒绝该请求。

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

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


实验环境:
  • PHPstudy

  • google浏览器

  • DVWA靶场


模拟实验:


绕过Referer验证



1、正常登陆网页,级别改成medium,然后修改密码复制url

在这里插入图片描述



2、在www目录下创建一个localhost.html文件,内容如下:










注意: 标签中的网址是刚才复制的,将password_new=后的密码换掉
1.png是随便导入的 图片,为了美观同时不会引起受害者的怀疑



3、用浏览器打开改文件,假如此刻是受害者点开了你的链接

然后退出再重新登陆,这时刚修改的密码就进去了,而变成了***换掉的密码
在这里插入图片描述



绕过Token验证



1、正常登陆网页,级别改成high,然后修改密码复制url

在这里插入图片描述



2、在www目录下创建一个1.html文件,内容如下:

注意: 将网址中password_new=后的密码换掉









然后退出再重新登陆,这时刚修改的密码就进去了,而变成了***换掉的密码

在这里插入图片描述



CSRF漏洞防御总结

CSRF***的核心是伪造请求,识别这种的***的重点就是判断当前操作是否伪造;通过在当前页面生成随机Token,后端业务逻辑在处理操作时,应该先校验Token的有效性,然后才能处理业务流程。尤其在核心业务中,采用Token+Referer的组合进行操作验证;采用验证码校验操作是因为***者无法预知验证码的值,进而无法构造有效的***;但毫无疑问,验证码会一定程度地影响用户体验,所以我们要在安全和用户体验之间找到一个平衡点。



推荐阅读
  • 这座城市多了十只伤心的鸽
    这个作业属于哪个课程2021春软件工程实践|W班(福州大学)这个作业要求在哪里团队第四次作业这个作业的目标设计项目原型、制作项目需求规格说明书团队名称这座城市多了十只伤心的鸽其他参 ... [详细]
  • 6个常见的 PHP 安全性攻击实例和阻止方法_php实例
    这篇文章主要介绍了6个常见的PHP安全性攻击实例和阻止方法,有对这方面感兴趣的小伙伴 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • Cookie是一种小型数据文件,由Web服务器生成并存储在用户的浏览器中。当用户再次访问同一服务器时,这些数据可以被重新读取,为用户提供个性化的体验。Cookie在软件测试中具有重要作用,能够帮助测试人员验证会话管理、用户偏好设置等功能的正确性和安全性。通过深入解析Cookie的工作原理及其在不同场景下的应用,本文旨在为软件测试人员提供全面的技术指导。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • Spring 中获取 Request 的多种方式及其线程安全性的深入解析
    本文深入探讨了在Spring MVC框架下获取HTTP请求对象的多种方法,详细分析了每种方法的实现原理及其线程安全性,为开发者提供了全面的技术参考。 ... [详细]
  • 在《OWASP TOP 10 注入漏洞》中,详细探讨了注入攻击的发生机制:当应用程序未能有效识别和拦截恶意输入时,攻击者可以通过 SQL 注入等手段利用这一漏洞。本文将重点介绍 SQL 注入的基本原理及其防范措施,帮助读者全面了解并有效应对这一常见安全威胁。 ... [详细]
  • 为了确保用户在Web页面回退后重新登录以保障账户安全,可以在JSP页面中添加以下元标签:``。这将防止浏览器缓存页面内容,从而避免用户通过浏览器的后退按钮访问已登录的页面。此外,还可以结合会话管理机制,如设置会话超时时间、使用安全的会话标识符传输方式(如HTTPS),以及在用户退出或长时间不活动后强制重新认证,进一步增强账户的安全性。 ... [详细]
  • GET和POST有什么区别?及为什么网上的多数答案都是错的。
    如果有人问你,GET和POST,有什么 ... [详细]
  • HTTP基础HTTP超文本传输协议,应用层协议。主要用于Web上传输超媒体文本的底层协议,经常在浏览器和服务器之间传递数据。通信就是以纯文本的形式进 ... [详细]
  • 跨站的艺术XSS Fuzzing 的技巧
    作者|张祖优(Fooying)腾讯云云鼎实验室对于XSS的漏洞挖掘过程,其实就是一个使用Payload不断测试和调整再测试的过程,这个过程我们把它叫做F ... [详细]
author-avatar
手机用户2602897337
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有