Grafana est une application web largement déployée pour les tableaux de bord et la visualisation, se connectant à des sources de données (Prometheus, Elasticsearch, bases de données SQL, API cloud) pour lesquelles il stocke des identifiants. Elle s'attaque de plusieurs façons. L'accès provient des identifiants par défaut (admin/admin) et de l'accès anonyme/viewer là où il est activé. Une traversée de chemin de plugin non authentifiée a permis de lire des fichiers arbitraires depuis le serveur Grafana, récupérant sa configuration et ses secrets. Le proxy des sources de données est une primitive de server-side request forgery, atteignant des services internes depuis l'hôte Grafana, et les identifiants de sources de données stockés donnent un accès direct à ces bases de données et services. Et Grafana et ses plugins ont d'autres vulnérabilités connues. Une compromission de Grafana produit donc à la fois un accès au serveur et les identifiants de tout ce qu'il visualise.
curl -sk https://<target>:3000/login | grep -ioE 'Grafana v[0-9.]+' # fingerprint (default 3000)
Sous-thèmes#
- Énumération : identification du produit et de la version.
- Authentification et accès anonyme : comptes par défaut et visualisation anonyme.
- Lecture de fichier par traversée de chemin : la traversée de plugin non authentifiée.
- SSRF et identifiants des sources de données : SSRF du proxy et secrets stockés.
- Exploits connus : autres vulnérabilités de plugins et de serveur.