Metasploit Web渗透测试实战

978-7-115-57772-6
作者: 李华峰
译者:
编辑: 秦健

图书目录:

详情

本书系统且深入地将渗透测试框架Metasploit与网络安全相结合进行讲解。本书不仅讲述了Metasploit的实际应用方法,而且从网络安全原理的角度分析如何用Metasploit实现网络安全编程的技术,真正做到理论与实践相结合。 本书内容共分11章。第1章介绍Web服务环境中容易遭受攻击的因素等内容;第2章讲解如何对Web服务器应用程序进行渗透测试;第3章介绍对通用网关接口进行渗透测试的方法;第4章介绍对MySQL数据库进行渗透测试的方法;第5章介绍对DVWA认证模式进行渗透测试的方法;第6章介绍对命令注入漏洞进行渗透测试的方法;第7章介绍对文件包含漏洞和跨站请求伪造漏洞进行渗透测试的方法;第8章讲解通过上传漏洞进行渗透测试的方法;第9章讲解通过SQL注入漏洞进行渗透测试的方法;第10章介绍通过跨站脚本攻击漏洞进行渗透测试的方法;第11章介绍Meterpreter中常用的文件相关命令,以及如何使用autopsy在镜像文件中查找有用信息等内容。 本书案例翔实,内容涵盖当前热门网络安全问题,适合网络安全渗透测试人员、运维工程师、网络管理人员、网络安全设备设计人员、网络安全软件开发人员、安全课程培训人员以及高校网络安全专业的学生阅读。

图书摘要

版权信息

书名:Metasploit Web渗透测试实战

ISBN:978-7-115-57772-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    李华峰

责任编辑 秦 健

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


本书系统且深入地将渗透测试框架Metasploit与网络安全相结合进行讲解。本书不仅讲述了Metasploit的实际应用方法,而且从网络安全原理的角度分析如何用Metasploit实现网络安全编程的技术,真正做到理论与实践相结合。

本书内容共分11章。第1章介绍Web服务环境中容易遭受攻击的因素等内容;第2章讲解如何对Web服务器应用程序进行渗透测试;第3章介绍对通用网关接口进行渗透测试的方法;第4章介绍对MySQL数据库进行渗透测试的方法;第5章介绍对DVWA认证模式进行渗透测试的方法;第6章介绍对命令注入漏洞进行渗透测试的方法;第7章介绍对文件包含漏洞和跨站请求伪造漏洞进行渗透测试的方法;第8章讲解通过上传漏洞进行渗透测试的方法;第9章讲解通过SQL注入漏洞进行渗透测试的方法;第10章介绍通过跨站脚本攻击漏洞进行渗透测试的方法;第11章介绍Meterpreter中常用的文件相关命令,以及如何使用autopsy在镜像文件中查找有用信息等内容。

本书案例翔实,内容涵盖当前热门网络安全问题,适合网络安全渗透测试人员、运维工程师、网络管理人员、网络安全设备设计人员、网络安全软件开发人员、安全课程培训人员以及高校网络安全专业的学生阅读。


华峰老师邀我为《Metasploit Web渗透测试实战》一书作序,但这已经超出我的能力范畴,因此不敢为“序”,仅以此小文作为推荐。

我个人习惯把Metasploit Framework称为一个渗透测试的框架。在安全领域里面经常会提到两个词:一个是框架,另一个是标准。在安全管理层面,大量的标准要求你合规,符合标准,虽会规定你做什么,但不会告诉你具体如何做才能实现目标;而在技术具体实现的操作层面,我们往往要使用一个个具体的框架——框架主要针对具体技术的实现。我个人非常看重框架性的内容,有了框架你就可以做成一件事情。

比如渗透测试是一件非常烦琐的事情,它涉及的领域、需要思考的问题非常多,要求我们掌握大量的工具及技术。若有一个框架,在这个框架的规范下从事渗透测试这项工作,利用这个框架下模块的功能,按步骤操作就可以顺利地完成整个工作流程。

我们在这个框架下进行渗透测试,通常首先收集信息,框架下的模块可以帮助我们完成信息收集的工作。其次利用收集的信息发现目标设备中的漏洞。一旦发现存在漏洞,我们就可以通过框架下的模块利用这个漏洞。如果成功利用,就可能控制目标设备,在此基础上进入后渗透测试阶段,逐步扩大战果,设置后门,维持连接,然后对内网进一步扩展渗透。最后把所有的工作成果形成一份渗透测试报告。

