渗透测试框架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命令,并且记好笔记。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!