> For the complete documentation index, see [llms.txt](https://beafn28.gitbook.io/beafn28/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://beafn28.gitbook.io/beafn28/cve-and-poc/poc-cve-2024-23334-aiohttp-3.9.1-directory-traversal-via-follow_symlinks.md).

# PoC - CVE-2024-23334  (aiohttp ≤ 3.9.1) - Directory Traversal via follow\_symlinks

{% embed url="<https://www.exploit-db.com/exploits/52474>" %}

### Resumen

Desarrollé una **Proof of Concept (PoC)** que demuestra una vulnerabilidad de **Directory Traversal** en **aiohttp** cuando la aplicación se configura para servir archivos estáticos con la opción `follow_symlinks=True`.

La vulnerabilidad permite acceder a **archivos arbitrarios del sistema de ficheros** fuera del directorio raíz configurado para contenido estático.\
La PoC fue verificada en un entorno controlado y publicada en **Exploit Database (EDB-ID 52474)**.

Esta entrada documenta el vector afectado, la técnica empleada, el entorno de pruebas y las recomendaciones de mitigación.

### Detalle técnico

* **Producto afectado:** aiohttp
* **Versión:** ≤ 3.9.1
* **CVE:** CVE-2024-23334
* **Componente vulnerable:** Static file handling (`follow_symlinks=True`)
* **Ruta afectada:** `/static/`
* **Tipo de vulnerabilidad:** Directory Traversal
* **CWE:** CWE-22 – Improper Limitation of a Pathname to a Restricted Directory

### Descripción de la PoC

La PoC demuestra que, cuando aiohttp está configurado para servir contenido estático con la opción `follow_symlinks=True`, **no se valida correctamente** que la ruta solicitada permanezca dentro del directorio raíz definido.

Mediante el uso de secuencias de traversal (`../`), es posible escapar del directorio estático y acceder a archivos ubicados en otras rutas del sistema.

La PoC está **deliberadamente restringida a localhost** para evitar su uso indebido y está diseñada exclusivamente para validación en entornos de laboratorio.

### Comportamiento demostrado

* Acceso a archivos arbitrarios fuera del directorio estático configurado.
* Lectura de ficheros del sistema accesibles por el proceso aiohttp.
* Confirmación de que la ruta solicitada no es normalizada ni validada correctamente antes de acceder al sistema de archivos.

### Entorno de pruebas

* **Plataforma:** Linux
* **Aplicación:** aiohttp 3.9.1
* **Entorno:** Vulhub (Docker)
* **Herramientas empleadas:**
  * Docker / Docker Compose
  * curl
  * Script Python (PoC local)
* **Escenario:** Entorno local / laboratorio controlado

### Impacto

Un atacante remoto podría explotar esta vulnerabilidad para:

* Leer archivos sensibles del sistema (impacto alto en confidencialidad).
* Acceder a configuraciones, secretos o credenciales almacenadas en el host.
* Facilitar ataques posteriores mediante el acceso a información interna de la aplicación.

El impacto es especialmente relevante en **entornos contenerizados o servicios expuestos**, donde aiohttp puede ejecutarse con permisos elevados.

### Mitigaciones recomendadas

* Actualizar **aiohttp a la versión 3.9.2 o superior**.
* Evitar el uso de `follow_symlinks=True` salvo que sea estrictamente necesario.
* Validar y normalizar las rutas solicitadas antes de acceder al sistema de archivos.
* Ejecutar la aplicación con el **principio de mínimos privilegios**.
* Colocar la aplicación detrás de un reverse proxy con controles adicionales de rutas.

### Referencias

* **Exploit Database:** <https://www.exploit-db.com/exploits/52474>
* **CVE Record:** <https://nvd.nist.gov/vuln/detail/CVE-2024-23334>

{% hint style="danger" %}
Esta PoC ha sido desarrollada únicamente con fines educativos y de investigación. No debe ejecutarse contra sistemas en producción ni sin autorización expresa. Seguir siempre prácticas de *responsible disclosure*.
{% endhint %}
