渗透测试框架 metasploit

本贴最后更新于 2451 天前,其中的信息可能已经渤澥桑田

0x00 简介

Metasploit 是一款开源安全漏洞检测工具,可以用于渗透测试不同的系统和框架,附带数百个已知的软件漏洞,并保持频繁更新。

Metasploit 框架是用 Ruby 语言开发的,包括 Perl 写的脚本,C ,汇编,和 Python 各种组件,并且可以由用户自行编写代码加入 Metasploit 的数据库。

0x01 术语

在讲解 Metasploit 之前,先对我们即将用到的术语做一个解释。

Exploit

Exploit 操纵计算机系统中特定漏洞的恶意代码. Metasploi 提供了跨多个操作系统和应用程序的 Exploit,提供了突破一台电脑的多种途径。可以用 Nessus 搭配 Nmap 进行漏洞扫描,并使用 Metasploit 进行漏洞利用。在确定一个特定的漏洞却无法在 Metasploit 数据库中找到利用的 Exploit,可以通过访问 exploit-db.com 查找下载该漏洞利用程序,编译知道可以将其移植到 Metasploit 的数据库做为一个 Exploit。

Payloads

利用漏洞之前要先建立一个 Payload,其作用是确定漏洞攻击成功之后要执行什么操作,Payload 基本上是用于访问远程计算机的反向 shell 和通过 shell 植入后门等到被入侵的电脑。

Encoders

不能确保所有 Metasploit 中的 exp 都可以正常工作,有时候会遇到防火墙、IPS、IDC 等,所有的试图攻击等可能会被防火墙过滤掉,这时候就需要使用 Encoders 来对 exp 进行编码等,用来逃避防火墙、IPS、IDS 的检测。

Options

所有的 Exploit 和 Payload 都有一些内置的参数,诸如远程 IP、本地 IP、LPORT、RPORT、服务路径、用户名等。这些参数在利用 exp 之前需要进行配置,可以使用 Show Options 命令来显示具体的选项。

0x02 模式

Metasploit 有三种模式供用户使用,分别是控制台、命令行、web,我分别简述一下三种模块的优点。

Msfconsole(控制台)的优点是最实用、最强大的集各种功能于一体的漏洞利用框架,在控制台界面时功能最全面。

Msfcli(命令行)的优点是侧重对脚本执行、以及可解释性,并且自动化方面很强。

Msfweb(web 界面)是一个 Gui 形界面,主要优点是为了让渗透测试操作变得更加容易,从命令行启动之后会创建一个 web server,ip 地址是 127.0.0.1,端口是 55553。

我使用 Msfconsole 来演示。

0x03 模块

我们在安装目录输入./Msfupdate 更新一下 metasploit

然后使用 service postgresql start 打开漏洞数据库服务

然后使用./Msfconsole 命令进入控制台交互界面,然后开始模块的使用。

show 模块

show 模块可以用来显示可用的 exploits、payloads、encoders 等等

我们可以直接加参数来只显示某一类

如 show exploits

显示出来的有 exp 的名字、时间、攻击模块等级和描述。

等级是我们选取时优先关注的,一般选择 excellent 和 great 两种等级,因为稳定且效果明显,其次查看后面的描述是否和我们攻击的服务有关,如果找到合适的模块,我们就可以记住名字之后使用。

search 模块

我们之前使用 show 的时候出现了非常多的条目,但在应对实际情况中,肯定不能自己肉眼去寻找需要的 exp,而 search 模块可以帮助我们快速筛选需要的 exp。

我们可以查看 search -h 的内容帮助我们学会这个模块的用法。

如 search cve:2017 type:exploit

然后我们再根据攻击模块等级和描述进一步人工筛选,就快了很多。

info 模块

上面列举出来的模块我们只能看到大概信息,如果我们想要查看详细信息和利用方式等等,就得使用 info 模块来查看

使用方法是 info+ 模块名

如 struct-s2-052 漏洞即 cve:2017-9805:

info exploit/multi/http/struts2_rest_xstream

use 模块

前面我们筛选出来合适的 exp,下来就需要用 use 模块来使用这个 exp

使用方式是 use+ 模块名

如 struct-s2-052 漏洞

use exploit/multi/http/struts2_rest_xstream

set 模块

选好了模块下来就该攻击了,那攻击谁?怎么攻击?需要用这次攻击做什么事情?这些事情我们还没有告诉 metasploit,所以我们需要用 set 来完成这些设置。

首先我们需要一个 payload 完成我们要做的事情,我们通过前面的 show 命令,查看一下 payload

然后再选择一个 payload,用 set payload PayloadName 来设置好这次攻击用到的 payload

这里我们用一个较稳定的反弹 shell

set payload windows/exec

接着设置攻击参数,具体有哪些攻击参数需要设置,我们可以用 show options 命令查看。

然后我们根据看到的情况,结合我们要攻击的目标设置攻击参数,我这里在物理机重新搭了一遍 struct-2-052 漏洞的环境,可以参考之前的一篇博客进行配置:https://orcl.cc/articles/2018/09/26/1537971642586.html

额外将 tomcat/conf/server.xml 中的这两处地方改为本机在局域网中的 ip,就可以通过另一台机器访问了。

接下来在 metasploit 中设置物理机的 ip 和端口即可

set rhost 192.168.0.107

set rport 12345

set lhost 192.168.0.108

run 模块

万事俱备之后,设置好我们想执行的命令,直接输入 run,即可发起攻击。

0x04 总结

一款优秀的工具对渗透测试人员来说就像一把锋利的刀,他不仅能节省我们非常多的时间,也能弥补我们技术上的空白。

metasploit 还有非常多有趣的用法,我也是初学所以无法一一列举出来,学习新工具的过程,最需要的是耐心的读官方文档和善用-help 命令,并且记好笔记。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    😈 ❤️ 😋 😋

  • 172721404

    kali linux 这个要学习下

推荐标签 标签

  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 402 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 10 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 447 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    171 引用 • 1537 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 2 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 17 关注
  • RemNote
    2 引用 • 16 回帖 • 24 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 3 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1282 回帖 • 5 关注
  • 倾城之链
    23 引用 • 66 回帖 • 166 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 626 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 765 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    82 引用 • 411 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 286 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    589 引用 • 3528 回帖
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 820 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    93 引用 • 122 回帖 • 619 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    37 引用 • 157 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 735 关注
  • Access
    1 引用 • 3 回帖 • 2 关注
  • AWS
    11 引用 • 28 回帖 • 8 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖 • 1 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 7 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 240 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    191 引用 • 1353 回帖