Одного имени пользователя хватило для root. В Control Web Panel нашли 10 уязвимостей, исправление не спасло
Одного имени пользователя хватало, чтобы захватить сервер с Control Web Panel и получить права root. Исследователь VulnCheck обнаружил сразу десять уязвимостей, которые позволяли обойти вход в панель и выполнить команды с максимальными привилегиями. Причём прежнее исправление от подобного взлома не спасало.
Control Web Panel (CWP) помогает управлять веб-серверами, базами данных и учётными записями хостинга. Главная ошибка скрывалась в механизме авторизации пользовательского интерфейса на порту 2083. При обращении без входа в систему сервер возвращал перенаправление на страницу авторизации, однако PHP-код продолжал выполняться.
Разработчики забыли завершить обработку запроса командой exit(). В результате панель загружала PHP-модуль, название которого злоумышленник задавал через параметр module. Проверка пути тоже работала неправильно, позволяя добраться до функций, которые обычно доступны только после авторизации.
Два таких модуля оказались особенно опасными. Редактор phpini_editor позволял записывать файл по указанному адресу и запускать системные команды, а protected_directory передавал неподготовленные параметры в командную оболочку. Сочетание ошибок давало возможность разместить веб-шелл и выполнять код от имени пользователя хостинга.
Следующим шагом исследователь использовал внутренний API CWP на адресе 127.0.0.1 и порту 2302. Сервис работал с правами root, но отдельные маршруты не проверяли токен доступа. Другой путь к тем же привилегиям открывала SQL-инъекция в проверке авторизации. Так первоначальный доступ превращался в полный контроль над сервером.
В лаборатории атаку проверили на CWP7 webpanel 1.8 под AlmaLinux 9. Для успешной эксплуатации хватило действительного имени хостинг-аккаунта. Разработанный исследователем эксплойт получил оболочку с идентификатором uid=0, то есть с правами root. При этом система уже содержала исправление прежней уязвимости CVE-2025-48703.
Масштаб потенциальной проблемы велик, хотя точное число уязвимых серверов неизвестно. По оценкам разных поисковых систем, в интернете находились десятки тысяч панелей CWP. VulnCheck насчитала 118 151 наблюдение сервиса, в том числе 19 834 на пользовательском порту 2083. Повторные наблюдения и серверы-приманки не позволяют считать эти цифры числом жертв.
В исследовании VulnCheck описаны десять ошибок и несколько этапов исправления. Версия 1.12 закрыла вход без авторизации, 1.16 устранила проблемы в пользовательских модулях, а обновления 1.27 и 1.29 защитили внутренний API. Полностью исправленной исследователи считают версию 1.29 от 31 октября 2026 года.
Администраторам рекомендуют установить CWP 1.29 или новее, включая актуальную на момент исследования версию 1.30. Панели управления на портах 2083, 2031 и 2087 лучше не оставлять доступными всему интернету. Ранее специалисты уже находили аналогичную проблему в другом модуле CWP, который продолжал принимать команды без пароля после исправления старой уязвимости.