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

2023-08-14 2066阅读

温馨提示:这篇文章已超过585天没有更新,请注意相关的内容是否还可用!

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构建下载数据包失败_构建失败王者荣耀谁说的

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

木马文件上传路径为:

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

添加新的外壳;

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

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

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

模拟终端

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

安全级别:中

(1) 设置安全级别

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

(2)查看源码

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

(3)源码分析

文件类型必须是jpeg或png;

文件大小限制为100000字节;

(4)实验过程

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

创建一句木马low.png;

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

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

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

注:木马上传路径:

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

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

查看添加shell的结果

文件虽然上传成功,但是无法成功获取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构建下载数据包失败

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

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

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

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

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

查看上传结果

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

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

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

4.3> 方法三:截断绕过

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

创建-low.php.png;

上传文件;

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

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

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

上传成功;

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

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

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

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

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

安全级别:高

(1) 设置安全级别​

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

(2)查看源码

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

(3)源码分析

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

$uploaded_ext:等于文件扩展名;

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

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

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

(4)实验过程

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

上传图片;

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

上传成功;

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

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

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

安全级别:不可能

(1) 设置安全级别​

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

(2)查看源码

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

(3)源码分析

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

实验过程-Linux

安全级别:低

(1)设置安全级别

(2)查看源码

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

(3)源码分析

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

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

安全级别:中

(1)设置安全级别

(2)查看源码

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

(3)源码分析

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

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

安全级别:高

(1) 设置安全级别​

(2)查看源码

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

(3)源码分析

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]