Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
grafana-gitsync-dns-rebind — Grafana OSS 13.2.3 - Alto - Remoto - SSRF - Git Sync URLValidator è solo ammissione DNS | Kitploit
Strumenti/GitHubGitHub/abraxas/grafana-gitsync-dns-rebind
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingRed TeamingLab e Pratica
GitHubabraxas/grafana-gitsync-dns-rebind

grafana-gitsync-dns-rebind

Grafana OSS 13.2.3 - Alto - Remoto - SSRF - Git Sync URLValidator è solo ammissione DNS

Vedi Repository
4 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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 Portata: Remota

Grafana OSS 13.2.3 (6193dc0) - Grafana Labs

Git Sync URLValidator verifica l'host dell'URL del repository al momento dell'ammissione. nanogit / Test ri-risolvono successivamente senza IP pin. isBlockedIP copre solo loopback, RFC1918, link-local e unspecified. Il letterale 0.0.0.1 non è bloccato. Un hostname pubblico al momento della validazione può fare rebind verso RFC1918 per la GET di clone.

Il Test di un URL Git con rebinding da parte di un Org Admin fa sì che Grafana effettui una GET verso un host interno che il validator era stato scritto per rifiutare.

IDnessuna CVE al momento
ClasseSSRF (DNS rebind / lacuna 0.0.0.0/8)
PortataRemota (Org Admin repositories:create)
CWECWE-918 / CWE-367
CVSSAlto: 7.7 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N
ProdottoGrafana OSS
Affetto13.2.3 (6193dc0); Git Sync attivo di default
AuthOrg Admin (repositories:create / :write). Non creazione da Viewer/Editor.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

L'attore è un Org Admin, non un estraneo. Un Org Admin può già puntare datasource verso URL interni su OSS. Questo residuo è un bypass del URLValidator di Git Sync che doveva chiudere quella classe per gli URL dei repository.

PrivilegioMetodo / sinkRecon / integrità / disponibilitàProvato in lab o dedotto
Far effettuare a Grafana una GET verso un URL Git con rebindingOrg Admin POST .../repositories/{name}/test con spec.git.url=http://git.lab/...Recon (HTTP in uscita dal processo Grafana)Provato in lab. DNS A1 pubblico, poi A RFC1918. Rebind oracle hits=3, witness nel body
Raggiungere un URL Git letterale 0.0.0.1Stesso Test con http://0.0.0.1:18080/lab/gitsync.gitReconProvato in lab non bloccato all'ammissione (status 400 transport, non 422 public-or-allowed)
Leggere Git Smart HTTP / body HTTP da quell'host negli errori del TestgitRepository.Test interpola l'errore di trasportoReconDedotto dal pin. Il lab ha usato un git advertisement 200
Rebind verso RFC1918 / CGNAT dopo l'ammissioneTOCTOU: valida DNS poi nanogit dialReconProvato in lab per il sidecar RFC1918 172.30.60.3
Lettura da Viewer dello spec.*.url memorizzato incluso userinforepositories:readReconDedotto dal pin. Non in questo lab

Chiusi su questo residuo (provato in lab): loopback letterale 127.0.0.1 422; RFC1918 letterale 10.0.0.1 422; IMDS 169.254.169.254 422. Chiuso: Editor non può creare repo. Non è RCE. Non richiede Grafana Admin. Salta Grafana G2 (IAM SSOSetting k8s authorizer).

Come l'ho trovato

L'ammissione in apps/provisioning/pkg/repository/validator.go chiama URLValidator.ValidateURL. isBlockedIP è quattro predicati. Unspecified è solo 0.0.0.0 / ::. Il resto di 0.0.0.0/8 e CGNAT passano. Il clone successivamente usa nanogit.NewHTTPClient(gitConfig.URL) e ri-risolve.

Vicoli ciechi già registrati: trattare gli URL DS di Org Admin come questo residuo (quelli sono intenzionali; questo è il bypass del validator di Git Sync); aspettarsi che IMDS 169.254 passi (bloccato all'ammissione); creazione da Editor (negata); una reverse shell. Teatro.

Lab

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

oppure:

cd lab
./run.sh

Loopback: Grafana 127.0.0.1:19360, controllo DNS 127.0.0.1:19361, rebind oracle 127.0.0.1:19362. Immagine 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

La correzione

Fissare l'indirizzo risolto durante clone/Test, oppure ri-validare a ogni dial. Trattare 0.0.0.0/8 e CGNAT come bloccati. Non saltare il DNS su host in allowlist senza pinning.

Riferimenti

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

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab in loopback. Nessuna garanzia.

Scarica lo strumento