Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
adminer_CVE-2021-43008 — Демонстрационная среда для уязвимости CVE-2021-43008 в Adminer: наблюдение реального воздействия и тестирование мер по смягчению. | Kitploit
Инструменты/GitHubGitHub/bamolitho/adminer_cve-2021-43008
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийОбучение и ОбразованиеБезопасность Баз ДанныхЛаборатории и Практика
GitHubbamolitho/adminer_cve-2021-43008

adminer_CVE-2021-43008

Демонстрационная среда для уязвимости CVE-2021-43008 в Adminer: наблюдение реального воздействия и тестирование мер по смягчению.

Репозиторий
11510 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2021-43008 — Уязвимость Adminer

Произвольное чтение файлов через вредоносный сервер MySQL

1. Что такое Adminer?

Adminer — это веб-инструмент (PHP) для удобного администрирования баз данных MySQL, PostgreSQL, SQLite или SQL Server. Он часто используется как легковесная альтернатива phpMyAdmin.

Затрагиваемые версии: Adminer ≤ 4.6.2


2. В чем заключается уязвимость?

2.1. Отказ в контроле доступа

Adminer разрешает подключение к любому удаленному серверу MySQL. Однако при подключении к серверу MySQL клиент (здесь Adminer) принимает:

  • набор начальных инструкций от сервера,
  • включая команду LOAD DATA LOCAL INFILE, которая позволяет серверу попросить клиента отправить ему локальный файл.

2.2. Проблема

Adminer не проверяет должным образом ответы сервера MySQL в уязвимых версиях.

Результат:

«Прочитай этот локальный файл на машине или контейнере, где работает Adminer, и отправь его мне.»

Этот механизм связан с пакетом MySQL: 0xFB | filename → запускает локальное чтение файла.

Почему версия 4.6.2 уязвима

Adminer 4.6.2 позволял пользователю указать внешний сервер MySQL и свободно подключаться к нему. Однако MySQL также по умолчанию разрешал использование:

  • LOAD DATA LOCAL INFILE
  • в автоматическом режиме, когда некоторые серверы запрашивали файл.

Итак: Adminer → подключается к вредоносному серверу → вредоносный сервер запрашивает файл → Adminer отправляет его.

В этом и заключается суть уязвимости.


3. Условия эксплуатации

Злоумышленник должен:

  1. Разместить вредоносный сервер MySQL (Rogue MySQL Server).
  2. Заставить Adminer подключиться к своему серверу:
    • из-за ошибки конфигурации,
    • через публично доступный интерфейс,
    • через действие пользователя (атака типа «supply host»).
  3. Вредоносный сервер MySQL отправляет пакет LOAD DATA LOCAL INFILE.
  4. Adminer читает локальный файл.
  5. Файл отправляется злоумышленнику.

Для кражи локального файла не требуется root-пароль: Adminer выполняет это действие как PHP-приложение на целевом сервере.


4. Последствия уязвимости

4.1. Нарушение конфиденциальности

Злоумышленник может:

  • прочитать /etc/passwd (объекта, на котором работает Adminer: хост-машина или контейнер),
  • прочитать /etc/shadow (в зависимости от прав пользователя PHP),
  • получить файлы конфигурации,
  • украсть учетные данные для подключения к MySQL,
  • извлечь всю информацию, доступную веб-пользователю.

4.2. Эскалация воздействия

С украденными учетными данными MySQL (вторичный этап) он может затем:

  • подключиться к реальной внутренней базе данных,
  • читать данные,
  • записывать в таблицы,
  • внедрять вредоносные нагрузки.

5. Практическая демонстрация (PoC) — Архитектура лаборатории

PoC проводится в изолированной и контейнеризованной среде, чтобы избежать рисков.

5.1. Компоненты лаборатории

  1. Уязвимый Adminer (версия 4.6.2) Роль: жертва Доступен локально через localhost:8080
  2. Легитимный MySQL (опционально) Роль: имитация реальной базы данных
  3. Вредоносный MySQL сервер (Python) Роль: злоумышленник Он отправляет пакеты 0xFB filename, чтобы заставить Adminer прочитать локальный файл.

5.2. Структура папки

