渗透测试框架 metasploit

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

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 这个要学习下

推荐标签 标签

  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 569 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6681 引用 • 29971 回帖 • 242 关注
  • GAE

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

    14 引用 • 42 回帖 • 699 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    57 引用 • 22 回帖 • 2 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    90 引用 • 383 回帖 • 1 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 137 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 122 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 37 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 684 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖 • 2 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 632 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 405 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    163 引用 • 473 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 2 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 365 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    14 引用 • 7 回帖 • 1 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 512 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 687 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 395 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 4 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 635 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 415 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 639 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1384 回帖 • 363 关注