[HTB write-up] Valentine

El siguiente writeup muestra el proceso que utilic茅 para capturar las flags de usuario y de root en la m谩quina Valentine en @10.10.10.79.
Este documento contiene mis notas que tom茅 cuando estaba trabajando en la misma.

Mi forma de pensar

El primer paso consiste en la fase de reconocimiento como escaneo de puertos, banner grabbing, configuraciones err贸neas, etc. El segundo en encontrar las vulnerabilidades, es decir, el ataque en s铆 mismo, y finalmente la escalada de privilegios llamada "fase de post-explotaci贸n".


Aviso personal: la post-explotaci贸n fue bastante compleja, har茅 todo lo posible para explicar c贸mo roote茅 la m谩quina de Valentine.

Sub铆ndice: Algo estaba oculto en la imagen de bienvenida y ayuda mucho ...


Escaneo de puertos

Durante este paso vamos a identificar el objetivo para ver que hay detr谩s de la direcci贸n IP. Estos son los resultados:


El sistema remoto es Linux. Tenemos abierto un servidor web y un acceso remoto mediante ssh.

Con 茅sto, vamos a chequear ambos servicios. Para hacer esto, primero lo veremos en el navegador y, segundo, abriremos un terminal con las credenciales b谩sicas.


Paso 1.1 El servidor web:

El resultado de nuestra navegaci贸n es un mujer con un coraz贸n roto!! Esto ayuda mucho porque para un hacker representa la vulnerabilidad HEARTBLEED.

P谩gina de bienvenida

Paso 1.2 El acceso remoto:

Este es el resultado una sencilla conexi贸n a nuestro SSH:


Identificaci贸n

Vamos a echar un vistazo a las cabeceras del servidor web:

curl -I 10.10.10.79
HTTP/1.1 200 OK
Server: Apache/2.2.22(Ubuntu)
Content-Type: text/html; charset=UTF-8


Parece que tenemos un servidor web bajo Apache 2.2.22.

Miraremos el c贸digo fuente para ver si encontramos algo interesante.


Nada interesante, as铆 que seguimos.

Vamos a ver qu茅 ocurre con Burp:

Captura de una petici贸n

Enumeraci贸n

En esta  parte del reto que ya tenemos algo de info de la m谩quina, vamos a enumerar algunos directorios del sitio web haciendo fuerza bruta de la URL.

Para ello usaremos Dirbuster con el diccionario por defecto:

Enumeraci贸n de directorios

Enumeraci贸n de ficheros

Al final de este paso, tenemos ya una buena idea de la estructura del sitio web. Usaremos p谩ginas para para encodear/decodear algunos datos que vamos a encontrar. 

Enumeraci贸n adicional
 

La fase de enumeraci贸n de directorios revela algunas carpetas muy interesantes.

Los directorios encontrados:

http://10.10.10.79/dev/
http://10.10.10.79/dev/hype_key
http://10.10.10.79/notes.txt
http://10.10.10.79/encode/
http://10.10.10.79/decode/


Como se puede ver, el elemento de la carpeta DEV contiene un archivo de clave (la clave privada) y una nota de texto.

La carpeta DEV

Informaci贸n de qu茅 hacer

La clave privada en formato raw

¿Qu茅 es lo pr贸ximo?

La vulnerabilidad

Con esta parte ya podemos preparar nuestra intrusi贸n en el sistema remoto.
La vulnerabilidad es HEARTBLEAD. Para m谩s detalles, consultar este art铆culo:


http://heartbleed.com

 
Con algunas investigaciones, esta vulnerabilidad se refiere al CVE-2014-0160



Explotaci贸n

Con toda la informaci贸n que hemos conseguido podemos hacer la intrusi贸n en el sistema remoto.


Para hacerlo, lanzaremos una shell con Metasploit. Vamos a empezar el juego ;)

Antes de nada, actualizaremos el framework ya que se requiere tener una versi贸n reciente.

Los pasos son:

- Buscar el exploit :> heartbleed
- Configurar el exploit
- Configurar el payload
- Ejecutar el exploit

Estas son las opciones:

Configuraci贸n del exploit para Valentine

Ahora nuestro exploit est谩 listo para ser lanzado. El resultado ser谩 la obtenci贸n de varios leaks del servidor.

El siguiente paso ser谩 usar las funciones encode/decode:

conexiones SSL
Esta captura de pantalla muestra la respuesta de heartbleed con algunos leaks. La primera y la segunda captura de pantalla no son cosas muy interesantes, as铆 que relanc茅 el exploit para obtener una buena cantidad de informaci贸n.


He subrayado los datos interesantes:


$text=aGBncRibV1&GlldmVoaGVoeXBIcg==


Decodificar el leak: decode.php

En este paso vamos a decodear el leak con la funcionalidad que he encontrado en un sitio web:


El resultado nos da el usuario (hype) y la contrase帽a:

El mensaje decodificado

Trabajando con: hype_key fuerza bruta

 Ya tenemos toda la informaci贸n excepto la key. Tenemos que convertir hype_key a un formato correcto para entrar al servidor con el usuario hype.


Tenemos dos archivos de texto. El primero raw que encontramos en el website y el segudo ya transformado al formato correcto:

El fichero convertido

Despu茅s de la conversi贸n el 煤ltimo paso es usar openssl con esta sintaxis:

openssl rsa -in < > -out < >
-in with ‘hype_convert’
-out with a name I’ve chosen ‘hype_key’


En el ultimo paso se nos pide la passphrase: heartbleedbelievethehype.


El comando con openssl
La intrusi贸n en el sistema remoto


Este paso es el m谩s importante del reto. Vamos a "hackear" la m谩quina entrando por SSH.

Nosotros tenemos estos elementos:

- La IP
- El usuario
- La clave privada

Estamos dentro

Grande, estamos dentro! El 煤ltimo paso es escalar privilegios para capturar las flags.


Escalado de privilegios

Una vez dentro tenemos que encontrar las flags. Primero la flag de usuario, y el segundo, la flag de root de la m谩quina.

- La flag de usuario fue f谩cil porque la encontramos el directorio de usuario y el archivo de texto en 茅l.
- La flag de root (administrador del sistema) fue ¡m谩s complejo! Se nos d铆o una pista ;)


Capturar la flag de usuario
 

Cuando entramos al sistema, est谩bamos en root del sitio web. Entonces, la 煤nica soluci贸n para m铆 era encontrar el directorio de usuario y atrapar la flag.
 
Conoce siempre d贸nde est谩s y ¡¡donde quieres ir!!



Entonces, busqu茅 la ubicaci贸n de la flag de usuario en el sistema con el siguiente
comando:


Localizaci贸n de user.txt
 S贸lo tenemos que navegar al escritorio y hacer un cat:

la flag de usuario

Capturar la flag de root

Para obtener root, primero veremos los procesos corriendo en la m谩quina:

ps -aux  

Los procesos

Si ejecutamos tmux podemos obtener root!

Comando tmux

Finalmente, vamos al directorio y obtenemos la flag de root:

la flag de root

Contribuci贸n gracias a drx51

Comentarios