Apache/IIS/Nginx中间件解析漏洞

目录

IIS5.x/6.0解析漏洞

Apache解析漏洞

Nginx解析漏洞

IIS7.5解析漏洞


IIS5.x/6.0解析漏洞

使用iis5.x-6.x版本的服务器大多为windows server 2003,由于网站比较古老,开发语句一般为asp,该解析漏洞只能解析asp文件,而不能解析aspx文件,得安装.net框架

目录解析(6.0)

形式:www.xxx.com/xx.asp/xx.jpg

原理:服务器会默认把asp,asa目录下的文件都解析成asp文件

例如创建一个文件夹,将文件夹重命名为1.asp,那么在此文件夹内创建一个一句话木马,会被当成asp解析,假设攻击者可以控制上传文件夹路径,即可拿shell

文件解析

形式:www.xxx.com/xx.asp;.jpg

原理:服务器默认不解析;后面的内容,因此xx.asp;.jsp会解析成asp文件

解析文件类型(IIS6.0 默认的可执行文件除了asp)

  • xxx.asa

  • xxx.cer

  • xxx.cdx

Apache解析漏洞

漏洞原理:

对于Apache来说,它认为一个文件可以有多个后缀,就像:test.txt.png.jpg,但是放在windows大多数操作系统眼里,它认为最后一个“.”后的“jpg”为后缀,Apache解析文件的规则是从右到左开始判断,如果后缀名为Apache不认识不可解析的文件时,则再往左判断,比如/test.php.owf.rar,".owf"和".rar"这种后缀的Apache不可直接解析,Apache就会把/test.php.owf.rar解析成它所认知的,也就是php文件

漏洞形式:www.xxx.com/test.php.pzzzp

其余配置文件导致漏洞(运维人员修改或版本未升级)

(1)如果在apache的conf里有这样一行配置Addhandler php5-script.php,这时只需文件名里面包含.php即使文件名为test2.php.jpg也会以php来执行

(2)如果在apache的conf里有这样一行配置AddType application/x-httpd-php.jpg,即使扩展名为jpg,一样以php方法执行

Nginx解析漏洞

nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xxx.com/phpinfo.jpg/1.php这个链接时,$fastcgi_script_name会被设置为"phpinfo.jpg/1.php",然后构造SCRIPT_FILENAME传递给PHP CGI,但是PHP为什么会接受这样的参数,并且将phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo选项了,如果开起这个选项(该值默认为1,表示开启)

那么就会触发PHP中如下逻辑:

PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析

简单来说就是Nginx拿到文件路径www.xxx.com/phpinfo.jpg/1.php后,由于后缀为php,默认交给php去处理,但是php处理过程中发现/phpinfo.jpg/1.php其实并不存在,便删除1.php,由于phpinfo.jpg存在,便当成需要执行的文件执行

漏洞主要形式

www.xxx.com/Upload/image/1.jpg/1.php

www.xxx.com/Upload/image/1.jpg%00.php

www.xxx.com/Upload/image/1.jpg/%20\1.php(CVE-2013-4547)

或上传一个名字为test.jpg,内容如下:

<?php fputs(fopen('shell.php','w'),'<?php phpinfo();?>');?>

然后访问/test.jpg/.php,在这个目录下就会生成一句话木马shell.php

修复方案:

(1)修改php.ini文件,设置cgi.fix_pathinfo的值为0;

(2)在Nginx配置文件中添加如下代码:

if($fastcgi_script_name~ ..*/.*php){
return 403;
}//匹配到类似test.jpg/a.php的URL时,返回403错误代码

(3)新版本的php引入了“security.limit_extensions”,限制了可执行文件的后缀,默认只允许执行.php文件

IIS7.5解析漏洞

iis7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了fix_pathinfo,并不是nginx本身的漏洞

当安装完成之后,php.ini默认将fix_pathinfo设置为1,进行访问的时候,会在URL路径后添加.php后缀名会被当做php文件解析

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值