【教学】Upload-Labs靶场1-21关通关教程(全网最详细)

632 0
2021-12-2 11:04:28
显示全部楼层
持续更新中

新版upload-labs靶场下载(回复可见)
游客,如果您要查看本帖隐藏内容请回复


许可转载,必须标注原文章地址与作者,违者必究
在课堂练习时,必须使用火狐浏览器!!!
必须是php5.2版本,phpstudy用2017年的老版本
Pass-01(前端验证
因为是进行前端JS校验,因此可以直接在浏览器检查代码把checkFile()函数(即如下图红色框选中的函数)删了或者也可以把红色框改成true,并按回车,即可成功上传php文件
简单来说一下原理,就是checkFile()这个函数会检查你的文件类型,因为是前端验证,所以直接按F12改前端的代码,找到这个函数并且删掉即可上传成功。或者把checkFile()选中,改成true也是可以成功的。



删除之后,然后按回车,再上传你的php木马文件
使用菜刀等工具进行连接

Pass-02(MIME验证
这里要用到brupsuite抓包,抓到包之后分析代码,可以看到,后端PHP代码只对content-type进行了检查,使用bp抓包,修改上传的PHP的content-type为image/png
(只能是png,jpg会失败,连续点两下Forward即可上传成功)



然后用菜刀等工具进行连接
Pass-03(黑名单验证,特殊后缀
这题本人使用的是PHP5.2.17环境
分析代码,进行黑名单验证,但是黑名单不全,可以使用php3、php5、phtml等等绕过


然后把一句话木马文件.php后缀改为.php5 即可上传(先看完,不要着急上传)


注意!由于第三关后端会把上传的文件重命名为随机名,而我们需要用菜刀连接指定的木马名称,我们需要通过抓包来知道随机名之后的木马文件才可以连接!!!!!!
打开brupsuite,先关闭抓包


然后选择好上传文件


打开brupsuite,开启抓包,然后点击上传
抓到包之后,发送到Repeater
然后按Send,发送包,并且查看发送之后的响应包






发现文件名称与响应包的名称一样,在brupsuite里面看到响应包之后一定要记住文件名字(由于环境有问题,我们只需要查看一下上传文件的目录是否有本文件即可,不需要再访问或用菜刀连)
Pass-04(黑名单验证 .htaccess
首先来查看一下本关的提示
发现我们能用到的上传后缀全部被黑名单ban掉了

虽然是黑名单判断,这次的限制还更多,但是没有包括.htaccess
可以利用配合Apache的.htaccess文件上传解析漏洞。
.htaccess详解:
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能IIS平台上不存在该文件,该文件默认开启,启用和关闭在httpd.conf文件中配置。
靶机中httpd.conf相关配置:

造成了我们可以上传.htaccess文件解析漏洞,来绕过验证进行上传WEBShell。
解题步骤:
1创建一个1.htaccess这个文件
在文件内输入:
AddType application/x-httpd-php .jpg
然后保存
这句话的意思是:使得服务器将所有.jpg后缀的文件当做php文件解析
也就是你图片里面有木马语句,他就会被当为php解析出来并且执行了
2选择上传这个1.htaccess文件,然后不要点上传
打开brupsuite,开启抓包,之后再点击上传
抓到请求包后,把1.htaccess的名字改成.htaccess(就是把1删掉了)

然后点Forward进行放包上传,上传成功后
再新建一个php文件,叫info.php
在里面写入
这句话就是输出php的所有信息


然后把文件名字改成jpg,还是会解析成php


点击上传,成功后访问一下刚刚上传的文件,最终会显示这个图片的内容
访问http://你的靶场目录/upload/文件名
(不要照着图片输入,要输入你自己的路径!脑子要灵活!)

显示图片中的内容,本关完成
Pass-05(Windows特性绕过
本关是利用Windows自动删除. (点空格)的特性来进行绕过的
但是仅局限于Windows环境下搭建的网站(我们机房本机搭建就是Windows环境)
Linux服务器不会自动删除. (点空格),所以不会出现这种漏洞情况
为了让大家更好的理解本关卡,我先做一个原理演示:
在Windows下的php文件是这样的


正常显示“phpinfo.php”这个名字
如果我们修改后缀,给php文件加个“.”(点)或者“ ”(空格)
系统会自动删除掉这个“.”或“空格”



发现点点被删除了,这是Windows的特性
我们在Linux下演示:

正常的文件名“phpinfo.php”

给文件加了个. .(点空格点),因为不允许用空格结尾

Linux下完成了重命名,发现文件的. (点空格)没有被删除掉
所以这关的解题思路来了
首先查看源码的限制

自动删除空格,自动删除点点,自动把大写转换成小写
所以打开brupsuite,选择文件

这里我们选择的是未命名特殊后缀的php文件
然后打开抓包,点击上传,查看请求包

在响应包里面修改文件名为“phpinfo.php. .”
给后缀加了个点空格点,然后放包
这里讲解一下上传过程:
上传后,你的phpinfo.php. .会被后台完完整整地看到
然后后台会通过刚刚的代码,删除掉最后的 .(空格点)
你的文件名字就会变成phpinfo.php.(注意这里会多一个.)
然后会因为Windows特性自动删除最后的.
已知我们是Windows环境下搭建的,会自动删除. (点空格)
故直接访问“phpinfo.php”这个文件名字


成功绕过上传,本关完成

Pass-06(黑名单验证,大小写绕过
本关卡是黑名单验证,过滤掉了那些花里胡哨的文件格式
并且不允许上传配置文件
但是没

有过滤掉大小写
查看提示


查看源码

源码你们看不懂,但是源码里面是没有过滤大小写的
所以我们把php文件改一下大小写

打开brupsuite抓包然后看响应包,看上传成功后的随机名








发现随机名是202111301021542317.phP
现在已经是上传成功了,我们访问一下地址来查看文件
我的php文件内容是
//查看php的信息
访问http://你靶场的目录/upload/你的随机文件名

成功解析了phP这个后缀,本关卡成功
Pass-07(后缀加空格绕过
本关卡先查看一下源码和限制




发现了没有限制.htaccess这个配置文件,但是本关考的是空格绕过
所以不使用.htaccess这个文件来
源码里面发现了没有$file_ext = trim($file_ext); //收尾去空这个限制
也就是说我们可以上传一个带空格的文件
这类似于第五关的绕过方法,利用Windows特性来达到目的
还是通过抓包来修改
打开brupsuite,然后选择正常文件,再修改名称
(本关上传的文件会自动随机命名,所以需要看响应包)





给文件后缀加个空格,然后发送到repeater模块,再send发送
发现上传成功,响应包已经有了随机文件名



第七关,完成!













本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x