Brain - Walkthrough

Introducción

Brain

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.

El archivo /proc/sched_debug es un archivo especial en sistemas Linux que proporciona información detallada sobre el planificador de tareas (scheduler) del kernel. Este fichero es útil para la depuración y análisis del rendimiento del sistema, ya que permite a los administradores y desarrolladores obtener información detallada sobre cómo el kernel está programando y gestionando los procesos y las tareas en el sistema.

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.

El archivo range.py, es parte de la biblioteca de Python llamada wfuzz. Esta biblioteca es una herramienta de prueba de penetración diseñada para realizar pruebas de seguridad en aplicaciones web mediante ataques de fuerza bruta. La carpeta /usr/lib/python3/dist-packages/ generalmente contiene bibliotecas de Python instaladas a nivel de sistema.

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

En la herramienta wfuzz, el parámetro range se utiliza para especificar un rango de valores que se utilizarán en la iteración sobre la palabra clave o el patrón especificado en la búsqueda de posibles puntos de inyección o vulnerabilidades en una aplicación web.

Por ejemplo, si estás realizando una prueba de fuzzing en un campo de entrada de un formulario web que acepta números del 1 al 10, puedes usar el parámetro range para especificar ese rango. Wfuzz entonces probará todos los valores dentro de ese rango para ver si alguno de ellos causa algún comportamiento inesperado o revela una vulnerabilidad en la aplicación.

Encontramos la flag del usuario root.

Última actualización