El Cliente

¡Hola Hacker! Bienvenid@ a un nuevo artículo. En esta ocasión, estaremos resolviendo una nueva máquina, la cual creé para nuestra comunidad de The Hackers Labs, la máquina El cliente.

Reconocimiento

Iniciamos, como de costumbre, realizando un envío de paquetes ICMP (ping) hacia la máquina objetivo para verificar la conectividad de la red. Observamos que la máquina responde a nuestros paquetes, lo que confirma que existe comunicación activa entre nuestro sistema y el objetivo.

Además, al analizar el TTL (Time To Live) del paquete de respuesta, que es de 64, deducimos que el sistema operativo de la máquina objetivo es probablemente Linux. Este valor de TTL es característico de los sistemas Linux en su configuración predeterminada, ya que otros sistemas operativos, como Windows, suelen utilizar valores diferentes (por ejemplo, 128).

Enumeración inicial

Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.

Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos.

Explotación inicial

Ingresamos al puerto 80 y nos encontramos con el siguiente sitio web:

Vemos que si accedemos a alguno de los enlaces del menú, intenta resolver a el dominio arka.thl.

Registramos este dominio en nuestro archivo /etc/hosts.

Navegando por el sitio web, nos encontramos con una sección de contacto la cual presenta un formulario en el que podemos completar además de datos personales un mensaje.

Antes de probar si este formulario presenta vulnerabilidades, podemos realizar un poco de fuzzing de subdominios bajo el dominio principal arka.thl.

Encontramos un subdominio disponible, admin.arka.thl.

Lo agregamos al archivo /etc/hosts.

Al ingresar al sitio, nos encontramos con el siguiente login.

Probamos credenciales tipicas, admin:admin, admin:passsword, root:toor admin:12345678 pero nada. Intentamos con inyecciones SQL pero tampoco logramos nada.

SI recordamos, contabamos con un formulario de contacto a través del cual podemos enviar un mensaje.

El campo mensaje es vulnerable a XSS (Cross Site Scripting) y para llevar a cabo la explotación completaremos el formulario y en el campo de mensaje utilizaremos el siguiente payload:

En este caso use este payload, pero podemos usar otros como por ejemplo:

Al cargarse la imagen anterior, se ejecutará el evento onerror ya que no se proporciono una ruta de imagen valida.

Antes de enviar el formulario, nos ponemos en escucha con netcat.

Enviamos el formulario. Si todo va bien, luego de unos segundos recibiremos una conexión a nuestra máquina atacante con la cookie de sesión del usuario admin.

Volvemos al sitio web de admin.arka.thl y asignamos el valor de la cookie.

Recargamos la web y deberíamos ganar acceso al panel de administración.

Genial, ganamos acceso al panel.

Si miramos dentro de la sección de proyectos, podemos ver que existe un formulario para cargar nuevos proyectos y uno de los campos solicitados es Documentos el cual nos permite cargar archivos. Como indica el mensaje, solo se permiten cargar archivos .pdf, .docx, .png, .jpeg, y .jpg. En este punto, deberíamos cargar el formulario y tramitar la petición por Burp Suite al Repeater, para maninpular la misma y modificar extensiones de nuestro interes o el mime type.

En este caso, otra de las extensiones que permite cargar además de las nombradas anteriormente es .phar, por lo que cargamos un archivo el cual nos permita ejecutar comandos.

Vemos que una vez creado el proyecto, se lista en la tabla junto al formulario.

Si accedemos al enlace del documento, logramos acceder a nuestro script.

Nos ponemos en escucha con netcat por el puerto elegido, en este caso el 443.

Nos enviamos una reverse shell.

Codificamos el & como %26

Ganamos acceso al sistema.

Hacemos el tratamiento de la tty para tener una terminal más interactiva:

  • script /dev/null -c bash

  • CTRL + Z

  • stty raw -echo; fg

  • reset xterm

  • export TERM=xterm

  • export SHELL=bash

  • stty rows <rows> columns <columns>

www-data -> scott

Si miramos el archivo de conexión a la base de datos db.php vemos la contraseña del usuario scott y en el sistema existe un usuario con ese nombre, por lo que podemos probar si existe reutilización de contraseña.

Efectivamente, la contraseña es valida.

scott -> kobe

Si realizamos una enumeración básica, vemos que podemos ejecutar el binario tar como el usuario kobe.

Nos movemos al usuario kobe de la siguiente manera:

Referencia: Tar | GTFOBins

Leemos el flag de user.

Elevación de privilegios

Si realizamos nuevamente una enumeración, vemos que podemos ejecutar con sudo el binario systemctl, para lo cual abusaremos de este creando un servicio falso que asigne permisos suid a el binario /bin/bash.

De esta forma, logramos escalar privilegios.

Referencia: systemctl | GTFOBins

Post Explotación

Por ultimo, leemos el flag de root.

De esta forma, llegamos al final de la máquina El Cliente.

Si te gustó este CTF, te inivito a que lo compartas.

Si aun no eres parte de nuestra comunidad, te dejo los enlaces a la web The Hackers Labs y a el servidor de Discord.

Gracias por tu lectura!

Happy Hacking!

Última actualización