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

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

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

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

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

Категории

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

phpmyadmin-webauthn

phpMyAdmin 5.2.3 — высокий — удалённый — обход 2FA — церемонию WebAuthn можно пропустить

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

Популярное

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

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

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

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

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

Abraxas Labs - phpmyadmin-webauthn

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

phpmyadmin-webauthn

Класс: обход 2FA Доступ: удалённый

phpMyAdmin 5.2.3 (тег RELEASE_5_2_3). Стандартный tarball. web-auth/webauthn-lib находится в suggest / require-dev. composer install --no-dev его не устанавливает. Поэтому createServer использует CustomServer. Этот класс разбирает response.signature (поле должно существовать и декодироваться) и никогда не проверяет его через COSE. Он никогда не использует сохранённый credentialPublicKey. Собственный CustomServerTest продукта принимает assertion без публичного ключа.

Структурные проверки реальны: credential id в allowCredentials, clientData.type == webauthn.get, challenge совпадает с сессией, хост origin, rpIdHash, user-present. Подпись разбирается и игнорируется. После пароля MySQL мусорная подпись WebAuthn, которая всё ещё соответствует этим полям, даёт полноценную сессию phpMyAdmin. Это база данных. Если вы действительно установили web-auth/webauthn-lib, вы работаете через WebauthnLibServer, и это не данный баг.

IDCVE пока нет
Классобход 2FA / отсутствие проверки подписи
ДоступУдалённый (вход по cookie, затем WebAuthn пропускается)
CWECWE-347, CWE-287
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. Стандартный tarball / composer install --no-dev
АутентификацияВход по cookie (пароль MySQL), затем WebAuthn пропускается
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:18080

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

Ему всё ещё нужен пароль MySQL (вход по cookie). После этого пароля он отправляет POST webauthn_request_response с совпадающими challenge, хостом origin, rpIdHash, user-present, id зарегистрированного credential и мусорной подписью. Он попадает в обычный интерфейс. 2FA больше нет. Это база данных (SQL, пользователи, экспорт), а не PHP-шелл на хосте.

Если вы действительно установили web-auth/webauthn-lib, вы работаете через WebauthnLibServer, и это не данный баг.

ПривилегияМетод / путьДоказано в лаборатории или предположено
Полный обход WebAuthn 2FA без аутентификатора (целостность второго фактора)POST webauthn_request_response после пароля, мусорная подписьДоказано в лаборатории. still_2fa=False landed=True
Полный PMA от имени этого пользователя MySQL (целостность + разведка SQL-хоста)та же сессияДоказано в лаборатории. Присутствуют маркеры главного интерфейса
Обход пароля MySQLнеаутентифицированный POSTДоказано в лаборатории, закрыто. Остаётся на странице входа
Тот же обход при установленном web-auth/webauthn-libWebauthnLibServerЗакрыто. Это не данный остаток
RCE на уровне ОС / reverse shellданный остатокЗакрыто

Закрыто на данном остатке: неаутентифицированный PMA, PHP-шелл на хосте и трактовка tarball, в котором действительно установлен web-auth/webauthn-lib, как данного бага.

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

Я прочитал createServer, затем parseAndValidateAssertionResponse, затем модульный тест, который не передаёт публичный ключ. Структурные проверки реальны. Подпись разбирается и игнорируется.

Неверные шаги: POST WebAuthn JSON без предварительной сессии с паролем; подпись, не прошедшая структурные проверки; Webauthn\Server всё ещё присутствует (неверный класс сервера); challenge не из этой сессии; несовпадение хоста origin; флаг user-present снят; credential id отсутствует в allowCredentials.

Dockerfile лаборатории копирует 5.2.3, выполняет composer install --no-dev, затем удаляет vendor/web-auth, чтобы использовался именно CustomServer. Последний php -r завершается с кодом 1, если Webauthn\Server существует. init.sql регистрирует WebAuthn 2FA для appuser без аппаратного ключа. PoC отправляет POST с подписью not-a-real-signature-PMA-WEBAUTHN-BYPASS.

Лаборатория

Клонируйте закреплённую версию рядом с Dockerfile, затем выполните:

cd lab
git clone --depth 1 --branch RELEASE_5_2_3 https://github.com/phpmyadmin/phpmyadmin.git src
./run.sh

или из корня пакета после этого клонирования:

python3 phpmyadmin-webauthn-Abraxas-Labs.py

Только loopback: http://127.0.0.1:18080. Проект Compose pma-webauthn-lab. Закрепление RELEASE_5_2_3. Не поставляйте src/. Свидетельство PMA-WEBAUTHN-BYPASS.

SUCCESS PMA-WEBAUTHN-BYPASS WebAuthn 2FA accepted with garbage signature

Исправление

Проверяйте authenticatorData || SHA-256(clientDataJSON) с помощью сохранённого публичного ключа COSE; привязывайте userHandle; применяйте signCount. Сделайте web-auth/webauthn-lib реальной зависимостью и удалите CustomServer, либо отказывайте при отсутствии библиотеки (fail closed). До этого отключите WebAuthn 2FA или не выставляйте этот phpMyAdmin наружу.

Ссылки

  • github.com/phpmyadmin/phpmyadmin тег RELEASE_5_2_3
  • Plugins\TwoFactor\WebAuthn::createServer
  • CustomServer::parseAndValidateAssertionResponse
  • Остатки того же закрепления: phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-347 · CWE-287

Лицензия

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

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