DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)

1. 文件包含(File Upload)漏洞简介

(1)文件上传

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

这里上传的文件可以是木马,病毒,恶意脚本等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果;

(2)文件上传漏洞的前提条件

   能上传木马

   上传的木马能执行

   还要清楚上传后的路径

2. 文件上传(File Upload)

实验环境

(1)Windows服务器:Windows  Server 2003,IP地址:192.168.37.136;

(2) Linux服务器:192.168.37.135

(3) 测试机:Windows7物理机(开启代理,代理服务器为burpsuite)

(4) 工具:抓包工具:Burpsuite; 中国菜刀:Cknife

实验过程——Windows

安全级别:Low

(1)设置安全级别

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第1张图片

(2)查看源码

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第2张图片

(3)源码分析

 basename(path,suffix) 函数返回路径中的文件名部分。Path是必须参数,规定要检查的路径;suffix是可选参数,规定文件的扩展名,如果文件有 suffix,则不会输出这个扩展名;

服务器对用户上传的文件没有做筛选和检查

生成上传路径后,服务器会检查是否上传成功;

(4)实验操作

4.1> 上传一句话木马(low.php)

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第3张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第4张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第5张图片

木马文件上传的路径为:http://192.168.37.136/DVWA/hackable/uploads/low.php

4.2> 使用中国菜刀查询,获取webshell权限

添加一个新的shell;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第6张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第7张图片

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

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第8张图片

模拟终端

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第9张图片

安全级别:Medium

(1)设置安全级别

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第10张图片

(2)查看源码

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第11张图片

(3)源码分析

限制了文件类型必须是jpeg或者或者png;

限制了文件大小必须100000字节;

(4)实验过程

4.1> 方式一:组合拳(文件包含+文件上传)

创建一句话木马low.png;

上传low.png文件,获取文件上传的路径;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第12张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第13张图片

注:木马的上传路径:http://192.168.37.136/DVWA/hackable/uploads/low.png

使用中国菜刀,获取webshell权限;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第14张图片

查看添加shell的结果

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第15张图片

虽然成功上传了文件,但是并不能成功获取webshell权限;

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

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第16张图片

那么如何让服务器将图片文件解析为PHP文件呢?我们可以借助文件包含漏洞(不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行;)

我们可以借助文件包含漏洞来获取webshell权限,打开中国菜刀,右键添加,在地址栏中输入:

http://192.168.37.136/dvwa/vulnerabilities/fi/?page=hthttp://tp://192.168.37.136/dvwa/hackable/uploads/low.png

在中国菜刀重新添加一个文件路径如下的shell

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第17张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第18张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第19张图片

理论上是可以成功的,但由于版本等问题,没有成功;

4.2>方式二: BurpSuite抓包修改content-type

上传木马文件low.png,抓包后修改后缀名;可以看到文件类型为image/png,尝试修改filename为low.php

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第20张图片

查看上传结果

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第21张图片

使用中国菜刀查询,获取webshell权限

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第22张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第23张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第24张图片

4.3> 方式三:%00截断绕过

%00截断绕过,此时,服务器会将low.php%00.png认为其文件名为low.php,解析为PHP文件(仅限于PHP版本小于5.3.4的版本),本次实验实验的PHP版本为5.5.53,所以结果不会成功;但过程和思路如下:

创建low.php%00.png;

上传文件;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第25张图片

通过Burpsuite抓包查看文件类型;文件类型为image/png

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第26张图片

上传成功;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第27张图片

使用中国菜刀查看,并获取webshell权限;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第28张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第29张图片

由于版本平台问题(本次实验的PHP版本为5.5.53),没有成功;

4.4> 方式四:系统本身存在解析漏洞

有的系统会将带有木马文件的图片解析为PHP文件执行;

安全级别:High

(1)设置安全级别

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第30张图片

(2)查看源码

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第31张图片

(3)源码分析

substr():返回字符串的一部分;

$uploaded_ext:等于文件的后缀名;

getimagesize(string filename):函数会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。

getimagesize():函数限制了上传文件的文件头(限制了文件的大小及图片尺寸)。

High安全等级采用白名单过滤,只允许上传的文件后缀名为jpg、jpeg、png且文件大小小于100000字节。High安全等级仍然采用白名单过滤,只允许上传的文件后缀名为jpg、jpeg、png且文件大小小于100000字节。

(4)实验过程

用记事本打开1.jpeg,在末尾添加一句话木马;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第32张图片

上传图片;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第33张图片

上传成功;

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第34张图片

使用中国菜刀,获取webshell权限

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第35张图片

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第36张图片

安全级别:Impossible

(1)设置安全级别

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第37张图片

(2)查看源码

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第38张图片

(3)源码分析

Impossible级别的代码对上传的文件进行了重命名(MD5值,导致%00截断无法绕过过滤规则),加入Anti-CSRF token防护CSRF攻击,同时对文件的内容的内容进行了严格的检查,拒绝了文件上传漏洞;

实验过程——Linux

安全级别:Low

(1)设置安全级别

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第39张图片

(2)查看源码

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第40张图片

(3)源码分析

服务器对上传文件的类型,内容没有做任何的限制;

文件上传之后,服务器会检查文件是否上传成功,显示回应信息;

安全级别:Medium

(1)设置安全级别

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第41张图片

(2)查看源码

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第42张图片

(3)源码分析

服务器限制了上传文件的类型必须是jpeg;

限制了文件大小必须小于100000字节;

安全级别:High

(1)设置安全级别

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第43张图片

(2)查看源码

DVWA系列(九)——使用Burpsuite进行File Upload(文件上传)_第44张图片

(3)源码分析

High级别限制了上传的文件后缀名为jpg/JPG/jpeg/JPEG,可以通过Burpsuite抓包,在文件名后面添加jpg/JPG/jpeg/JPEG后缀名即可绕过,也可以通过%00阶段绕过;

你可能感兴趣的:(DVWA练习系列,kali,Linux,渗透测试,File,Upload,文件上传,DVWA,Kali,Linux渗透测试,安全)