HCIE(9)——文件上传漏洞及upload-lab靶场01-10

一、Upload-labs靶场漏洞

1、Upload-labs靶场介绍

首先来看一下靶场上的20道题目,虽然只是一些简单的题,但是上传漏洞的原理和利用仍然值得去学习。
在这里插入图片描述
Upload-labs是一个使用PHP语言编写,专门用于渗透测试和CTF中遇到的各种文件上传漏洞的靶场,旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关卡都包含不同的上传方式。
运行环境:
操作系统:windows、Linux
PHP版本:推荐5.2.17(其他版本可能导致部分关卡无法通过)
php组件:php_gd2、php_exif

2、windows环境的快速搭建

GitHub上为本项目提供了一个windows下集成环境,集成环境绿色免安装,解压即可使用。
下载地址:https://github.com/c0ny1/upload-labs/releases
在这里插入图片描述
第一步:从GitHub上下载环境和题目的压缩包
第二步:解压“upload-labs-env-win-0.1.7z”。如下所示,第一次运行或者每次改变靶机目录的时候,需要运行一下modify_path.bat文件之后,再运行phpstudy.exe继承环境。
在这里插入图片描述
第三步,双击modify_path.bat文件,文件运行如下所示。作用在于修改phpstudy.ini、httpd.conf、php.ini这三个配置文件中的路径为最新路径。
在这里插入图片描述
第四步,直接运行phpstudy.exe文件。
在这里插入图片描述
第五步,点击www目录下就可以看到包含的20道题目,如下所示:
在这里插入图片描述

第六步,启动phpstudy,然后访问地址,这样靶场就安装好了
在这里插入图片描述

二、文件上传漏洞值CTF值01-10关

Pass-01:
对第一道题目查看提示,显示这是一个JS的本地文件验证关卡。
在这里插入图片描述
解决方法:
如果直接上传包含一句话木马的文件“1.php”,会显示文件类型错误。
在这里插入图片描述
所以需要转换思路,我们可以首先根据题目的提示判断出文件类型的限制属于前端限制。
所以,只需要在上传时绕过前端检测即可。
需要删除“οnsubmit=return checkfile()”函数,再进行文件上传。步骤如下:
第一步,我们检查当前页面元素,找到“οnsubmit=return checkfile()”函数,并将其删除。
在这里插入图片描述
然后,再进行上传,会发现上传成功。
在这里插入图片描述
第二步,使用中国菜刀添加路径http://192.168.150.127/upload/1.php和密码‘a’进行连接
在这里插入图片描述
发现连接成功!可以获取当文件目录并正常的打开、下载、上传等。
在这里插入图片描述
到这里,第一关就结束了,主要上讲如何绕过本地前端JS验证。

Pass-02:
查看提示,发现是MIME文件绕过
在这里插入图片描述
解决方法:
MIME文件绕过上传,尝试对Content-type进行修改,核心思想是将上传的PHP 文件Content-type修改为“image/png”
我们可以使用burp工具进行数据包的拦截及修改。
第一步:配置浏览器代理(这里使用Firefox浏览器)
选项——网络设置—手动配置代理
设置本地代理为“127.0.0.1”,端口号为“8080”
在这里插入图片描述
第二步,打开burp,同时设置代理为“127.0.0.1:8080”。
在这里插入图片描述
第三步,上传一句话木马文件“2.png”,如下图所示
在这里插入图片描述
第四步,通过burp抓包,获取相应的信息,可以看到里面包含了php的一句话木马工具
在这里插入图片描述
第五步,将2.png的后缀修改为2.php,点击Forward按钮
在这里插入图片描述
第六步,成功上传了2.php文件,复制其地址,使用菜刀工具进行连接测试
在这里插入图片描述
这里,第二关就结束了。

Pass-03:
首先查看提示,发现是采用了黑名单机制,禁止上传.asp、.aspx、.php、.jsp后缀的文件
在这里插入图片描述
解决方法:
这一类通过建立黑名单进行过滤的手法的绕过机制还是很简单的。只需要通过变形、重复等手段就可以实现。
这里可以尝试使用php345进行绕过。
PHP345绕过机制:
PHP3代表的是PHP的版本3,用于文件绕过检测。一般的软件都是向下兼容的,php3的代码PHP5同样可以执行。所以,可以将一句话木马文件命名为 3.php3,从而实现了正常上传。
第一步:直接上传3.php文件,会提示如下的错误
在这里插入图片描述
第二步,将文件名修改为3.php3,发现可以正常上传
在这里插入图片描述
第三步,使用菜刀工具进行连接http://192.168.150.127/uploads/3.php3
发现连接不成功,对源码进行查看后发现,文件3.php3上传到服务器后,会对其进行改名,命名方式为:Y+m+d+H+i+s+rand(1000,9999)
在这里插入图片描述
所以,最终的文件路径为:http://192.168.150.127/upload/202011271121307480.php3

