
Prueba de concepto para la vulnerabilidad de LFI/Path Traversal en Aiohttp =< 3.9.1
Prueba de concepto para la vulnerabilidad de LFI/Path Traversal en Aiohttp =< 3.9.1
[!IMPORTANT] Este script está destinado únicamente con fines educativos.
Cualquier uso ilegal está estrictamente prohibido.
$ git clone https://github.com/wizarddos/CVE-2024-23334
$ cd CVE-2024-23334
$ python3 exploit.py -u [url] -f [file] -d [static directory]
[!Note] Recuerda coincidir las barras en la URL y el directorio estático - si escribes
http://127.0.0.1/entonces pasa el directorio sin barra (comostatic) y viceversa (URL sin barra y directorio con ella).
La vulnerabilidad en sí radica en la forma en que aiohttp maneja las solicitudes de recursos estáticos.
Si escribimos código como este
app.router.add_routes([
web.static("/static", "static/", follow_symlinks=True)
])
follow_symlinks=True lo hace vulnerable a LFI.
Para usar recursos estáticos, debes especificar su directorio raíz.
La opción le dice a que siga enlaces simbólicos fuera del directorio raíz, pero no verifica si el enlace en sí mismo se encuentra en el directorio raíz.
follow_symlinksaiohttpPor lo tanto, incluso si dicho "symlink" ni siquiera es un enlace, aiohttp realiza esa lectura de archivo y devuelve su valor.