Upload-labs

Posted Andrewlong_lhl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Upload-labs相关的知识,希望对你有一定的参考价值。

概述

文件上传漏洞
文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。例如:
验证文件类型、后缀名、大小
验证文件的上传方式
对文件进行一定复杂的重命名
不要暴露文件上传后的路径

upload-labs(21关) 前16关

1.JS绕过

通过代理抓包。发现未产生流量,确定其为前端JS检测
通过禁用JS上传

上传成功

蚁剑连接成功

2.MIME类型绕过

通过代理抓包,修改Content-Type为image/gif放包

蚁剑连接测试成功

3.后缀名解析绕过

将文件后缀名修改为php5上传,上传成功
这里可以上传后缀为php3,pht,phtml,php5,phps等来绕过(它们会被解析为php)


蚁剑连接测试,发现测试失败。原因是由于本地服务器配置的原因无法解析后缀php5为php文件

4…htaccess文件解析绕过

通过测试发现为黑名单绕过,此时可以利用.htaccess文件解析图片马
先上传.htaccess文件

<FilesMatch "as.png">
setHandler application/x-httpd-php
</FilesMatch> 

上传之后再上传图片马as.png
蚁剑连接测试成功

利用PHP 和 Windows环境的叠加特性也能getshell

5…user.ini文件解析绕过

php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。
.user.ini文件解释
引发 .user.ini 解析漏洞需要三个前提条件
服务器脚本语言为PHP
服务器使用CGI/FastCGI模式
上传目录下要有可执行的php文件(例如index.php)
.user.ini

auto_prepend_file=as.png

参考网址:
.user.ini导致文件上传绕过
.user.ini配置文件在渗透中的利用

6.大小写绕过

7.空格绕过

8.点(.)绕过

9.::$DATA绕过

10.点空格点(. .)绕过

11.双写绕过

12.%00截断


但是%00截断的条件是要满足以下几点:
php 版本小于 5.3.4
php的magic_quotes_gpc为OFF状态
所以上传失败

13.0x00截断

1.这里将%00进行url decode,转换为空字符,进行截断(GET可以url自动转码的,但POST不会)

2.可以使用Hex进行截断,在p后面添加一个空字符(00),p的16进制是0x70

绕过失败是由于php版本的原因

14.文件幻数绕过


文件幻数

GIF (gif),文件头hex:47 49 46 38(也就是GIF89a)
JPEG (jpg),文件头hex:FF D8 FF
PNG (png),文件头hex:89 50 4E 47


利用文件包含漏洞

制作图片马

上传s.png

利用文件包含漏洞

上传s.jpg

利用文件包含漏洞

15.图片马绕过

解法同14关。

16.图片马绕过

前提:需要开启php_exif扩展,php版本>5.2.17
否则会出现以下情况

解法同14关。

以上是关于Upload-labs的主要内容,如果未能解决你的问题,请参考以下文章

upload-labs之pass 16详细分析

upload-labs通关记录

安全-Pass02之MIME绕过(upload-labs)

Upload-labs(1-21关详细教程)简单易懂万字教程

实际操作文件上传漏洞-upload-labs

安全-Pass01之js绕过(upload-labs)