IIS 是微软出品的一个广泛应用的Internet Web服务器软件,随Windows NT和Windows 2000捆绑发售。默认情况下IIS的某些目录是允许通过提交HTTP请求执行可执行文件的。 NSFOCUS安全小组发现微软IIS 4.0/5.0在处理CGI程序文件名时存在一个安全漏洞,由于错误地对文件名进行了两次解码,远程攻击者可能利用此漏洞以Web进程的权限在主机上执行任意系统命令。 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目录之外的任意程序。
IIS 是微软出品的一个广泛应用的Internet Web服务器软件,随Windows NT和Windows 2000捆绑发售。默认情况下IIS的某些目录是允许通过提交HTTP请求执行可执行文件的。 NSFOCUS安全小组发现微软IIS 4.0/5.0在处理CGI程序文件名时存在一个安全漏洞,由于错误地对文件名进行了两次解码,远程攻击者可能利用此漏洞以Web进程的权限在主机上执行任意系统命令。 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目录之外的任意程序。