渗透测试框架metasploit

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漏洞的环境,可以参考之前的一篇博客进行配置: http://uuzdaisuki.com/2018/01/22/struts2-052%E6%BC%8F%E6%B4%9E/

额外将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命令,并且记好笔记。

fork me on github