TheWall
LFI Log Poisoning
Last updated
LFI Log Poisoning
Last updated
Hago un escaneo de nmap para descubrir los puertos abiertos y encuentro:
22 (SSH)
80 (HTTP)
Dentro de la página web nos podemos encontrar lo siguiente:
Intento hacer fuzzing con wfuzz, pero por alguna razon que desconozco, cuando le proporciono el parametro -s, no muestra las solicitues. Asà que tendré que usar gobuster, y le voy a tener que proporcionar un delay, ya que la pagina detecta cuando hacemos muchas solicitudes 404 de seguido, asà que le he puesto un delay de 580ms, a esto se le llama Web Application Firewall (WAF):
Encuentro el archivo "/includes.php" y tiene toda la pinta de que puede ejecutar comandos por su nombre y extensión, asà voy a hacer fuzzing con wfuzz para descubrir el parámetro con el que funciona (Pensé que ejecutarÃa comandos, pero no es asÃ, lo que hace es listar archivos del sistema):
Con esto quiero decir que entonces tendrÃamos que hacer un poisoning de los logs para poder ejecutar comandos, y en mi caso para poder obtener una reverseshell asà que voy a hacer fuzzing usando de directorio de LFI que se sitúa en la seclist (SecLists-master/Fuzzing/LFI/LFI-gracefulsecurity-linux.txt):
Le voy a hacer un curl para que podáis observar con más claridad de que realmente lo que estas haciendo es enviar un header con user-agent, y dentro del user-agent introduces los comandos, y estos comandos se pueden ver reflejados en los logs:
Este paso lo intente hacer mediante curl, pero se me hizo imposible, asà que utilice burpsuite. Ahora lo que vamos a hacer es mandar una solicitud para poder posteriormente ejecutar comandos de manera más sencilla, es una pequeña lÃnea que va a autorizar ejecutar comandos a cualquier solicitud GET que use el parámetro "XD":
Tras lanzar el ultimo paquete, conseguimos acceso remoto, como siempre lo primero que hacemos es la Depuración de tty
En cuanto a la escalada de privilegios, primero nos tendremos que venir a "/home" para ver que usuarios hay en el sistema, dentro de john podemos encontrar que tiene ".ssh" en su interior, y si hacemos un "sudo -l", podemos ver que john tiene permisos de ejecutar exiftool. Asà que la idea que se me viene a la cabeza seria crearme un id_rsa y con exiftool escribir dentro de "/.ssh/authorized_keys" la key que he me he creado, para asà poder iniciar sesión con dicha key. En GTFOBins podemos ver en detalle como se explota el exiftool:
Nos creamos nuestras keys:
Os copias vuestra id_rsa.pub (el .pub indica que es la key publica) y la copias dentro de "/tmp" como "authorized_keys", luego introducis el siguiente comando y os deberia dejar de entrar sin problemas:
Iniciamos sesión por ssh:
Nos pasamos por scp linpeas ya que no hay wget ni curl instalado:
Lo más relevante que he encontrado con el linpeas ha sido "tar" con capabilities y unas keys de ssh de root:
La capability que hemos he encontrado es capaz de leer o ejecutar archivos/directorios:
Asà pues, vamos a obtener la "id_rsa" privada de root con la capability:
Probe con la key de "/etc/ssh" pero no funciono, y me di cuenta que en el directorio "/" existe una "id_rsa", asà que pruebo con esa y logramos el acesso a root!:
En esta máquina, logramos la intrusión y escalada de privilegios aprovechando varias debilidades:
Utilizamos herramientas como gobuster y wfuzz para identificar directorios y parámetros útiles en el sistema. La estrategia fue añadir un tiempo de espera para hacer que las solicitudes burlan el sistema de Web Applicaction Firewall (WAF).
Conseguimos Ejecución Remota de Comandos (RCE) al combinar un ataque de Local File Inclusion (LFI) con Log Poisoning, utilizando un encabezado User-Agent
malicioso. La herramienta Burp Suite fue esencial.
Una vez obtenido acceso como el usuario "john", aprovechamos sus permisos de ejecución sobre exiftool para insertar nuestra clave SSH en su archivo authorized_keys
. Posteriormente, con linpeas detectamos un binario con capabilities (tar), que nos permitió acceder al archivo privado de clave SSH de root, consiguiendo asà por completo al sistema como root.