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 命令,并且记好笔记。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于