基于upload-labs靶场的文件上传(上)
文件上传原理
在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。
文件上传漏洞对Web应用来说是一种非常严重的漏洞。一般情况下,Web应用都会允许用户上传一些文件,如头像、附件等信息,如果Web应用没有对用户上传的文件进行有效的检查过滤,那么恶意用户就会上传一句话木马等Webshell,从而达到控制Web网站的目的。
文件上传可能存在的位置
存在文件上传功能的地方都有可能存在文件上传漏洞,比如相册、头像上传,视频、照片分享。论坛发帖和邮箱等可以上传附件的地方也是上传漏阔的高危地带,另外像文件管理器这样的功能也有可能被攻击者所利用。
移动端和web端都是类似的操作,那么移动端也存在文件上传漏洞
漏洞复现
前端验证绕过
先看一下源码
可以通过burp抓包,将1.png 改为1.php 然后放包
Content-Type方式绕过
先看看源码
1 | $is_upload = false; |
1 | 第二关是用Content-Type绕过打开源码,发现这个是后端验证的,会验证上传的文件类型是什么,这里验证的是否为图片,所以直接上传php然后修改content-type为image/jpeg即可成功上传 |
黑名单绕过
看源码
1 | $is_upload = false; |
1 | 过滤了几个,可以用其他试试phtml、php3、php.a、shtml,提示:如果是asp的就可以用cer、asa、cdx等 |
.htaccess文件绕过
源码
1 | $is_upload = false; |
1 | 查看源码得知,php3 php4 php5、大小写方法等全部被设置规则了。.htaccess文件,是一个分布式配置文件,针对于当前目录改变配置的方法,在特定的目录中放一个包含一个或多个指令的文件。.htaccess可以做文件夹密码保护、扩展名伪静态化、禁止特定ip的用户等,此文件规则高于Apache的规则例如:AddType application/x-httpd-php .jpg 这个指令表示 jpg文件当做php文件来执行首先上传一个jpg文件,再将写入AddType application/x-httpd-php .jpg的htaccess文件上传上去 |
后缀大小写绕过
源码
1 | $is_upload = false; |
过滤了一堆,但是有的大小写没过滤完整,我们试试.pHP结果不出意外成功了
文件后缀(空)绕过
源码 就和字面意思一样后缀加空格 来进行绕过
1 | $is_upload = false; |
文件后缀(点)绕过
来看看源码
1 | $is_upload = false; |
和2.6一样 都是字面上的意思同一个思路
::$DATA(Windows文件流绕过)
1 | $is_upload = false; |
发现文件被成功的上传到服务器,且名称后缀为.php::$data
,但是由于Windows的特性在磁盘中会忽略::$data
并将文件新建
构造文件后缀绕过
先查看源码
1 | $is_upload = false; |
1 | 通过查看源码,发现文件末尾点和首尾空格、大小写、windows文件流都被写入规则,但这里只删除文件末尾的一个点,我们用 . .的方式还是可以绕过的 |
双写文件后缀绕过
我们先看源码
1 | $is_upload = false; |
只是单纯的对第一次发现php进行删除,但是构造一个双写php被删了之后还是可以绕过,例如pphphp=php,检测到php就删了但是又构成了一个php
文件上传就先在这了其实文件上传要的就是思路和绕waf类似
评论