在一样平常对客户网站举行渗入测试效劳的时刻,我们SINE平安常常碰到客户网站,app存在文件上传功用,程序员在设想开辟代码的历程当中都邑对上传的文件范例,花样,后缀名做平安效验与过滤推断,SINE平安工程师在对文件上传破绽举行测试的时刻,每每发明的网站破绽都是由于效劳器的环境破绽致使的,像IIS,apache,nginx环境,都存在着可以致使恣意文件上传的破绽。
关于致使文件上传破绽的发作以及测试,我们来细致的剖析一下:
IIS剖析破绽致使的恣意文件上传
起首比较罕见的是客户网站运用的IIS环境来搭建的,平常是IIS+PHP+Mysql数据库组合,或许IIS+aspx+sql2005数据库,IIS存在剖析破绽,当建立文件名为.php的时刻,在这个目次下的一切文件,或许代码,都邑以PHP剧本的权限去运转,比方个中一个客户网站,可以将上传的目次改成1.php,那末我们上传的jpg文件到这个目次下,接见的网址是域名/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也是存在破绽的,特别在apache1.0-2.0版本中,后缀名推断这里没有做细致的划定,致使可以绕过apache平安机制,上传歹意的文件名。默许是许可多个后缀名举行剖析的,假如定名的后缀名不被apache承认剖析,就会向前寻觅后缀名,直到后缀名是apache承认的,就会直接剖析胜利。 该文件上传破绽运用的前提是须要开启module形式,不是这个形式的上传不了。我们SINE平安在对客户网站举行渗入测试的时刻,起首会改后缀名为apache不承认的,然后POST上传过去,直接运转php剧本。如下图所示:
总的来说致使恣意文件上传破绽的发作也存在于效劳器环境中,那末在渗入测试历程当中该怎样的修复破绽呢?将IIS版本升级到7.0以上,Nginx版本也升级到最新版本,包含apache版本升级到2.4以上,在上传功用代码里对其举行文件花样的推断,限定目次的建立,可根绝以上的题目的发作。