靶场搭建过程很简单,不会自行百度。我这里略过。
靶场源码地址:github.com/c0ny1/upload-labs
我这里为了方便,就下载了靶主已经集成配置好的环境进行本地搭建。地址:github.com/c0ny1/upload-labs/releases
本地搭建好是下面这个页面:
文件上传简介
文件上传(一)
在现代互联网的许多动态网站或伪静态网站中,文件上传是一种常见的功能,因为它有利于提高效率和用户体验,如:允许用户上传图片、头像、视频及许多其他类型的文件,一个网站存在的功能越多和向用户提供的功能越多,那么它可能存在的风险就越大,如果网站存在文件上传漏洞,那么我们就可以利用上传漏洞上传恶意脚本到服务器,从而获得网站权限webshell。
文件上传之所以存在漏洞,主要是因为未对客户端上传的文件类型、内容、后缀、上传规则、服务器上传文件功能处理图片规则,进行严格的校验和过滤、循环校验、就容易产生上传漏洞。
恶意脚本文件的危害非常大,非法用户上传恶意脚本文件有时候甚至可以拿下整个网站进一步拿下服务器。
下面靶场演示:
建议大家每做一题都把靶场清空一次,我试过了。不清空的话一把菜刀可以把下面的题目都拿下。
01:
前端绕过
前端绕过比较简单,我们抓包修文件后缀就可以了。
02:
类型检测,类型检测我们也可以通过抓包修改,这一题靶场好像不是太严谨,不过知道可以通过修改类型绕过就可以了
03:
黑名单绕过,前面一部分忘了截图。黑名单绕过,我们可以通过PHP可解析PHP3-4-8-phtml等等可以被PHP解析的文件类型进行绕过
04:
.htaccess解析绕过,这个功能默认是不开启的,当然很多伪静态的网站可能会开启,.htaccess是定义目录解析规则。我们可以自己写解析规则到.htaccess里面,然后上传.htaccess,再上传图片,这时候我们的图片就会安装我们在.htaccess里面写的解析规则进行解析了。
如:AddType application/x-httpd-php .jpg/将目录中的jpg当做PHP解析/
先上传.htaccess文件到目录,然后上传图片,这时候图片就会安装已上传的规则进行解析图片。
05:后缀大小写绕过
06:
文件后缀(空)绕过,’php’/‘php ‘是不同的,有时候可以通过空格绕过。
07:
文件后缀(点)绕过
PHP./PHP是不同的,让我们保存时后面的点一般会默认去除
08:
::$DATA文件流绕过,Windows文件后缀::$DATA是默认隐藏存在的,当我们用它做后缀上传时保存时::$DATA是会默认去除掉的
注意放完文件,测试phpinfo();时如果后面的::$DATA在我们访问图片地址时是存在的,我们要去掉,要不然会访问不到
09:
未多次循环检测
我们发现文件上传可能未经过二次后缀校验,这时候我们可以构建. .绕过或者1.php.php
10:双写绕过
11:
%00截断
%00.jpg,当保存时默认截取后面的.jpg。
文件上传保存流程:上传到临时目录-拼接到移动的目录-移动过去后重命名。
%00截断在PHP5.3.29版本下可以使用
12:
%00截断
这题是post,需要我们到burp里面修改00截断为16进制
13:
*我下面几题展示的图片马是上传上去以后下载重新保存后打开的样子。**
图片马
jpg
png
gif
14:
png
jpg
GIF
15:
jpg
png
gif
16:这一题商场上传下载后写的一句话木马居然消失了
用户上传的图片程序会进行渲染改变,防止恶意文件上传,这里再次照着上面的题上传已经无效了,需要查看图片上传前后未改变的地方,可以尝试在上传后为改变的地方上传木马。
我们将上传后的图片下载下来和未上传前的图片用编辑器打开,同步查看,上传前后未改变的地方。在未改变地方尝试写入木马。
这次居然没改变,太激动了,用jpg试了n遍
靶场存在解析漏洞,这里我们可以这样写:http://59.63.200.79:8016/Pass-16/upload/21745.gif/.php?a=phpinfo();
如果,没有解析漏洞可以尝试文件包含配合其他漏洞来利用
17:条件竞争
一些网站上传文件的逻辑是先允许上传任意文件,然后检查上传文件是否包含webshell脚本,如果包含则删除该文件。这里存在的问题是文件上传成功后和删除文件之前存在一个短的时间差,因为计算机在这中间要进行检查文件是否合法、是否存在恶意文件,删除不合规或恶意文件的操作,我们就可以利用这个时间差完成条件竞争的上传漏洞攻击。
攻击流程:个人理解:上传恶意文件后用burp抓包不停的上传,burp另外一个则不停访问。要知道我们在Windows创建文件后,打开文件后文件是无法删除的,必须关闭才能删除、我们可以在这个恶意文件中写入<?php file_put_contents(‘1.php’,’<?php eval($_REQUEST[9])?>’)?>这个语句功能是创建1.php并往里面写入<?php eval($_REQUEST[9])?>一句话木马,而在我们上传的恶意文件被我们用burp访问到的一瞬间这个1.php文件就执行创建成功了,就算这时我们的恶意文件被删除,也无影响了,因为我们的文件生成木马文件已经跳过它的检测。
往1.jpg写入<?php file_put_contents(‘1.php’,’<?php eval($_REQUEST[9])?>’)?>然后上传
用burp不断发包
另一个则不断访问1.php
当成功访问后ww.php就成功生成了
这时候尝试访问ww.php?0=phpinfo();
条件竞争这是我第一次跑出来这么快
18:条件竞争
辅导员说这题有点问题,我试着按照条件竞争(一)的方法去跑,跑了好几遍都跑不出来
19:
这一题跟00截断几乎没区别,这一题不是太重视命名,我们在预命名后面加上phpa.jpg,绕过对后缀的检测,同时通过hex把a修改为00,00起到截断作用,实际保存的是.php
20:
IIS6.0解析漏洞
注:老师课上说该漏洞仅对6.0版本有效
ASP默认还可以解析Asa cer
ASP和PHP的图片马略有不同
<%eval request(“poo”)%>
我们在测试的时候不要被误导了,这是APS的站,同时如果不行可以都试试,没必要死钻牛角尖
尝试连接菜刀或冰蝎试试
21:
这一题有些类似PHP的00截断
IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞,这一漏洞有两种完全不同的利用方式
1: 1.asp;jpg
2:1.asp/.jpg 最后会被当做1.aps解析
跟上一题类似修改后缀
chagnshi尝试连接菜刀
22:
这里是解析问题,个人感觉它读的顺序是从左往右读的,当文件夹后缀为ASP时它文件中包含的东西都会当成ASP解析
尝试连接菜刀
连接成功
23:CGI解析漏洞:使用的范围PHP,中间件,典型就是任意文件当成PHP执行,我们只要在上传的文件路径后面加.PHP就可以当做PHP进行解析。IIS7.5和Nginx中有时也存在这种漏洞。
靶场开始,我们上传一张图片,复制图片路径,在路径后面加上.phpinfo();看下效果.
像23题这漏洞,我们浏览网页时遇到PHP的站都可以在后面加上.PHP试试