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

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

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

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

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

Категории

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

phpmyadmin-designer-json-sqli

phpMyAdmin 5.2.3 — высокий уровень — удалённый — SQLi — несанитизированные идентификаторы в JSON-файле Designer

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

Популярное

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

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

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

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

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

Abraxas Labs - phpmyadmin-designer-json-sqli

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

phpmyadmin-designer-json-sqli

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

phpMyAdmin 5.2.3 (тег RELEASE_5_2_3, коммит 962857e). AJAX-обработчик Designer save_setting_value выполняет json_encode для блоба настроек и конкатенирует его в UPDATE/INSERT с одинарными кавычками по связи control-user. Имя пользователя экранируется. JSON — нет. json_encode не экранирует одинарную кавычку.

Аутентифицированный пользователь отправляет POST на index.php?route=/database/designer с operation=save_setting_value и кавычкой в value. Затем queryAsControlUser выполняет эту строку от имени control-пользователя pma к pma__designer_settings. Эта учётная запись — хранилище конфигурации, а не SQL-сессия вошедшего пользователя. phpMyAdmin 6.x оборачивает этот блоб в quoteString для ControlUser. 5.2.3 по-прежнему конкатенирует его напрямую.

Более старые CVE в Designer (2016-6616, 2019-11768, 2019-18622) касались имени пользователя / имени базы данных. Этот остаток — столбец JSON settings_data.

IDCVE пока нет
КлассSQLi (control-user на pma__designer_settings)
ДоступУдалённый (аутентификация через cookie; Designer + pma__designer_settings включены)
CWECWE-89
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 (962857e)
АутентификацияАутентификация через cookie. Designer + pma__designer_settings включены.
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:19220

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

Аутентифицированный пользователь phpMyAdmin, имеющий доступ к Designer, может внедрить SQL от имени control-пользователя в pma__designer_settings.

ПривилегияМетод / путьДоказано в лаборатории или предположено
Разорвать строку UPDATE/INSERT control-пользователя (целостность SQL в pmadb)POST index.php?route=/database/designer operation=save_setting_value с кавычкой в valueДоказано в лаборатории. General log: SET settings_data = '{"snap_line":"PMA-DESIGNER-JSON-SQLI-WITNESS'#" }' в сыром виде. quoteString отсутствует
Усечь собственный settings_data, чтобы он перестал быть JSON (целостность собственной строки)Тот же POST; # закомментирует остаток выраженияДоказано в лаборатории. Блоб appuser содержит witness и не является валидным JSON. Чистое сохранение grid-ok исчезло
Перезаписать строки designer других пользователей без stacked-запросов (целостность строки жертвы)Тот же # закомментирует WHERE username = '...'Доказано в лаборатории. Засеянный victim {"keep":"safe"} превратился в усечённый witness-блоб
Дополнительные выражения от имени control-пользователяТот же sink, если control-соединение mysqli допускает multi-queryПредположено. По умолчанию mysqli::query — одиночное выражение. Здесь не включено
Добраться до других таблиц pmadb (bookmarks, history, pma__userconfig)Только если возможны stacked-запросы или write-style breakoutПредположено. Control-пользователь в этой лаборатории имеет только DML на phpmyadmin.*

Закрыто в этой лаборатории: неаутентифицированный доступ, SQL-сессия вошедшего appuser (только appdb; у appuser нет GRANT на phpmyadmin), OS shell и stacked-запросы. Функциональность не работает, если pmadb / designer settings отключены (это FAIL, а не этот остаток).

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

Восемь параллельных поисков по исходникам RELEASE_5_2_3. saveSetting конкатенирует json_encode в '...'. Имя пользователя обрабатывается через escapeString. 6.x уже применяет quoteString к этому блобу. 5.2.3 — нет.

Ошибочные пути: инъекция в имя пользователя (оно экранируется); ожидание #1064 (# закомментирует остаток, поэтому MySQL принимает усечённый UPDATE); рассмотрение stacked-запросов как доказанных (по умолчанию mysqli — одиночное выражение).

Лаборатория

python3 phpmyadmin-designer-json-sqli-Abraxas-Labs.py

или

cd lab
./run.sh

Только loopback: http://127.0.0.1:19220. Образы phpmyadmin:5.2.3 и mysql:8.0. Compose-проект phpmyadmin-designer-json-sqli. Witness PMA-DESIGNER-JSON-SQLI-WITNESS.

SUCCESS phpmyadmin-designer-json-sqli version=5.2.3 how=live raw-concat=yes truncated=true sql-error=false quoteString=no PMA-DESIGNER-JSON-SQLI-WITNESS

Исправление

quoteString(..., ControlUser) / escapeString для JSON-блоба, как в RecentFavoriteTable::saveToDb() и phpMyAdmin 6.x для этого столбца. Не помещайте вывод json_encode внутрь SQL-литерала с одинарными кавычками.

Ссылки

  • github.com/phpmyadmin/phpmyadmin тег RELEASE_5_2_3 (962857e)
  • libraries/classes/Database/Designer/Common.php saveSetting
  • Controllers/Database/DesignerController.php POST operation=save_setting_value
  • Маршрут GET|POST /database/designer
  • Остатки того же пина: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

Лицензия

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

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