🚨 Неаутентифицированное удалённое выполнение кода (RCE) через загрузку файлов
📌 Обзор
- Проект: QloApps
- Репозиторий: https://github.com/Qloapps/QloApps
- Затронутые версии: <= 1.7.0
- Класс уязвимости: Неаутентифицированное удалённое выполнение кода
- Критичность: Критическая
- CVSS v3.1: (Критическая) 9.8 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- CVE ID: CVE-2025-67325
- Обнаружено: Neakk Pornlur
- Дата раскрытия: 2026-01-09
🧩 Описание
Неограниченная загрузка файлов в функции отзывов об отелях в QloApps версии 1.7.0 и более ранних позволяет удалённым неаутентифицированным злоумышленникам добиться удалённого выполнения кода.
🎯 Затронутая конечная точка
/module/qlohotelreview/default
⚠️ Корневая причина
Уязвимость существует из-за:
- Отсутствия проверки расширения файлов.
- Выполнения загруженных файлов напрямую сервером.
- Отсутствия проверок аутентификации и авторизации на конечной точке.
🔥 Последствия
Успешная эксплуатация позволяет злоумышленнику:
- Выполнять произвольные команды ОС.
- Читать/записывать/удалять чувствительные файлы сервера.
- Получать доступ к учётным данным базы данных.
- Совершать переход к внутренним сетевым сервисам.
- Полностью скомпрометировать хостинг-сервер.
Эта уязвимость приводит к полной потере конфиденциальности, целостности и доступности (триада CIA).
🛠️ Доказательство концепции (PoC) для QloApps версии 1.7.0
Нам нужны действительные id_order и Ajax-токен для запроса к уязвимой конечной точке. Для id_order мы вручную перебираем его, начиная с 1, либо создаём гостевую учётную запись и бронируем номер, чтобы получить этот id_order. Ajax-токен можно получить на любой странице номера отеля.
1. Получение Ajax-токена
2. Оставляем отзыв об отеле и загружаем нашу подготовленную веб-оболочку image+php.
3. Запуск удалённого выполнения кода
нашу загруженную веб-оболочку можно найти по адресу https://target.com/modules/qlohotelreview/views/img/review/<id_order>/1.php
