FORENSICS - Dukes DBar
On nous fournit une base de données et un fichier log Grafana. L'objectif est de trouver :
- Le CVE utilisé
- Le chemin du fichier volé
- L'adresse IP de l'attaquant
- Le nom d'utilisateur compromis
Identification du CVE
En début de fichier log, on repère la version de Grafana utilisée : 11.0.0.
Une recherche sur le NIST révèle le CVE-2024-9264 (CVSS 9.4) — une vulnérabilité permettant des injections de commandes SQL via l'intégration DuckDB, exploitable par tout compte avec des permissions Viewer ou supérieures.
Un PoC est disponible : github.com/nollium/CVE-2024-9264, qui utilise la fonction read_blob() pour lire des fichiers arbitraires :
SELECT content FROM read_blob("./conf/ldap.toml")
Recherche dans les logs
On cherche les occurrences de read_blob dans les logs :
grep -i "read_blob" grafana.log
Deux résultats :
SELECT content FROM read_blob('/etc/passwd')
SELECT content FROM read_blob('/var/lib/grafana/ctf/secret.csv')
Le fichier volé est /var/lib/grafana/ctf/secret.csv.
Identification de l'attaquant
On recherche le userID autour de l'heure de l'attaque (10:20) :
grep -i "userId" grafana.log | grep "10:20" | head -10
On obtient :
logger=auth t=2025-12-02T10:20:37.781848356Z level=debug msg="User auth token created" tokenID=4 userID=5 clientIP=85.215.144.254
On croise le userID=5 avec la base de données fournie :
5|0|editor2|editor2@ctf.local|editor2...
Flag
| Élément | Valeur |
|---|---|
| CVE | CVE-2024-9264 |
| Fichier volé | /var/lib/grafana/ctf/secret.csv |
| IP attaquant | 85.215.144.254 |
| Utilisateur | editor2 |