Metasploit Framework简称msf,是一个渗透测试平台,集成大量可用于渗透测试的模块,并且提供了模块的统一编写规范,可自行按照规范编写模块,并允许在自己的模块包含平台中的其他模块,最后把模块集成到 msf 中即可使用。因此,msf 既是一款工具,也是一个平台。
exploit模板
msf 的模块主要用 Ruby 语言编写,为什么是主要呢?因为在新版本中也给出了 python 的模板。
以实现 exploit 模块为例子,官方给出的针对 web 服务的模板文件在 metasploit-framework/modules/exploits/example_webapp.rb。
简化一下模板:
#
# 编写一个web的exploit模块,首先要继承 Msf::Exploit::Remote;
# 如果编写 auxiliary 模块,就继承 Msf::Auxiliary。
#
class MetasploitModule < Msf::Exploit::Remote
# Rank 表示这个模块的可靠性,根据目标范围、利用条件、利用难度设置的等级,NormalRanking表示
# 这个模块针对的是目标系统的特定版本,并且不能有效地自动探测。
Rank = NormalRanking
#
# 这个模块针对的是 web 服务,因此需要包含 HttpClient 模块与目标服务器交互,包含之后
# 就给这个模块提供了几个参数的设置:RHOSTS、RPORT、SSL、VHOST。
# 如果用过 msf 的话,应该知道它们分别是目标的主机名,端口,是否开启SSL,HTTP-Host头部。
#
include Msf::Exploit::Remote::HttpClient
# 初始化方法,模块加载时首先执行
def initialize(info = {})
super(
# 有关模块的描述信息
update_info(
info,
'Name' => 'Sample Webapp Exploit',
'Description' => %q(
This exploit module illustrates how a vulnerability could be exploited
in a webapp.
),
'License' => MSF_LICENSE,
'Author' =>
[
'h00die <mike@stcyrsecurity.com>', # msf module
'researcher' # original PoC, analysis
],
'References' =>
[
[ 'OSVDB', '12345' ],
[ 'EDB', '12345' ],
[ 'URL', 'http://www.example.com'],
[ 'CVE', '1978-1234']
],
'Platform' => ['python'],
'Privileged' => false,0
'Arch' => ARCH_PYTHON,
'Targets' =>
[
[ 'Au