IIS是Microsoft出品的一个广泛应用的Internet Web服务器软件,随Windows NT和Windows 2000捆绑发售。默认情况下IIS的某些目录是允许通过提交HTTP请求执行可执行文件的。 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 因此,利用这种编码,我们可以构造很多字符,例如: \\%c1\\%1c -> (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = \'\'/\'\' \\%c0\\%2f -> (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = \'\'\\'\' 攻击者可以利用这个漏洞来绕过IIS的路径检查,去执行或者打开任意的文件。 Rain Forest Puppy <rfp@WIRETRIP.NET>测试发现对于英文版的IIS 4.0/5.0,此问题同样存在,只是编码格式略有不同,变成\"\\%c0\\%af\"或者\"\\%c1\\%9c\"。
IIS是Microsoft出品的一个广泛应用的Internet Web服务器软件,随Windows NT和Windows 2000捆绑发售。默认情况下IIS的某些目录是允许通过提交HTTP请求执行可执行文件的。 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 因此,利用这种编码,我们可以构造很多字符,例如: \\%c1\\%1c -> (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = \'\'/\'\' \\%c0\\%2f -> (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = \'\'\\'\' 攻击者可以利用这个漏洞来绕过IIS的路径检查,去执行或者打开任意的文件。 Rain Forest Puppy <rfp@WIRETRIP.NET>测试发现对于英文版的IIS 4.0/5.0,此问题同样存在,只是编码格式略有不同,变成\"\\%c0\\%af\"或者\"\\%c1\\%9c\"。