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

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

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

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

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

Категории

Все категории
Loading categories
phpmyadmin-setup-validate — phpMyAdmin 5.2.3 — высокий уровень — удалённо — остаточный — setup/validate всё ещё доступен | Kitploit
Инструменты/GitHubGitHub/abraxas/phpmyadmin-setup-validate
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеЛаборатории и Практика
GitHubabraxas/phpmyadmin-setup-validate

phpmyadmin-setup-validate

phpMyAdmin 5.2.3 — высокий уровень — удалённо — остаточный — setup/validate всё ещё доступен

Репозиторий
67 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Abraxas Labs - phpmyadmin-setup-validate

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-setup-validate

Разбор: https://abraxaslabs.tech/research/phpmyadmin-setup-validate

phpmyadmin-setup-validate

Класс: SSRF Доступ: Удалённый

phpMyAdmin 5.2.3 (тег RELEASE_5_2_3, коммит 962857e). setup/index.php завершает работу, если присутствует config.inc.php. setup/validate.php — нет. Он по-прежнему загружается в рамках $isMinimumCommon, берёт CSRF-токен с публичной страницы входа и вызывает Validator::testDBConnection -> mysqli_connect к хосту, порту, пользователю и паролю из поля JSON values.

Неаутентифицированный клиент выполняет GET /, чтобы получить сессионную cookie и токен, затем отправляет POST на setup/validate.php с id=Server и выбранными им Servers/1/host и Servers/1/port. Хост phpMyAdmin открывает TCP-рукопожатие MySQL к этому адресу. Это SSRF поверх протокола MySQL: внутренний 3306, перебор учётных данных против внутреннего сервера, оракул портов по времени отклика и ошибкам mysqli. Это не SSRF к HTTP-метаданным, если только что-то на этом порту не говорит на MySQL. hide_db также подставляет пользовательское регулярное выражение в preg_match. Я не запускал этот путь ReDoS в данной лаборатории.

Официальный образ phpmyadmin:5.2.3 удаляет setup/. Эта уязвимость актуальна только тогда, когда этот каталог всё ещё находится в корне веб-сервера, что является распространённым остатком после установки. Лаборатория восстанавливает setup/ из архива 5.2.3, чтобы версия соответствовала RELEASE_5_2_3.

PMASA-2016-44 / CVE-2016-6621 охватывал часть SSRF в setup. Проверка «отключить setup при наличии конфигурации» так и не была применена к validate.php / config.php.

IDCVE пока нет
КлассSSRF (протокол MySQL)
ДоступУдалённый (неаутентифицированный, если setup/ всё ещё доступен через веб)
CWECWE-918
CVSSВысокий: 7.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
ПродуктphpMyAdmin
Затронуто5.2.3 тег RELEASE_5_2_3 (962857e) при setup/ всё ещё в docroot
АутентификацияНе требуется. CSRF-токен с публичной страницы входа. Вход в MySQL не требуется.
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:19230

Что может сделать атакующий

Любой, кто может достучаться до оставшегося дерева setup/, может заставить хост phpMyAdmin открыть TCP-соединение по протоколу MySQL к выбранному им хосту и порту.

ПривилегияМетод / путьДоказано в лаборатории или предполагается
Открыть TCP с хоста PMA к хосту:порту атакующего (целостность исходящего соединения; разведка этого порта)Неаутентифицированный POST /setup/validate.php id=Server с Servers/1/host + Servers/1/port и токеном из GET /Доказано в лаборатории. Оракул на oracle:13306 зафиксировал PMA-SETUP-VALIDATE-WITNESS от контейнера PMA
Подтвердить, что UI setup отключён, а validate продолжает работатьGET /setup/index.phpДоказано в лаборатории. Тело содержит "setup is disabled" / configuration already exists
Отказ при отсутствии CSRF-токена со страницы входаТот же POST без tokenДоказано в лаборатории. Ноль попаданий в оракул
Оракул портов / учётных данных по ошибкам mysqli и времени откликаТот же testDBConnectionПредполагается. Тело ответа в лаборатории было mysqli_connect(): (HY000/2006): MySQL server has gone away после того, как оракул принял соединение, а затем закрыл его
Обратиться по протоколу MySQL к внутреннему 3306 и попробовать отправленные пользователя/парольТот же mysqli_connectПредполагается. Не направлялось на сервис db лаборатории
ReDoS через validateRegex, подставляющий пользовательское регулярное выражениеid=Servers/1/hide_dbПредполагается. Не проверялось

Закрыто в этой лаборатории: SSRF через HTTP-метаданные (рукопожатие — это MySQL, а не GET /latest/meta-data), неаутентифицированный вход в PMA, OS shell и сам мастер установки (index.php остаётся отключённым). FAIL, если setup/ не развёрнут (по умолчанию в официальном образе).

Как я это нашёл

Восемь параллельных поисков исходников RELEASE_5_2_3. В setup/index.php есть фатальная ошибка при существовании конфига. В setup/validate.php — нет. setup/lib/common.inc.php устанавливает $isMinimumCommon и не ищет CONFIG_FILE.

Неверные пути: считать официальный образ этим остатком (он удаляет setup/); отправлять POST без токена со страницы входа (ноль попаданий в оракул); считать это SSRF через HTTP-метаданные (рукопожатие — это MySQL).

Лаборатория

python3 phpmyadmin-setup-validate-Abraxas-Labs.py

или

cd lab
./run.sh

Только loopback: http://127.0.0.1:19230. Проект Compose phpmyadmin-setup-validate. Dockerfile восстанавливает setup/ из tarball 5.2.3 и запускает TCP-оракул на порту 13306. Свидетель PMA-SETUP-VALIDATE-WITNESS.

SUCCESS phpmyadmin-setup-validate how=live tcp=yes setup-index-disabled=yes PMA-SETUP-VALIDATE-WITNESS

Исправление

Поместите фатальную проверку file_exists(CONFIG_FILE) в setup/lib/common.inc.php, чтобы каждый скрипт установки завершался с ошибкой. Ограничьте хосты в testDBConnection. Не создавайте разделители preg_match из пользовательских строк.

Ссылки

  • github.com/phpmyadmin/phpmyadmin тег RELEASE_5_2_3 (962857e)
  • setup/index.php фатальная ошибка при существующем конфиге
  • setup/validate.php отсутствие этой проверки
  • libraries/classes/Config/Validator.php testDBConnection / mysqli_connect
  • Остатки того же пина: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-csrf-sql
  • CWE-918

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только для лабораторной среды с loopback. Без гарантий.

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