我们经常说安全是一个发展非常迅速的行业,同时新的安全漏洞也在不断出现。一方面,一个好的框架可以吸收新的漏洞代码片段,使得自身变得更充实;另一方面,当框架的现有功能不能满足需求时,我们可以在这个框架下丰富它的功能。

Metasploit是目前非常流行、功能强大、极具扩展性、开发活跃的渗透测试平台软件之一,在安全行业里无人不知无人不晓。在这个框架下,我们可以把渗透测试的工作方法,也就是PTES(Penetration Testing Execution Standard,渗透测试执行标准)完美地按流程实现。

人们提到渗透测试的时候,经常把关注点聚焦在攻击而忽略了防守。渗透测试的目标并不是去破坏别人、攻击别人,最终的目标是通过黑客的思路和方法发现、修复漏洞,保障系统的安全性。

Metasploit框架在设计的时候就集成了PTES的思想。一定程度上,它统一了渗透测试和漏洞研究的工作环境。Metasploit到现在依然处于非常活跃的状态,本书中的案例将采用新版Metasploit 6实现。

推荐华峰老师的书我很有底气,与华峰老师结识多年,也合作多年。一个人的风格特点通过他做事的态度就能知道。华峰老师勤于笔耕,已出版多本书籍,如《Wireshark网络分析从入门到实践》《Kali Linux 2网络渗透测试实践指南》《墨守之道:Web服务安全架构与实践》等。华峰老师对于技术的热情、痴迷和探索精神由此可见一斑。

2020年年末华峰老师在安全牛课堂开设了“深入研究Metasploit渗透测试技术”课程。很显然,仅凭一门视频课程不足以体现华峰老师在Metasploit方面的深入探索和实践。当我有幸看到本书时,才理解了一名典型的技术人对技术的痴迷程度。我仔细阅读本书后,看到华峰老师不变的特点—__一如既往地保持他结合热点、贴近实战的风格。本书除了介绍攻防两端不同视角下产生的攻击行为,还提供了大量实例。干货满满才是本书的特色,也是本书出版的初衷,衷心希望读者朋友通过学习本书提升自身技能。

安全牛课堂负责人 倪传杰

2021年12月


本书中的案例采用新版Metasploit 6实现。在阅读过程中,你将会从网络攻击者和网络维护者两个视角来了解网络攻击行为的原理与应对方法,换位思考有助于我们提高自身能力。各位读者,现在你们即将乘上Metasploit这艘小船,完成一次新奇而又神秘的渗透测试揭秘之旅。下面就是本次旅程的行程导航。

第1章将从网络的基本原理开始讲解,带领读者以网络攻击者的视角来查看Web服务环境中都存在哪些容易导致攻击的因素。这是一个多层面的问题。这一章详细介绍了操作系统、Web服务、Web应用程序等多个层面存在的安全问题。

第2章讲解了Web服务器应用程序存在的漏洞,这些漏洞可能源于设计逻辑的失误,也可能源于代码编写的失误,这些漏洞会衍生出各种不同的黑客攻击方案。这一章将研究的重点放在Web服务器应用程序必然面对的风险—拒绝服务攻击,并围绕各种经典的攻击方式,穿插讲解Metasploit的常用命令。

第3章讲解通过Metasploitable2上的PHP-CGI实现对目标设备进行渗透测试,同时介绍如何使用Metasploit进行提权操作。

第4章介绍如何使用Metasploit对MySQL数据库进行渗透测试。

第5章介绍了两种可以对DVWA认证模式进行攻击的方法。

第6章介绍了命令注入漏洞的成因和应用方法,同时讲解Metasploit 6的模块之间的区别及适用的环境。

第7章介绍了文件包含漏洞和跨站请求伪造漏洞的成因和应用方法。其中文件包含漏洞主要存在于使用PHP语言编写的Web应用程序中。由于PHP是目前热门的编程语言,因此我们有必要详细了解该漏洞的产生原理及防御机制。

第8章讲解了上传漏洞的成因及攻击手段,以实例的方式演示了如何使用msfvenom生成恶意文件,以及如何向服务器上传恶意文件,并通过其他漏洞在Web服务器上运行恶意代码。

