Brooklyn Nine Nine - TryHackMe
SUMMARY
Debemos encontrar dos banderas en la maquina Brooklyn99 CTF
. Donde a partir del escaneo de puertos de Nmap pude saber que hay un servicio HTTP
, FTP
, y SSH
. Además, con el script http-title.nse
de Nmap supe que hay una página web almacenada en el servidor web, y analizando el código fuente de la página web pude deducir que se han almacenado datos ocultos en la imagen de portada de la página web. Para ello utilice la herramienta stegcracker
para crackear la contraseña que necesitaba para acceder a los datos ocultos de la imagen a través de steghide
. Luego, encontré unas credenciales del usuario holt
que las utilicé para acceder al sistema objetivo a través del servicio SSH
. Luego, aprovechándonos de que el usuario holt
puede ejecutar el comando nano
con los privilegios del usuario root a través del comando sudo
, llegamos a ser el usuario root.”
FASE RECONOCIMIENTO
Para resolver este ejercicio empezaremos utilizando el comando openvpn
con el fin de establecer una conexion VPN con la red virtual donde esta la maquina Brooklyn99 CTF
. Para ello utilizaremos el archivo de configuracion, que lo podemos descargar en la plataforma de Tryhackme, que puede incluir informacion como la direccion del servidor VPN, los certificados y claves de seguridad, la configuracion de encriptacion, etc.
Luego de que se establece la conexion VPN se crea una interfaz virtual de red en nuestra maquina. Donde se enruta todo el trafico de red a traves de esa interfaz.
Ademas, la plataforma de Tryhackme nos muestra la direccion ip de la maquina Brooklyn99 CTF
.
FASE ESCANEO Y ENUMERACION
Luego pasaremos a la fase de Escaneo y Enumeracion con el fin de poder escanear los puertos del nodo. Ademas, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios, y el sistema operativo de la maquina Brooklyn99 CTF
. Para ello utilizaremos Nmap
. Donde le pasaremos los siguientes parametros:
- El parametro -sC o -script=”default” para utilizar todos los scripts de la categoria default con el fin de realizar un escaneo y deteccion de los puertos de manera avanzada.
- El parametro -sV con el fin de conocer las versiones de los servicios levantados en los puertos abiertos.
- El parametro -n para evitar la resolucion DNS, y el parametro -max-rate para indicarle el numero maximo de paquetes por segundo que va a utilizar Nmap para el escaneo con el fin de evitar sobrecargar la red con el trafico generado por la herramienta.
- El parametro -p- para realizar un escaneo de los 65535 puertos del nodo y el parametro -open con el fin de que nos muestre informacion solo de los puertos abiertos.
Los resultados que obtuvimos del escaneo vienen a ser:
- Hay un servicio
HTTP
que se está levantado en el puerto 80, y el programa servidor HTTP que se está corriendo. Además, la versión del programa servidor HTTP. - A partir del script
http-tittle.nse
deNmap
llegamos a saber que hay una página web que se aloja en el servidor web. - Hay un servicio
FTP
que se está levantado en el puerto 21, y el programa servidor FTP que se está corriendo. Además, la versión del programa servidor FTP. - Hay un servicio
SSH
, que esta levantado en el puerto 22, y el programa servidor SSH que se está corriendo. Además, la versión del programa servidor SSH.
Ahora accederemos a la página web a través de mi navegador web para observar su contenido.
Observamos que el código fuente de la pagina web nos realizan una pregunta sobre la esteganografía
, que consiste en el arte de ocultar datos sobre un medio que puede ser un archivo, imagen, audio, etc.
Teniendo en cuenta esto utilizaremos una herramienta de esteganografía llamada steghide
sobre la imagen que se utiliza en la porta de la pagina web con el fin de saber si hay datos ocultos en ella.
Podemos observar que los datos ocultos en la imagen están cifrados y se requieren de una clave o contraseña para acceder a ellos.
FASE HACKING O GANAR ACCESO O EXPLOTACION
Ahora utilizaremos la herramienta stegcracker
que nos permite realizar fuerza bruta con un diccionario, de nuestra elección, con el fin de crackear la contraseña que se utiliza para ocultar datos ocultos sobre una imagen o audio.
Podemos observar que la herramienta llego a encontrar la contraseña necesaria para acceder a los datos ocultos en la imagen utilizada de portada en la página web almacenada en el servidor web.
Ahora accederemos a los datos ocultos de la imagen.
Podemos observar que el dato oculto viene a ser un archivo llamado note.txt
que contiene las credenciales de un usuario llamado holt
.
Ahora intentaremos acceder al sistema objetivo a través del servicio SSH
utilizando las credenciales del usuario holt
.
De esta manera obtenemos acceso al sistema objetivo siendo el usuario holt
.
FASE ESCALADA DE PRIVILEGIOS
Ahora debemos buscar un vector de escalada de privilegios con el fin de ser un usuario con privilegios más elevados. Para ello utilizaremos el siguiente comando para observar que programas puedo ejecutar con el comando sudo
, y con los privilegios del usuario root.
Podemos observar que aparece el termino (ALL) NOPASSWD
al lado del archivo binario nano
. Esto significa que el usuario holt
puede ejecutar el archivo binario nano
con los privilegios del usuario root a través del comando sudo
sin requerir de unas credenciales.
Teniendo en cuenta esto aprovecharemos que a través del editor de texto de terminal nano
se puede ejecutar comandos a través de su interfaz. Para ello primero crearemos un archivo llamado prueba
para acceder al interfaz del editor nano
. Luego, digitaremos Ctrl+R y Ctrl+X con el fin de poder ejecutar un comando que nos genera una conexión reverse shel hacia nuestra máquina.
Antes de ejecutar el comando debemos habilitar el puerto 1900 en nuestra maquina para que este en modo escucha y esperando la conexión entrante que generara el comando que ejecutaremos.
Ahora si ejecutamos el comando desde la interfaz del editor de texto de terminal nano
.
De esta manera llegamos a ser el usuario root.
Ahora buscaremos las dos banderas contenidas en los archivos user.txt
y root.txt
. Para localizar los archivos utilizaremos el comando find
para buscar desde el directorio /, archivos con sus nombres.