Python 遠程調用MetaSploit,pythonmetasploit

來源:互聯網
上載者:User

Python 遠程調用MetaSploit,pythonmetasploit

(1)安裝Python的msgpack類庫,MSF官方文檔中的資料序列化標準就是參照msgpack。

root@kali:~# apt-get install python-setuptools

root@kali:~# easy_install msgpack-python

 

(2)建立createdb_sql.txt:

create database msf;

create user msf with password 'msf123';

grant all privileges on database msf to msf;

 

(3)在PostgreSQL 執行上述檔案:

root@kali:~# /etc/init.d/postgresql start

root@kali:~# sudo -u postgres /usr/bin/psql < createdb_sql.txt

 

(4)建立setup.rc檔案

db_connect msf:msf123@127.0.0.1/msf

load msgrpc User=msf Pass='abc123'

 

(5)啟動MSF並執行載入檔案

root@kali:~# msfconsole -r setup.rc

* SNIP *

[*] Processing setup.rc for ERB directives.

resource (setup.rc)> db_connect msf:msf123@127.0.0.1/msf

[*] Rebuilding the module cache in the background...

resource (setup.rc)> load msgrpc User=msf Pass='abc123'

[*] MSGRPC Service:  127.0.0.1:55552

[*] MSGRPC Username: msf

[*] MSGRPC Password: abc123

[*] Successfully loaded plugin: msgrpc

 

(6)Github上有一個Python的類庫,不過很不好用

root@kali:~# git clone git://github.com/SpiderLabs/msfrpc.git msfrpc

root@kali:~# cd msfrpc/python-msfrpc

root@kali:~# python setup.py install

測試代碼:

#!/usr/bin/env python

import msgpack

import httplib

 

class Msfrpc:

  class MsfError(Exception):

    def __init__(self,msg):

      self.msg = msg

    def __str__(self):

      return repr(self.msg)

 

  class MsfAuthError(MsfError):

    def __init__(self,msg):

      self.msg = msg

    

  def __init__(self,opts=[]):

    self.host = opts.get('host') or "127.0.0.1"

    self.port = opts.get('port') or 55552

    self.uri = opts.get('uri') or "/api/"

    self.ssl = opts.get('ssl') or False

    self.authenticated = False

    self.token = False

    self.headers = {"Content-type" : "binary/message-pack" }

    if self.ssl:

      self.client = httplib.HTTPSConnection(self.host,self.port)

    else:

      self.client = httplib.HTTPConnection(self.host,self.port)

 

  def encode(self,data):

    return msgpack.packb(data)

  def decode(self,data):

    return msgpack.unpackb(data)

 

  def call(self,meth,opts = []):

    if meth != "auth.login":

      if not self.authenticated:

        raise self.MsfAuthError("MsfRPC: Not Authenticated")

 

    if meth != "auth.login":

      opts.insert(0,self.token)

 

    opts.insert(0,meth)

    params = self.encode(opts)

    self.client.request("POST",self.uri,params,self.headers)

    resp = self.client.getresponse()

    return self.decode(resp.read()) 

  

  def login(self,user,password):

    ret = self.call('auth.login',[user,password])

    if ret.get('result') == 'success':

self.authenticated = True

        self.token = ret.get('token')

        return True

    else:

        raise self.MsfAuthError("MsfRPC: Authentication failed")

 

if __name__ == '__main__':

  

  # Create a new instance of the Msfrpc client with the default options

  client = Msfrpc({})

 

  # Login to the msfmsg server using the password "abc123"

  client.login('msf','abc123')

 

  # Get a list of the exploits from the server

  mod = client.call('module.exploits')

  

  # Grab the first item from the modules value of the returned dict

  print "Compatible payloads for : %s\n" % mod['modules'][0]

  

  # Get the list of compatible payloads for the first option

  ret = client.call('module.compatible_payloads',[mod['modules'][0]])

  for i in (ret.get('payloads')):

    print "\t%s" % i


python 遠程調用

如果你得password就是mypassword的話你的語句裡漏了一個r, \r\n一起表示斷行符號(不管是不是unix/linux)

import pexpect
(command_output,exitstatus)=pexpect.run("ssh myuser@myhost 'ls -l'",timeout=-1,withexitstatus=1,events={'(?i)password: ':'mypassword\r\n'})
 
我想用python寫個web介面簡單執行遠程linux命令 web介面要可以自由填寫執行shell命令與指令碼

如果你是為了遠程操作的話,不要用web介面,用secure shell。如果你是為了寫這個python程式,那你需要標準庫裡的subprocess和cgi。
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.