File Upload Vulnerability
Article Directory
File upload blacklist bypass
1. Case bypass
2. Other suffixes
常用后缀
asp/aspx:asp,aspx,asa,asax,ascx,ashx,asmx,cer,aSp,aSpx,aSa,aSax,aScx,aShx,aSmx,cEr
php:php,php5,php4,php3,php2,pHp,pHp5,pHp4,pHp3,pHp2,html,htm,phtml,pht,Html,Htm,pHtml
js:jsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,jSw,jSv,jSpf,jHtml
3.%00 truncation (%00 marks the end of the file name)
url编码%00代表为空,即二进制数据全为0
文件识别过程:文件名.文件类型
(1)当文件名在url时,即以get方式上传时,%00可被默认url解码,直接加入在文件后缀后加%00
扩展:路径+文件名===>路径a.php%00+文件名,%00截断,识别为路径a.php%00
(2)post时,可以先将文件后缀加入 空格+.jpg,利用burp hex功能将空格的编码20改为00即可。
4.利用解析漏洞(中间件漏洞)
```bash
iis:
a.php;.jpg。iis从前向后解析读,识别为php,但是上传文件名就是a.php;.jpg(;用于隔开文件,有;表示两个文件)。
apache:
a.php.aaa。从后往前读文件名,上传文件名a.php.aaa(不在黑名单的类型aaa),apache无法解析aaa,会解析php。
Nginx:
a.php/.jpg。nginx从前往后解析解析为php
5. A single directory configuration file,
.htaccess:
AddType application/x-httpd-php .jpg
(将本目录下的所用jpg文件识别为php)
.user.ini
应用条件:
PHPstudy
php5.6以下不带nts的版本
.user.ini
6.’.’
'a.php.'
识别时会识别为'.空',即空格式,黑名单通过创建文件时,不会加入'.',访问的时候会被删掉,可绕过黑名单过滤。
7.::$DATA
'a.php::$DATA'
引入文件内容,Windows文件系统,不适用于linux,读取时也会忽略,可绕过黑名单过滤。
8. Double write