Gallery - TryHackMe
SUMMARY
Debemos encontrar dos banderas en la maquina Gallery PwnKit Solve
. Donde a partir del escaneo de puertos de Nmap
pude saber que hay un servicio HTTP
en el puerto 80 y 8080. Además, con el script http-title.nse
de Nmap supe que hay una página web almacenada en el servidor web del puerto 8080. Donde encontré un formulario o login, que era a vulnerable SQLi Blind
, permitiéndome omitir la autenticación para acceder a la página de administración de la aplicación web. Luego, pude cargar un archivo PHP
, que nos genere una reverse Shell hacia mi sistema, en la imagen del avatar. Llegando a obtener acceso al sistema destino. Luego, realizamos un tratamiento del tty para que nuestra reverse Shell sea estable e interactiva. Luego, realizamos una escalada horizontal para ser el usuario mike
mediante unas credenciales encontrados en el archivo .bash_history
. Luego, realizamos una escalada vertical para ser el usuario root
mediante un script y el editor de texto de terminal nano
.
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 Gallery PwnKit Solve
. 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 Gallery PwnKit Solve
.
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 Gallery PwnKit Solve
. 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ámetro -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 levantado en el puerto 80 y 8080, y el programa servidor HTTP que se está corriendo. Además, la versión del programa servidor HTT
- A partir del script http-tittle.nse de Nmap llegamos a saber que hay una página web que se aloja en el servidor web, que se utilizando el puerto 8080.
Ahora observaremos esta pagina web desde mi navegador web.
Podemos observar que la página web viene a ser un formulario o login para acceder a la plataforma de administración de la aplicación web.
Ahora utilizaremos Burp Suite para interceptar la solicitud POST HTTP, que se realiza cuando intentamos autenticarnos en el formulario, con el fin de poder observar la consulta SQL que realiza la aplicación web hacia su servidor de base de datos para permitirnos el ingreso hacia su plataforma de administración.
Podemos observar que la consulta SQL que realiza la aplicación web permite que los valores que insertamos al parámetro username se concatenen directamente con la consulta SQL. Por lo tanto, la aplicación web es vulnerable a SQLi Blind.
FASE GANAR ACCESO O EXPLOTACION O HACKING
Ahora omitiremos la autenticación requerida para acceder a la plataforma de administración. Para ello insertamos la siguiente consulta SQL maliciosa como valor en el parámetro username.
Podemos observar que logramos acceder a la plataforma de administración de la aplicación web siendo el usuario admin. Además, observamos que podemos cambiar la imagen del avatar del usuario. Podemos aprovechar esto para saber si la aplicación web es vulnerable a File Upload. Para ello probaremos si la aplicación web nos permite subir un archivo PHP, que nos generara una conexión reverse Shell hacia mi sistema, como imagen del avatar.
Podemos observar que la aplicación si nos permitió subir el archivo reverse.php como imagen del avatar.
Ahora daremos clic a Update para que el servidor web destino procese y ejecute el código PHP del archivo, pero antes habilitemos el puerto 1500 en modo listening en mi sistema para que este escuchando las conexiones entrantes.
Ahora si damos clic a Update para obtener la Shell en el sistema destino.
De esta manera obtenemos acceso al sistema destino siendo el usuario www-data. Además, podemos observar que al usuario www-data se le ha configurado para que utilice la Shell nologin cuando inicie sesión en el sistema destino. Además, esta Shell viene a ser no interactiva y no estable. Por lo tanto, realizaremos un tratamiento de la tty para tener una Shell más estable y interactiva.
FASE ESCALDA 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 realizaremos una enumeración manual sobre los directorios del sistema objetivo en busca de vectores de escalda de privilegios.
Podemos observar que encontré un directorio llamado backup, que contiene una copia del directorio home del usuario Mike. Además, observando el contenido del archivo oculto .bash_hiistory, pudimos observar todos los comandos que digito el usuario Mike cuando inicio sesión el sistema objetivo a través de una Shell bash. Donde observamos que digito el comando sudo -l, que va a solicitar la contraseña del usuario Mike para que le puede mostrar los comandos que puede correr con los privilegios del usuario root, y erróneamente escribió su contraseña antes de dar enter al comando. Además, en el directorio documentas pudimos encontrar un archivo que contenía las credenciales de Netflix, Spotify, Tryhackme de Mike.
Ahora cambiaremos al usuario Mike utilizando las credenciales mediante el comando su.
De esta manera realizamos una escala de privilegios horizontal llegando a ser el usuario Mike. Además, enumeraremos los comandos que puede ejecutar el usuario Mike con los privilegios del usuario root. Donde pudimos encontrar que el usuario Mike puede ejecutar un script en bash que cuando lo ejecutamos nos va a solicitar si queremos chequear la versión, actualizar, listar o leer un archivo llamado report.txt.
Podemos aprovechar que cuando escogemos la acción de leer, podremos observar el contenido del archivo report.txt a través del editor de texto de terminal nano, que contiene una opción para poder ejecutar comandos, pero teniendo los privilegios del usuario root.
Ahora digitaremos un comando que nos genera una conexión reverse Shell hacia nuestro sistema, pero antes habilitaremos el puerto 1900 en modo listening para que este escuchando las conexiones entrantes.
De esta manera llegamos a ser el usuario root mediante una escalada de privilegios vertical.
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.