Microsoft IIS 5.0(Internet Infomation Server 5)是Microsoft Windows 2000自带的一个网络信息服务器。IIS支持SSI(Server Side Include)功能。ssinc.dll就是一个SSI解释器。默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(ssinc.dll)。 IIS 4.0/5.0所带的一个动态链接库(ssinc.dll)在处理包含文件时存在一个缓冲区溢出漏洞,本地攻击者可能利用这个漏洞获取Local System权限。 SSI支持\"#include\"指令,通常的使用方式是: <!--#include file=\"文件名\"--> ssinc.dll在处理\"#include\"指令时,会首先试图获取该shtml文件的物理路径,因此它会将URI请求拷贝到一个固定大小的缓冲区中,例如当请求下列shtml文件时: http://iishost/abc/test.shtml 它会将\"/abc/test.shtml\"保存到一个固定大小的缓冲区中。由于在拷贝时没有对shtml文件名的长度进行检查,导致一个栈缓冲区溢出。 NSFocus安全小组曾发现过一个类似的问题,参见 http://www.nsfocus.net/index.php?act=advisory&do=view&adv_id=17, 相应的微软安全公告为 http://www.microsoft.com/technet/security/bulletin/ms01-044.asp。 本漏洞是在原来的那个漏洞之前发生的。 IIS检测了过长的shtml文件名以避免缓冲区溢出,然而遗憾地是IIS的处理方法是将长文件名截短至合法长度然后试图打开它,而打开之后ssinc.dll仍然会使用初始的URI进行拷贝。因此通过创建一个特定长度的WEB文件就有可能绕过这个检查,然后再请求一个长文件名的shtml文件就会产生溢出,可导致IIS停止响应。如果精心地构造溢出数据,就可能改变程序流程,并以local System权限执行任意代码。 攻击者要进行攻击需要有两个条件: 1. 攻击者需要有权限在web目录下创建文件。 2. 攻击者需要能够通过web服务访问创建的文件。
Microsoft IIS 5.0(Internet Infomation Server 5)是Microsoft Windows 2000自带的一个网络信息服务器。IIS支持SSI(Server Side Include)功能。ssinc.dll就是一个SSI解释器。默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(ssinc.dll)。 IIS 4.0/5.0所带的一个动态链接库(ssinc.dll)在处理包含文件时存在一个缓冲区溢出漏洞,本地攻击者可能利用这个漏洞获取Local System权限。 SSI支持\"#include\"指令,通常的使用方式是: <!--#include file=\"文件名\"--> ssinc.dll在处理\"#include\"指令时,会首先试图获取该shtml文件的物理路径,因此它会将URI请求拷贝到一个固定大小的缓冲区中,例如当请求下列shtml文件时: http://iishost/abc/test.shtml 它会将\"/abc/test.shtml\"保存到一个固定大小的缓冲区中。由于在拷贝时没有对shtml文件名的长度进行检查,导致一个栈缓冲区溢出。 NSFocus安全小组曾发现过一个类似的问题,参见 http://www.nsfocus.net/index.php?act=advisory&do=view&adv_id=17, 相应的微软安全公告为 http://www.microsoft.com/technet/security/bulletin/ms01-044.asp。 本漏洞是在原来的那个漏洞之前发生的。 IIS检测了过长的shtml文件名以避免缓冲区溢出,然而遗憾地是IIS的处理方法是将长文件名截短至合法长度然后试图打开它,而打开之后ssinc.dll仍然会使用初始的URI进行拷贝。因此通过创建一个特定长度的WEB文件就有可能绕过这个检查,然后再请求一个长文件名的shtml文件就会产生溢出,可导致IIS停止响应。如果精心地构造溢出数据,就可能改变程序流程,并以local System权限执行任意代码。 攻击者要进行攻击需要有两个条件: 1. 攻击者需要有权限在web目录下创建文件。 2. 攻击者需要能够通过web服务访问创建的文件。