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 и выше).

  1. Подключитесь к серверу по SSH с правами root.
  2. Запустите скрипт принудительного обновления CWP:
/scripts/update_cwp

  1. После завершения обновления проверьте текущую версию панели, чтобы убедиться, что она выше или равна 0.9.8.1147:
cat /usr/local/cwpsrv/htdocs/resources/admin/include/version.php

  1. Перезапустите сервис панели управления для применения изменений:
service cwpsrv restart

Временные меры

Если немедленное обновление невозможно, необходимо ограничить вектор атаки с помощью сетевых фильтров и средств защиты.

  1. Ограничьте доступ к портам управления 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

  1. Настройте правила ModSecurity (WAF) для блокировки запросов к /login/index.php, содержащих подозрительные символы в POST-параметрах (например, $(), `, |, ;).
  2. Проверьте логи доступа на наличие попыток эксплуатации (поиск символов инъекции в запросах к login):
grep -E "(\\\$|\||;|`)" /usr/local/cwpsrv/var/log/access_log