Сама панель ISPmanager использует свой собственный системный PHP для работы интерфейса и фоновых задач, и она также уязвима
Этот пункт касается фундаментальной архитектуры сервера и является одним из самых опасных аспектов уязвимости PHP2Shell. Давайте разберем его по полочкам.
### 1. На сервере работают ДВА разных PHP
Когда вы устанавливаете ISPmanager на сервер, возникает две независимые среды выполнения PHP:
* **PHP для сайтов клиентов (пользовательский):** Это те версии PHP (5.6, 7.4, 8.1, 8.2 и т.д.), которые вы выбираете в разделе "Альтернативные версии PHP" для конкретных сайтов (WordPress, Bitrix, самописные скрипты).
* **PHP для самой панели ISPmanager (системный):** Панель управления — это не просто "оболочка", это сложная программа, написанная (в значительной части) на PHP. Чтобы отображать веб-интерфейс, обрабатывать ваши клики, выполнять фоновые задачи (создание бэкапов, управление DNS, обработка почты), панели нужен свой собственный интерпретатор PHP. Часто это версия PHP, установленная в операционной системе по умолчанию, или специальная изолированная сборка от ISPsystem.
**Главная ловушка:** Когда вы обновляете PHP для *сайтов*, вы **не обновляете** PHP, который использует *сама панель*. Это две разные конфигурации и разные исполняемые файлы.
### 2. Как именно панель использует этот PHP?
Системный PHP панели обрабатывает несколько критических векторов входа данных:
1. **Веб-интерфейс:** Когда вы или ваш системный администратор заходите в панель по адресу `https://ваш-ip:1500/ispmgr`, запрос обрабатывается системным PHP.
2. **API панели:** Если вы используете автоматизацию (например, скрипты для создания VPS, интеграцию с биллингом BILLmanager), эти запросы также парсятся системным PHP.
3. **Фоновые демоны и cron-задачи:** Панель регулярно запускает внутренние скрипты для проверки состояния сервера, обновления лицензий и т.д.
### 3. Почему это критически опасно? (Разница в привилегиях)
Уязвимость PHP2Shell позволяет выполнить произвольный код на сервере (Remote Code Execution, RCE) без пароля, просто отправив специально сформированный запрос.
* **Если взломан PHP сайта клиента:** Злоумышленник получает доступ к файлам этого конкретного сайта, его базе данных. Чтобы получить контроль над всем сервером, ему придется искать дополнительные уязвимости для "побега" из изоляции (privilege escalation).
* **Если взломан PHP самой панели ISPmanager:** Панель управления по определению обладает максимальными привилегиями. Она работает от имени пользователя `root` или специально созданного пользователя с правами `sudo` без пароля, чтобы иметь возможность перезапускать службы, менять конфигурации Nginx и управлять всем сервером.
* *Результат:* Эксплойт, попавший в системный PHP панели, мгновенно дает злоумышленнику **полный контроль (root) над всем физическим или виртуальным сервером**. Это "game over".
### 4. Что с этим делать на практике?
Поскольку вы не можете просто "удалить" PHP из панели, ваши действия должны быть следующими:
**Шаг А: Выяснить, какой PHP использует панель**
Подключитесь к серверу по SSH под пользователем `root` и выполните команду, чтобы увидеть процессы PHP:
```bash
ps aux | grep php
```
Или проверьте документацию ISPsystem для вашей конкретной версии ОС. Обычно это системный пакет, например, `php8.1-fpm` или `php7.4` из репозитория Ubuntu/Debian/CentOS.
**Шаг Б: Применить экстренную защиту к системному PHP**
Даже если вы обновили PHP для сайтов, вы должны вручную защитить системный PHP.
1. Откройте системный файл `php.ini` (например, `/etc/php/8.1/fpm/php.ini` или `/etc/php.ini`).
2. Найдите строку `session.upload_progress.enabled` и измените её на:
```ini
session.upload_progress.enabled = Off
```
3. Также рекомендуется добавить (если там есть уязвимость OOM):
```ini
memory_limit = -1
```
4. Перезапустите службы. Важно перезапустить не только PHP-FPM, но и саму панель, чтобы она подхватила изменения:
```bash
systemctl restart php8.1-fpm # замените на вашу версию
systemctl restart ispmanager
```
**Шаг В: Ожидание официального обновления ISPsystem**
Компания ISPsystem знает об этой проблеме. В ближайших обновлениях панели (или через отдельные скрипты в их репозитории) они либо:
* Обновят встроенный PHP до патченной версии.
* Изменят архитектуру так, чтобы критические части панели не зависели от уязвимого парсинга PHP.
Следите за разделом "Дайджест" или уведомлениями внутри самой панели.
### Резюме
Фраза означает, что **крепость уязвима не только через ворота (сайты клиентов), но и через командный пункт (саму панель)**. Администратор обязан применить меры защиты (отключение `upload_progress`) как к пользовательским сайтам, так и к системной среде панели управления, иначе обновление сайтов не даст никакой гарантии безопасности сервера в целом.
Comments
Post a Comment