第9章讲解了目前世界上排名靠前的Web攻击方式—SQL注入攻击,并实现了篡改SQL语句的目的,完成对Web服务器攻击过程的分析。这一章还穿插讲解了注入工具Sqlmap的使用方法,最后给出了相应的安全解决方案。

第10章介绍了目前十分热门的跨站脚本攻击漏洞和应用方法,同时穿插讲解了如何在获得目标设备控制权之后建立持久化的控制,以及如何关闭目标设备上的防火墙。

第11章介绍了Meterpreter中与文件相关的常用命令,通过这些命令可以查看、下载和修改目标设备上的文件,也可以实现对文件的搜索。同时介绍了如何恢复目标设备上已经被删除的文件。最后介绍了如何将目标设备备份成镜像文件,以及如何使用autopsy在镜像文件中查找有用信息。

本书提供了大量的编程实例,这些内容与目前网络安全的热点问题相结合。本书既可以作为高等院校网络安全相关专业的教材,也适合作为网络安全爱好者的进阶读物。为了让读者更高效地学习本书的内容,作者提供配套的案例代码,以及可用于高校教学的配套教案、讲稿和幻灯片,这些资源均可从异步社区或作者的公众号(邪灵工作室)下载。

长风破浪会有时,直挂云帆济沧海!各位读者请登上Metasploit这艘小船,开始我们的渗透测试之旅吧!

李华峰

2021年12月


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可,如下图所示。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区投稿(直接访问www.epubit. com/contribute即可)。

如果您所在的学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社几十年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、测试、前端、网络技术等。

异步社区

微信服务号


Metasploit是世界上非常优秀的渗透测试工具之一,但是长期以来这款工具很少应用在对Web服务环境的渗透测试中,这是因为早期版本的Metasploit缺乏针对Web服务环境的模块。随着技术不断发展,Metasploit中添加了越来越多的模块,尤其是支持Web环境的Meterpreter出现后,Metasploit逐渐走上针对Web服务环境进行渗透测试的舞台。

本书将以Metasploit官方提供的Web服务靶机Metasploitable2为例,讲解如何对其进行渗透测试。通过相关学习,一方面我们将会了解Web服务环境中常见的漏洞,另一方面将会了解Metasploit的各种用法。首先从Metasploit进行渗透测试的准备工作开始。

本章将围绕以下内容展开讲解。

Web服务环境这个问题十分复杂,即使是很多拥有雄厚技术实力团队的企业也会马失前蹄,成为网络攻击的牺牲品。国内极为知名的某家电商企业在创立之初,就曾经受到黑客的攻击。不过这起事件背面的黑客并没有对“猎物”赶尽杀绝,只是在页面留下了“某某商城网管是个大傻瓜”的内容。其实这种事件并不少见,由于Web服务环境十分复杂,而且涉及大量的硬件和软件,其中任何一个环节出现问题,都有可能导致整个系统沦陷,因此想要保证Web服务环境的安全,必须树立十分全面的安全观,并在各个生产环节实施。

如果单从网络维护的角度来看待安全问题,难免会陷入“不识庐山真面目,只缘身在此山中”的境地,所以,在本章中,我们不妨切换到网络攻击者的视角,从这个角度来看看Web服务环境中都存在哪些容易遭受攻击的因素。

在大多数人眼中,Web服务是一个既复杂又简单的事物,说它复杂,是因为很少有人会了解其中运行的原理,说它简单,是因为在大多数人眼中,它就是如图1-1所示的一个过程。

图1-1 用户眼中的Web服务过程

在用户的眼中,一切都很简单,在整个网络中只有用户计算机和Web服务器存在。但是在一个技术娴熟的网络攻击者眼中,却并非如此,网络是由极其复杂和精细的海量设备共同组成,当用户通过计算机对Web服务器发起一次请求时,会有很多软件和硬件参与其中,它们都有可能成为攻击目标。例如,图1-2给出了网络攻击者眼中的Web服务器的组成部分。

图1-2 网络攻击者眼中的Web服务器组成部分

