Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
phpmyadmin-designer-json-sqli — phpMyAdmin 5.2.3 - Alta - Remota - SQLi - Identificatori non sanificati in Designer JSON | Kitploit
Strumenti/GitHubGitHub/abraxas/phpmyadmin-designer-json-sqli
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingSicurezza dei DatabaseLab e Pratica
GitHub
abraxas/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

phpMyAdmin 5.2.3 - Alta - Remota - SQLi - Identificatori non sanificati in Designer JSON

Vedi Repository
209 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - phpmyadmin-designer-json-sqli

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

Write-up: https://abraxaslabs.tech/research/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

Classe: SQLi Portata: Remota

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3, commit 962857e). L'AJAX Designer save_setting_value esegue json_encode sul blob delle impostazioni e lo concatena in un UPDATE/INSERT con apici singoli sul link dell'utente di controllo. Il nome utente è sottoposto a escape. Il JSON no. json_encode non effettua l'escape di un apice singolo.

Un utente autenticato invia in POST a index.php?route=/database/designer con operation=save_setting_value e un apice in value. queryAsControlUser esegue quindi quella stringa come utente di controllo pma su pma__designer_settings. Quell'account è la memoria di configurazione, non il box SQL dell'utente autenticato. phpMyAdmin 6.x racchiude questo blob in quoteString su ControlUser. La 5.2.3 lo concatena ancora in modo grezzo.

Le vecchie CVE del designer (2016-6616, 2019-11768, 2019-18622) riguardavano il nome utente / il nome del database. Questo residuo è la colonna JSON settings_data.

IDnessuna CVE al momento
ClasseSQLi (utente di controllo su pma__designer_settings)
PortataRemota (login autenticato tramite cookie; Designer + pma__designer_settings abilitati)
CWECWE-89
CVSSAlta: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProdottophpMyAdmin
Affetto5.2.3 tag RELEASE_5_2_3 (962857e)
AuthLogin autenticato tramite cookie. Designer + pma__designer_settings abilitati.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:19220

Cosa può fare un attaccante

Un utente phpMyAdmin autenticato che può aprire Designer può iniettare SQL come utente di controllo su pma__designer_settings.

PrivilegioMetodo / percorsoProvato in lab o dedotto
Interrompere la stringa UPDATE/INSERT dell'utente di controllo (integrità dell'SQL di pmadb)POST index.php?route=/database/designer operation=save_setting_value con un apice in valueProvato in lab. General log: SET settings_data = '{"snap_line":"PMA-DESIGNER-JSON-SQLI-WITNESS'#" }' grezzo. quoteString assente
Troncare il proprio settings_data in modo che non sia più JSON (integrità della propria riga)Stesso POST; # commenta il resto dell'istruzioneProvato in lab. Il blob di appuser contiene il witness e non è JSON valido. Il salvataggio pulito grid-ok è sparito
Sovrascrivere le righe designer di altri utenti senza query impilate (integrità della riga della vittima)Lo stesso # commenta WHERE username = '...'Provato in lab. Il seed victim {"keep":"safe"} è diventato il blob witness troncato
Istruzioni aggiuntive come utente di controlloStesso sink se il link mysqli di controllo consente multi-queryDedotto. Per impostazione predefinita mysqli::query è a istruzione singola. Non abilitato qui
Raggiungere altre tabelle pmadb (bookmarks, history, pma__userconfig)Solo se sono possibili query impilate o un breakout in stile scritturaDedotto. L'utente di controllo in questo lab ha solo DML su phpmyadmin.*

Chiusi su questo lab: accesso non autenticato, il box SQL dell'appuser autenticato (solo appdb; appuser non ha GRANT su phpmyadmin), shell del sistema operativo e query impilate. La funzionalità non ha effetto se pmadb / designer settings è disabilitato (questo è un FAIL, non questo residuo).

Come l'ho trovato

Otto ricerche parallele nel codice sorgente di RELEASE_5_2_3. saveSetting concatena json_encode in '...'. Il nome utente è gestito con escapeString. La 6.x applica già quoteString a questo blob. La 5.2.3 no.

Giri sbagliati: injection sull'username (è sottoposto a escape); aspettarsi un #1064 (il # commenta il resto, quindi MySQL accetta l'UPDATE troncato); considerare le query impilate come dimostrate (il default di mysqli è single-statement).

Lab

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

o

cd lab
./run.sh

Solo loopback: http://127.0.0.1:19220. Immagini phpmyadmin:5.2.3 e mysql:8.0. Progetto 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

La correzione

quoteString(..., ControlUser) / escapeString sul blob JSON, come in RecentFavoriteTable::saveToDb() e phpMyAdmin 6.x su questa colonna. Non inserire l'output di json_encode all'interno di un letterale SQL tra apici singoli.

Riferimenti

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e)
  • libraries/classes/Database/Designer/Common.php saveSetting
  • Controllers/Database/DesignerController.php POST operation=save_setting_value
  • Route GET|POST /database/designer
  • Stessi residui del pin: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo laboratorio loopback. Nessuna garanzia.

Scarica lo strumento