之前本站科普了文件上传漏洞中关于客户端JS验证,服务端MIME验证,以及服务端目录路径验证等文章,今天我们科普一下关于服务端扩展名验证的绕过。服务端扩展名的绕过使用的还是比较多的,很普遍。
服务端扩展名验证一般存在漏洞的都是采用黑名单机制来过滤用户上传文件,会有一个黑名单列表来包含不允许上传的脚本文件,例如fckeditor 2.4.3 或之前版本的黑名单。
服务端扩展名验证演示代码
文件上传漏洞演示脚本--服务端扩展名验证实例 文件上传漏洞演示脚本--服务端扩展名验证实例
服务端扩展名验证绕过方法:
1、找黑名单扩展名的漏网之鱼 - 比如上面就漏掉了 asa 和 cer 之类
2、可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类
3、特别文件名构造 - 比如发送的 http 包里把文件名改成 help.asp. 或 help.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改, 然后绕过验证后,会被 windows 系统自动去掉后面的点和空格。
4、IIS 或 nginx 文件名解析漏洞 - 比如 help.asp;.jpg 或 http://www.xx.com/help.jpg/2.php这里注意网上所谓的 nginx 文件名解析漏洞实际上是 php-fpm 文件名解析漏洞,详见 http://www.cnbeta.com/articles/111752.htm
5、0x00 截断绕过 - 这个是基于一个组合逻辑漏洞造成的
6、双扩展名解析绕过攻击(1) - 基于 web 服务的解析逻辑
比如上传x.php.rar等文件
7、双扩展名解析绕过攻击(2) - 基于 web 服务的解析方式
AddHandler php5-script .php
这时只要文件名里包含.php
即使文件名是 test2.php.jpg 也会以 php 来执行
以上方法来自Bypass Upload Validation Framework V0.9,感谢原作者。
针对本文的代码,最简单的就是使用更改大小写上传即可,或者使用上面的多种方法测试。
相关文章:
from www.waitalone.cn.thanks for it.
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论