DVWA系列之File Upload(文件上传)源码分析及漏洞利用

您所在的位置:网站首页 dvwa文件上传impossible DVWA系列之File Upload(文件上传)源码分析及漏洞利用

DVWA系列之File Upload(文件上传)源码分析及漏洞利用

#DVWA系列之File Upload(文件上传)源码分析及漏洞利用| 来源: 网络整理| 查看: 265

File Upload

File Upload,即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限。

因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞。

文件上传漏洞的利用是有限制条件:

能够成功上传木马文件上传文件必须能够被执行上传文件的路径必须可知

目录

low级别源码分析

medium级别源码分析

high级别源码分析

impossible级别源码分析

low级别源码分析

basename() 函数:返回路径中的文件名部分。

服务器对上传文件的类型、内容没有做任何的检查、过滤,存在明显的文件上传漏洞,生成上传路径后,服务器会检查是否上传成功并返回相应提示信息。

漏洞利用 该漏洞完全满足其限制条件

上传一句话木马

上传成功,并返回了服务器的上传路径如下:

打开中国菜刀,右键添加,地址栏填入上传文件所在路径,http://192.168.109.140/dvwa/hackable/uploads/hack.php

参数名(一句话木马口令)为a

然后菜刀就会通过向服务器发送包含a参数的post请求,在服务器上执行任意命令,获取webshell权限。

可以下载、修改服务器的所有文件。

打开服务器的模拟终端:

medium级别源码分析

从源码中很明显可以看出,函数对上传文件的类型和大小作了限制,上传文件类型必须是image/jpeg或者image/png,且上传文件大小不能超过100000B(大约等于97.6KB)

漏洞利用

可采用打组合拳的方式(文件包含+文件上传)

采用一句话木马,文件大小基本不会超过最大限制,至于文件类型的检查,可以尝试修改文件名为hack.png或者hack.jpeg

上传成功

菜刀连接

连接失败

中国菜刀的原理:向上传文件发送包含参数的post请求,通过控制参数来执行不同的命令,而这里服务器将木马文件解析成了图片文件,因此向其发送post请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。

为了让服务器将其解析为php文件,我们可以采用文件包含的方式,将地址栏内容改为如下所示:

http://192.168.109.140/dvwa/vulnerabilities/fi/?page=hthttp://tp://192.168.109.140/dvwa/hackable/uploads/hack.png

菜刀连接:连接失败,下面均显示html格式代码,经多次尝试,方法没错,是平台问题

通过burpsuite抓包,修改文件类型,绕过

上传文件hack.png,打开代理和开启burpsuite,单击upload,进行抓包

修改成功!

截断绕过

在php版本小于5.3.4的服务器中,当magic_quote_gpc选项为off时,可以在文件名中使用%00截断

可以把上传文件命名为hack.php%00.png,上传,抓包

显示上传成功,但不知道为什么%00没有过滤掉,猜测可能是phpstudy环境问题

这里有能成功做出来的小伙伴,希望可以请教一下,谢谢!

high级别源码分析

与medium级别相比,增加了strrpos()函数和getimagesize()函数,从源码中发现对文件上传的格式做了更加严格的限制,要求上传文件名形式必须是”*.jpg”、”*.jpeg” 、”*.png”其中之一,而且限制了上传文件的文件头必须为图像类型。

strrpos() 函数:查找字符串在另一字符串中最后一次出现的位置。在这里是从文件名中找到含"."的字符

getimagesize()函数:用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

漏洞利用

由于对文件类型和格式有了严格的限制,我们可以尝试将 一句话木马文件与图片合并成一个图片类型的文件,具体如下:

copy 图片名/b+文件名/a 合并后的图片名

查看合并后的图片文件

上传、抓包

点击forward,发现一句话马图片上传成功

使用菜刀连接

注意:URL使用(文件包含+文件上传)的high级别绕过

http://192.168.109.139/dvwa/vulnerabilities/fi/?page=file:///C:\phpStudy\PHPTutorial\WWW\dvwa\hackable\uploads\hack2.png

菜刀连接依旧失败!原因未知……

impossible级别源码分析

与high级别相比,增加了Anti-CSRF token防护CSRF攻击,对上传文件进行了重命名(为md5值,导致%00截断无法绕过过滤规则),同时对文件的内容作了严格的检查,导致攻击者无法上传含有恶意脚本的文件。

md5() 函数:计算字符串的 MD5 散列

        

销毁图像

DIRECTORY_SEPARATOR()是一个显示系统分隔符的命令,在这里显示"."

ini_get(string $varname):string  成功是返回配置选项的值,这里嵌套在判断语句,判断上传的tmp目录是否为空

imagejpeg ( image , filename , quality):从image图像以filename为文件名创建一个JPEG图像,可选参数quality,范围从0(最差质量,文件更小)到100(最佳质量,文件最大)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3