Jurassic Park - TryHackMe
SUMMARY
Debemos encontrar cuatro banderas en la maquina HackBack-WE-TASK4. Donde a partir del escaneo de puertos de Nmap pude saber que hay un servicio HTTP y SSH. Además, con un script de Nmap supe que hay un sitio web almacenado en el servidor web. Luego, me encontré con la vulnerabilidad Blind SQli en uno de los parámetros GET, que utilizaba el sitio web para realizar sus consultas SQL hacia su base de datos con el fin de mostrar información sobre sus paquetes que vendría a través de su sitio web. Además, me encontré que el desarrollador del sitio web había implementado una lista negra para limitar los valores que pueden ingresar los usuarios al parámetro GET. Luego, realice una enumeración manual y automatizada con sqlmap sobre las bases de datos que consultaba el sitio web, llegando a encontrar unas credenciales de un usuario local en el sistema objetivo. Luego, accedí al sistema destino utilizando el servicio SSH y las credenciales obtenidas anteriormente. Luego, aprovechando que podía ejecutar el archivo binario scp con los privilegios del superusuario root es que realice una escalada de privilegios vertical siendo el superusuario root.
FASE RECONOCIMIENTO ACTIVO
Para resolver este ejercicio empezaremos utilizando el comando openvpn con el fin de establecer una conexión VPN con la red virtual dónde está la máquina HackBack-WE-TASK4. Para ello utilizaremos el archivo de configuración, que lo podemos descargar en la plataforma de Tryhackme, que puede incluir información como la dirección del servidor VPN, los certificados y claves de seguridad, la configuración de encriptación, etc.
Luego de que se establece la conexión VPN se crea una interfaz virtual de red en nuestra máquina. Donde se enruta todo el tráfico de red a través de esa interfaz.
Además, la plataforma de Tryhackme nos muestra la dirección ip de la máquina HackBack-WE-TASK4.
FASE ESCANEO Y ENUMERACION
Luego pasaremos a la fase de Escaneo y Enumeración con el fin de poder escanear los puertos del nodo. Además, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios, y el sistema operativo de la máquina HackBack-WE-TASK4. Para ello utilizaremos Nmap
. Donde le pasaremos los siguientes parámetros:
- El parámetro -sC o –script=”default” para utilizar todos los scripts de la categoría default con el fin de realizar un escaneo y detección de los puertos de manera avanzada.
- El parámetros -sV con el fin de conocer las versiones de los servicios levantados en los puertos abiertos.
- El parámetro -n para evitar la resolución DNS, y el parámetro –max-rate para indicarle el número máximo de paquetes por segundo que va a utilizar Nmap para el escaneo con el fin de evitar sobrecargar la red con el tráfico generado por la herramienta.
- El parámetro -p- para realizar un escaneo de los 65535 puertos del nodo y el parámetro –open con el fin de que nos muestre información 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.
- Hay un servicio SSH que se está levantado en el puerto 22, y el programa servidor SSH que se está corriendo. Además, la versión del programa servidor SSH.
- A través del script http-title.nse de Nmap se pudo capturar el valor de la etiqueta o elemento HTML title, que viene a ser el título de una página web almacenada en el servidor web.
Ahora, observamos la página web desde mi navegador web.
Podemos observar que la página web viene a ser la página de inicio de un sitio web, que consta de varias páginas web para diferentes enfoques. En una de las páginas web se pueden observar los 3 tipos de paquetes que se pueden comprar para acceder al parque. Además, si accedemos a un paquete, observamos el parámetro GET id en la URL de la pagina web. Esto nos da a deducir que el sitio web esta realizando una consulta SQL hacia su base de datos con este parámetro GET con el fin de poder mostrar información sobre el paquete.
FASE GANAR ACCESSO O HACKING O EXPLOTACION
Ahora probaremos si este parámetro GET es vulnerable a SQLi. Para ello introduciremos los caracteres ‘ o “” con el fin de saber de si se el valor que introducimos se concatena directamente con la consulta SQL que realiza el sitio web hacia su base de datos. Además, si es el caso obtendremos un mensaje de error emitido por el DBMS en el sistema destino, que gestiona las bases de datos.
Podemos observar que cuando introducimos el carácter ‘nos generó un mensaje de permiso denegado. Esto da a deducir que se ha configurado una lista negra que limita los valores que pueden ingresar los usuarios al parámetro GET id, pero si utilizamos el carácter “evitamos el filtro. Por lo tanto, el sitio web si es vulnerable a SQLi, pero debemos tener en cuenta que caracteres podemos utilizar.
Podemos observar que otros de los caracteres que han sido especificados en la lista negra por los desarrolladores del sitio web es -, pero aun así hemos podido enumerar todas las bases de datos gestionadas por el DBMS en el sistema destino.
Ahora enumeraremos las tablas de la base de datos park.
Podemos observar que la base de datos park contiene las tablas ítems and users.
Ahora enumeraremos las columnas de las dos tablas.
Tabla ítems:
Tabla users:
Podemos observar todas las columnas de las tablas users and ítems.
Ahora volcaremos todos los registros de las dos tablas:
Tabla ítems:
Tabla users:
Podemos observar que la palabra username forma parte de la lista negra. Por esa razón es que no podemos volcar todos los registros de las columnas username, pero en uno de los registros de la columna information podemos obtener el nombre de un de los desarrolladores del sitio web.
Otra manera que pudimos haber optado para automatizar la explotación de la vulnerabilidad SQLi del sitio web, es mediante el uso de la herramienta sqlmap de la siguiente manera:
Podemos observar que llegamos a obtener todas las bases de datos gestionados por el DBMS del sistema destino.
Ahora volcaremos todos los registros de todas las tablas de la base de datos park.
Podemos observar que llegamos a obtener los mismo resultados, pero la desventaja es que si optamos por utilizar sqlmap, no llegamos a saber la lista negra que ha implementado el desarrollador del sitio web.
Ahora intentaremos probar las credenciales, encontradas en los registros de la columna password, con el username dennis mediante el servicio SSH, que se esta ejecutando en el sistema destino.
FASE ESCALADA PRIVILEGIOS
Ahora debemos buscar un vector de escalada de privilegios con el fin de ser un usuario con privilegios más elevados. Para ello realizaremos una enumeración manual sobre los directorios del usuario dennis.
Podemos observar que llegamos a encontrar la primera bandera en el directorio home del usuario dennis.
Ahora accederemos al historial de comandos, que han sido digitados por el usuario dennis anteriormente, en el intérprete de comandos con el fin de buscar vectores de escalada de privilegios.
Podemos observar que llegamos a encontrar la tercera bandera en el historial de comandos. Además, encontramos un script, pero su contenido no representa un vector de escalada de privilegios, pero si nos indica la ubicación de la una de las banderas. Ademas, podemos observar el archivo oculto viminfo. Donde se almacenarán los comandos, que fueron ingresados en la interfaz del editor de texto de terminal VIM por el usuario dennis.
Ahora accederemos a su contenido para observar que comandos ingreso anteriormente el usuario dennis.
Podemos observar que en el historial de comandos del editor de texto VIM solo encontramos las ubicaciones de las banderas 2 y cuarta, pero no encontramos posibles vectores de escalada privilegios. Además, la ubicación de la cuarta bandera es en el directorio tmp. Por lo tanto, ya no se debe haber eliminado al momento de que iniciamos sesión en el sistema destino con las credenciales del usuario dennis.
Ahora observaremos el contenido de la segunda bandera.
Ahora enumeraremos los comandos y programas que puede ejecutar el usuario dennis con los privilegios del usuario root.
Podemos observar que el usuario dennis puede ejecutar el archivo binario ejecutable scp con los privilegios del superusuario root.
Ahora, aprovecharemos esto para utilizar los siguientes comandos, que me generaran una shell sh en el sistema destino, pero con los privilegios del usuario root.
De esta manera realizamos una escalada de privilegios vertical y llegamos a ser el usuario root.
Ahora observaremos el contenido de la última bandera, cuya ubicación ya lo sabemos debido al script test.sh que encontramos anteriormente.