其中,可以将Web服务器分成四部分,分别是Web应用程序、语言解释器、Web服务器应用程序和操作系统。绝大多数情况下,没有Web服务建设者会自行开发操作系统、Web服务器应用程序这两部分,只能采用厂商提供的产品(例如操作系统选择CentOS,服务器选择Apache等)。Web服务建设者只是安装和部署这两部分,既不能详细获悉它们的内部机制,也无法对其进行本质改变,所以这里将它们归纳为外部环境因素。而Web应用程序则不同,大多数情况下,它要么是厂商定制开发,要么是单位自行开发,Web服务建设者除了部署之外,可以接触到代码,甚至可以对其进行改动,这里将语言解释器和Web应用程序归纳为内部代码因素。

但是,无论是外部环境因素还是内部代码因素都有可能带来极为严重的后果,例如获取了对Web应用程序的无限制访问权限、盗取了关键数据、中断了Web应用程序服务等。遗憾的是,大多数的Web应用程序在网络攻击者的眼中都是不安全的。接下来我们将了解如何使用Metasploit对Web服务环境进行渗透测试。

在以前没有漏洞渗透工具框架的时候,渗透测试者往往需要自己收集漏洞渗透代码,甚至需要自己编写针对漏洞的代码。这个时期的渗透测试效率是比较低的,而且成为一个合格渗透测试者的学习成本也是相当高的。

2003年左右,美国的H. D. Moore(世界知名黑客)和Spoonm创建了一个集成多个漏洞渗透工具的框架。随后,这个框架在2004年的Black Hat Briefings上备受关注,Spoonm在大会的演讲中提到,Metasploit的使用方法非常简单,以至于你只需要找到一个目标,单击几下鼠标就可以完成渗透,一切就和电影里面演的一样酷。

强大的功能再加上简单的操作使得Metasploit在安全行业迅速传播。Metasploit很快成为业内著名的工具。Metasploit有多个版本,其中既有适合企业使用的商业版本Metasploit Pro,也有适合个人使用的免费版本Metasploit Community。

目前Metasploit提供了适用于Linux和Windows操作系统的版本。由于在很多渗透环境中,Metasploit需要和其他工具配合使用,为了省去安装各种软件的时间和精力,本书使用了Kali Linux 2操作系统提供的镜像系统,截至本书发稿,该系统的最新版本为2021.2,其中已经安装了新版的Metasploit。如果大家需要了解Kali Linux 2操作系统的详细使用方法,可以参阅人民邮电出版社出版的《Kali Linux 2网络渗透测试实践指南(第2版)》。

首先我们以Kali Linux 2操作系统中的Metasploit为例来了解一下它的文件结构。Metasploit位于目录/usr/share/metasploit-framework/中,其中包含的文件如图1-3所示。

图1-3 Metasploit目录

其中与渗透操作关联比较紧密的目录主要有lib、modules、tools、plugins和scripts等,下面分别介绍它们的作用。

Metasploitable2是一个专门定制的Ubuntu虚拟系统。该系统的设计目的是成为安全工具的测试和演示靶机。Metasploitable2包含了大量的系统、应用程序以及Web应用程序的漏洞。这个版本的虚拟系统兼容VMware、VirtualBox等虚拟平台。默认只开启一个网络适配器并且开启NAT和Host-only,在使用Metasploitable2时,一定不要将该系统暴露在易受攻击的网络中。

我们采用Metasploitable2作为本书的Web服务环境靶机。这个靶机的安装文件是一个VMware虚拟机镜像,具体使用步骤如下。

从互联网上搜索并下载Metasploitable2的镜像文件。将下载好的metasploitable-linux- 2.0.0.zip文件解压缩。

接下来启动VMware,然后在菜单栏上依次单击“文件”→“打开”菜单,然后在弹出的文件选择框中选中你刚解压缩的文件夹中的Metasploitable.vmx。接下来Metasploitable2就会出现在左侧的虚拟系统列表中了,单击就可以打开这个系统。

不需要更改虚拟机的设置。该虚拟机默认使用两块网卡,其中一块使用的是NAT模式,我们的实验主要使用这个网络连接方式,具体如图1-4所示。

图1-4 Metasploitable2的网络连接方式

现在Metasploitable2可以正常使用了。我们在系统名称上右击,然后在弹出菜单中依次单击“电源”→“启动客户机”命令,就可以打开这个虚拟机。系统可能会弹出一个对话框,单击I copied it按钮即可。

