Un serveur Prometheus ouvert est une riche source d'information non authentifiée. Le point de terminaison /api/v1/targets liste chaque cible de collecte, leurs adresses, leurs étiquettes et leur état de santé, soit une carte de l'environnement supervisé. Le point de terminaison /api/v1/status/config renvoie la configuration de collecte complète prometheus.yml, qui contient régulièrement des identifiants : les champs basic_auth, bearer_token et les en-têtes d'autorisation configurés pour collecter des exporteurs protégés et des points de terminaison tiers apparaissent dans la configuration. Les points de terminaison /api/v1/status/flags et build-info divulguent la configuration d'exécution. Et les métriques elles-mêmes (interrogées via /api/v1/query) divulguent l'inventaire des hôtes, les versions et tout secret que les développeurs ont placé dans les étiquettes de métriques. Tout cela sans identifiant, de sorte qu'un Prometheus accessible cartographie le parc et livre souvent les identifiants utilisés pour le collecter.
Pr=http://<target>:9090
curl -s $Pr/api/v1/targets | jq '.data.activeTargets[] | {scrapeUrl, labels}' # the estate map
curl -s $Pr/api/v1/status/config | jq -r .data.yaml | grep -iE 'password|token|authorization|basic_auth' # creds in config
curl -s $Pr/api/v1/status/flags; curl -s $Pr/api/v1/status/buildinfo
curl -s "$Pr/api/v1/query?query=up" | jq '.data.result[].metric' # metric labels
Notes d'exploitation#
/api/v1/status/configest le butin en matière d'identifiants : les configurations de collecte contiennent des champsbasic_auth/bearer_tokenpour les cibles protégées, de sorte que la configuration ouverte livre ces identifiants ; filtrez-la à la recherche des champs de secrets./api/v1/targetscartographie l'environnement interne (chaque adresse supervisée et son rôle), ce qui constitue de la reconnaissance et une liste de cibles pour le pivot.- Les étiquettes de métriques contiennent parfois des secrets ou des détails internes que les développeurs ne pensaient pas exposés ; interrogez largement et inspectez les étiquettes.
- Tout cela est non authentifié par défaut ; combinez les cibles et identifiants récupérés avec les voies SSRF et exporteur.