
Безопасно демонстрирует CVE-2026-16219 path traversal в Croogo CMS с loopback-only PoC, техническим анализом, рекомендациями по устранению и автономным демо для защитников и исследователей.
Этот репозиторий документирует и безопасно демонстрирует уязвимость обхода авторизации пути, отслеживаемую как CVE-2026-16219 в Croogo CMS. Он предназначен для защитников, сопровождающих, студентов и исследователей, тестирующих системы, которыми они владеют или на тестирование которых имеют явное разрешение.
Граница безопасности: Включенный PoC через HTTP принимает только буквальный адрес loopback
127.0.0.1, записывает только сгенерированный маркер.txtв фиксированное не-веб-назначение/tmp/croogo-cve-2026-16219/, не следует за редиректами и отказывается запускаться без явного лабораторного подтверждения. Он не содержит исполняемой нагрузки и не имеет режима удаленной цели.
Дата снимка: 2026-07-20.
Текущий статус может измениться. Перепроверьте первоисточники в docs/references.md перед принятием производственных решений.
Croogo настраивает узкий редактируемый корень, например WWW_ROOT/assets. Затронутый хелпер получает FileManager.editablePaths с помощью Configure::check(), а не Configure::read(). check() отвечает, существует ли ключ; он не возвращает список настроенных путей. Полученное логическое значение затем используется в проверке на попадание в путь, что подрывает предполагаемую границу авторизации.
Операции создания и редактирования File Manager доверяют этой проверке. В условиях, описанных в upstream отчете, аутентифицированный пользователь FileManager может записывать за пределами настроенного редактируемого корня, если учетная запись службы PHP может записывать в выбранное место.
См. docs/technical-analysis.md для описания потока данных и docs/remediation.md для рекомендаций по усилению защиты.
.
|-- demo/ Автономная демонстрация логики; Croogo не требуется
|-- docs/ Анализ, настройка лаборатории, обнаружение, устранение, ссылки
|-- patches/ Иллюстративный патч для защиты в глубину
|-- poc/ Строго loopback, текстовый маркер HTTP PoC и инструменты очистки
|-- tests/ Тесты и демо-тесты
|-- .github/workflows/validate.yml
|-- DISCLAIMER.md
|-- GITHUB_UPLOAD.md
|-- LICENSE
|-- Makefile
|-- SECURITY.md
`-- VERSION
Автономная модель объясняет ошибку без запуска уязвимой CMS или отправки сетевых запросов:
php demo/path_authorization_demo.php
Ожидаемый результат:
Buggy modeled check for outside path: ALLOWED
Safe boundary check for outside path: DENIED
Демонстрация создает временные файлы в системном временном каталоге и удаляет их перед завершением.
Следуйте docs/lab-setup.md. Привяжите приложение только к 127.0.0.1 и создайте фиксированный каталог для маркеров внутри той же ВМ или контейнера, что и Croogo:
sudo install -d -o www-data -g www-data -m 0750 \
/tmp/croogo-cve-2026-16219
Замените www-data на учетную запись PHP-FPM или веб-сервера в одноразовой лаборатории.
Получите полный заголовок Cookie и CakePHP CSRF-токен из легитимного запроса File Manager в вашей собственной лаборатории. Никогда не сохраняйте их в репозитории.
export BASE='http://127.0.0.1:8080'
export COOKIE='CAKEPHP=lab-session; csrfToken=lab-cookie-token'
export CSRF_TOKEN='lab-request-token'
export LAB_ACK='I_OWN_THIS_LAB'
POC_VALIDATE_ONLY=1 ./poc/croogo_local_poc.sh
./poc/croogo_local_poc.sh
Скрипт выводит сгенерированное имя файла и HTTP-статус. HTTP-редирект или успешный ответ сами по себе не являются доказательством; проверьте маркер изнутри ВМ или контейнера Croogo:
sudo ./poc/verify_marker.sh
Маркер за пределами WWW_ROOT/assets демонстрирует сбой авторизации. Маркер представляет собой обычный текст и не является веб-исполняемым.
sudo LAB_ACK='I_OWN_THIS_LAB' ./poc/cleanup_marker.sh
unset COOKIE CSRF_TOKEN LAB_ACK BASE
make test
Тесты проверяют синтаксис оболочки, отклоняют не-loopback и путаные URL-вводы, гарантируют, что секреты не выводятся при проверке, и проверяют ожидаемый результат автономной модели.
Configure::read().Вспомогательный патч в patches/illustrative-hardening.patch и руководство контроллера в patches/create-file-hardening-example.md предназначены для ознакомления, а не являются официальными исправлениями от вендора. Протестируйте их на точной развернутой ветке.
Используйте этот репозиторий только в системах, которыми вы владеете или на тестирование которых имеете явное письменное разрешение. Не адаптируйте PoC для публичных целей, исполняемых нагрузок, постоянного присутствия, доступа к учетным данным или деструктивных действий. См. SECURITY.md и DISCLAIMER.md.
MIT. См. LICENSE.
| Поле | Значение |
|---|
| Продукт | Croogo CMS, Admin File Manager |
| Затронутые версии по NVD | 4.0.0 – 4.0.7 |
| Слабость | CWE-22, обход пути / неправильное ограничение пути |
| CVSS v3.1 от CNA NVD | 6.3 Средний |
| Привилегии | Аутентифицированная учетная запись с возможностями FileManager |
| Взаимодействие с пользователем | Нет после аутентификации |
| Публичное раскрытие | Существуют upstream issue и публичная информация об эксплойте |
| Исправленная версия | Не найдена в указанном снимке консультации |