常见的几种文件上传漏洞导致的原因 及修复方案



       在日常对客户网站进行渗透测试服务的时候,我们SINE安全经常遇到客户网站,app存在文

件上传功能,程序员在设计开发代码的过程中都会对上传的文件类型,格式
,后缀名做安全效

验与过滤判断,SINE安全工程师在对文件上传漏洞进行测试的时
候,往往发现的网站漏洞都是

由于服务器的环境漏洞导致的,像IIS,
apache,nginx环境,都存在着可以导致任意文件上传的

漏洞。

 
 
关于导致文件上传漏洞的产生以及测试,我们来详细的分析一下:
 
IIS解析漏洞导致的任意文件上传
 
首先比较常见的是客户网站使用的IIS环境来搭建的,一般是IIS+PHP+Mysql数据库组合,或者是

IIS+aspx+sql2005数据库,IIS存在解析漏洞,当创建文件名为.php
的时候,在这个目录下的所有

文件,或者代码,都会以PHP脚本的权限去运行,比
如其中一个客户网站,可以将上传的目录改

为1.php,那么我们上传的jpg文件到这
个目录下,访问的网址是www.ceshi.com/1.php/1.jpg

从浏览器里访问这个地址
,就会是php脚本的权限运行。当上传网站木马webshell过去,就会直

接拿到网站
的管理权限。存在IIS解析漏洞的版本是5.0-6.0版本。
 
 
nginx解析漏洞导致的任意文件上传
 
nginx是静态访问,以及大并发,能够承载多人访问,目前很多网站都在使用的一种服务器环境

,简单来讲就是HTTP访问的代理,高速稳定,深受很多网站运营者的
喜欢,在nginx最低版本

中存在解析漏洞,可以导致运行PHP脚本文件,漏洞产生的
原因是由于php.ini配置文件与nginx

配合解析的时候,将默认的后缀名认为是最重
的文件名,导致可以修改后缀名来执行PHP文件。

我们SINE安全在渗透测试中发现
客户网站开启nginx以及fast-cgi模式后,就会很容易的上传网

站木马到网站目录
中,我们将jpg图片文件插入一句话木马代码,并上传到网站的图片目录中。
 
 
我们在访问这个图片的时候,直接在后面输入/1.php,就会导致图片文件以php脚本权限来运

行了。如下图所示:

 
 
apache解析漏洞导致的任意文件上传
 
apache也是目前使用较多的一个服务器环境,尤其php网站使用的较多,因为稳定,快速,易于

PHP访问,可以将第三方的一些开发语言编译到网站中,apache也是
存在漏洞的,尤其在apach

e1.0-2.0版本中,后缀名判断这里没有做详细的规定,
导致可以绕过apache安全机制,上传恶意

的文件名。默认是允许多个后缀名进行解
析的,如果命名的后缀名不被apache认可解析,就会向

前寻找后缀名,直到后缀名
是apache认可的,就会直接解析成功。 该文件上传漏洞使用的条件

是需要开启
module模式,不是这个模式的上传不了。我们SINE安全在对客户网站进行渗透测试
 
的时候,首先会改后缀名为apache不认可的,然后POST上传过去,直接运行php脚本。如下图

所示:
 
 
总的来说导致任意文件上传漏洞的发生也存在于服务器环境中,那么在渗透测试过程中该如何的

修复漏洞呢?将IIS版本升级到7.0以上,Nginx版本也升级到最新版
本,包括apache版本升级到

2.4以上,在上传功能代码里对其进行文件格式的判断
,限制目录的创建,可杜绝以上的问题的

发生。
 
 
 
 
分享: