CVE-2019-15107
Webmin Webmin
2022-03-25
An issue was discovered in Webmin. The parameter old in password_change.cgi contains a command injection vulnerability.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2019-15107) — это уязвимость типа "внедрение команд" в скрипте password_change.cgi Webmin. Атакующий может выполнить произвольные команды на уровне операционной системы с привилегиями Webmin (обычно root), отправив специально сформированный запрос к параметру old.
Как это используют:
* Атакующий отправляет HTTP-запрос (POST или GET) к /password_change.cgi.
* В параметр old вместо старого пароля подставляется команда для выполнения (например, | id).
* Если Webmin работает с правами root (стандартно), команда выполняется с этими правами.
Как исправить
Основное решение — обновить Webmin до исправленной версии.
Для всех систем (рекомендуемый метод): 1. Войдите в Webmin как администратор. 2. Перейдите в раздел Webmin -> Webmin Configuration -> Upgrade Webmin. 3. Выберите опцию "Upgrade from released module" и нажмите "Upgrade Webmin". Система автоматически загрузит и установит последнюю стабильную версию.
Вручную через командную строку (если веб-интерфейс недоступен):
# Для систем на базе DEB (Debian, Ubuntu)
wget https://prdownloads.sourceforge.net/webadmin/webmin_2.000_all.deb
sudo dpkg -i webmin_2.000_all.deb
# Для систем на базе RPM (CentOS, RHEL, Fedora)
wget https://prdownloads.sourceforge.net/webadmin/webmin-2.000-1.noarch.rpm
sudo rpm -U webmin-2.000-1.noarch.rpm
Критически важные версии: Уязвимость устранена в версиях Webmin 1.930 и выше. Убедитесь, что ваша версия не ниже этой.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Ограничьте доступ к Webmin:
- Настройте брандмауэр, чтобы разрешить подключение к порту Webmin (обычно 10000/TCP) только с доверенных IP-адресов. ```bash
Пример для firewalld (только для доверенной сети 192.168.1.0/24)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="10000" protocol="tcp" accept' sudo firewall-cmd --reload ```
-
Используйте Reverse Proxy с WAF:
- Разместите Webmin за обратным прокси (например, Nginx или Apache) с включенным модулем Web Application Firewall (WAF), таким как ModSecurity. Настройте правила для блокировки запросов, содержащих в параметрах символы pipe (
|), точку с запятой (;) или backtick (`).
- Разместите Webmin за обратным прокси (например, Nginx или Apache) с включенным модулем Web Application Firewall (WAF), таким как ModSecurity. Настройте правила для блокировки запросов, содержащих в параметрах символы pipe (
-
Отключите скрипт (радикальная мера):
- Переименуйте или удалите уязвимый CGI-скрипт. Это сломает функционал смены пароля.
bash sudo mv /usr/share/webmin/password_change.cgi /usr/share/webmin/password_change.cgi.disabled - Внимание: Это временное решение. После обновления верните скрипт на место или убедитесь, что обновление прошло успешно.
- Переименуйте или удалите уязвимый CGI-скрипт. Это сломает функционал смены пароля.