利用ftp服务程式本身设计的"缺陷"取得最高权限 一台虚拟主机,NTFS文档系统,主机主要运行的服务为IIS和Serv-U.已通过允许上传asp文档并执行那些as文档的问题得到了一般的user权限.由于管理员对目录的配置比较安全,只有C盘的根目录具备写权限,其他目录都只有读的权限.由于配置的安全性,用自己的后门程式替换掉服务启动的程式那一招已不灵了,向Serv-U的配置文档加入一个有执行权限的帐户这一招也行不通了.入侵的那位朋友已试过多种方法,没有一个可行的方法,于是他将这台入侵了一小半的系统pass给了我,看我有没有方法解决.
(这位朋友一天除了吃饭和睡觉外,就在对着电脑到处找新漏洞入侵系统,经常有些稀奇古怪的系统给我看)
解决方案是从serv-u那里想办法,因为那位朋友也试过好几种方法了,那些方法
1.上传个autorun.inf和后门上去硬盘根目录,(假如系统允许autorun的话,管理员看根目录时就会执行autorun.inf里定义的程式)
2.上传后门到硬盘根目录,改名为explorer.exe(很久的东西,windows搜索文档时是先从根目录先搜起的,假如在根目录先搜到,就执行那个文档.假如系统还存在这问题,假如管理员双击"我的电脑",就会执行了根目录下的那个后门的explorer.exe)
3.更有其他他想到的古怪方法都试过了,相同是没办法得到最高权限
系统应该已打上最新的补丁了,用多个扫描器扫描iis也没有发现到什么漏洞,而且基本就是iis和serv-u这两个服务可利用,iis是没办法的了,只有从serv-u中下手.
系统中已运行一个user权限启动的小后门,只是得到个user限的shell.进去后查看了一下系统的配置和安装了的程式等等,发现了也只能在Serv-U那里动手脚了.Serv-U是4.1版本的,里面有5个帐号,有两个帐号的是有写权限的,并且root目录是在c:/下(通过查看serv-u的那个ini配置文档得知帐户的信息) ,假如能拿到其中一个帐号的密码,我们就具备写权限了.关键是如何得到那两个帐号的密码.
有人会想到破密码,这里最原始而且是在没有任何办法时才会试的办法,当然您不要期待有什么高的成功机会了,大家都应该Serv-u的帐号的密码是用什么算法加密的了,而且也应该知道那种加密算法用最快的破解程式,假如要穷举一个只是8位长度的密码是需要多长时间的.所以不要先想着破密码了.
要得到登陆serv-u的用户的密码,有人想到嗅探的方法,这当然是个好方法,但是得先想想自己所处的权限(只是一般的user权限),根本不足以执行绑入网卡进行的无驱动的的嗅探程式(已测试过,证实不行的了) .
嗅探不行,突然想到shatter attack(有兴趣的朋友能够看看 http://security.tombom.co.uk/shatter.html ),但看到
了"Any application on a given desktop can send a message to any window on the same desktop"这句, 我是从命令行进去用user权限运行的一个shell,似乎没有处于任何桌面,所以应该不能将信息发到serv-u的tray monitor中去.在测试前我先发了信到serv-u的help center中询问,主要是询问serv-u的4.1版本是否能够受shatter attack所影响, 收到的回复是4.1版本不会接收以不同权限发过来的信息,serv-u的tray monitor是登陆的管理员权限执行的,而我只是user权限,这已很清楚说明了是不可能的,而且我也从来没有研究和测试过shatter attack,
所以还是先放弃了.
想来想去都没想到什么好的方法,已打算不想的了,但在洗澡时却突然想到serv-u打开的端口是允许重绑的(不知道是什么原因,很多好的idea都是在洗澡时想到的,包括很多编程时碰到的问题有时都是在洗澡时想到解决方法的) .能够重绑端口,这样我就能够写一个程式,绑入serv-u打开的端口,那么连接到serv-u端口的验证信息就会被我的程式所得到,这样就有可能得到我所需要的帐号的用户名和密码了. 当然这个程式要"扮"得很像serv-u,例如收到连接时发送的是serv-u的正确banner,连接用户发送了用户名来时,程式也要象serv-u那样发个"331 User name okay, need password."的信息需要输出密码, 当用户输出密码后,程式就给连接者发送一个信息,大致是说连接者的IP是不允许登陆的,然后就断开连接者. 为了不被管理员察觉到问题,程式在得到那两个有用的帐号的其中一个的密码后,就会从内存中退出,这样原来的serv-u就能继续正常的工作,当然程式在退出前会将得到的帐号和密码发到我的hotmail的信箱中去.为了保险点,将帐号和密码备份写入到硬盘的一个文档中去(以防hotmail的服务有时中断无法接到邮件).
写到这里,剩下的问题就是写出那个程式了,那不算是什么困难的程式,因为各个部分的东西都曾写过,所以写出来后测试了一下就能投入工作了.程式在那系统中运行了,我就打开了msn等着接信了.大约是半天时间左右吧,就得到了想要的帐号和密码了. 有了这个帐号,我就能登陆进那个serv-u中修改serv-u的配置,加个有执行权限的帐号,然后用这个新加的帐号就能上传任何后门或其他东西上去那系统中运行了.到了这里,系统的最高权限已到手了.
结语:
能够成功得到最高权限,这是由两个"缺陷"所造成的.
1.serv-u本身打开的端口允许重绑入(说是缺陷其实有点过份,因为serv-u的设计者没有想到您的系统会被人入侵到的).我也发信到serv-u中说明了一下这问题,希望serv-u新的版本打开的端口不允许被其他程式所重绑(其实只是多加一行代码就行了)
2.user权限下也能够重绑入其他以服务身份(local system)启动的程式的端口(说是缺陷也是有点过份) .
3.其他的ftp服务程式也有可能存在这个被重绑端口后登录者的帐号和密码被窃取的问题存在,而且其他的应用程式假如端口允许被重绑的话,也存在这种问题,只是视乎传输的信息是否明文还是被强度的算法加密过而已.端口被重绑后产生的问题是存在已久的了,所以我不会说是我发现的,这个文章也只是随便举了一个由于端口被重绑后产生的严重后果的例子罢了.
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



