描述apache和iis文件解析漏洞的原理,以及如何修复apache文件解析漏洞和iis解析漏洞

解析漏洞的原理:

解析漏洞是指web服务器因对http请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行。该漏洞—般配合服务器的文件上传功能使用,以获取服务器的权限。

Apache文件解析漏洞原理:

Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如test.php.qwe.asd “.qwe”和”.asd” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.qwe.asd解析成php。

修复方法:

  1. apache配置文件,禁止php.这样的文件执行,配置文件里面加入

Order ALLow,Deny

Deny from all

2.用伪静态能解决这个问题,重写类似.php.*这类文件,打开apache的httpd.conf找到

LoadModule rewrite_module modules/mod_rewrite.so把#号去掉,重启 apache。

Iis文件解析漏洞原理:

目录解析漏洞(/test.asp/1.jpg)

在IIS5.x/6.0 中,在网站下建立文件夹的名字为*.asp、*.asa、*.cer、*.cdx 的文件夹,那么其目录内的任何扩展名的文件都会被IIS当做asp文件来解释并执行。例如创建目录 test.asp,那么 /test.asp/1.jpg 将被当做asp文件来执行。假设黑客可以控制上传文件夹路径,就可以不管上传后你的图片改不改名都能拿shell了。

文件名解析漏洞(test.asp;.jpg)

在IIS5.x/6.0 中, 分号后面的不被解析,也就是说 xie.asp;.jpg 会被服务器看成是xie.asp。还有IIS6.0默认的可执行文件除了asp还包含这两种 .asa .cer 。而有些网站对用户上传的文件进行校验,只是校验其后缀名。所以我们只要上传 *.asp;.jpg、*.asa;.jpg、*.cer;.jpg 后缀的文件,就可以通过服务器校验,并且服务器会把它当成asp文件执行。

畸形解析漏洞(test.jpg/*.php)

微软发布了IIS7.0修补了IIS6.0的解析漏洞,没想到IIS7.0爆出更严重的畸形解析漏洞,于是微软急忙发布了IIS7.5。

在IIS7.0中,在默认Fast-CGI开启状况下,我们往图片里面写入下面的代码

将文件保存成test.jpg格式,上传到服务器,假设上传路径为/upload,上传成功后,直接访问/upload/test.jpg/x.php,此时神奇的畸形解析开始发挥作用啦。test.jpg将会被服务器当成php文件执行,所以图片里面的代码就会被执行。我们会神奇的发现在 /upload 目录下创建了一个一句话木马文件 shell.php。

临时解决办法:设置cgi.fix_pathinfo为0。

其他解析漏洞

在windows环境下,xx.jpg[空格]或xx.jpg.这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单。若上传成功,空格和点都会被windows自动消除。

修复方法:

1.目前尚无微软官方的补丁,可以通过自己编写正则,阻止上传 xx.asp;.jpg类型

的文件名。

2.做好权限设置,限制用户创建文件夹。

3.针对IIS7.5解析漏洞修复方案,修改php.ini文件,将 cgi.fix_pathinfo的值设置为0

完成后请重启PHP和IIS

你可能感兴趣的:(apache,php)