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

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

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

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

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

Категории

Все категории
Loading categories
phpmyadmin-config-set-2fa — phpMyAdmin 5.2.3 — высокий — удалённый — 2FA — config/set очищает двухфакторную аутентификацию | Kitploit
Инструменты/GitHubGitHub/abraxas/phpmyadmin-config-set-2fa
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеАутентификацияЛаборатории и Практика
GitHub
abraxas/phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

phpMyAdmin 5.2.3 — высокий — удалённый — 2FA — config/set очищает двухфакторную аутентификацию

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

Популярное

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

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

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

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

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

Abraxas Labs - phpmyadmin-config-set-2fa

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

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

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

POST index.php?route=/config/set записывает любую настройку из белого списка, включая 2fa. UserPreferences::persistOption не выполняет никакой проверки. Settings -> Two-factor по-прежнему вызывает TwoFactor::check(true), прежде чем снять фактор. /config/set — нет.

Аутентифицированная сессия или XSS/CSRF, способный отправить POST с токеном страницы, может передать key=2fa и value=null. При следующем входе по паролю не будет запроса TOTP, WebAuthn или Simple. Устойчивое удаление, а не пропуск одного запроса.

IDCVE пока нет
КлассОстаточные привилегии / отсутствие step-up
ДоступУдалённый (аутентифицированный вход по cookie; требуется CSRF-токен)
CWECWE-620
CVSSHigh: 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. Требуется CSRF-токен. Завершает XSS или CSRF до устойчивого удаления 2FA
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

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

Удалить 2FA из учётной записи phpMyAdmin, не предъявляя TOTP, WebAuthn или поле подтверждения Simple. Следующий вход по паролю будет только по паролю. Полный PMA от имени этого пользователя MySQL (SQL, пользователи, экспорт).

ПривилегияМетод / путьРазведка / целостность / доступностьДоказано в лаборатории или выведено
Сохранить 2fa как null и удалить второй фактор из pmadbАутентифицированный POST index.php?route=/config/set key=2fa value=null плюс валидный tokenЦелостность хранилища настроекДоказано в лаборатории. success:true, pmadb config_data стал []
Войти только по паролю после этой записиНовая cookie-сессия, тот же пользователь MySQLЦелостность пути входаДоказано в лаборатории. Без 2fa_confirm, попал в обычный UI
Сохранить текущую сессию, пока 2FA исчезает для последующих входовТот же обработчик; persistOption пишет в хранилище, а не в живой флаг two_factor_checkЦелостность последующих сессийДоказано в лаборатории. Сессия A осталась. Сессия B видела 2FA. Сессия C — нет
Цепочка от stored XSS или CSRF, способного отправить POST с токеном страницыОстатки того же ревью, не эта лабораторияЦелостность 2FA после same-origin POSTВыведено
Удалить 2FA через SettingsPOST /preferences/two-factor 2fa_remove=1Целостность 2FA через документированный UIДоказано в лаборатории как закрытое. Без фактора PMA показывает страницу подтверждения, и pmadb всё ещё содержит backend=simple

Закрыто в этом остатке: неаутентифицированный доступ, пропуск пароля MySQL, OS RCE, чтение строк pmadb других пользователей. Мне не понадобился остаток #1 (подпись CustomServer). Я не пропускал пароль MySQL.

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

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

Я зафиксировал 5.2.3 после PMASA-2025-1/2/3. Аутентификация по cookie, pmadb pma__userconfig. Лаборатория включает $cfg['DBG']['simple2fa'] только для того, чтобы Settings могли зарегистрировать бэкенд Simple без аппаратного ключа. TOTP и WebAuthn живут в одном и том же ключе настройки 2fa.

SetConfigController принимает key и JSON value и вызывает Config::setUserValue. UserPreferences::persistOption документирован как "No validation is done!" apply() включает 2fa в белый список, поэтому ключ не отбрасывается как неизвестная настройка.

$result = $this->config->setUserValue(null, $key, json_decode($value));

json_decode('null') — это PHP null. persistOption('2fa', null, $default) затем удаляет config_data['2fa'], потому что значение по умолчанию для этого пути тоже null.

Settings -> Two-factor — это контраст. TwoFactorController не выполнит configure(''), пока TwoFactor::check(true) не вернёт true.

Уже зафиксированные неверные пути: считать Settings 2fa_remove дырой (он всё ещё требует фактор); заявлять о неаутентифицированном доступе; заявлять о пропуске пароля MySQL; считать это остатком #1 (CustomServer); reverse shell. Театр.

Лаборатория

python3 phpmyadmin-config-set-2fa-Abraxas-Labs.py
# or: cd lab && ./run.sh

Цель только http://127.0.0.1:19280. Compose-проект phpmyadmin-config-set-2fa. Пин RELEASE_5_2_3. run.sh копирует или клонирует этот тег в lab/src/ для образа. Стек разбирается после запуска.

Settings зарегистрировали Simple 2FA. Второй браузер попал на страницу 2fa_confirm. POST 2fa_remove без фактора остался на UI подтверждения и оставил backend=simple в pmadb. Затем POST /config/set вернул success:true, pmadb стал [], и следующий вход попал в обычный UI.

SUCCESS phpmyadmin-config-set-2fa enroll=simple ui-remove-blocked=yes config-set-cleared=yes next-login-password-only=yes PMA-CONFIG-SET-2FA-WITNESS

Исправление

Запретить 2fa (и другие ключи аутентификации) на /config/set. Требовать TwoFactor::check(true) перед любой мутацией 2FA. Оставить путь Settings единственным писателем.

Ссылки

  • github.com/phpmyadmin/phpmyadmin тег RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Controllers/Config/SetConfigController.php
  • libraries/classes/Config/UserPreferences.php
  • Тот же пин: PMA-5.2.3-WebAuthn-2FA
  • CWE-620

Лицензия

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

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