黑名单/白名单

黑名单/白名单
后端验证
后缀名:黑名单,白名单
文件头:内容头信息
文件类型:MIME类型
黑名单
asp,php,jsp,aspx,cqi,war.....
缺陷:记录不全,比如php5,phtml等,没有加入黑名单。
白名单
jpg,png,rar,zip,gif........
文件类型

http消息中有个Content-Type类型,可以修改此处类型来绕过
文件头
jpg,png,gif等文件都有特定的文件头格式,如果只检查文件头不检查内容的话,可以抓包然后修改文件头内容,进行绕过
PHP函数$FILES详解
在PHP中上传一个文件建一个表单要比ASP中灵活得多。具体的看代码。
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
<input name="myFile" type="file">
<input type="submit" value="上传文件">
</form> 然后upload.php中可以直接用 $_FILES $_POST $_GET 等函数获取表单内容。 当客户端提交后,我们获得了一个$_FILES 数组
$_FILES数组内容如下:
$_FILES['myFile']['name'] 客户端文件的原名称。 $_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。 $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。 $_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。 $_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
https://blog.csdn.net/haoyunyun888/article/details/81079274
https://www.jb51.net/article/46787.htm
在学习文件上传漏洞后,我们不能之将目光局限于网站,中间件上面也可能存在文件上传漏洞

中间件解析漏洞
1. Apache低版本解析漏洞
比如对于1.php.xxx,在解析的时候不认识xxx后缀,继续向前解析,解析到认识的为止,在此版本的Apace中,我们可以上传一个无法识别的后缀,达到上传目的
2.Apace上传.htaccess文件
3. Apache HTTPD换行解析漏洞
Apache版本2.4.0-2.4.9
CVE-2017-15715,

https://vulhub.org/#/environments/httpd/CVE-2017-15715/
博客园复现:https://www.cnblogs.com/0dot7/p/17209300.html
4.Nginx 文件名逻辑漏洞(CVE-2013-4547)
vulhub链接:https://vulhub.org/#/environments/nginx/CVE-2013-4547/
参考链接:https://www.cnblogs.com/Junglezt/p/18119782
WEB编辑器漏洞
https://blog.csdn.net/qq_42321190/article/details/138759016
CMS文件上传
如果识别除了一个网站的CMS,可以使用网上的漏洞进行测试
如何寻找上传点
1.扫描
2.网站会员中心