Python實現遠程調用MetaSploit的方法

來源:互聯網
上載者:User
本文較為詳細的講述了Python實現遠程調用MetaSploit的方法,對Python的學習來說有很好的參考價值。具體實現方法如下:

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

root@kali:~# apt-get install python-setuptoolsroot@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 startroot@kali:~# sudo -u postgres /usr/bin/psql < createdb_sql.txt


(4)建立setup.rc檔案

db_connect msf:msf123@127.0.0.1/msfload 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 msfrpcroot@kali:~# cd msfrpc/python-msfrpcroot@kali:~# python setup.py install

測試代碼如下:

#!/usr/bin/env pythonimport msgpackimport 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學習可以起到一定的學習借鑒作用。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.