前言: 在深入研究生渗透测试的各个阶段之前,我们应该初步掌握漏洞利用的相关知识。就各阶段工作对渗透测试成功的影响而言,信息收集阶段工作和信息侦查阶段工作要比漏洞利用阶段工作的作用更大,但是从工作乐趣而言,获取shell(到既定目标的远程连接)或诱使他人在克隆的网站输入密码,反而比信息收集的工作有趣的多。
这里我们来谈谈Metasploit框架,它已然是渗透测试的标准工具。具有模块化和灵活架构的双重优点,这种设计有助于人们在发现漏洞之后立刻着手exploit的开发,界面友好,简单易用.......(好了我吹不下去了)
现在启动Metasploit并用它攻击一个靶机。由于Kali Linux的环境变量PATH已经收录了Metasploit所在的文件夹位置,因此可以在任意目录下直接启动Metasploit,首先需要启动 PostgreSQL 数据库的系统服务。这个数据库用于记录和查询Metasploit的数据。
┌──(shirong㉿kali)-[~]
└─$ service postgresql start
接下来就可以启动Metasploit的系统服务器了。首次启动服务器时,它会创建一个名为msf3的PostgreSQ数据库用户,并完成数据库的初始化安装工作 。
┌──(shirong㉿kali)-[~]
└─$ service metasploit start
Metasploit有多就种控制界面。这里只拿文本控制端控制台Msfconsole,以及命令行控制界面Msfcli展开说,虽然都可以运行模块,但是这里侧重用前者说。
这次启动的界面一如既往的好看,爱了爱了。 在使用Metasploit时,可以通过help命令查看所有可用的命令,以及这些命令的功能描述。若对某些命令感到生疏,则可以通过 "help <命令名称>" 查看它们的使用说明。
使用Metasploit模块来利用Windows XP靶机上某个未修复的安全漏洞。这个安全漏洞最终被微软安全公共(补丁)MS08-067修复。微软MS08-067修复的是一个由netapi32.dll引起的远程代码执行漏洞。成功利用此漏洞的攻击者能够通过SMB(Server Message Block)协议完全远程控制受影响的系统。因为攻击者无需经过身份认证即可利用这个漏洞,所以它属于高危漏洞。其后出现的 Conficker 蠕虫利用的正是MS08-067漏洞。
这是2008年就存在的安全漏洞。虽然官方已经在多年之前早就修复了该问题,但是许多企业的内网已然存在这个严重的安全漏洞,在众多exploit中,Metasploit的MS08-067模块简单易用,成功率高,成为了业内首选测试工具。
这里推荐Metasploit提供的在线数据库: Vulnerability & Exploit Database
2.1在线的模块数据库 在Metasploit的官方搜索界面中,能够根据CVE(Common Vulnerablities and Exposures)编号,OSVDB(Open Sourced Vulnerablity Database)ID,Bugtraq ID和微软安全公告编号(MSB),检索出相应的Metasploit模块。还可以利用某个字符检索出相应模块信息的全文。这里我以MS08-067为例子,进行一次搜索。
URL地址显示的模块名称,就是那个可测试微软安全公告MS-08-067问题的漏洞利用模块的全名。 在Metasploit的安装目录下,这个模块的文件位置是:
exploit/windows/smb/ms08_067_netapi/
2.2内置的搜索命令 还可以使用Metasploit的内置搜索功能检索相应的测试模块。
msf > info exploit/windows/smb/ms08_067_netpi
这里信息有点多,我们一条一条来讲:
(1) Name
Name: MS08-067 Microsoft Server Service Relative Path Stack Corruption
确切名称
(2) Module
Module: exploit/windows/smb/ms08_067_netapi
模块路径
(*) Version
Version: 0
版本信息 自从官方利用Github管理Metasploit的版本修订之后,内在的模块信息都被设置为0。
这是历史原因遗漏下来的一个字段,版本号就是模块的SVN修订编号
(3) Platform
Platform: Windows
平台信息 (例如:这个模块只适用于Windows)
(4) Privileged
Privileged: Yes
权限信息 是否需要事先以目标主机的管理员权限运行exploit,才可以利用该漏洞
(5) Rank
Rank: Great
评级信息 代表该exploit对目标主机的影响程度。Metasploit把各个exploit评定为
manual(需调试)至excellent(优异)之间的若干档。所谓优异的exploit应当不会引发主机的崩溃。
不过MS08-067这类利用内存溢出漏洞的exploit,本质上就不可避免主机崩溃问题。所以通常不会被评为优异级的
exploit。这里使用的这个exploit被评定为"great"(优秀),比优异略低一级。通常来说,优秀级别的
exploit能够自动探测正确的目标,并且会通过其他技术手段保证高的测试成功率。
(6) Available targets
Available targets:
Id Name
-- ----
0 Automatic Targeting
1 Windows 2000 Universal
2 Windows XP SP0/SP1 Universal
3 Windows 2003 SP0 Universal
4 Windows XP SP2 English (AlwaysOn NX)
5 Windows XP SP2 English (NX)
6 Windows XP SP3 English (AlwaysOn NX)
7 Windows XP SP3 English (NX)
8 Windows XP SP2 Arabic (NX)
9 Windows XP SP2 Chinese - Traditional / Taiwan (NX)
10 Windows XP SP2 Chinese - Simplified (NX)
...
...
69 Windows 2003 SP2 Spanish (NX)
70 Windows 2003 SP2 Japanese (NO NX)
71 Windows 2003 SP2 French (NO NX)
72 Windows 2003 SP2 French (NX)
系统适用的机型 代表exploit使用的操作系统,从上可知一共有72种系统。
(7) Basic options
Name Current Setting Required Description
———— ——————————————— ———————— ———————————
RHOSTS yes The target host(s), range CIDR identifier...
RPORT 445 yes The SMB service port (TCP)
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
基本选项 是调用模块时必须设置的选项。必须设置的基本选项是RHOSTS。它向Metasploit传递目标主机的IP地址
(8) Payload information
Payload information:
Space: 408
Avoid: 8 characters
有效载荷 用于帮助Metasploit选取有效载荷。有效载荷是与特定exploit对应的shellcode
有效载荷能够使那些被渗透的主机运行攻击人员置顶的命令。
(9) Description
This module exploits a parsing flaw in the path canonicalization
code of NetAPI32.dll through the Server Service. This module is
capable of bypassing NX on some operating systems and service pack...
模块介绍
(10) References
https://nvd.nist.gov/vuln/detail/CVE-2008-4250
OSVDB (49243)
https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2008/MS08-067
http://www.rapid7.com/vulndb/lookup/dcerpc-ms-netapi-netpathcanonicalize-dos
参考文献
进入指定的exploit模块的设置环境
选定了具体的模块之后还要继续设置,先看看模块的配置参数:
<1>RHOSTS 用预设定exploit的目标主机。因为这个选项的作用是“告诉Metasploit攻击哪一台主机”这里填写靶机的IP地址即可 命令:
set RHOSTS 172.16.122.4
运行之后最好再使用"show options"命令检查一下RHOSTS的值,看看是否调整成功。
<2>RPORT 用于设定攻击对象的具体端口,这里利用的是Windows SMB服务,而其使用的端口就是默认的445端口,Metasploit已经默认设置好了。 <3>SMBPIPE 沿用默认值BROWSER,SMB命名管道(pipe)是一种在网络上实现进程间通信(IPC)的跨主机通信机制 <4>Expolit Target 默认值设置为0 Automatic Targeting。Exploit Target选项用于设置目标主机的操作系统以及操作系统的版本号。
准备工作以及就绪,但是并不完整,为什么? 因为没有设定Metasploit在利用漏洞之后具体行为。Metasploit能够设定自动化设定有效载荷(payload)从而大幅度简化操作,我们只需要选取一个兼容有效的即可,Metasploit能够自动构造exploit的字符串,自动生成触发漏洞的程序代码和利用漏洞之后的攻击命令
4.1查找可兼容的有效载荷 Metasploit会定期收录新的exploit模块和新的有效载荷。但是并非所有的有效载荷都适用于既定的exploit。 这里使用命令查看有效载荷
4.2试运行 首先使用有效载荷的默认设置进行测试,熟悉有效载荷的工作原理。直接输入exploit命令,令Metasploit运行相应的攻击模块 Meterpreter会话是基于Metasploit特有的有效载荷,它不仅可以执行命令行界面中可以运行的全部命令,而且还可以完成许多其他任务。