
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 follow_symlinks le dice a aiohttp 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.
Por lo tanto, incluso si dicho "symlink" ni siquiera es un enlace, aiohttp realiza esa lectura de archivo y devuelve su valor.
Fuente https://github.com/aio-libs/aiohttp/security/advisories/GHSA-5h86-8mv2-jq9f