在这里也可以直接右键图像,复制图像路径进行连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pass-04:
查看提示,发现同样采用的是黑名单机制,禁止了一些特殊后缀名文件的上传
在这里插入图片描述
解决方法:
对黑名单中的后缀名进行观察后发现,基本所有可以运行的脚本后缀都包含在了黑名单中。
所以,不妨转换思路,这里利用“.hataccess”文件绕过上传

.htaccess文件或者“分布式配置文件”提供了针对每个目录改变配置的方法,
即在一个特定的目录中放置一个包含指令文件,其中的指令作用于此目录及其所有的子目录。

简单来说,.htaccess文件时Apache服务器中一个配置文件,它负责相关目录下的网页配置。它的功能有:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定用户/目录的访问、禁止目录列表、配置默认文档等。这里我们用到的是改变文件扩展名,新建一个.htaccess文件,代码如下:
在这里插入图片描述
第一步,上传这个.htaccess文件。

第二步,再上传一个携带一句话木马的后缀名为.png的文件4.png,它会将这张图片以php文件来进行解析。
在这里插入图片描述
在这里插入图片描述
第三步,使用菜刀工具进行测试
复制图像地址为:http://192.168.150.127/upload/4.png
在这里插入图片描述

Pass-05:
查看提示,发现禁止了.htaccess文件的上传绕过。
在这里插入图片描述
解决方法:
使用大小写绕过的方法。虽然提示中显示禁止了“.pHp”中间大写,但并没有禁止末尾的大写,所以,这里使用“.phP”。注意,好的防御代码会首先获取文件的后缀名并将其全部转换为小写,再定义黑白名单进行校验。
首先,上传“5.phP文件”。
发现文件成功上传!
接着复制图像地址打开菜刀工具连接服务器

在这里插入图片描述

Pass-06:
第六关的提示信息如下图所示:
在这里插入图片描述
查看原代码后发现首位去空的代码没有了,我们可以尝试加空格来绕过
尝试上传一句话木马的图片文件“6.png”
如果通过Burp抓包,直接修改“6.png”为“6.php”,则会提示如下错误:
在这里插入图片描述
这里需要增加空格,即“6.php ”。Burp修改如下图所示:
在这里插入图片描述
点击forward按钮,此时为成功上传。

在这里插入图片描述
复制图片路径,使用菜刀工具进行连接。
在这里插入图片描述

Pass-07:
提示信息为“禁止上传所有可以解析的后缀”。
在这里插入图片描述
查看源代码,会发现这句代码不存在了。

$file_name=deldot($file_name);        //删除文件名末尾的点

所以,可以利用这一点,上传一张图片“7.png”,通过BurpSuite抓包,将文件“7.png”修改为“7.php.”,如下图所示:
在这里插入图片描述
我们复制图片地址,使用菜刀工具连接服务器,成功获取服务器的文件目录
在这里插入图片描述

Pass-08:
查看提示,发现还是常规的方法绕过。
在这里插入图片描述
查看源代码发现去除“::$DATA”文件的语句没有了 ,这里可以尝试加入“::DATA”。

::$DATA绕过只能用于windows,简单来说,就是在数据后面加上::$DATA来实现绕过,例如8.php::$DATA返回的就是8.php的数据。

上传一个8.png的图片,然后通过BurpSuite进行修改为“8.php::$DATA”。
在这里插入图片描述

上传成功后复制图片路径并删除后面的::$DATA,使用菜刀进行连接
http://192.168.150.129/upload/202011272143158823.php
在这里插入图片描述

Pass-09:
查看提示发现这一关是只允许上传图片类型的文件。
在这里插入图片描述
查看源代码,发现15行文件不一样,路径拼接的是处理后的文件名,于是构造“9.php. .”(点+空格+点),尝试进行绕过。
上传一张“9.png”的图片,尝试修改为“9.php. .”,进行绕过
在这里插入图片描述
上传成功后,复制图片地址,使用菜刀进行连接。
(http://192.168.150.129/upload/9.php.)进行访问。注意,“9.php.”后面没有那个点也可以成功访问,这是windows的一些特性。
在这里插入图片描述
Pass-10:
查看提示 发现应该是过滤后缀。
在这里插入图片描述
查看源代码,发现这里是将后缀名替换为空,也就是php.php 会变成php. ,但是这里只能过滤一次。
解决步骤:
第一步,尝试上传一个一句话木马文件10.pphphp
在这里插入图片描述
上传成功后的地址为:http://192.168.150.129/upload/10.php
再调用菜刀工具连接即可
在这里插入图片描述

总结:

对前十关进行一下小结,分别用到的技术为:
第一关:JS验证绕过
第二关:MIME绕过
第三关:php3465绕过
第四关:.htaccess绕过
第五关:大小写绕过
第六关:空格绕过
第七关:点绕过
第八关:::$DATA绕过
第九关:点+空格+点连接绕过
第十关:双写绕过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值