文件上传漏洞小结

1.原理

利用web容器特性和上传过滤不严谨上传含恶意代码的文件。

2. 解析漏洞

学习文件上传漏洞是离不开web容器解析漏洞的,下面介绍一些常见web容器IIS、APACHE、NGINX的解析漏洞

2.1 IIS解析漏洞

2.1.1 IIS 6.0
(1)目录解析
建立*.asp/asa文件夹时,包含一个1.txt文件,则访问1.txt时,因为在 *.asp/asa文件夹中1.txt文件会被当做asp脚本执行。
(2)截断
当文件为*.asp;1.jpg时,也会被当做asp脚本执行。
2.1.2 IIS7/7.5
在Fast-CGI运行模式下,在一个文件路径(/1.jpg)后面加上/2.php会将/1.jpg/2.php 解析为 php 文件。
条件:php.ini里默认cgi.fix_pathinfo=1;
2.2 Apache解析漏洞
Apache在解析文件时,从右往左解析,遇到不认识的扩展名就向前继续解析,直到遇到认识的扩展名,如果都不认识,则暴露其源代码
当一个文件为1.php.rar.ss.aa,不认识aa,会一直向前解析,直到遍历到认识的扩展名。
2.3 NGINX解析漏洞
也叫PHPCGI漏洞,实质上是因为php.ini中的cgi.fix_pathinfo默认是开启的。
在访问1.jpg这个文件时以这种去访问/1.jpg/1.php(1.php实际上不存在),会被当做PHP代码去执行。

3. 上传检测类型

3.1 客户端检测

3.1.1 原理
利用javascript对选择的文件后缀进行检测,在没有点击上传前就已做判断。
3.1.2 绕过方法
(1)在firebug更改jsp代码,删除相应代码的函数
(2)关掉浏览器js执行
(3)将脚本文件扩展名改成允许上传的扩展名,上传时抓包,更改为原扩展名即可。

3.2 服务器端类型检测

3.2.1 黑/白名单过滤

  • 黑名单:设置过滤器,过滤掉不允许上传的文件类型
  • 白名单:列出允许上传的文件类型,不满足则不允许上传

3.2.2 MIME类型检测
MIME类型用来设定某种扩展名文件的打开方式,当文件被访问时,浏览器自动使用指定的应用程序来打开。如GIF图片MIME为image/gif。

  • 利用方法:
    抓包更改MIME类型。
    3.2.3 目录验证
    上传文件时,如果指定的目录存在就将文件写入该目录,要是不存在则新建该目录。
  • 利用方法:
    结合IIS 6.0解析漏洞,自定义文件夹为1.asp,当服务器不存在该目录时创建,上传的1.jpg则会被当做asp脚本执行。
    3.2.4 截断上传
    %00截断漏洞,在asp程序中最常见

4. 修复方法

  • 对文件进行重命名、
  • 接收文件时用临时路径存放、
  • 获取扩展名与白名单对比,没有则退出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值