PHP是用C语言编辑的,MySQL则是用C 撰写的,而Apache则绝大多数是采用C语言编辑的,一小部分是应用C 撰写的。因此,文件解析漏洞的实质或是要大家发掘C语言、C 的漏洞。
文件解析漏洞就是指分布式数据库(IIS、Apache、Nginx等)在解析文件时发生了漏洞,进而攻击者可以使用该漏洞完成不法文件的解析。必须留意的是文件解析漏洞与文件提交漏洞是两回事,文件解析漏洞是根据文件提交以后的。
例如Apache分布式数据库是C语言与C 混和编为的,当Apache分布式数据库发生了解析漏洞,无论大家PHP代码方面怎样安全性,都没法抵御攻击者的进攻,由于如今的漏洞早已与PHP代码层不相干,早已是最底层的安全隐患了。
文件解析漏洞便是由于Apache分布式数据库的C语言或是C 的程序编写发生了漏洞,造成攻击者可以使用该漏洞解析不法文件。因此,最底层安全性比一切安全性都需要关键,最少大家从今天起,要逐渐高度重视最底层安全性。
下面,大家详细介绍Apache解析PHP文件的基本原理。
当Apache(httpd.exe)运作以后,逐渐监视Web电脑浏览器推送的要求,阻拦要求,简易解决后再将该要求告之PHP代码解析器(CGI、FAST-CGI或是Apache Module)解析特殊的PHP文件。PHP代码解析器解析文件进行以后,回到HTML网页页面给Apache,Apache再将HTML页面回应到Web电脑浏览器,就是这样循环系统。在Apache解析一切正常PHP文件的情况下,自然是没问题的。可是,当发生畸型文件的情况下,Apache又该如何处理呢?实际上,在httpd.conf文件中,有一个设定DefaultType text/plain,这一设定告知大家Apache在碰到无法识别的文件时,它会作出如何的反映。例如DefaultType text/plain,在那样的安装条件下,当Apache碰到无法识别的文件时,便会将这种无法识别的文件全都做为文字文件来解析。在这里,无法识别代表什么意思呢?原先在Apache的conf文件目录下边有一个mime.types文件(Linux在etc/mime.types),这一文件的信息便是Apache预订义的一些可以一切正常解析的文件。例如照片的Content-type与其说文件的对应关系如下所示。
image/jpeg:相匹配jpeg、jpg、jpe文件。
image/gif:对应gif文件。
image/png:相匹配png文件。
image/ief:对应ief文件。
image/g3fax:相匹配g3文件。
当Apache碰到一切正常文件却没法解析的情况下,可以在里边手动式加上解析种类。例如,想下载一个Word文件,可是,Apache却把Word文件以rar文件的方式回到。这样的事情,便是由于Apache沒有在mime.types文件(或者httpd.conf文件)中鉴别到Word文件。那麼,它只有根据剖析该文件的自身內容,觉得它是一个缩小文件,最终,Apache回到一个缩小文件。对于是啥文件格式的缩小文件,仅有Apache才知道。这时,假如我们要Apache能一切正常鉴别Word文件,就必须在mime.types文件中再加上下列三句代码:
那样,Apache就可以一切正常回到Word文件了。实际上还可以在http.conf文件中设定文件解析种类,应用Apache的AddType 命令设定,代码如下所示。
提议不要再去改动mime.types文件,加上文件解析种类时建议应用Apache的AddType命令。因而,针对在mime.types文件或是httpd.conf文件里都无法识别的文件解析种类,Apache便会默认设置依照DefaultType text/plain这一字段名得出的值来解析这一无法识别的文件。可能在应用这一值以前,也有一段解析认证,例如免费下载Word文件而回到rar文件。有感兴趣的可以分析下Apache的代码,科学研究下咱们的文件解析漏洞到底是产生在Apache架构代码的哪个支系上?
某站文件存有解析漏洞,攻击者可在IIS 网络服务器中的C:\inetpub\wwwroot文件目录下创建一个名叫aa.asp的文件夹,如下图1所显示。
图1 创建可实行文件目录
下面,攻击者在当地新创建aa.jpg文件并向在其中载入ASP一句话木马代码。随后,攻击者将已载入ASP一句话木马代码的aa.jpg图片木马病毒文件提交至aa.asp文件夹。最终,攻击者应用中国菜刀联接aa.asp文件夹下刚刚提交的aa.jpg图片木马病毒文件,就可以得到webshell,如下图2所显示。
图2 获得webshell