
Prova de Conceito para vulnerabilidade de LFI/Path Traversal no Aiohttp =< 3.9.1
Prova de Conceito para vulnerabilidade de LFI/Path Traversal em Aiohttp =< 3.9.1
[!IMPORTANT] Este script é destinado apenas para fins educacionais.
Qualquer uso ilegal é estritamente proibido.
$ git clone https://github.com/wizarddos/CVE-2024-23334
$ cd CVE-2024-23334
$ python3 exploit.py -u [url] -f [file] -d [static directory]
[!Nota] Lembre-se de corresponder as barras na url e no diretório estático - se você digitar
http://127.0.0.1/então passe o diretório sem barra (comostatic) e vice-versa (url sem barra e diretório com ela)
A vulnerabilidade em si reside na forma como o aiohttp lida com requisições para recursos estáticos
Se escrevermos código como este
app.router.add_routes([
web.static("/static", "static/", follow_symlinks=True)
])
follow_symlinks=True torna-o vulnerável a LFI.
Para usar recursos estáticos, você precisa especificar seu diretório raiz
A opção follow_symlinks diz ao aiohttp para seguir links simbólicos fora do diretório raiz, mas não verifica se o próprio link está no diretório raiz.
Então, mesmo que o dito "symlink" nem seja um link, o aiohttp faz a leitura do arquivo e retorna seu valor
Fonte https://github.com/aio-libs/aiohttp/security/advisories/GHSA-5h86-8mv2-jq9f