Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
grafana-gitsync-dns-rebind — Grafana OSS 13.2.3 - Élevé - À distance - SSRF - Git Sync URLValidator est limité à la validation DNS à l'admission | Kitploit
Outils/GitHubGitHub/abraxas/grafana-gitsync-dns-rebind
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingLabs et Pratique
GitHubabraxas/grafana-gitsync-dns-rebind

grafana-gitsync-dns-rebind

Grafana OSS 13.2.3 - Élevé - À distance - SSRF - Git Sync URLValidator est limité à la validation DNS à l'admission

Voir le dépôt
il y a 3 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - grafana-gitsync-dns-rebind

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  grafana-gitsync-dns-rebind

grafana-gitsync-dns-rebind

Classe : SSRF Portée : Distante

Grafana OSS 13.2.3 (6193dc0) - Grafana Labs

Git Sync URLValidator vérifie l'hôte de l'URL du dépôt à l'admission. nanogit / Test re-résolvent plus tard sans épinglage d'IP. isBlockedIP ne couvre que loopback, RFC1918, link-local et unspecified. Le littéral 0.0.0.1 n'est pas bloqué. Un nom d'hôte public au moment de la validation peut rebinder vers RFC1918 pour le GET de clone.

Le Test par un Org Admin d'une URL Git rebindante fait que Grafana effectue un GET vers un hôte interne que le validateur était censé refuser.

IDpas encore de CVE
ClasseSSRF (DNS rebind / faille 0.0.0.0/8)
PortéeDistante (Org Admin repositories:create)
CWECWE-918 / CWE-367
CVSSÉlevé : 7.7 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N
ProduitGrafana OSS
Affecté13.2.3 (6193dc0) ; Git Sync activé par défaut
AuthOrg Admin (repositories:create / :write). Pas de création par Viewer/Editor.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

L'acteur est Org Admin, pas un inconnu. Un Org Admin peut déjà pointer des datasources vers des URL internes sur OSS. Ce reliquat est un contournement du URLValidator de Git Sync qui était censé fermer cette classe pour les URL de dépôt.

PrivilègeMéthode / sinkReconnaissance / intégrité / disponibilitéProuvé en lab ou déduit
Faire que Grafana effectue un GET vers une URL Git rebindanteOrg Admin POST .../repositories/{name}/test avec spec.git.url=http://git.lab/...Reconnaissance (HTTP sortant depuis le processus Grafana)Prouvé en lab. DNS A1 public, puis A RFC1918. Oracle de rebind hits=3, témoin dans le corps
Atteindre une URL Git littérale 0.0.0.1Même Test avec http://0.0.0.1:18080/lab/gitsync.gitReconnaissanceProuvé en lab non bloqué à l'admission (statut 400 transport, pas 422 public-or-allowed)
Lire Git Smart HTTP / le corps HTTP depuis cet hôte dans les erreurs de TestgitRepository.Test interpole l'erreur de transportReconnaissanceDéduit de l'épinglage. Le lab a utilisé une annonce git 200
Rebinder vers RFC1918 / CGNAT après admissionTOCTOU : valider le DNS puis dial nanogitReconnaissanceProuvé en lab pour le sidecar RFC1918 172.30.60.3
Lecture par un Viewer du spec.*.url stocké, y compris userinforepositories:readReconnaissanceDéduit de l'épinglage. Pas ce lab

Fermé sur ce reliquat (prouvé en lab) : loopback littéral 127.0.0.1 422 ; RFC1918 littéral 10.0.0.1 422 ; IMDS 169.254.169.254 422. Fermé : un Editor ne peut pas créer de dépôts. Pas de RCE. Pas besoin d'être Grafana Admin. Ignorer Grafana G2 (IAM SSOSetting k8s authorizer).

Comment je l'ai trouvé

L'admission dans apps/provisioning/pkg/repository/validator.go appelle URLValidator.ValidateURL. isBlockedIP est quatre prédicats. Unspecified n'est que 0.0.0.0 / ::. Le reste de 0.0.0.0/8 et le CGNAT passent. Le clone utilise ensuite nanogit.NewHTTPClient(gitConfig.URL) et re-résout.

Fausses pistes déjà consignées : traiter les URL DS d'Org Admin comme ce reliquat (celles-ci sont intentionnelles ; ceci est le contournement du validateur Git Sync) ; s'attendre à ce que IMDS 169.254 passe (bloqué à l'admission) ; création par Editor (refusée) ; un reverse shell. Du théâtre.

Lab

python3 grafana-gitsync-dns-rebind-Abraxas-Labs.py

ou :

cd lab
./run.sh

Loopback : Grafana 127.0.0.1:19360, contrôle DNS 127.0.0.1:19361, oracle de rebind 127.0.0.1:19362. Image grafana/grafana:13.2.3.

SUCCESS GRAFANA-GITSYNC-DNS-REBIND how=live actor=org-admin path=rebind dns_lookups=4 negatives=3 GRAFANA-GITSYNC-DNS-REBIND-WITNESS

Le correctif

Épingler l'adresse résolue pendant tout le clone/Test, ou re-valider à chaque dial. Traiter 0.0.0.0/8 et le CGNAT comme bloqués. Ne pas ignorer le DNS sur les hôtes en liste blanche sans épinglage.

Références

  • github.com/grafana/grafana tag v13.2.3
  • url_validator.go · validator.go
  • CWE-918 · CWE-367

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab en loopback uniquement. Aucune garantie.

Télécharger l’outil