Brain - Walkthrough
Introducción

Técnicas aboradas:
Local File Inclusion
Archivo /proc/sched_debug leakage
Abuso binario wfuzz
Fase de reconocimiento
Realizamos un primer escaneo mediante ARP para localizar la dirección IP de la máquina. Identificamos la máquina con una dirección IP 192.168.1.21.
Enumeramos los puertos de la máquina con nmap. Puertos 22 y 80 abiertos.
Enumeramos las versiones de los servicios corriendo en los puertos abiertos con nmap.
Al acceder al servicio web nos encontramos con lo que parece ser una salida típica del archivo /proc/sched_debug.

Realizamos fuzzing de directorios y archivos en busca de mas información. Encontramos el archivo index.php que seguramente esta mostrando el output de la tarea systemd.

Fase de explotación
Lanzaremos un Nikto en busca de algo mas de información pasándole el fichero index.php en la URL a escanear. Nos muestra que el parámetro include es vulnerable a lo que parece ser un LFI.

Otro ejemplo con wfuzz de como fuzzear parámetros que puedan ser vulnerables a LFI. Recordad que con wfuzz es importante configurar el parámetro —hh con valor 361 para ocultar este número de caracteres en la respuesta y evitar respuestas con estado 200 incorrectas.

Aprovechando el LFI vamos a probar de consultar el fichero /proc/sched_debug de la máquina en busca de mas información porque si nos ha mostrado un pequeño fragmento del output del fichero, es por algo. Encontramos en el listado de las runnable tasks lo que parece ser las credenciales de un usuario llamado ben.

Accedemos por SSH con las credenciales encontradas anteriormente.
Encontramos la flag del usuario ben.
Escalada de privilegios
Listamos los permisos sudo que tiene el usuario ben. Encontramos que tiene ejecución del binario wfuzz como sudo.
En este punto buscando información por gtfobins no encontramos nada, así que tocará realizar enumeración en busca de algo que nos pueda ayudar para la elevación de privilegios. Buscando por archivos en el sistema que tengas permisos de escritura relacionados con wfuzz, encontramos un archivo python llamado range.py.
Como tenemos permisos de escritura sobre el archivo, introducimos el siguiente código para spawnear una shell bash. También sería posible ejecutar una reverse shell y enviarla a nuestro equipo, pero en este caso optaremos por la primera opción.
Ejecutamos wfuzz con la opción range y obtenemos la bash del usuario root.
https://wfuzz.readthedocs.io/en/latest/user/basicusage.html
Encontramos la flag del usuario root.
Última actualización