
Proof-of-Concept для уязвимости LFI/Path Traversal в Aiohttp =< 3.9.1
Proof-of-Concept для уязвимости LFI/Path Traversal в Aiohttp =< 3.9.1
[!IMPORTANT] Этот скрипт предназначен только для образовательных целей.
Любое незаконное использование строго запрещено.
$ git clone https://github.com/wizarddos/CVE-2024-23334
$ cd CVE-2024-23334
$ python3 exploit.py -u [url] -f [file] -d [static directory]
[!Note] Не забудьте согласовать слеши в URL и статической директории — если вы вводите
http://127.0.0.1/, то укажите директорию без слеша (напримерstatic) и наоборот (URL без слеша, а директория со слешем)
Уязвимость заключается в том, как aiohttp обрабатывает запросы к статическим ресурсам
Если мы напишем такой код
app.router.add_routes([
web.static("/static", "static/", follow_symlinks=True)
])
follow_symlinks=True делает его уязвимым для LFI.
Для использования статических ресурсов необходимо указать корневую директорию.
Опция follow_symlinks указывает aiohttp следовать символическим ссылкам за пределами корневой директории, но не проверяет, находится ли сама ссылка в корневой директории.
Поэтому даже если указанная «симлинка» не является ссылкой, aiohttp всё равно читает этот файл и возвращает его содержимое.
Источник https://github.com/aio-libs/aiohttp/security/advisories/GHSA-5h86-8mv2-jq9f