一、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/zh-hant/n/334884.html