一、中间件文件解析——IIS&Apache&Nginx
1、IIS
IIS爆过漏洞的版本:IIS6.0(windows server 2003)、IIS7.0和IIS7.5(windows server 2008)
IIS6.0解析漏洞:
- 文件名:x.asp;x.jpg,jpg的文件后缀名,但是会被解析为asp文件;
- 目录名:x.asp/x.jpg, 文件目录名含有.asp后缀,x.jpg也会被解析为asp文件。
触发条件:
- IIS6.0这个中间件;
- 上传文件能不能修改上传目录或上传的文件名能更改。
若上传的文件名固定或者目录无法创建,那么该漏洞将无用武之地。
后端对上传的文件命名有三种方式:基于上传名进行命名(就是说上传什么名就是什么名);基于时间进行命名;基于随机字符进行命名。
IIS7.0与IIS7.5解析漏洞与Nginx解析漏洞一样。
2、Apache
Apache%0a解析漏洞(CVE-2017-15715):1.php%oa可以绕过对php的黑名单。Apache文件解析漏洞(\x0A,.htaccess,多后缀)
触发条件:
- Apache中间件
- 黑名单验证(在黑名单的后缀不让上传,既然不让上传就可以用php%0a进行绕过)
白名单可能不行(在白名单里面的后缀才可以上传,如jpg、png、gif等),若构造1.jpg.php%0a,没有考虑以最后一个点为后缀,白名单也可以绕过。
apache多后缀解析,往往是配置不当,若上传的文件名变了,这个漏洞也没用。
3、Nginx
Nginx 文件名逻辑漏洞(CVE-2013-4547)
上传一个带空格的文件1.gif[空格]
;
访问上传的文件1.gif[0x20][0x00].php
二、web编辑器
编辑器:如UEditor编辑器,直接找爆出过的漏洞。
关于文件上传思路:
- 看中间件,看中间件是否爆出过解析漏洞,看我们是否能利用;
- 文件上传来着编辑器还是代码段;
- 来自编辑器,则找编辑器是否有相关漏洞;
- 来自代码段,老老实实抓包,使用代码段那一套来绕过规则进行文件上传。
java网站的中间件没有解析漏洞。