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-setup-validate — phpMyAdmin 5.2.3 - Alta - Remota - leftover - setup/validate ancora raggiungibile | Kitploit
Strumenti/GitHubGitHub/abraxas/phpmyadmin-setup-validate
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingLab e Pratica
GitHubabraxas/phpmyadmin-setup-validate

phpmyadmin-setup-validate

phpMyAdmin 5.2.3 - Alta - Remota - leftover - setup/validate ancora raggiungibile

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-setup-validate

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

phpmyadmin-setup-validate

Classe: SSRF Portata: Remota

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3, commit 962857e). setup/index.php termina quando config.inc.php è presente. setup/validate.php no. Si carica comunque sotto $isMinimumCommon, prende un token CSRF dalla pagina di login pubblica e chiama Validator::testDBConnection -> mysqli_connect verso host, porta, utente e password nel campo JSON values.

Un client non autenticato esegue una GET su / per ottenere un cookie di sessione e un token, poi esegue una POST su setup/validate.php id=Server con Servers/1/host e Servers/1/port a propria scelta. L'host phpMyAdmin apre un handshake TCP MySQL verso quell'indirizzo. Si tratta di SSRF sul protocollo MySQL: 3306 interno, credential stuffing contro un server interno, un port oracle basato su timing ed errori mysqli. Non è SSRF su metadata HTTP a meno che qualcosa su quella porta parli MySQL. Anche hide_db interpola una regex utente in preg_match. Non ho eseguito quel percorso ReDoS in questo lab.

L'immagine ufficiale phpmyadmin:5.2.3 elimina setup/. Questo residuo si applica solo quando quella directory è ancora nella web root, che è il residuo comune dopo un'installazione. Il lab ripristina setup/ dal tarball 5.2.3 in modo che il pin corrisponda a RELEASE_5_2_3.

PMASA-2016-44 / CVE-2016-6621 copriva parte delle SSRF di setup. Il controllo "disabilita setup quando la config esiste" non è mai stato applicato a validate.php / config.php.

IDnessuna CVE al momento
ClasseSSRF (protocollo MySQL)
PortataRemota (non autenticata se setup/ è ancora raggiungibile via web)
CWECWE-918
CVSSHigh: 7.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
ProdottophpMyAdmin
Affetto5.2.3 tag RELEASE_5_2_3 (962857e) con setup/ ancora nella docroot
AuthNon autenticata. Token CSRF dalla pagina di login pubblica. Nessun login MySQL.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:19230

Cosa può fare un attaccante

Chiunque possa raggiungere un albero setup/ residuo può far aprire all'host phpMyAdmin una connessione TCP con protocollo MySQL verso un host e una porta a propria scelta.

PrivilegioMetodo / percorsoProvato in lab o dedotto
Aprire TCP dall'host PMA verso host:porta dell'attaccante (integrità della connessione in uscita; ricognizione di quella porta)POST /setup/validate.php non autenticata id=Server con Servers/1/host + Servers/1/port più un token da GET /Provato in lab. L'oracle su oracle:13306 ha registrato PMA-SETUP-VALIDATE-WITNESS dal container PMA
Confermare che la UI di setup è disattivata mentre validate resta attivoGET /setup/index.phpProvato in lab. Il body contiene "setup is disabled" / configuration already exists
Fallire in modo sicuro senza il token CSRF della pagina di loginStessa POST, senza tokenProvato in lab. Zero hit sull'oracle
Port / credential oracle da errori mysqli e timingStesso testDBConnectionDedotto. Il body del lab era mysqli_connect(): (HY000/2006): MySQL server has gone away dopo che l'oracle aveva accettato e poi chiuso
Parlare MySQL verso un 3306 interno e provare utente/password inviatiStesso mysqli_connectDedotto. Non puntato al servizio db del lab
ReDoS tramite validateRegex che interpola una regex utenteid=Servers/1/hide_dbDedotto. Non esercitato

Esclusi su questo lab: SSRF su metadata HTTP (l'handshake è MySQL, non GET /latest/meta-data), login PMA non autenticato, shell OS e il wizard di setup stesso (index.php resta disabilitato). FAIL se setup/ non è distribuito (default dell'immagine ufficiale).

Come l'ho trovato

Otto ricerche parallele nel sorgente di RELEASE_5_2_3. setup/index.php ha il fatal config-exists. setup/validate.php no. setup/lib/common.inc.php imposta $isMinimumCommon e non cerca CONFIG_FILE.

Vicoli ciechi: trattare l'immagine ufficiale come questo residuo (elimina setup/); eseguire POST senza il token della pagina di login (zero hit sull'oracle); trattare questo come SSRF su metadata HTTP (l'handshake è MySQL).

Lab

python3 phpmyadmin-setup-validate-Abraxas-Labs.py

oppure

cd lab
./run.sh

Solo loopback: http://127.0.0.1:19230. Progetto Compose phpmyadmin-setup-validate. Il Dockerfile ripristina setup/ dal tarball 5.2.3 ed esegue un oracle TCP sulla porta 13306. Witness PMA-SETUP-VALIDATE-WITNESS.

SUCCESS phpmyadmin-setup-validate how=live tcp=yes setup-index-disabled=yes PMA-SETUP-VALIDATE-WITNESS

La correzione

Mettere il fatal file_exists(CONFIG_FILE) in setup/lib/common.inc.php in modo che ogni script di setup termini. Limitare gli host di testDBConnection. Non costruire delimitatori preg_match da stringhe utente.

Riferimenti

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e)
  • setup/index.php fatal config-exists
  • setup/validate.php nessun controllo di quel tipo
  • libraries/classes/Config/Validator.php testDBConnection / mysqli_connect
  • Residui dello stesso pin: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-csrf-sql
  • CWE-918

Licenza

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

Scarica lo strumento