CVE-2021-21311

Adminer Adminer

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2025-09-29

Официальное описание

Adminer contains a server-side request forgery vulnerability that, when exploited, allows a remote attacker to obtain potentially sensitive information.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость CVE-2021-21311 в Adminer (версии от 4.0.0 до 4.7.9 включительно) представляет собой подделку запросов со стороны сервера (Server-Side Request Forgery, SSRF).

Она возникает из-за того, что Adminer позволяет пользователю указывать произвольный адрес сервера для подключения к базе данных (например, при использовании драйверов ElasticSearch или ClickHouse), но не проверяет и не фильтрует целевой IP-адрес или домен.

В результате злоумышленник может заставить сервер, на котором запущен Adminer, отправлять HTTP-запросы к внутренним ресурсам инфраструктуры. Это позволяет: - Сканировать внутреннюю сеть (определять открытые порты и доступные сервисы). - Читать чувствительные данные из внутренних API, не имеющих аутентификации. - Извлекать временные токены и ключи доступа из сервисов метаданных облачных провайдеров (например, AWS, GCP, Azure по адресу 169.254.169.254).

Как исправить

Единственным надежным способом устранения уязвимости является обновление Adminer до версии 4.8.0 или более новой (рекомендуется устанавливать самую актуальную версию). Adminer поставляется в виде одного PHP-файла, поэтому обновление сводится к его замене.

  1. Перейдите в директорию, где расположен ваш текущий файл Adminer.
  2. Удалите старую уязвимую версию файла.
  3. Скачайте актуальную версию (например, 4.8.1) с официального репозитория:
wget https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1.php -O adminer.php

  1. Убедитесь, что права доступа к новому файлу установлены корректно (например, чтение и выполнение для пользователя веб-сервера):
chown www-data:www-data adminer.php

chmod 644 adminer.php

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

Если мгновенное обновление невозможно, необходимо применить компенсирующие меры для снижения риска эксплуатации:

  • Ограничьте доступ к файлу Adminer на уровне веб-сервера (Nginx/Apache), разрешив подключения только с доверенных IP-адресов администраторов.
  • Настройте базовую HTTP-аутентификацию (Basic Auth) для директории или самого файла adminer.php, чтобы добавить дополнительный слой защиты до обработки скрипта интерпретатором PHP.
  • Заблокируйте исходящие запросы от сервера с Adminer к IP-адресам облачных метаданных (если сервер находится в облаке) с помощью межсетевого экрана:
iptables -A OUTPUT -d 169.254.169.254 -j DROP

  • Заблокируйте исходящие запросы к внутренним подсетям (например, 10.0.0.0/8, 192.168.0.0/16), если серверу с Adminer не требуется доступ к другим внутренним ресурсам, кроме локальной БД.
  • Переименуйте файл adminer.php в случайную и трудноугадываемую строку (например, db_admin_7f8a9b.php), чтобы предотвратить массовую эксплуатацию автоматизированными сканерами.
  • Отключите неиспользуемые драйверы баз данных в Adminer (особенно ElasticSearch и ClickHouse, через которые чаще всего эксплуатируется данный SSRF), используя систему плагинов Adminer.