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.
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:
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:
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.
¿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:
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:
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:
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:
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.
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
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:
Sólo tenemos que navegar al escritorio y hacer un cat:
Capturar la flag de root
Para obtener root, primero veremos los procesos corriendo en la máquina:
ps -aux
Si ejecutamos tmux podemos obtener root!
Finalmente, vamos al directorio y obtenemos la flag de root:
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 |
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 |
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 |
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
Writeup alojado también en https://github.com/Hackplayers/hackthebox-writeup.
Comentarios
Publicar un comentario