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-importldi — phpMyAdmin 5.2.3 - Alta - Remota - SQLi - ImportLdi TERMINATED BY leftover | Kitploit
Strumenti/GitHubGitHub/abraxas/phpmyadmin-importldi
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingLab e Pratica
GitHubabraxas/phpmyadmin-importldi

phpmyadmin-importldi

phpMyAdmin 5.2.3 - Alta - Remota - SQLi - ImportLdi TERMINATED BY leftover

Vedi Repository
4 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-importldi

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

phpmyadmin-importldi

Classe: SQLi Reach: Remoto

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

ImportLdi.php costruisce LOAD DATA con FIELDS/LINES TERMINATED BY a partire dai POST ldi_terminated e ldi_new_line. Queste due stringhe vengono concatenate in SQL tra apici singoli. ldi_enclosed e ldi_escaped passano attraverso escapeString. phpMyAdmin imposta PMA_ENABLE_LDI su /import in modo che MYSQLI_OPT_LOCAL_INFILE sia attivo.

Un utente autenticato invia in POST format=ldi con un apice in ldi_terminated. Il LOAD DATA emesso contiene il POST grezzo all'interno di TERMINATED BY. SQL injection nella connessione dell'utente, non in quella di controllo.

IDnessuna CVE al momento
ClasseSQLi
ReachRemoto (login autenticato tramite cookie; import tabella, formato ldi)
CWECWE-89
CVSSMedio: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProdottophpMyAdmin
Affetto5.2.3 tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Authlogin autenticato tramite cookie. Import tabella, formato ldi
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Un utente phpMyAdmin autenticato che può aprire Import tabella può iniettare SQL in LOAD DATA ... TERMINATED BY sulla propria connessione MySQL.

PrivilegioMetodo / sinkRecon / integrità / disponibilitàProvato in lab o dedotto
Rompere il letterale FIELDS TERMINATED BYPOST index.php?route=/import format=ldi ldi_terminated con un apiceIntegrità dell'istruzione che PMA costruisceProvato in lab. Box SQL HTML: TERMINATED BY '',PMA-IMPORTLDI-WITNESS'
Mantenere ENCLOSED BY in-bandStesso POST, apice in ldi_enclosedControllo negativoProvato in lab. ENCLOSED BY è escapato
SQL aggiuntivo sulla connessione dell'utente (INTO OUTFILE / stacked se consentito)Stesso sink una volta chiusa la stringaIntegrità della connessione dell'utenteDedotto. Il lab si ferma al delimitatore rotto. Il default mysqli::query è single-statement
Lettura/scrittura file lato MySQLStesso LOAD DATA se l'account ha FILE o LOCAL INFILE verso il web serverIntegrità dei file che mysqld può toccareDedotto. Non concesso qui. Non rivendicato

Esclusi su questo lab: accesso non autenticato, control-user / pmadb, LFI tramite include dell'OS, e lettura/scrittura vincolata a FILE. L'utente autenticato ha già un box SQL; questo residuo è il delimitatore non escapato all'interno di un'istruzione che PMA costruisce per lui.

Stesso pin: WebAuthn CustomServer leftover.

Come l'ho trovato

Ho fissato phpMyAdmin RELEASE_5_2_3. I plugin di import che costruiscono LOAD DATA a mano sono un audit di quoting. Due dei quattro campi delimitatore erano escapati. Due no:

$sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\'';
...
$sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\'';

ldi_enclosed / ldi_escaped chiamano $dbi->escapeString. Common.php imposta PMA_ENABLE_LDI su /import + format=ldi. Route GET|POST /import e GET|POST /table/import.

Vicoli ciechi già registrati: rivendicare LFI senza un grant FILE; trattare il box SQL come il finding (il residuo è il delimitatore non escapato che PMA concatena); rivendicare control-user / pmadb; una reverse shell. Teatro.

Lab

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

Target solo http://127.0.0.1:19290. Immagini phpmyadmin:5.2.3 e mysql:8.0. Progetto Compose phpmyadmin-importldi. Lo stack viene smontato dopo l'esecuzione.

Login tramite cookie. POST /import con format=ldi e un apice in ldi_terminated. Emesso LOAD DATA LOCAL INFILE ... INTO TABLE \ldi_target` FIELDS TERMINATED BY '',PMA-IMPORTLDI-WITNESS'. Lo stesso apice in ldi_enclosedmemorizzato comeENCLOSED BYescapato. Il sorgente fissato sull'immagine 5.2.3 ha ancora'.$ldi_terminated.'e$dbi->escapeString($ldi_enclosed)`.

SUCCESS phpmyadmin-importldi pin=RELEASE_5_2_3 how=live TERMINATED-BY-raw ENCLOSED-escaped PMA-IMPORTLDI-WITNESS

La correzione

escapeString su ldi_terminated e ldi_new_line, come per enclosed ed escaped. Cast a int per skip_queries.

Riferimenti

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Plugins/Import/ImportLdi.php
  • Stesso pin: PMA-5.2.3-WebAuthn-2FA
  • CWE-89

Licenza

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

Scarica lo strumento