vlambda博客
学习文章列表

技术回顾-DVWA CSRF实验

虽然DVWA对于很多人来说也不是很什么新奇事儿,对于很多大拿来说也许更不值一提,我只想表达的是我愿意通过对基础知识的回温,找到一些失去的感觉,所谓温故知新罢!通过一些简单的动手实操,加强动手习惯也不是一件坏事,我也愿意每天整理一些自己的实验过程,日积月累,也会汇成一本经,或许别有它用,说得太多了哈,泄露天机了......

一、CSRF基本概念

在受害者用户已成功登录且cookie没失效的情况下,攻击者诱导受害者点击精心构造的链接,该链接利用受害者cookie使服务器相信该链接代码是受害者的正当的请求代码,服务器执行代码,从而达到攻击者预期目的。

本例使用DVWA中的csrf模块的修改密码功能来演示如何实现的。

二、实验原理如下:

三、实验环境:

DVWA:可以在自己的虚拟机中搭建,本例是使用我自己的国外的VPS服务器上搭建的DVWA:

攻击者WEB服务器:本机虚拟机,WEB服务可使用phpstudy搭建

攻击者主机:本例使用PTS定制的攻击主机,实验者可以在win7上安装burpsuit进行相关实验

受害者主机:win7虚拟机即可。

四、实验步骤如下:

1、先将DVWA的安全级别调整为“low,如图:

技术回顾-DVWA CSRF实验

2、将受害者浏览器代理设置为攻击者burpsuiteIP和端口,默认端口为8080,具确保攻击者burpsuiteproxy设置为“on”状态。

3、点击CSRF标签,修改密码,点击提交

 

技术回顾-DVWA CSRF实验


4、在攻击者主机上,查看burpsuite提交参数,尝试修改password_newpassword_conf两个参数的值且为一样,这个新值(test123)就是改变后的密码

 

技术回顾-DVWA CSRF实验


5、制作链接文件,将第4步骤中的host参数和GET参数拼接后,新建一html文件,名为crack.html,修改后上传到攻击者WEB服务器WEB根目录,如图所示:

 

技术回顾-DVWA CSRF实验


6、攻击者将通过精心构造该链接,受害者在其机器上点击此链接

 

技术回顾-DVWA CSRF实验


五、漏洞原因分析如下

造成该问题的原因是服务器仅仅检查password_newpassword_conf两参数是否一致,一致就修改成功,最关键的原因是攻击者诱导受害者利用受害者的合法认证凭证(cookie),使服务器得到的正常响应。服务器并未有额外的手段验证该请求被第三者修改过。以下为安全级别为low时的原代码:

 

技术回顾-DVWA CSRF实验


当安全级别设置为“中”时的源代码如下:

技术回顾-DVWA CSRF实验

 

函数说明

Stripos()函数查找字符串在另一个字符串中第一次出现的位置(不区分大小写)。

stripos(*string,find,start*)

参数

描述

string

必需。规定被搜索的字符串。

find

必需。规定要查找的字符。

start

可选。规定开始搜索的位置。

stripos$_SERVER'HTTP_REFERER' ] ,$_SERVER'SERVER_NAME' ]) 意思是将host参数去referer中去搜索符合条件的返回位置,搜索不到返回false,搜索到就返回位置

此时我们再用前面的方法就不能完成了,原因为hostrefererIP不致了,如下:


如何构造页面?我们可以将传送给受害者的链接中的html文件名命名为23.x.x.x.html,其中23.x.x.x要与Host参数值一样,即要与受害者正常访问的目标服务器IP或域名一样,构造好的referer值为:http://192.168.233.10/23.x.x.x.html,当服务器执行stripos$_SERVER'HTTP_REFERER' ] ,$_SERVER'SERVER_NAME' ]) !== false )这行代码时,其值返回为23.x.x.x的起始位置。此时服务器变量与http传参为如下对应:

$_SERVER'HTTP_REFERER' ] = host

$_SERVER'SERVER_NAME' ] = Referer

 

 

未完待续......