以msfadmin和msfadmin作为用户名和密码登录系统。成功登录以后,VMware已经为这个系统分配IP地址。图1-5所示为Metasploitable2对外发布Web服务的IP地址。接下来就可以使用这个系统了。该靶机没有图形化界面,但是对外提供Web服务。

图1-5 Metasploitable2对外提供Web服务的IP地址

这个靶机由操作系统、Web服务器应用程序和Web应用程序共同构成,这三个部分都存在漏洞。在浏览器地址栏中输入Metasploitable2的IP地址,如图1-6所示。其中DVWA就是本书绝大多数操作的实例。

图1-6 在浏览器中访问Metasploitable2提供的Web服务

接下来将以Metasploitable2为靶机,一方面介绍Web服务环境的各种安全因素,另一方面了解Metasploit的使用方法。按照渗透测试的标准,我们应该首先进行主动扫描(这里跳过了客户交流阶段与被动扫描阶段)。在这个阶段,我们应该获取目标的一些有用信息,例如Web服务环境涉及的操作系统、服务器应用程序、语言解释器和Web应用程序等。

因为Kali Linux 2操作系统中默认已安装好Metasploit Community,所以本书的讲解将围绕这个版本展开。在Kali Linux 2操作系统中启动Metasploit的方法如图1-7所示。

图1-7 通过Applications启动Metasploit

另外,也可以在菜单栏上方的快速启动栏中输入msfconsole并按回车键启动Metasploit,如图1-8所示。

图1-8 通过快速启动栏启动Metasploit

但是msfconsole命令并不适合在真实的渗透测试中使用,因为没有数据库的配合,所以无法快速调用数据,也无法保存渗透测试过程中产生的数据。

Metasploit支持使用PostgreSQL数据库来存储数据,我们可以将扫描过程中产生的数据保存在数据库。这一点非常重要,要知道一场大型的渗透测试过程往往会产生大量的主机数据、系统日志、搜集的信息和报告数据等,我们需要将它们保存起来,而数据库则是一个很好的解决方案。

下面以Kali Linux 2操作系统为例来介绍如何配置Metasploit与PostgreSQL协同工作。我们需要先启动PostgreSQL,具体命令如下。

┌──(kali@kali)-[~]
└─$ systemctl start postgresql

然后创建并初始化数据库。这里使用的命令如下。

┌──(kali@kali)-[~]
└─$ sudo msfdb init

除了创建并初始化数据库之外,还可以使用msfdb命令对Metasploit Framwork数据库进行控制,这个控制是通过参数实现的。直接输入msfdb命令可以查看msfdb命令的参数的使用方法与意义。具体命令如下。

┌──(kali@kali)-[~]
└─$ msfdb     
Manage the metasploit framework database
You can use an specific port number for the PostgreSQL connection setting the PGPORT variable in the current shell.
Example: PGPORT=5433 msfdb init
msfdb init     # start and initialize the database
msfdb reinit   # delete and reinitialize the database
msfdb delete   # delete database and stop using it
msfdb start    # start the database
msfdb stop     # stop the database
msfdb status   # check service status
msfdb run      # start the database and run msfconsole

数据库的配置文件database.yml位于/usr/share/metasploit-framework/config/,我们可以使用vim命令查看其中的内容,具体命令如下。

┌──(kali㉿kali)-[~]
└─$ sudo vim /usr/share/metasploit-framework/config/database.yml

database.yml的内容如下。

development:
  adapter: postgresql
  database: msf
  username: msf
  password: Dxi3fXKC7ZWBeiuaYa+JB3X7lUD9Gi/v902PM/qg/Dk=
  host: localhost
  port: 5432
  pool: 5
  timeout: 5

production:
  adapter: postgresql
  database: msf
  username: msf
  password: Dxi3fXKC7ZWBeiuaYa+JB3X7lUD9Gi/v902PM/qg/Dk=
  host: localhost
  port: 5432
  pool: 5
  timeout: 5

test:
  adapter: postgresql
  database: msf_test
  username: msf
  password: Dxi3fXKC7ZWBeiuaYa+JB3X7lUD9Gi/v902PM/qg/Dk=
  host: localhost
  port: 5432
  pool: 5
  timeout: 5

