DVWA的简单题解——CSRF

经过听网课,自己搭建了一个DVWA环境。在此对网课的知识进行总结,写出这篇DVWA的题解。下面进入正题。

学习指导

  • 漏洞的分析
  • 如何利用漏洞
    • LOW等级测试
    • Medium等级测试
    • High等级测试
  • 漏洞的修复

漏洞的分析

我们进行DVWA 的过关前先认识什么是CSRF漏洞 ,CSRF

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session
riding,通常缩写为 CSRF 或者 XSRF,
是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS
利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。——来源百度百科

通俗的来讲,就是黑客伪造你的登录信息,利用你的账户操作进行恶意操作。即简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

如何利用漏洞

下面我们在DVWA的环境利用这个漏洞,首先我们先打开DVWA的CSRF的界面,进行LOW等级的渗透测试。

LOW等级测试

DVWA的简单题解——CSRF_第1张图片
发现是一个是更改密码的界面,很简陋的界面,与我们平常的在正规网站的更改密码界面缺了一个确认原密码的操作,那么这个网站的不安全是显而易见的,但是我们的如何利用这个漏洞呢。我们进行测试。
先更改密码为123进行尝试。
DVWA的简单题解——CSRF_第2张图片
更新成功下面我们进行抓包分析。
DVWA的简单题解——CSRF_第3张图片
发现在URL中有我们的输入的密码123,我们便很容易想到通过构造URL来诱导用户去点击,这样便可以在用户不知情的的情况下更改他的密码,达到我们的目的。下一步我们开始着手构造例如我们将密码改成password

URLhttp://192.168.148.1/DVWA-master/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#

下面就是如何诱导用户点击,这时候我们需要自己制作一个网页,这个网页的链接要显得正常,让人有一定的信任。我们为了测试更直观,将修改密码的的方式更改为在恶意网页中点击修改。我们先着手建造网页。

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8">
<title>刺客信条英灵殿免费送</title>
</head>
<body background="image\1.png"
style=" background-repeat:no-repeat ;
background-size:100% 100%;
background-attachment: fixed;">
<form action="http://192.168.148.1/DVWA-master/vulnerabilities/csrf/">
<input type="hidden" name="password_new" value="password"/>
<input  type="hidden" name="password_conf" value="password"?>
<input type="hidden" name="Change" value="Change"/>
<input type="submit" value="点击免费领取"/>
</from>
</body>
</html>

这是我写的网页源代码,我选择使用游戏作为引诱,制作了这个简陋的钓鱼网站,下面是效果图。

是不是有那味了,之后我们进行测试。
DVWA的简单题解——CSRF_第4张图片
我们点击钓鱼网站的按钮进行尝试。DVWA的简单题解——CSRF_第5张图片

发现密码直接被更改,我们的low等级挑战成功。

Medium等级测试

我们进行Medium等级的挑战,我们还用low等级的方法进行尝试。DVWA的简单题解——CSRF_第6张图片
发现进行了报错,这时我们抓包进行校验。
这是正常修改密码的包
DVWA的简单题解——CSRF_第7张图片
这是我们钓鱼网站发送的包
DVWA的简单题解——CSRF_第8张图片
根据两个包的对比发现他们的referer后面的内容不同,那么问题应该出现在这里所以我们对包进行修改
DVWA的简单题解——CSRF_第9张图片
将referer改成http://192.168.148.1/DVWA-master/vulnerabilities/csrf/
发现修改成功DVWA的简单题解——CSRF_第10张图片
但我们不能仅仅局限与这里,我们再此不断修改referer的内容发现只要内容中包含头部的host即192.168.148.1则可以修改密码成功。但是我们怎么实现呢,我们发现我们原始的refererh后面跟的是我们的网址所在目录中的地址,所以我们可以创建一个文件夹名为192.168.148.1进行绕过referer的检验。所以我们进行操作
DVWA的简单题解——CSRF_第11张图片
在这里插入图片描述

进行尝试
DVWA的简单题解——CSRF_第12张图片
修改密码成功,成功绕过。

High等级测试

下面进行Hight等级的挑战,老样子我们用原方法进行尝试。
DVWA的简单题解——CSRF_第13张图片
发现并没有成功。老样子我们进行抓包分析。
正常修改密码发送的数据包
DVWA的简单题解——CSRF_第14张图片
钓鱼网站发送的数据包。
DVWA的简单题解——CSRF_第15张图片
在这里插入图片描述
发现正常修改的数据包中间多了一个ken值,我们查看网页源代码进行寻找ken的来源。
在这里插入图片描述
发现user_token参数这个应该是乱码的来源,但是我们作为攻击方是无法看到这个参数,并且这个参数的值是来自上一个响应包中,所以我们无法通过简单的构造,钓鱼网站进行利用,但是如果网站存在XSS漏洞的话我们便可以利用漏洞获得user_token参数。但是我现在不会。所以等以后补上吧。

漏洞的修复

上面我们了解了漏洞的产生,以及利用方式。但还有一个impossible等级没有看,我们进入发现DVWA的简单题解——CSRF_第16张图片
多了一个输入原始密码的选项,但黑客并不知道原始密码,所以也就不存在攻破的可能。不仅如此在原来的基础上他还加了防止SQL注入。真是防护的够严。下面我们讨论除这一种验证原密码的其他方式。有我们看到的验证referer的途径,还有user_token的验证,再有最后的验证源代码。以及最后的验证用户原密码。这里贴更详细的CSRF的攻击与防御的介绍的地址有兴趣的可以了解一下。

你可能感兴趣的:(DVWA题解)