一、wmiexec介绍
wmiexec是Metasploit工具包中的一部分,它是一款基于Windows管理工具命名语言(WMI)的远程执行工具。它使用WMI协议将命令发送到远程系统,并获取执行结果。与其他远程执行工具不同的是,wmiexec在目标系统上不需要安装任何额外的软件,只需要有管理员权限即可使用。
wmiexec的核心原理是利用Windows的DCE/RPC机制,将命令发送到远程系统的Win32_Process类中运行,然后通过WMI协议获取执行结果。由于WMI是内置在Windows系统中的,因此wmiexec非常适用于那些需要在没有其他工具的情况下执行命令的情况。
二、wmiexec的使用方法
使用wmiexec非常的简单,下面给出一个基本的命令示例:
msf5> use auxiliary/admin/windows/wmi/wmiexec msf5 auxiliary(admin/windows/wmi/wmiexec) > set RHOSTS 192.168.1.100 RHOSTS => 192.168.1.100 msf5 auxiliary(admin/windows/wmi/wmiexec) > set USERNAME administrator USERNAME => administrator msf5 auxiliary(admin/windows/wmi/wmiexec) > set PASSWORD password1! PASSWORD => password1! msf5 auxiliary(admin/windows/wmi/wmiexec) > run
以上命令将远程连接到IP地址为192.168.1.100的主机,并使用管理员账号“administrator”及对应的密码“password1!”登录。然后,将会打开一个交互式命令行,用户可以在其中执行任意命令。
wmiexec除了可以在交互式命令行中执行命令外,还可以使用-i参数将其转换为交互式shell。例如:
msf5> auxiliary/admin/windows/wmi/wmiexec msf5 auxiliary(admin/windows/wmi/wmiexec) > set RHOSTS 192.168.1.100 RHOSTS => 192.168.1.100 msf5 auxiliary(admin/windows/wmi/wmiexec) > set USERNAME administrator USERNAME => administrator msf5 auxiliary(admin/windows/wmi/wmiexec) > set PASSWORD password1! PASSWORD => password1! msf5 auxiliary(admin/windows/wmi/wmiexec) > run -i
执行以上命令将会打开一个交互式shell,用户可以在其中执行任意系统命令。
三、wmiexec的命令参数
wmiexec支持的命令参数如下:
- -i:将交互式命令行转换为交互式shell。
- -e:将命令包含在反斜线中,以避免特殊字符的问题。
- -n:使用本地操作系统的用户名、密码、用户名域及IP地址来进行身份验证。
- -U:使用格式“[domain/]username[%password]”指定用户名、域及密码。
- -S:向远程服务器发送服务相关命令。
- -D:指定要连接的目标NetBIOS名称、IP地址及基于Windows的计算机名称。
- -h:显示帮助信息并退出。
- -q:向命令发送查询请求。
- -v:详细显示执行结果。
四、wmiexec的使用场景
wmiexec主要应用于在远程系统上进行命令执行和文件传输等操作。由于其依赖于Windows系统内置的WMI协议,因此它可以在不需要安装任何附加软件的情况下进行操作。使用wmiexec的场景包括以下几个方面:
- 远程命令执行:在无法远程登录的情况下,使用wmiexec可以在远程系统上执行命令并获取执行结果。
- 文件传输:使用wmiexec可以将文件从本地系统传输到远程系统或从远程系统传输文件到本地系统。
- 远程漏洞利用:由于wmiexec可以在远程系统上执行任意命令,因此它可以用于漏洞利用的后续操作,例如反向Shell的生成、内网渗透等等。
五、wmiexec的实例代码
以下是一段使用WMI执行命令的示例代码:
import wmi def wmi_exec(IP, user, password, command): try: c = wmi.WMI(IP, user=user, password=password) process_startup = c.Win32_ProcessStartup.new() process_id, status = c.Win32_Process.Create(CommandLine=command, ProcessStartupInformation=process_startup) return True except Exception as e: print(e) return False wmi_exec('192.168.1.100', 'administrator', 'password1!', 'net user')
以上代码使用Python的WMI库创建与目标系统的连接并执行命令“net user”。
原创文章,作者:IUPHB,如若转载,请注明出处:https://www.506064.com/n/334884.html