文件上传漏洞基础

作者: const27 分类: All,文件上传漏洞 发布时间: 2020-06-03 12:36

文件上传

1.判断是黑名单验证还是白名单验证:

随便输个后缀名(不存在的那种),然后看看会不会被拦截,被拦截了就是白名单,没被拦截就是黑名单

2.前端验证和后端验证:

在网站源代码里使用js来进行上传验证的就是前端验证,处理办法就是把js禁用就行,或者先用正常的后缀名,然后burp抓包再改一下后缀名即可。
其他的就是后端验证,就要用各种绕过方法了

3.黑名单的时候,文件后缀名绕过:

1.php的常见后缀名:php2,php3,php4,php5,phtml
2.后缀大小写绕过
3.空格绕过(数据包中,文件末尾加空格)
4.点绕过(在文件名末尾加点,绕过waf,windows中会把.去掉然后文件名就回归正常了)
5.::DATA绕过(在文件名末尾加::DATA)
6.点空点绕过(在文件名末尾加. .  点+空格+点)
7.双写绕过
8.%00截断:在get传参中用,%00被视为终止符。当遇到文件名是拼接的时候可以用用这个。需满足 php 版本<5.3.4 才有可能存在此漏洞。使用时在文件名末尾加%00

4.MIME检查绕过:

直接修改content-type

5.幻数头检测/文件相关信息检测:

幻术头检测,修改文件的十六进制码,在文件开头添加一些文件的幻数头即可绕过。

FF D8 FF E0 00 10 4A 46 49 46  jpg幻数头
47 49 46 38 39 61                gif幻数头(你也可以直接下GIF89a)
89 50 4E 47                   png幻数头

文件相关信息检测,只需在幻数头绕过的基础上再紧跟着添加一些对应文件的十六进制码即可

6.上传.htaccess文件 适用于Apache

上传一个文件名为.htaccess的文件,内容为

 <FilesMatch "pino">   //pino的意思是文件名包含pino的文件都安装php文件处理 SetHandler application/x-httpd-php </FilesMatch> 
/**/另一种方法 
AddType application/x-httpd-php .muma   //意思是把.muma后缀的文件当作PHP文件处理 
php_value auto_append_file "php://filter/convert.base64-decode/resource=muma.muma //第二行要加上的原因是防止访问木马文件时会自动下载文件,前提是放送的木马文件本体要base64加密 

7.上传.user.ini 适用于Nginx,apache,iis

上传一个文件名为.user.ini的文件,内容为

auto_prepend_file=指定文件

即可达到在读取php文件时自动包含指定文件的目的,配合图片马即可getshell

8.PHP版本大于7后,就不能以<? language=’php’>的形式写PHP脚本

9.<?=str?> 绕过文件上传检测

<?=str?>等效于
<?php
echo(str);
?>
不过我们的str处可以写成 eval($_POST[‘a’]);
这样我们就相当于getshell了

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Leave a Reply

Your email address will not be published. Required fields are marked *

标签云