adminer_CVE-2021-43008/
│
├── README.md
├── docker-compose.yml
│
└──rogue_mysql_server/
	├── rogue_mysql_server.py
	├── requirements.txt
	└── Dockerfile

6. Проведение PoC: как проявляется уязвимость?

6.1. Запуск лаборатории

docker compose build && docker compose up -d

6.2. Подключение из Adminer к Rogue Server

В http://localhost:8080:

  • Система: MySQL
  • Сервер: rogue_mysql:33306
  • Пользователь: любой
  • Пароль: любой

6.3. Автоматическое выполнение

  1. Adminer отправляет handshake.
  2. Вредоносный MySQL отправляет LOAD DATA LOCAL INFILE '/etc/passwd'.
  3. Adminer читает /etc/passwd.
  4. Adminer отправляет его содержимое вредоносному серверу.
  5. Вредоносный сервер сохраняет текст в stolen_file.txt.

6.4. Наблюдаемый результат

Используйте следующую команду для просмотра логов вредоносного сервера:

docker logs -f rogue_mysql

Ожидаемый результат:

2025-11-27 16:59:54,248:INFO:Serving on ('0.0.0.0', 33306)
2025-11-27 17:02:55,213:INFO:Conn from: ('172.18.0.3', 37200)
2025-11-27 17:02:55,214:INFO:Last packet
2025-11-27 17:02:55,214:INFO:Query
2025-11-27 17:02:55,214:INFO:Requesting file: /etc/shadow
2025-11-27 17:02:55,215:INFO:-- Received file data
2025-11-27 17:02:55,215:INFO:Result length: 1 bytes
2025-11-27 17:02:55,215:INFO:Last packet
2025-11-27 17:02:55,216:INFO:Query
2025-11-27 17:02:55,216:INFO:Requesting file: /etc/passwd
2025-11-27 17:02:55,216:INFO:-- Received file data
2025-11-27 17:02:55,217:INFO:Result length: 920 bytes
2025-11-27 17:02:55,217:INFO:File content received: 919 bytes
2025-11-27 17:02:55,217:INFO:File saved to stolen_file.txt

Просмотр содержимого файла stolen_file.txt:

docker exec -it rogue_mysql sh

Попав внутрь контейнера, вы сможете просмотреть содержимое файлов, включая stolen_file.txt

# ls
mysql.log  requirements.txt  rogue_mysql_server.py  stolen_file.txt
# cat stolen_file.txt

Результат:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false

Этот результат однозначно демонстрирует уязвимость.

7. Меры по смягчению

A. Обновление Adminer (этого одного достаточно)

Самое надежное решение: Перейти на Adminer ≥ 4.6.3

Последующие версии исправляют сетевое поведение.

Что было исправлено в следующих версиях

Начиная с Adminer 4.7.x, было введено несколько защитных мер:

Adminer теперь по умолчанию запрещает LOAD DATA LOCAL INFILE

А именно:

  • полностью отключено
  • или включено только при явном разрешении пользователя

→ Результат: ваш вредоносный MySQL больше не может красть файлы.

Adminer фильтрует действия клиента перед отправкой на сервер

Это предотвращает использование опасных функций внешними подключениями.

Дополнительные механизмы проверки ввода

Новые версии проверяют:

  • является ли целевой сервер ожидаемым
  • не является ли действие опасным
  • соответствует ли запрос легитимному действию пользователя

B. Отключение внешних подключений

Ограничить Adminer только внутренними хостами:

  • через брандмауэр (OUTPUT + СЕТИ DOCKER),
  • через фильтрующий обратный прокси,
  • через строго локализованную сетевую конфигурацию.

Production Adminer всегда должен указывать на внутренний MySQL.


C. Отключение LOCAL INFILE на стороне MySQL

Предотвращает кражу через легитимный MySQL-клиент:

[mysqld]
local_infile=0

или:

SET GLOBAL local_infile=0;

D. Никогда не открывайте Adminer публично

Adminer не должен быть доступен в Интернете.

В производственной среде:

  • доступ ограничен через VPN,
  • SSO или строгая аутентификация,
  • автоматическое истечение срока действия.

Скачать инструмент