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

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

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

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

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

Категории

Все категории
Loading categories
phpmyadmin-auth-plugin-unquoted — phpMyAdmin 5.2.3 — высокий — удалённый — SQLi — идентификатор плагина аутентификации без кавычек | Kitploit
Инструменты/GitHubGitHub/abraxas/phpmyadmin-auth-plugin-unquoted
Сканеры уязвимостейАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеБезопасность Баз Данных
GitHub
abraxas/phpmyadmin-auth-plugin-unquoted

phpmyadmin-auth-plugin-unquoted

phpMyAdmin 5.2.3 — высокий — удалённый — SQLi — идентификатор плагина аутентификации без кавычек

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

Популярное

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

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

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

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

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

Abraxas Labs - phpmyadmin-auth-plugin-unquoted

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-auth-plugin-unquoted

phpmyadmin-auth-plugin-unquoted

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

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

Смена пароля включена по умолчанию. UserPassword.php копирует POST-параметр authentication_plugin в ALTER USER ... IDENTIFIED WITH без белого списка и без экранирования. Имя пользователя, хост и пароль в том же выражении проходят через escapeString. В MySQL 8 предложение WITH добавляется, когда отправленный плагин отличается от текущего.

Аутентифицированный пользователь phpMyAdmin внедряет SQL в свой собственный ALTER USER через форму смены пароля. Дополнительный SQL в поле плагина — это SQL, а не имя плагина.

IDCVE пока нет
КлассSQLi
ДоступУдалённый (аутентификация по cookie; смена пароля включена)
CWECWE-89
CVSSВысокий: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ПродуктphpMyAdmin
Затронуто5.2.3 тег RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Аутентификацияаутентификация по cookie. $cfg['ShowChgPassword'] по умолчанию true. Тип аутентификации не config
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

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

Аутентифицированный пользователь phpMyAdmin может внедрить SQL в свой собственный ALTER USER через форму смены пароля.

ПривилегияМетод / точка сбросаРазведка / целостность / доступностьДоказано в лаборатории или предполагается
Отправить дополнительный SQL в IDENTIFIED WITHPOST index.php?route=/user-password с authentication_pluginЦелостность выражения, которое строит phpMyAdminДоказано в лаборатории. Необработанный POST sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ появляется без кавычек в SQL-поле
Заставить MySQL разобрать этот дополнительный SQL как SQLТо же выражение доходит до mysqldЦелостность пользовательского соединенияДоказано в лаборатории. General log сохранил плагин sha256_password и отбросил комментарий. 1227, потому что у этого пользователя нет CREATE USER
Дополнительные предложения или дополнительные учётные записи, если сработает выход за пределыТа же точка сброса; составные запросы зависят от драйвераЦелостность других учётных записейПредполагается. В этой лаборатории не выполняется второй запрос и не создаётся другая учётная запись
Та же конкатенация при добавлении/редактировании пользователяPrivileges.php IDENTIFIED WITH / MariaDB VIAЦелостность выражений, строящихся grantorПредполагаемый родственный случай. POST в лаборатории только для смены пароля

Закрыто на этом пути: неаутентифицированное использование (требуется вход по cookie), config-auth (смена пароля скрыта), RCE, успешная смена плагина без GRANT на MySQL 8 (1227 без CREATE USER). Имя пользователя, хост и пароль остаются экранированными. Для собственного пароля GRANT не нужен; остаток — это неэкранированное поле плагина, а не свободная подмена плагина.

Тот же пин: WebAuthn CustomServer leftover.

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

Я зафиксировал phpmyadmin/phpmyadmin RELEASE_5_2_3. PMASA-2025-1/2/3 уже в 5.2.2. Смена пароля всё ещё строит:

return 'ALTER USER \'' . $dbi->escapeString($username)
    . '\'@\'' . $dbi->escapeString($hostname)
    . '\' IDENTIFIED WITH ' . $authPlugin . ' BY '

$authPlugin — это $_POST['authentication_plugin']. MySQL 5.7.37+ и 8.0 опускают WITH, если плагин не изменился. Отправьте другое имя, и предложение вернётся.

Уже зафиксированные неверные повороты: трактовка MySQL 1227 как провала остатка (это доказательство того, что дополнительный SQL разобран); заявление о смене плагина без GRANT на MySQL 8; трактовка config-auth как входящей в область; обратная оболочка. Театр.

Лаборатория

python3 phpmyadmin-auth-plugin-unquoted-Abraxas-Labs.py
# or: cd lab && ./run.sh

Цель только http://127.0.0.1:19260. Образы phpmyadmin:5.2.3 и mysql:8.0. Проект Compose phpmyadmin-auth-plugin-unquoted. Стек разбирается после запуска.

Вход по cookie как appuser. POST /user-password с authentication_plugin=sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/. SQL-поле PMA: ALTER USER 'appuser'@'%' IDENTIFIED WITH sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ BY '***'. General log MySQL разбирает комментарий и сохраняет IDENTIFIED WITH 'sha256_password'. Имя пользователя в кавычках.

SUCCESS phpmyadmin-auth-plugin-unquoted how=live unquoted=yes escaped-user=yes plugin=sha256_password PMA-AUTH-PLUGIN-UNQUOTED-WITNESS

Исправление

Белый список имён плагинов из SHOW PLUGINS. Никогда не подставляйте POST в IDENTIFIED WITH, VIA или plugin=.

Ссылки

  • github.com/phpmyadmin/phpmyadmin тег RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/UserPassword.php
  • libraries/classes/Server/Privileges.php
  • Тот же пин: PMA-5.2.3-WebAuthn-2FA
  • CWE-89

Лицензия

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

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