一、文件解析漏洞
1、IIS6.0目录解析
只要存在一个xx.asp(xx.asa)的文件夹,里面所有的文件都会被解析为asp文件
2、IIS6.0分号后面不解析
a.asp;jpg,这样的文件会被解析成asp文件,另外*.cer,*.asa也都会被解析成为asp文件
3、apache解析漏洞,apache是从右往左解析后缀,直到解析到可以识别的后缀
假如有个文件是a.php.abc.aab.acd,apache最终解析为a.php
4、IIS7.0、IIS7.5、Nginx<8.03畸形解析漏洞
在默认Fast-CGI开启状况下,黑客上传一个名字为cracer.jpg,内容为’);?>的文件,然后访问cracer.jpg/.php,在这个目录下就会生成一句话木马shell.php
漏洞影响范围:nginx 0.7.65以下(0.5., 0.6., 0.7.* )全版本系列和0.8.37(0.8.*)以下8系列受影响。
http://ap.test.com/1.jpg/1.php
http://ap.test.com/1.php%00.jpg
5、.htaccess文件解析
如果在Apache中.htaccess可被执行,且可被上传,在.htaccess中写入: SetHandler application/x-httpd-php,然后再上传mst.jpg的木马, 这样mst.jpg就可解析为php文件
二、上传本地验证绕过
服务器命名规则
第一种:上传文件名和服务器命名一致
第二种:上传文件名和服务器命名不一致(随机)
1、客户端 Javascript检测(通常为检测文件扩展名)
首先判断js本地验证,在用burp抓包,提交的时候,burp没有抓到包,就已经弹出了弹框,说明本地验证
绕过方法:
删除监测函数
使用burp抓包改名
使用firebug直接删除本地验证的js代码
添加js验证的白名单,如将php的格式添加进去
2服务端MIME类型检测(检测 Content-Type内容)
直接使用bup抓包,得到post上传数据后,将 Content-Type内容改成image/png就可以成功绕过。
3.服务端目录路径检测(检测跟path参数相关的内容)
允许上传,但是上传到一个没有权限的文件夹,先抓包,发送到repeater,将路径修改为上级目录
三、上传服务端验证绕过
1、文件名大小写绕过
用像AsP,pHp之类的文件名绕过黑名单检测
2、名单列表绕过
用黑名单里没有的名单进行攻击,比如黑名单里没有asa或cer之类(asp:asa,cer,1.asp;.jpg,1.asp/1.jpg php:php3,php4,php5,php7)
3、特殊文件名绕过
比如发送的http包里把文件名改成test.asp.或test.asp_(下划线为空格),这种命名方式在windows系统是不被允许的,所以需要在burp之类里进行修改,然后绕验证后,会被windows系统自动去掉后面的点和空格,但要注意Uni/ Linux系统没有这个特性。
4、0×00截断绕过
把文件名修改为1.php%00.jpg,然后将%00编码
5、表单提交按钮
有的上传页面没有提交按钮,可以查看源码,然后添加一个
禁止非法,后果自负