请问IIS有什么漏洞?
? 问题点数:20、回复次数:4Top
1 楼yishao(飞龙)回复于 2003-08-04 02:26:19 得分 10
安全焦点漏洞描述
IIS漏洞
--------------------------------------------------------------------------------
1.名字:IIS unicode漏洞
中联绿盟安全公告(SA2000-06)
Microsoft IIS Unicode解码目录遍历漏洞
Nsfocus安全小组(security@nsfocus.com)
http://www.nsfocus.com
发布日期: 2000/10/20
受影响的软件及系统:
==================
- Microsoft IIS 4.0
- Microsoft IIS 5.0
综述:
=====
NSFOCUS安全小组发现微软IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。
漏洞分析:
==========
对于IIS 5.0/4.0中文版,当IIS收到的URL请求的文件名中包含一个特殊的编码例如"%c1%hh"或者"%c0%hh",它会首先将其解码变成:0xc10xhh,然后尝试打开这个文件,Windows 系统认为0xc10xhh可能是unicode编码,因此它会首先将其解码,如果 0x00<= %hh < 0x40的话,采用的解码的格式与下面的格式类似:
%c1%hh -> (0xc1 - 0xc0) * 0x40 + 0xhh
%c0%hh -> (0xc0 - 0xc0) * 0x40 + 0xhh
例如,在Windows 2000 简体中文版 + IIS 5.0 + SP1系统下测试:
http://target/A.ida/%c1%00.ida
IIS会报告说 "@.ida" 文件找不到
这里: (0xc1-0xc0)*0x40+0x00=0x40='@'
http://target/A.ida/%c1%01.ida
IIS会报告说 "A.ida" 文件找不到
这里: (0xc1-0xc0)*0x40+0x01=0x41='A'
http://target/A.ida/%c1%02.ida
IIS会报告说 "B.ida" 文件找不到
这里: (0xc1-0xc0)*0x40+0x02=0x42='B'
.....
http://target/A.ida/%c0%21.ida
IIS会报告说 "!.ida" 文件找不到
这里: (0xc0-0xc0)*0x40+0x21=0x21='!'
....
因此,利用这种编码,我们可以构造很多字符,例如:
%c1%1c -> (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
%c0%2f -> (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
攻击者可以利用这个漏洞来绕过IIS的路径检查,去执行或者打开任意的文件。
Rain Forest Puppy 测试发现对于英文版的IIS 4.0/5.0,
此问题同样存在,只是编码格式略有不同,变成"%c0%af"或者"%c1%9c".
漏洞测试:
==========
(1) 如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能列出当前目录的内容:
http://www.victim.com/scripts/..%c1%1c..%c1%1c..%c1%1c..%c1%1c../winnt/system32/cmd.exe?/c+dir
(2) 利用这个漏洞查看系统文件内容也是可能的:
http://www.victim.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini
临时解决方法:
============
1、如果不需要可执行的CGI,可以删除可执行虚拟目录,例如 /scripts等等。
2、如果确实需要可执行的虚拟目录,建议可执行虚拟目录单独在一个分区。
解决方案:
==========
微软已就此发布了一个安全公告(MS00-078) 以及相应补丁。
您可以在下列地址看到微软安全公告的详细内容:
http://www.microsoft.com/technet/security/bulletin/ms00-078.asp
补丁程序可以在下列地址下载:
. Microsoft IIS 4.0:
http://www.microsoft.com/ntserver/nts/downloads/critical/q269862/default.asp
. Microsoft IIS 5.0:
http://www.microsoft.com/windows2000/downloads/critical/q269862/default.asp
注意:这个补丁程序与MS00-57中所提供的补丁是同一个程序,如果您已经安装了MS00-57中的补丁,您可以不用再重新安装此补丁程序。
声明:
=====
本安全公告仅用来描述可能存在的安全问题,中联绿盟信息技术公司不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,中联绿盟信息技术公司以及安全公告作者不为此承担任何责任。
中联绿盟信息技术公司拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经中联绿盟信息技术公司允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。
2.名字:Microsoft IIS CGI文件名错误解码漏洞
中联绿盟安全公告(SA2001-02)
Microsoft IIS CGI文件名错误解码漏洞
Nsfocus安全小组(security@nsfocus.com)
http://www.nsfocus.com/
发布日期: 2001/05/15
CVE CAN ID : CAN-2001-0333
受影响的软件及系统:
==================
- Microsoft IIS 4.0
- Microsoft IIS 5.0
不受影响的软件及系统:
===================
- Windows IIS 4.0 (sp6/sp6a 没有安装其他新的hotfix)
综述:
=====
NSFOCUS安全小组发现微软IIS 4.0/5.0在处理CGI程序文件名时存在一个安全
漏洞,由于错误地对文件名进行了两次解码,攻击者可能利用这个漏洞执行任意
系统命令。
漏洞分析:
==========
IIS在加载可执行CGI程序时,会进行两次解码。第一次解码是对CGI文件名进行http
解码,然后判断此文件名是否为可执行文件,例如检查后缀名是否为".exe"或".com"
等等。在文件名检查通过之后,IIS会再进行第二次解码。正常情况下,应该只对该
CGI的参数进行解码,然而,IIS错误地将已经解码过的CGI文件名和CGI参数一起进行
解码。这样,CGI文件名就被错误地解码了两次。
通过精心构造CGI文件名,攻击者可以绕过IIS对文件名所作的安全检查,例如对"../"
或"./"的检查,在某些条件下,攻击者可以执行任意系统命令。
例如,对于'\'这个字符,正常编码后是%5c。这三个字符对应的编码为:
'%' = %25
'5' = %35
'c' = %63
如果要对这三个字符再做一次编码,就可以有多种形式,例如:
%255c
%%35c
%%35%63
%25%35%63
...
因此,"..\"就可以表示成"..%255c"或"..%%35c"等等形式。
在经过第一次解码之后,变成"..%5c"。IIS会认为这是一个正常的字符串,
不会违反安全规则检查。而在第二次被解码之后,就会变成"..\"。因此
攻击者就可以使用"..\"来进行目录遍历,执行web目录之外的任意程序。
漏洞测试:
==========
例如,如果TARGET存在一个虚拟可执行目录(scripts),并且它与
windows系统在同一驱动器上。那么提交类似下列请求:
http://TARGET/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+dir+c:\
就会列出C:\的根目录。
当然,对于'/'或者'.'做变换同样可以达到上面的效果。
例如:"..%252f", ".%252e/"...
注意:攻击者只能以IUSER_machinename用户的权限执行命令。
临时解决方法:
===========
1、如果不需要可执行的CGI,可以删除可执行虚拟目录,例如 /scripts等等。
2、如果确实需要可执行的虚拟目录,建议将可执行虚拟目录单独放在一个分区
3、将所有可被攻击者利用的命令行工具移到另外一个目录中并禁止GUEST组
访问。
厂商状态:
==========
2001.3.27 我们将这个问题通报给了微软公司。
2001.4.01 微软告知重现了这个问题
2001.4.16 微软提供了补丁程序供测试,测试发现此问题已被解决
2001.4.23 微软请求我们延迟2个星期发布公告以等待更完善的测试
2001.4.30 微软告知我们还须再推迟一个星期发布
2001.5.14 微软已就此发布了一个安全公告(MS01-026)以及相应补丁
您可以在下列地址看到微软安全公告的详细内容:
http://www.microsoft.com/technet/security/bulletin/ms01-026.asp
补丁程序可以在下列地址下载:
. Microsoft IIS 4.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29787
. Microsoft IIS 5.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29764
附加信息:
==========
通用漏洞批露(Common Vulnerabilities and Exposures)组织CVE已经为此问题
分配了一个候选名 CAN-2001-0333。此名字是为了收录进CVE列表做候选之用,
(http://cve.mitre.org)CVE列表致力于使安全问题的命名标准化。候选名在被
正式加入CVE列表之前可能会有较大的变化。
声 明
==========
本安全公告仅用来描述可能存在的安全问题,中联绿盟信息技术公司不为此安全
公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任
何直接或者间接的后果及损失,均由使用者本人负责,中联绿盟信息技术公司以
及安全公告作者不为此承担任何责任。
中联绿盟信息技术公司拥有对此安全公告的修改和解释权。如欲转载或传播此安
全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经中联绿
盟信息技术公司允许,不得任意修改或者增减此安全公告内容,不得以任何方式
将其用于商业目的。
3.名字:IIS 5.0 远程缓冲区溢出漏洞
◆ 微软Win 2K IIS 5.0 远程缓冲区溢出 (转载自绿盟)
日期:2001-5-6
受影响的系统:
Microsoft Windows 2000 Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Advanced Server
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 2674
微软Win 2K IIS 5的打印ISAPI扩展接口建立了.printer扩展名到msw3prt.dll的映射关系,缺省情况下该映射存在。当远程用户提交对.printer的URL请求时,IIS 5调用msw3prt.dll解释该请求。由于msw3prt.dll缺乏足够的缓冲区边界检查,远程用户可以提交一个精心构造的针对.printer的URL请求,其"Host:"域包含大约420字节的数
据,此时在msw3prt.dll中发生典型的缓冲区溢出,潜在允许执行任意代码。溢出发生后,WEB服务停止响应,Win 2K可以检查到WEB服务停止响应,从而自动重启它,因此系统管理员很难意识到发生过攻击。
<* 来源:Riley Hassel of eEye Digital Security *>Top
2 楼yishao(飞龙)回复于 2003-08-04 02:35:56 得分 0
安全焦点漏洞描述
IIS漏洞
--------------------------------------------------------------------------------
1.名字:IIS unicode漏洞
中联绿盟安全公告(SA2000-06)
Microsoft IIS Unicode解码目录遍历漏洞
Nsfocus安全小组(security@nsfocus.com)
http://www.nsfocus.com
发布日期: 2000/10/20
受影响的软件及系统:
==================
- Microsoft IIS 4.0
- Microsoft IIS 5.0
综述:
=====
NSFOCUS安全小组发现微软IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。
漏洞分析:
==========
对于IIS 5.0/4.0中文版,当IIS收到的URL请求的文件名中包含一个特殊的编码例如"%c1%hh"或者"%c0%hh",它会首先将其解码变成:0xc10xhh,然后尝试打开这个文件,Windows 系统认为0xc10xhh可能是unicode编码,因此它会首先将其解码,如果 0x00<= %hh < 0x40的话,采用的解码的格式与下面的格式类似:
%c1%hh -> (0xc1 - 0xc0) * 0x40 + 0xhh
%c0%hh -> (0xc0 - 0xc0) * 0x40 + 0xhh
例如,在Windows 2000 简体中文版 + IIS 5.0 + SP1系统下测试:
http://target/A.ida/%c1%00.ida
IIS会报告说 "@.ida" 文件找不到
这里: (0xc1-0xc0)*0x40+0x00=0x40='@'
http://target/A.ida/%c1%01.ida
IIS会报告说 "A.ida" 文件找不到
这里: (0xc1-0xc0)*0x40+0x01=0x41='A'
http://target/A.ida/%c1%02.ida
IIS会报告说 "B.ida" 文件找不到
这里: (0xc1-0xc0)*0x40+0x02=0x42='B'
.....
http://target/A.ida/%c0%21.ida
IIS会报告说 "!.ida" 文件找不到
这里: (0xc0-0xc0)*0x40+0x21=0x21='!'
....
因此,利用这种编码,我们可以构造很多字符,例如:
%c1%1c -> (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
%c0%2f -> (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
攻击者可以利用这个漏洞来绕过IIS的路径检查,去执行或者打开任意的文件。
Rain Forest Puppy 测试发现对于英文版的IIS 4.0/5.0,
此问题同样存在,只是编码格式略有不同,变成"%c0%af"或者"%c1%9c".
漏洞测试:
==========
(1) 如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能列出当前目录的内容:
http://www.victim.com/scripts/..%c1%1c..%c1%1c..%c1%1c..%c1%1c../winnt/system32/cmd.exe?/c+dir
(2) 利用这个漏洞查看系统文件内容也是可能的:
http://www.victim.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini
临时解决方法:
============
1、如果不需要可执行的CGI,可以删除可执行虚拟目录,例如 /scripts等等。
2、如果确实需要可执行的虚拟目录,建议可执行虚拟目录单独在一个分区。
解决方案:
==========
微软已就此发布了一个安全公告(MS00-078) 以及相应补丁。
您可以在下列地址看到微软安全公告的详细内容:
http://www.microsoft.com/technet/security/bulletin/ms00-078.asp
补丁程序可以在下列地址下载:
. Microsoft IIS 4.0:
http://www.microsoft.com/ntserver/nts/downloads/critical/q269862/default.asp
. Microsoft IIS 5.0:
http://www.microsoft.com/windows2000/downloads/critical/q269862/default.asp
注意:这个补丁程序与MS00-57中所提供的补丁是同一个程序,如果您已经安装了MS00-57中的补丁,您可以不用再重新安装此补丁程序。
声明:
=====
本安全公告仅用来描述可能存在的安全问题,中联绿盟信息技术公司不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,中联绿盟信息技术公司以及安全公告作者不为此承担任何责任。
中联绿盟信息技术公司拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经中联绿盟信息技术公司允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。Top
3 楼yishao(飞龙)回复于 2003-08-04 02:43:28 得分 10
2.名字:Microsoft IIS CGI文件名错误解码漏洞
中联绿盟安全公告(SA2001-02)
Microsoft IIS CGI文件名错误解码漏洞
Nsfocus安全小组(security@nsfocus.com)
http://www.nsfocus.com/
发布日期: 2001/05/15
CVE CAN ID : CAN-2001-0333
受影响的软件及系统:
==================
- Microsoft IIS 4.0
- Microsoft IIS 5.0
不受影响的软件及系统:
===================
- Windows IIS 4.0 (sp6/sp6a 没有安装其他新的hotfix)
综述:
=====
NSFOCUS安全小组发现微软IIS 4.0/5.0在处理CGI程序文件名时存在一个安全
漏洞,由于错误地对文件名进行了两次解码,攻击者可能利用这个漏洞执行任意
系统命令。
漏洞分析:
==========
IIS在加载可执行CGI程序时,会进行两次解码。第一次解码是对CGI文件名进行http
解码,然后判断此文件名是否为可执行文件,例如检查后缀名是否为".exe"或".com"
等等。在文件名检查通过之后,IIS会再进行第二次解码。正常情况下,应该只对该
CGI的参数进行解码,然而,IIS错误地将已经解码过的CGI文件名和CGI参数一起进行
解码。这样,CGI文件名就被错误地解码了两次。
通过精心构造CGI文件名,攻击者可以绕过IIS对文件名所作的安全检查,例如对"../"
或"./"的检查,在某些条件下,攻击者可以执行任意系统命令。
例如,对于'\'这个字符,正常编码后是%5c。这三个字符对应的编码为:
'%' = %25
'5' = %35
'c' = %63
如果要对这三个字符再做一次编码,就可以有多种形式,例如:
%255c
%%35c
%%35%63
%25%35%63
...
因此,"..\"就可以表示成"..%255c"或"..%%35c"等等形式。
在经过第一次解码之后,变成"..%5c"。IIS会认为这是一个正常的字符串,
不会违反安全规则检查。而在第二次被解码之后,就会变成"..\"。因此
攻击者就可以使用"..\"来进行目录遍历,执行web目录之外的任意程序。
漏洞测试:
==========
例如,如果TARGET存在一个虚拟可执行目录(scripts),并且它与
windows系统在同一驱动器上。那么提交类似下列请求:
http://TARGET/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+dir+c:\
就会列出C:\的根目录。
当然,对于'/'或者'.'做变换同样可以达到上面的效果。
例如:"..%252f", ".%252e/"...
注意:攻击者只能以IUSER_machinename用户的权限执行命令。
临时解决方法:
===========
1、如果不需要可执行的CGI,可以删除可执行虚拟目录,例如 /scripts等等。
2、如果确实需要可执行的虚拟目录,建议将可执行虚拟目录单独放在一个分区
3、将所有可被攻击者利用的命令行工具移到另外一个目录中并禁止GUEST组
访问。
厂商状态:
==========
2001.3.27 我们将这个问题通报给了微软公司。
2001.4.01 微软告知重现了这个问题
2001.4.16 微软提供了补丁程序供测试,测试发现此问题已被解决
2001.4.23 微软请求我们延迟2个星期发布公告以等待更完善的测试
2001.4.30 微软告知我们还须再推迟一个星期发布
2001.5.14 微软已就此发布了一个安全公告(MS01-026)以及相应补丁
您可以在下列地址看到微软安全公告的详细内容:
http://www.microsoft.com/technet/security/bulletin/ms01-026.asp
补丁程序可以在下列地址下载:
. Microsoft IIS 4.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29787
. Microsoft IIS 5.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29764
附加信息:
==========
通用漏洞批露(Common Vulnerabilities and Exposures)组织CVE已经为此问题
分配了一个候选名 CAN-2001-0333。此名字是为了收录进CVE列表做候选之用,
(http://cve.mitre.org)CVE列表致力于使安全问题的命名标准化。候选名在被
正式加入CVE列表之前可能会有较大的变化。
声 明
==========
本安全公告仅用来描述可能存在的安全问题,中联绿盟信息技术公司不为此安全
公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任
何直接或者间接的后果及损失,均由使用者本人负责,中联绿盟信息技术公司以
及安全公告作者不为此承担任何责任。
中联绿盟信息技术公司拥有对此安全公告的修改和解释权。如欲转载或传播此安
全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经中联绿
盟信息技术公司允许,不得任意修改或者增减此安全公告内容,不得以任何方式
将其用于商业目的。
3.名字:IIS 5.0 远程缓冲区溢出漏洞
◆ 微软Win 2K IIS 5.0 远程缓冲区溢出 (转载自绿盟)
日期:2001-5-6
受影响的系统:
Microsoft Windows 2000 Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Advanced Server
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 2674
微软Win 2K IIS 5的打印ISAPI扩展接口建立了.printer扩展名到msw3prt.dll的映射关系,缺省情况下该映射存在。当远程用户提交对.printer的URL请求时,IIS 5调用msw3prt.dll解释该请求。由于msw3prt.dll缺乏足够的缓冲区边界检查,远程用户可以提交一个精心构造的针对.printer的URL请求,其"Host:"域包含大约420字节的数
据,此时在msw3prt.dll中发生典型的缓冲区溢出,潜在允许执行任意代码。溢出发生后,WEB服务停止响应,Win 2K可以检查到WEB服务停止响应,从而自动重启它,因此系统管理员很难意识到发生过攻击。
<* 来源:Riley Hassel of eEye Digital Security *>
测试程序:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
Ryan Permeh of eEye Digital Security 发布了一个演示该溢出的程序:
--------------------------------------------------------------------------
/***********************************************************************
iishack 2000 - eEye Digital Security - 2001
This affects all unpatched windows 2000 machines with the .printer isapi filter loaded. This is purely proof of concept.
Quick rundown of the exploit:
Eip overruns at position 260
i have 19 bytes of code to jump back to the beginning of the buffer.
(and a 4 byte eip jumping into a jmp esp located in mfc42.dll). The jumpback was kinda weird, requiring a little forward padding to protect the rest of the code.
The buffer itself:
Uou only have about 250ish bytes before the overflow(taking into account the eip and jumpback), and like 211 after it. this makes things tight. This is why i hardcoded the offsets and had 2
shellcodes,one for each revision. normally, this would suck, but since iis is kind to us, it cleanly restarts itself if we blow it, giving us another chance.
This should compile clean on windows, linux and *bsd. Other than that, you are on your own, but the vector is a simple tcp vector, so no biggie.
The vector:
the overflow happens in the isapi handling the .printer extension. The actual overflow is in the Host: header. This buffer is a bit weird, soi be carfull what you pass into it. It has a minimal amount of parsing happening before we get it, making some chars not able to be used(or forcing you to encode your payload). As far as i can tell, the bad bytes i've come across
are:
0x00(duh)
0x0a(this inits a return, basically flaking our buffer)
0x0d(same as above)
0x3a(colon: - this seems to be a separator of some kind, didn't have time or
energy to reverse it any further, it breaks stuff, keep it out of your buffer)
i have a feeling that there are more bad chars, but in the shellcode i've written
(both this proof of concept and actual port binding shellcode), i've come across
problems, but haven't specifically tagged a "bad" char.
One more thing... inititally, i got this shellcode to fit on the left side of the buffer overflow. something strange was causing it to fail if i had a length of under about 315 chars. This seems strange to me, but it could be soemthing i just screwed up writing this code. This explains the 0x03s padding the end of the shellcode.
Ryan Permeh
ryan@eeye.com
greetz: riley, for finding the hole marc, for being a cool boss dale,nicula,firas, for being pimps greg hoglund, for sparking some really interesting ideas on exploitable buffers dark spyrit, for beginning the iis hack tradition I would also like to thank the academy and to all of those who voted....
Barry, Levonne, and their $240.00 worth of pudding.
http://www.eeye.com/html/research/Advisories/tequila.jpg
*************************************************************************/Top
4 楼WEB8888()回复于 2003-08-08 04:09:20 得分 0
THANK YOUTop