配置文件database.yml包含数据库、用户名、主机等信息,你可以根据自己的需要修改其中的内容。到此为止,我们已经了解了如何配置PostgreSQL。

接下来我们查看Metasploit与数据库连接的状态,具体命令如下。

msf6 > db_status
[*] Connected to msf. Connection type: postgresql.

如果想要断开与当前数据库的连接,可以使用db_disconnect命令。

msf6 > db_disconnect
Successfully disconnected from the data service: local_db_service.

如果想要再次建立与数据库的连接,可以使用db_connect命令。该命令的完整用法如下。

db_connect <user:[pass]>@<host:[port]>/<database>

例如要连接到数据库msf_test,可以使用如图1-9所示的命令。

图1-9 连接到数据库msf_test的命令

另外,你也可以使用参数-y通过配置文件来连接数据库,具体过程如下。

msf6 > db_connect -y /usr/share/metasploit-framework/config/database.yml
Connected to the database specified in the YAML file.
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.

如果之前已经成功配置过数据库,下次可以使用命令msfdb run启动数据库。

当为Metasploit配置好数据库之后,就可以开始使用了。首先我们了解一下如何使用db_import命令导入数据。db_import命令的使用格式如下。

msf6 > db_import
Usage: db_import <filename> [file2...]

Filenames can be globs like *.xml, or **/*.xml which will search recursively
Currently supported file types include:
   Acunetix
   Amap Log
   Amap Log -m
   Appscan
   Burp Session XML
   ……………………………………
   Nikto XML
   Nmap XML
   OpenVAS Report
   OpenVAS XML
   Outpost24 XML
   Qualys Asset XML
   Qualys Scan XML
   Retina XML
   Spiceworks CSV Export
   Wapiti XML

从db_import命令的帮助文件可以看到,它可以导入大部分常用渗透工具生成的数据。例如,这里以扫描工具Nmap为例,首先将Nmap扫描192.168.157.137的信息保存为report.xml。具体命令如下。

┌──(kali@kali)-[~]
└─$ nmap -oX /home/kali/Downloads/report.xml 192.168.157.137

接下来在Metasploit中使用db_import命令导入report.xml的内容。具体命令如下。

msf6 > db_import /home/kali/Downloads/report.xml
[*] Importing 'Nmap XML' data
[*] Import: Parsing with 'Nokogiri v1.11.1'
[*] Importing host 192.168.157.137
[*] Successfully imported /home/kali/Downloads/report.xml

然后我们可以使用services命令来验证是否已经导入192.168.157.137的扫描结果。services命令可以查看当前Metasploit中所有的服务扫描结果,如图1-10所示。

图1-10 Metasploit中的服务扫描结果

我们可以看出report.xml的所有信息已经导入Metasploit。

现在我们已经成功地启动Metasploit数据库,并在其中保存了一些信息,接下来可以使用命令来查看这些信息了。

hosts命令可以查看到当前数据库中存储的主机信息,其中包括主机的IP地址、MAC地址、名称、操作系统类型、操作系统版本、用途、信息等内容。执行该命令的结果如图1-11所示。

图1-11 使用hosts命令查看数据库中存储的主机信息

hosts命令本身也支持多种参数的使用,使用hosts -h命令可以查看hosts命令的帮助信息,如图1-12所示。

图1-12 hosts命令的帮助信息

例如使用参数-c,可以只显示指定列的数据,如图1-13所示。

图1-13 使用参数-c显示指定的列

使用参数-S,可以对数据库中的内容进行筛选。例如只显示Windows操作系统相关的数据,可以使用如图1-14所示的命令。

图1-14 使用参数-S显示指定的内容

通过services命令可以查看数据库中存储的服务信息。使用services -h命令可以查看该命令的帮助信息,如图1-15所示。

图1-15 services命令的帮助信息

首先使用db_nmap命令(见1.5节)和参数sV扫描一次目标设备,获得详细的信息。然后使用services命令查看所有的主机服务信息,如图1-16所示。

图1-16 使用services命令查看所有的主机服务信息

使用参数-p,可以实现对服务端口的过滤,如图1-17所示。

图1-17 使用参数-p过滤服务端口

使用参数-S,可以查看vsftpd信息,如图1-18所示。

图1-18 使用参数-S查看vsftpd信息

我们也可以综合使用这些参数,如图1-19所示。

图1-19 综合使用参数查看相关信息

我们进行渗透时,往往需要执行多个任务,为了让这些任务相互隔离,Metasploit提供了 workspace(工作区)工具。因此我们在执行不同任务时,需要建立不同的工作区。

启动Metasploit时使用的是默认工作区,该工作区名称为default。具体命令如下。

msf 6> workspace
* default

workspace命令的使用说明如下所示。

msf6 > workspace -h
Usage:
    Workspace                         List workspaces
    workspace -v                      List workspaces verbosely
    workspace [name]                  Switch workspace
    workspace -a [name] ...           Add workspace(s)
    workspace -d [name] ...           Delete workspace(s)
    workspace -D                      Delete all workspaces
    workspace -r <old> <new>          Rename workspace
    workspace –h                      Show this help information

使用参数-a和新工作区的名字,可以在Metasploit中添加一个新的工作区。具体命令如下。

msf6 > workspace -a test210327
[*] Added workspace: test210327
[*] Workspace: test210327

使用workspace命令可以列出当前所有的工作区。

msf6 > workspace
  default
* test210327

其中,test210327前面的*表示为当前工作区。如果要切换到default工作区,可以使用如下命令。

msf6 > workspace default
[*] Workspace: default
msf6 > workspace
  test210327
* default

如果要删除其中的一个工作区,可以使用参数-d。例如删除test210327工作区可以使用下面的命令。

msf6 > workspace -d test210327
[*] Deleted workspace: test210327
msf6 > workspace
* default

由于Metasploit与Nmap两款工具之间的互动较多,因此Metasploit提供了db_nmap命令来实现扫描,扫描的命令与Nmap相同,而且扫描的结果会自动保存在数据库中。例如扫描192.168.157.137可以使用如下命令。

msf6 > db_nmap 192.168.157.137
[*] Nmap: Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-27 05:42 EDT
[*] Nmap: Nmap scan report for 192.168.157.137
[*] Nmap: Host is up (0.00090s latency).
[*] Nmap: Not shown: 977 closed ports
[*] Nmap: PORT     STATE SERVICE
[*] Nmap: 21/tcp   open  ftp
[*] Nmap: 22/tcp   open  ssh
[*] Nmap: 23/tcp   open  telnet
……………………………………
[*] Nmap: 6667/tcp open  irc
[*] Nmap: 8009/tcp open  ajp13
[*] Nmap: 8180/tcp open  unknown
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

但是,如果使用这个命令,需要先配置数据库,否则会看到如下提示。

msf6 > db_nmap -O 192.168.157.168
[-] Database not connected

所以我们先退出Metasploit,然后启动数据库。具体命令如下。

┌──(kali㉿kali)-[~]
└─$ sudo msfdb run

db_nmap命令扫描结果如图1-20所示。

图1-20 使用db_nmap命令扫描

由于本书将重点放在Web应用环境上,因此图1-20中使用方框标识出来的两个服务将会是我们接下来研究的重点。作为和Metasploit相并列的渗透行业两大神器之一,要描述Nmap的强大功能需要大量的篇幅,读者如果希望能够深入了解Nmap,可以参考《诸神之眼——Nmap网络安全审计技术揭秘》。

本章作为全书的开篇,从Web服务环境开始讲起,接着介绍了构建攻击环境的Metasploit和靶机环境Metasploitable2。由于在渗透测试的过程中会产生大量的数据,因此Metasploit也需要数据库的支持。Metasploit将所有数据都存储在PostgreSQL数据库中。另外,渗透测试人员经常要使用Metasploit同时执行多个任务,为了避免数据混杂,Metasploit提出工作区的概念。每个任务对应一个工作区。每个工作区保存该任务的各项数据和操作设置。这些准备工作都是实际渗透测试工作中必不可少的操作。


相关图书

Dapr与.NET微服务实战
Dapr与.NET微服务实战
区块链国产化实践指南:基于Fabric 2.0
区块链国产化实践指南:基于Fabric 2.0
Angular应用程序开发指南
Angular应用程序开发指南
Eclipse WTP Web应用开发
Eclipse WTP Web应用开发
一个全栈增长工程师的练手项目集
一个全栈增长工程师的练手项目集
2017年异步社区书目
2017年异步社区书目

相关文章

相关课程