Road to HackMex: Dia 7 - flatliner
Writeup: flatliner - echoCTF
Información General

Descripción de la máquina
Connect with purpose and elevate your potential with unmatched power.
Enumeración
Escaneo Inicial
Empezamos a escanear con nmap para ver qué servicios tenemos expuestos en la IP de la máquina.
Nos marca servicio SSH en puerto 22 con versión no vulnerable (ya después de 5 días ya me ando aprendiendo las versiones jajaj) y servicio HTTP en puerto 80 con un Apache igual de invulnerable, y un servicio cuyo http-title es Flat time, conectémonos por browser pa ver q rollo
Análisis de Servicios
Dentro del sitio web vemos hospedado un CMS llamado Flatnux, del cual podemos ver información en su sitio web.
El servicio no tiene nada y está recién salido de la caja. Inmediatamente nos encontramos un login en /index.php?mod=login al que le tiro las defaults más potentes que me sé, pero no afloja.

Entonces sigo curioseando y me doy cuenta de que hay un hipertexto en la página principal que nos lleva a un admin panel. Es ahí donde confirmo que definitivamente hay que encontrarle credenciales a este servicio, o, en su defecto, buscarle un authentication bypass si es que de plano se pone muy fea la cosa.

Explotación
Busqueda de vulnerabilidades
Estaba ya preparando mi ataque por diccionario para torcerme las credenciales de admin, cuando me acordé que mi compa el ETH3RN4L nos había dicho en algún momento q una vez le tocó una máquina q nomás no aflojaba sus credenciales, y se terminó topando, ya al final de muchos intentos de frustración, con que la contraseña era el nombre de la máquina. Así que vamos a intentarlo.
admin:flatliner admin:flatnux
Esooo chingao, estamos dentro.

Una vez con credenciales de administrador tenemos acceso directo a los archivos del servicio. Y por la configuración del file manager; que nos dice claramente que está ubicado en /var/www/html, y además nos muestra los archivos .php que hay, podemos asumir perfectamente que es trivial inyectar un archivo .php con una webshell, entonces eso es lo que vamos a hacer.
Intentos de explotaciones
En un principio subí mi webshell en /misc/media/news porque un exploit que encontré en exploitDB marcaba esa como la ubicación ideal. Pero ahora que estoy escribiendo el writeup después de terminar la máquina, me doy cuenta de que el sitio no tiene protecciones que nos impidan subir nuestra webshell directamente a la raíz.
Pero bueno, en todo caso, preparamos nuestro payload y lo subimos.
Explotación
Accedemos al mismo y pum, web shell desde el cual podemos reclamar la bandera en /etc/passwd.

Ya de uña, ponemos a escuchar nuestro netcat y le mandamos la conexión mediante este webshell. Upgradeamos y we're in

Escalación de Privilegios
Análisis
Inmediatamente tiramos nuestro fiel sudo -l que nos indicará que tenemos permisos de ejecutar como sudo el binario /usr/local/bin/flatline
Si miramos el contenido de este binario nos podemos dar cuenta que lo único que hace es llamar un
cat flatliner

Esto nos da muy buenas esperanzas, principalmente porque el comando cat no está siendo llamado por su path completo (/bin/cat), entonces ya nos está haciendo ojitos un posible PATH hijacking
El cual terminamos de confirmar cuando nos damos cuenta que en el sudo -l no existe ninguna señal de un posible env_reset que nos pueda frustrar nuestros planes.
Entonces, como no tenemos un env_reset en nuestras capacidades como sudo, y el comando cat no está siendo llamado por su path, tenemos casi seguro un PATH hijacking
Explotación
Nos movemos a la carpeta /tmp - para más placer - y creamos nuestro cat pirata. el cual simplemente contendrá lo siguiente:
#!/bin/bash
/bin/bash -p
Le damos permisos de ejecución conchmod +x cat y agregamos la carpeta /tmp a nuestro path con:
export PATH=/tmp:$PATH
Y listo, corremos sudo flatline y efectivamente, el path hijacking fue todo un éxito

Y pues ya, rooteada.
Las siguientes banderas a reclamar una vez siendo root son:
- /etc/shadow
- /root/ETSCTF_redacted
- La variable de entorno en /proc/1/environ

Y listo. headshot