CVE-2022-44877
CWP Control Web Panel
2023-01-17
CWP Control Web Panel (formerly CentOS Web Panel) contains an OS command injection vulnerability that allows remote attackers to execute commands via shell metacharacters in the login parameter.
Технический анализ и план устранения
Суть уязвимости
CVE-2022-44877 представляет собой критическую уязвимость типа OS Command Injection (инъекция команд операционной системы) в панели управления CWP (ранее CentOS Web Panel). Проблема локализована в механизме обработки параметров входа в систему.
Уязвимость возникает из-за недостаточной фильтрации метасимволов оболочки (shell metacharacters) в параметре login. Злоумышленник может отправить специально сформированный HTTP-запрос к странице авторизации (обычно порт 2031), внедрив произвольные команды, которые будут выполнены с привилегиями root. Для эксплуатации не требуется аутентификация (Unauthenticated RCE).
Как исправить
Основным способом устранения уязвимости является обновление CWP до версии, в которой ошибка была исправлена (версия 0.9.8.1147 и выше).
- Подключитесь к серверу по SSH с правами root.
- Запустите скрипт принудительного обновления CWP:
/scripts/update_cwp
- После завершения обновления проверьте текущую версию панели, чтобы убедиться, что она выше или равна 0.9.8.1147:
cat /usr/local/cwpsrv/htdocs/resources/admin/include/version.php
- Перезапустите сервис панели управления для применения изменений:
service cwpsrv restart
Временные меры
Если немедленное обновление невозможно, необходимо ограничить вектор атаки с помощью сетевых фильтров и средств защиты.
- Ограничьте доступ к портам управления CWP (2030, 2031, 2082, 2083, 2086, 2087) только для доверенных IP-адресов с помощью iptables или firewalld:
iptables -A INPUT -p tcp -s ВАШ_IP --dport 2031 -j ACCEPT
iptables -A INPUT -p tcp --dport 2031 -j DROP
- Настройте правила ModSecurity (WAF) для блокировки запросов к
/login/index.php, содержащих подозрительные символы в POST-параметрах (например,$(),`,|,;). - Проверьте логи доступа на наличие попыток эксплуатации (поиск символов инъекции в запросах к login):
grep -E "(\\\$|\||;|`)" /usr/local/cwpsrv/var/log/access_log