---
description: LFI Log Poisoning
---

# TheWall

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FG1E1ReVYpJVv17CpiCSI%2Fimage.png?alt=media&#x26;token=1e82acc5-7e3a-4510-86c4-1797f7e176ff" alt=""><figcaption></figcaption></figure>

## Fase de reconocimiento

Hago un escaneo de nmap para descubrir los puertos abiertos y encuentro:

* 22 (SSH)
* 80 (HTTP)

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FwMbamc1DkZKMVI7DuKv5%2Fimage.png?alt=media&#x26;token=4e717908-b6db-44f1-a51b-79b3e454132a" alt=""><figcaption></figcaption></figure>

Dentro de la página web nos podemos encontrar lo siguiente:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2F8IdnKGVserm32V7E6WnK%2Fimage.png?alt=media&#x26;token=265fe6c8-c681-43d7-918e-199b552c1587" alt=""><figcaption></figcaption></figure>

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):

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FFeAkBGSMVNlumTRMgiXD%2Fimage.png?alt=media&#x26;token=c962103f-1b0a-4a8b-9340-ef98ee64d245" alt=""><figcaption></figcaption></figure>

## Fase de intrusión

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):

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FCaWBE3sqH3gWV6LimJnB%2Fimage.png?alt=media&#x26;token=c52a02a2-1b10-44bb-9505-a0f3027e2f26" alt=""><figcaption></figcaption></figure>

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):

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FLnyzwzJNnFHGwDJjohqb%2Fimage.png?alt=media&#x26;token=6b62385b-8d2e-4e2c-a97a-4aae50131f2a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FVY3dKJkZDnw484ByIQbi%2Fimage.png?alt=media&#x26;token=008f5f39-e09e-4b23-980a-fc5972e0327d" alt=""><figcaption><p>El que más me ha llamado la atención</p></figcaption></figure>

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:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FlyvdHtxqDRxUXvVvRwoU%2Fimage.png?alt=media&#x26;token=9dd7586e-78bd-4e96-b1c7-9951cb9f5f1b" alt=""><figcaption></figcaption></figure>

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":

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FXQEirXMnD2B4NF4XbBIP%2Fimage.png?alt=media&#x26;token=f7b6ff4c-8f76-430a-91f0-b1dc4741be77" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FdRbKcaug6sw82UozotPC%2Fimage.png?alt=media&#x26;token=9466a641-18d4-4895-88af-6956aada7f28" alt=""><figcaption></figcaption></figure>

Tras lanzar el ultimo paquete, conseguimos acceso remoto, como siempre lo primero que hacemos es la [depuracion-de-tty](../../cheats/depuracion-de-tty "mention")

## Escalada de privilegios

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:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FL8GeLhtgerJvHzAKPiRN%2Fimage.png?alt=media&#x26;token=e6cfcd48-802e-4cb0-bd74-38d316cc74fd" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FW9HAgEYk2gw3fZoWYQ43%2Fimage.png?alt=media&#x26;token=351b27dd-57f0-4961-bcac-dfdb5be5a98f" alt=""><figcaption></figcaption></figure>

Nos creamos nuestras keys:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2F2EvglNqFgw8AjsDzPjf9%2Fimage.png?alt=media&#x26;token=72db74f5-471a-4df4-969d-4cf6d013039c" alt=""><figcaption></figcaption></figure>

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:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FKgGJfa7GuOGEiwklvcG7%2Fimage.png?alt=media&#x26;token=60a991a6-9aa6-4e2e-8291-47f452b27d92" alt=""><figcaption></figcaption></figure>

Iniciamos sesión por ssh:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2F08QurCYQkNGacIEhVUnF%2Fimage.png?alt=media&#x26;token=6e176db8-39c9-4d1b-8474-c24052a64ac9" alt=""><figcaption></figcaption></figure>



Nos pasamos por scp linpeas ya que no hay wget ni curl instalado:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FeNdpe9E8B555cAI3GzW6%2Fimage.png?alt=media&#x26;token=82f010c8-5a3e-4dcf-bd47-cf3af2400a9b" alt=""><figcaption></figcaption></figure>

Lo más relevante que he encontrado con el linpeas ha sido "tar" con capabilities y unas keys de ssh de root:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2Fm5NP9fFCjmOuYBZd0k4m%2Fimage.png?alt=media&#x26;token=949b946a-f0e8-4550-a4bb-f680dedb72a1" alt=""><figcaption><p>Capability</p></figcaption></figure>

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FvFMwYLBz6Nr6z37Uivxu%2Fimage.png?alt=media&#x26;token=11fde523-d8b3-470e-833a-c28bd4fa24e0" alt=""><figcaption></figcaption></figure>

La capability que hemos he encontrado es capaz de leer o ejecutar archivos/directorios:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2F80TfxFrSrErJwrfJAaMz%2Fimage.png?alt=media&#x26;token=657ebf5f-aafa-4785-bcd5-60892850d6da" alt=""><figcaption></figcaption></figure>

Así pues, vamos a obtener la "id\_rsa" privada de root con la capability:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FkRKlpb4Jncjt84XJCB3S%2Fimage.png?alt=media&#x26;token=53e73db5-6e0f-4995-8079-1c79559a22e4" alt=""><figcaption></figcaption></figure>

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!:

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FF1GpavBXvtGkwep7Ns0j%2Fimage.png?alt=media&#x26;token=b403e504-3c88-4d04-9946-fec724784893" alt=""><figcaption></figcaption></figure>

## Conclusión

En esta máquina, logramos la intrusión y escalada de privilegios aprovechando varias debilidades:

1. 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).
2. 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.
3. 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.
