桂林老兵php,中间件解析漏洞

IIS

IIS解析漏洞

IIS 6.0解析利用方法有两种:

1:文件解析

在IIS6.0下,分号,冒号后面的不被解析,也就是说

wooyun.asp;123.jpg会被服务器看成是wooyun.asp

以下格式也会被解析:*.asa、*.asp,*.cer;*.cdx

2:目录解析

当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当作asp文件来解析。

3.默认解析:

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

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

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

IIS PUT漏洞

2个错误配置造成

1.WEB服务器扩展里设置WebDAV为允许;

2.网站权限配置里开启了写入权限。

使用桂林老兵的工具

IIS溢出漏洞

开启WebDAV服务的IIS 6.0被爆存在缓存区溢出漏洞导致远程代码执行,针对 Windows Server 2003 R2

IIS短文件名漏洞

成因:

为了兼容16位MS-DOS程序,windowes为文件名较长的文件(和文件夹)生成了对应的windows8.3短文件名;

短文件名特征:

只有前6位字符直接显示,后续字符用~1指代。其中数字1还可以递增,有可能存在多个文件名类似(名称前6位必须相同,且后缀名前3位必须相同)

后缀名最长只有3位,多余被截断。

危害

攻击者可以利用“~”字符猜解或遍历服务器中的文件名;

对IIS服务器中的.net Framework进行拒绝服务攻击;

利用"~"字符猜解暴露短问文件/文件名夹

使用通配符"*"和"?"发送一个请求到IIS,当IIS收到一个文件路径中包含"~"的请求时,服务器的返回值是不同的,可以根据返回值判断一个存在或者不存在的文件;

1.   访问构造的某个存在的短文件名,会返回404

2.   访问构造的某个不存在的短文件名,会返回400

eg:http://www.xxx.com/*~1.*a*/.aspx(判断后缀名)

3083

eg:http://www.xxx.com/a*~1*/.aspx(判断是否存在a开头的文件)

Apache

解析漏洞

后缀解析:test.php.x1.x2.x3

构造服务器端虚假扩展名检测上传

将一句话木马的文件名lubr.php改成lubr.php.abc。首先,服务器验证文件扩展名的时候,验证的是.abc,只要改扩展名不符合服务器端黑名单规则,即可上传。另外,当在浏览器端访问该文件时,Apache如果解析不了.abc扩展名,会向前寻找可解析的扩展名,即”.php”。一句话木马可以被解析,即可通过中国菜刀连接。

Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断

如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个wooyun.php.rara.jpg.png…(把你知道的常见后缀都写上…)去测试是否是合法后缀

修复:

方法一

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

3083

方法二

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

LoadModule rewrite_module modules/mod_rewrite.so

把#号去掉,重启apache,在网站根目录下建立.htaccess文件,代码如下:

3083

经验之谈:php|php3|phtml|php4|php5 多可被Apache解析

php-cgi

什么是CGI?

(Common Gateway Interface)通用网关接口,是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。

在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。

功能:

绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。

Nginx解析时从后往前解析。

Nginx是一款高性能的web服务器,通常用来作为php的解析容器。

在php的配置文件中有一个关键的选项:cgi.fi: x_pathinfo,这个选项在某些版本是默认来开启的,所以php将会向前递归解析,于是就造成了解析漏洞,由于这种漏洞常见于IIS7.0、IIS7.5、Nginx等web服务器,所以经常会被误认为这些事web服务器的解析漏洞,也因为Nginx与php配合很容易造成这种解析漏洞,所以PHP CGI漏洞常常被认为是Nginx解析漏洞。

IIS&Nginx

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

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

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

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

或者直接访问wooyun.jpg/.php,就会被以PHP方式解析

原理

nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在 Nginx配置文件中

通过正则匹配设置 SCRIPT_FILENAME。

当访可http://192.1681.103/ phpinfo. jpg/1.php这个URL时

$fastcgi_script_name会被设置为 “phpinfo.jpg/1.php”,然后构造成

SCRIPT_FILENAME传递给 PHP CGI,如果PHP中开启了 fix_pathing这个选项

PHP会认为 SCRIPT_FILENAME是 phpinfo.jpg,而1.php是 PATH_INFO,所以就

会将 phpinfo.jpg作为PHP文件来解析了。

漏洞解决方案

方案一:修改php.ini,设置cgi.fix_pathinfo = 0;然后重启php-cgi。此修改会影响到使用PATH_INFO伪静态的应用,

方案二:在nginx的配置文件添加如下内容后重启:1992。

该匹配会影响类似http://www.domain.com/software/5.0/test.php(5.0为目录),http://www.domain.com/goto.php/phpwind 的URL访问。

方案三:对于存储图片的location{...},或虚拟主机server{...},只允许纯静态访问,不配置PHP访问。

例如在金山逍遥网论坛、SNS上传的图片、附件,会传送到专门的图片、附件存储服务器集群上(pic.xoyo.com),这组服务器提供纯静态服务,无任何动态PHP配置。

各大网站几乎全部进行了图片服务器分离,因此Nginx的此次漏洞对大型网站影响不大。

方案四:修改nginx配置文件:

location ~* .*\.php($|/)

{

if ($request_filename ~* (.*)\.php) {

set $php_url $1;

}

if (!-e $php_url.php) {

return 403;

}

fastcgi_pass  127.0.0.1:9000;

fastcgi_index index.php;

include fcgi.conf;

}

if($fastcgi_script_name~\..*\/.*php){

return 403;

}

Nginx <=0.8.37

在Fast-CGI关闭的情况下,Nginx <=0.8.37 依然存在解析漏洞

在一个文件路径(/xx.jpg)后面加上%00.php会将 /xx.jpg%00.php 解析为 php 文件。

这是从 /test.jpg/x.php 演变过来的,具体可以参考:Ngnix空字节可远程执行代码漏洞

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值