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

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

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

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

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

Категории

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

phpmyadmin-issuperuser

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

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

Популярное

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

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

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

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

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

Abraxas Labs - phpmyadmin-issuperuser

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

phpmyadmin-issuperuser

Класс: Остаточные привилегии Доступ: Удалённый

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

DatabaseInterface::isSuperUser() — это не проверка SUPER / SYSTEM_USER. Это SELECT 1 FROM mysql.user LIMIT 1. Любая учётная запись, способная читать mysql.user, кэшируется как суперпользователь до конца сессии. $cfg['AllowUserDropDatabase'] по умолчанию имеет значение false. DestroyController, SqlController, ImportController и страница баз данных используют сокращение isSuperUser в обход этого флага.

Обход политики phpMyAdmin, а не новая привилегия MySQL. SELECT на mysql.user плюс DROP, и без SUPER, достаточно для Drop через PMA.

IDпока нет CVE
КлассОстаточные привилегии
ДоступУдалённый (аутентифицированный вход по cookie как учётная запись MySQL)
CWECWE-863
CVSSСредний: 6.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
ПродуктphpMyAdmin
Затронуто5.2.3 тег RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Аутентификацияаутентифицированный вход по cookie как учётная запись MySQL
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

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

Учётная запись MySQL, вошедшая в систему, которая может читать mysql.user (типичный SELECT для резервного копирования/мониторинга) плюс DROP, без SUPER, рассматривается как суперпользователь phpMyAdmin.

ПривилегияМетод / точка срабатыванияРазведка / целостность / доступностьДоказано в лаборатории или выведено
Обход $cfg['AllowUserDropDatabase']=false и отображение Drop на странице баз данныхGET index.php?route=/server/databasesРазведка UI DropДоказано в лаборатории. bulkActionDropButton / selected_dbs[] присутствуют для selectuser; отсутствуют для plaindrop
Удаление базы данных через обработчик destroy PMAPOST index.php?route=/server/databases/destroy selected_dbs[]=dropme ajax_request=trueЦелостность / доступность этой базы данныхДоказано в лаборатории. JSON success:true, "1 database has been dropped successfully." dropme исчезла
Выполнение DROP DATABASE из SQL-окнаPOST index.php?route=/sql sql_query=DROP DATABASE \dropme_sql``Целостность / доступность этой базы данныхДоказано в лаборатории. База данных исчезла. Негативная учётная запись получает "DROP DATABASE statements are disabled."
Разблокировка других экранов PMA, зависящих от isSuperUser()Привилегии, репликация, статус, группы пользователей, движки, binlog, переменныеРазведка / целостность этих экрановВыведено из мест вызова. Не проверялось
Чтение mysql.userMySQL SELECT, который PMA использует как оракул SUPERРазведка каталога, который PMA ошибочно принимает за SUPERДоказано в лаборатории. Именно этот грант остаточная привилегия ошибочно принимает за SUPER

Закрыто в этой лаборатории: настоящий MySQL SUPER (SHOW GRANTS остаётся USAGE + DROP на таблицу + SELECT на mysql.user). FILE, GRANT OPTION, shutdown и ALL PRIVILEGES не предоставлены. Учётная запись с DROP, но без SELECT на mysql.user, всё ещё не может удалять через PMA. Это не новая привилегия MySQL и не RCE.

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

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

Я зафиксировал phpMyAdmin RELEASE_5_2_3. Привилегированные проверки, которые говорят как SUPER, должны выглядеть как SUPER. Эта выглядит как SELECT из каталога:

$result = $this->tryQuery('SELECT 1 FROM mysql.user LIMIT 1');
$isSuperUser = false;
if ($result) {
    $isSuperUser = (bool) $result->numRows();
}
SessionCache::set('is_superuser', $isSuperUser);

Проверки, использующие этот флаг вокруг AllowUserDropDatabase (по умолчанию false):

  • Controllers/Server/DatabasesController.php is_drop_allowed
  • Controllers/Server/Databases/DestroyController.php (AJAX destroy)
  • Controllers/Sql/SqlController.php / Sql::hasNoRightsToDropDatabase
  • Controllers/Import/ImportController.php
  • Controllers/Database/OperationsController.php

Уже зафиксированные ошибочные пути: заявление о настоящем MySQL SUPER; рассмотрение учётной записи только с DROP как бага (эта учётная запись — негативный контроль); раздувание этого до RCE; обратная оболочка. Театр.

Лаборатория

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

Цель только http://127.0.0.1:19270. Образы phpmyadmin:5.2.3 и mysql:8.0. Проект Compose phpmyadmin-issuperuser. $cfg['AllowUserDropDatabase']=false. Стек разбирается после запуска.

selectuser имеет SELECT на mysql.user плюс DROP на dropme / dropme_sql, без SUPER. plaindrop имеет DROP только на nodropme. Страница баз данных отображает Drop для selectuser. POST /server/databases/destroy удаляет dropme. POST /sql с DROP DATABASE dropme_sql также выполняется. plaindrop всё ещё получил Error JSON от destroy и "DROP DATABASE statements are disabled" от /sql.

SUCCESS phpmyadmin-issuperuser drop-ui=yes destroy=ok sql-drop=ok grants-no-super=yes mysql.user-select=yes neg-drop-ui=no neg-destroy=denied PMA-ISSUPERUSER-WITNESS

Исправление

Проверяйте настоящий SUPER / SYSTEM_USER через INFORMATION_SCHEMA или SHOW GRANTS. Сохраните отдельный флаг "может читать mysql.user" для UI, которому действительно нужен этот каталог. Не кэшируйте SELECT из каталога как суперпользователя.

Ссылки

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

Лицензия

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

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