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

2023-08-14 2036阅读

File Upload,即文件上传漏洞,通常是由于对上传文件的类型和内容没有进行严格的过滤和检查,使得攻击者可以通过上传木马的方式获取服务器的webshell权限;Windows服务器:Windows Server 2003,IP地址:192.168.37.136;basename 函数返回路径的文件名部分。使用中国菜刀查看并获取webshell权限;高安全级别采用白名单过滤,仅允许上传后缀为jpg、jpeg、png且文件大小小于10万字节的文件。Impossible级别代码对上传文件进行重命名,添加Anti-CSRF token来防范CSRF攻击,并严格检查文件内容,拒绝文件上传Bug;文件上传后,服务器会检查文件是否上传成功,并显示响应消息;High级别限制上传文件后缀名为jpg/JPG/jpeg/JPEG,可以通过Burpsuite抓包并在文件名后添加jpg/JPG/jpeg/JPEG后缀名来绕过,或者通过阶段;

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

(1) 文件上传

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

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

(二)文件上传漏洞发生的前提条件

可以上传木马

上传的木马可以执行

上传后还要清除路径

2. 文件上传

实验室环境

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

9008构建下载数据包失败_构建下载数据包失败_构建失败王者荣耀谁说的

(2)Linux服务器:192.168.37.135

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

构建失败王者荣耀谁说的_9008构建下载数据包失败_构建下载数据包失败

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

实验过程-Windows

安全级别:低

(1) 设置安全级别

构建下载数据包失败_9008构建下载数据包失败_构建失败王者荣耀谁说的

(2)查看源码

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

(3)源码分析

basename(path,suffix) 函数返回路径的文件名部分。 Path为必填参数,指定要检查的路径; suffix是一个可选参数,它指定文件的扩展名。 如果文件有后缀,则不会输出扩展名;

服务器不对用户上传的文件进行过滤和检查

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

(4) 实验操作

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

构建下载数据包失败_9008构建下载数据包失败_构建失败王者荣耀谁说的

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

构建下载数据包失败_构建失败王者荣耀谁说的_9008构建下载数据包失败

木马文件上传路径为:

4.2> 使用中国菜刀查询并获取webshel​​l权限

添加新的外壳;

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

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

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

构建下载数据包失败_构建失败王者荣耀谁说的_9008构建下载数据包失败

模拟终端

构建下载数据包失败_构建失败王者荣耀谁说的_9008构建下载数据包失败

安全级别:中

(1) 设置安全级别

构建下载数据包失败_9008构建下载数据包失败_构建失败王者荣耀谁说的

(2)查看源码

构建失败王者荣耀谁说的_9008构建下载数据包失败_构建下载数据包失败

(3)源码分析

文件类型必须是jpeg或png;

文件大小限制为100000字节;

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

(4)实验过程

4.1> 方法一:组合装箱(文件包含+文件上传)

创建一句木马low.png;

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

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

构建失败王者荣耀谁说的_9008构建下载数据包失败_构建下载数据包失败

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

注:木马上传路径:

使用中文菜刀获取webshel​​l权限;

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

查看添加shell的结果

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

文件虽然上传成功,但是无法成功获取webshel​​l权限;

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

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

那么如何让服务器将图片文件解析成PHP文件呢? 我们可以利用该文件包含漏洞(无论文件后缀是否为php,它都会尝试将其作为php文件执行,如果文件内容为php,则会正常执行,结果为如果没有,文件内容将被原封不动地打印出来,因此该文件包含经常导致任意文件读取和任意命令执行的bug;)

我们可以利用包含漏洞的文件获取webshel​​l权限,打开中国菜刀,右键添加,在地址栏输入:

//tp://192.168.37.136/dvwa/hackable/uploads/low.png

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

构建下载数据包失败_构建失败王者荣耀谁说的_9008构建下载数据包失败

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

构建下载数据包失败_9008构建下载数据包失败_构建失败王者荣耀谁说的

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

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

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

9008构建下载数据包失败_构建下载数据包失败_构建失败王者荣耀谁说的

查看上传结果

构建失败王者荣耀谁说的_9008构建下载数据包失败_构建下载数据包失败

使用中国菜刀查询并获取webshel​​l权限

构建失败王者荣耀谁说的_9008构建下载数据包失败_构建下载数据包失败

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

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

4.3> 方法三:截断绕过

截断被绕过。 此时,服务器会认为low.php.png的文件名为low.php,并将其解析为PHP文件(仅适用于PHP版本低于5.3.4的情况)。 本次实验的PHP版本是5.5 .53,所以结果不会成功; 但流程和思路如下:

创建-low.php.png;

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

上传文件;

构建下载数据包失败_9008构建下载数据包失败_构建失败王者荣耀谁说的

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

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

上传成功;

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

使用中国菜刀查看并获取webshel​​l权限;

9008构建下载数据包失败_构建失败王者荣耀谁说的_构建下载数据包失败

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

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

4.4>方法四:系统本身存在分析漏洞

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

安全级别:高

(1) 设置安全级别​

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

9008构建下载数据包失败_构建失败王者荣耀谁说的_构建下载数据包失败

(2)查看源码

构建失败王者荣耀谁说的_9008构建下载数据包失败_构建下载数据包失败

(3)源码分析

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

$uploaded_ext:等于文件扩展名;

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

getimagesize():函数限制上传文件的文件头(限制文件大小和图片大小)。

高安全级别采用白名单过滤,仅允许上传后缀为jpg、jpeg、png且文件大小小于10万字节的文件。 高安全级别仍然采用白名单过滤,仅允许上传后缀为jpg、jpeg、png且文件大小小于10万字节的文件。

(4)实验过程

用记事本打开1.jpeg,最后添加一句木马;

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

上传图片;

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

上传成功;

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

使用中文chopper获取webshel​​l权限

构建下载数据包失败_构建失败王者荣耀谁说的_9008构建下载数据包失败

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

安全级别:不可能

(1) 设置安全级别​

构建失败王者荣耀谁说的_9008构建下载数据包失败_构建下载数据包失败

(2)查看源码

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

(3)源码分析

Impossible级别代码对上传文件进行重命名(MD5值,导致无法绕过过滤规则的截断),添加Anti-CSRF token来防范CSRF攻击,并严格检查文件内容,拒绝文件上传Bug;

实验过程-Linux

安全级别:低

(1)设置安全级别

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

(2)查看源码

构建失败王者荣耀谁说的_构建下载数据包失败_9008构建下载数据包失败

(3)源码分析

服务器对上传文件的类型和内容不做任何限制;

文件上传后,服务器会检查文件是否上传成功,并显示响应消息;

安全级别:中

(1)设置安全级别

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

(2)查看源码

构建下载数据包失败_9008构建下载数据包失败_构建失败王者荣耀谁说的

(3)源码分析

服务器限制上传文件类型为jpeg;

文件大小必须小于100000字节;

安全级别:高

(1) 设置安全级别​

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

(2)查看源码

构建下载数据包失败_9008构建下载数据包失败_构建失败王者荣耀谁说的

(3)源码分析

High级别限制上传文件后缀名为jpg/JPG/jpeg/JPEG,可以通过Burpsuite抓包并在文件名后添加jpg/JPG/jpeg/JPEG后缀名来绕过,或者通过阶段;

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]