CVE-2020-10221
rConfig rConfig
2021-11-03
rConfig lib/ajaxHandlers/ajaxAddTemplate.php contains an OS command injection vulnerability that allows remote attackers to execute OS commands via shell metacharacters in the fileName POST parameter.
Технический анализ и план устранения
Суть уязвимости
Уязвимость в файле lib/ajaxHandlers/ajaxAddTemplate.php позволяет удаленному злоумышленнику выполнить произвольные команды на операционной системе сервера. Для этого он отправляет POST-запрос с параметром fileName, содержащим shell-метасимволы (например, ;, &, |, >). Эти символы интерпретируются оболочкой сервера, что приводит к выполнению инъектированной команды.
Как исправить
Основной метод: Обновите rConfig до версии, в которой уязвимость устранена. Уязвимость затрагивает версии до 3.9.4. Патч был внесен в версии 3.9.4 и выше.
-
Проверьте текущую версию rConfig.
bash # Способ проверки зависит от метода установки. # Например, посмотрите в интерфейсе администратора или проверьте файлы в каталоге установки. -
Обновите rConfig.
- Способ 1 (Рекомендуемый): Следуйте официальному руководству по обновлению на сайте rConfig.
- Способ 2 (Вручную): Скачайте последнюю стабильную версию (3.9.4 или новее) с официального GitHub-репозитория и выполните процедуру обновления, описанную в документации (
UPDATE.mdилиINSTALL.md).
-
Проверьте исправление. Убедитесь, что файл
lib/ajaxHandlers/ajaxAddTemplate.phpтеперь корректно валидирует и экранирует пользовательский ввод в параметреfileName.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Ограничьте доступ к интерфейсу rConfig:
- Настройте брандмауэр (например,
iptablesилиnftables) или группы безопасности (Security Groups) в облаке, чтобы разрешить доступ к веб-интерфейсу rConfig только с доверенных IP-адресов (например, административных сетей). ```bash
Пример для iptables (разрешить только с сети 192.168.1.0/24)
iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j DROP iptables -A INPUT -p tcp --dport 443 -j DROP ```
- Настройте брандмауэр (например,
-
Настройте WAF (Web Application Firewall):
- Если используется WAF (например, ModSecurity для Apache/Nginx, облачный WAF), добавьте правило для блокировки запросов к
/lib/ajaxHandlers/ajaxAddTemplate.php, содержащих в POST-параметрах shell-метасимволы (;,&,|,`,$()).
- Если используется WAF (например, ModSecurity для Apache/Nginx, облачный WAF), добавьте правило для блокировки запросов к
-
Временно отключите уязвимый обработчик (крайняя мера):
- Переименуйте или удалите уязвимый файл, если функционал добавления шаблонов не критичен. Перед этим сделайте резервную копию.
bash cd /path/to/rconfig/lib/ajaxHandlers/ mv ajaxAddTemplate.php ajaxAddTemplate.php.disabled - Это приведет к ошибке при попытке использования данной функции через веб-интерфейс.
- Переименуйте или удалите уязвимый файл, если функционал добавления шаблонов не критичен. Перед этим сделайте резервную копию.