文件解析漏洞
前言
文件解析漏洞,是指中间件(Apache、nginx、iis等)在解析文件时出现了漏洞,从而,黑客可以利用该漏洞实现非法文件的解析。
需要注意的是解析漏洞与上传漏洞是两码事,文件解析漏洞是基于文件上传之后而言的。
Apache解析漏洞
apache文件解析漏洞与用户的配置有密切关系。严格来说属于用户配置问题。
一个重要文件/etc/mime.types
这里记录了大量的文件后缀和mime类型,当客户端请求一个文件的时候如果后缀在这个列表里,那么apache就返回对应的content-type给游览器如果没有就不会返回而是直接返回文件内容由游览器自动处理。
因此对URL从右往左逐层判断解析,不可解析就一直往左解析判断,直到能正确解析出文件。
上传木马文件时,将合法后缀放在URL最右,绕过本地文件上传限制和服务器的类比黑名单验证,Apache服务器就会逐层从右往左解析,如xx.php.jpg.rar的一个木马文件最后会到php成功解析,那么木马也就成功执行了。
IIS解析漏洞
实际环境漏洞中IIS一般是和asp搭配的,上传的地方如果限制了.asp的后缀名,那么可以使用其他IIS支持的文件后缀。(.cer和.asa)
一种是IIS5.x/6.0解析漏洞
在网站下建立文件夹啊名称中带有.asp,.asa等可执行的脚本文件后缀为后缀的文件夹,其目录内的任何扩展名的文件都被当作可执行文件来解析
另外还有文件解析,IIS6.0下分号后面的不解析,也就是xx.asp;.jpg被当成xx.asp来解析,除了asp还有.asa,.cer,.cdx都可以被解析。
一种是IIS7.0/IIS7.5的畸形漏洞解析
test.jpg/.php,无论文件是否存在都直接交给php处理,而在Fast-CGI开启下,会在例如URL为http://www.xxx.com/xx.jpg/.php
中将xx.jpg当成php解析
Nginx解析漏洞
1、对任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加为test.jpg/x.php 进行解析攻击。
在CVE-2013-4547 Nginx下
还存在着将如下URL http://www.xx.com/a.jpg%00\0.php中的a.jpg当作php执行漏洞
2、对低版本的Nginx可以在任意文件名后面添加%00.php 进行解析攻击。
在Nginx0.5,0.6以及0.7 ⇐ 0.7.65,0.8 ⇐ 0.8.37上存在空字节代码执行漏洞,也就是在访问如以下http://www.xxx.com/xx.jpg%00.php中会将xx.jpg当作php文件解析。它将.jpg%00看成一段字符。