Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
grafana-gitsync-dns-rebind — Grafana OSS 13.2.3 - Alta - Remoto - SSRF - Git Sync URLValidator é apenas DNS de admissão | Kitploit
Ferramentas/GitHubGitHub/abraxas/grafana-gitsync-dns-rebind
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoRed TeamingLabs e Prática
GitHubabraxas/grafana-gitsync-dns-rebind

grafana-gitsync-dns-rebind

Grafana OSS 13.2.3 - Alta - Remoto - SSRF - Git Sync URLValidator é apenas DNS de admissão

Ver Repositório
há 4 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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 Alcance: Remoto

Grafana OSS 13.2.3 (6193dc0) - Grafana Labs

O Git Sync URLValidator verifica o host da URL do repositório na admissão. O nanogit / Test re-resolve depois sem fixação de IP. isBlockedIP cobre apenas loopback, RFC1918, link-local e unspecified. O literal 0.0.0.1 não é bloqueado. Um hostname que é público no momento da validação pode fazer rebind para RFC1918 no GET do clone.

O Test de uma URL Git com rebinding por um Org Admin faz o Grafana fazer GET a um host interno que o validador foi escrito para recusar.

IDainda sem CVE
ClasseSSRF (DNS rebind / lacuna 0.0.0.0/8)
AlcanceRemoto (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
ProdutoGrafana OSS
Afetado13.2.3 (6193dc0); Git Sync ativo por padrão
AutenticaçãoOrg Admin (repositories:create / :write). Não é criação por Viewer/Editor.
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

O ator é Org Admin, não um estranho. Um Org Admin já pode apontar datasources para URLs internas no OSS. Este resquício é um bypass do URLValidator do Git Sync que deveria fechar essa classe para URLs de repositório.

PrivilégioMétodo / sinkRecon / integridade / disponibilidadeComprovado em lab ou inferido
Fazer o Grafana fazer GET a uma URL Git com rebindingOrg Admin POST .../repositories/{name}/test com spec.git.url=http://git.lab/...Recon (HTTP de saída a partir do processo do Grafana)Comprovado em lab. DNS A1 público, depois A RFC1918. Oráculo de rebind hits=3, witness no body
Alcançar uma URL Git literal 0.0.0.1Mesmo Test com http://0.0.0.1:18080/lab/gitsync.gitReconComprovado em lab que não é bloqueado na admissão (status 400 de transporte, não 422 public-or-allowed)
Ler Git Smart HTTP / corpo HTTP desse host nos erros do TestgitRepository.Test interpola o erro de transporteReconInferido a partir do pin. O lab usou um git advertisement 200
Rebind para RFC1918 / CGNAT após a admissãoTOCTOU: valida o DNS e depois o nanogit discaReconComprovado em lab para o sidecar RFC1918 172.30.60.3
Leitura por Viewer do spec.*.url armazenado, incluindo userinforepositories:readReconInferido a partir do pin. Não é este lab

Fechado neste resquício (comprovado em lab): loopback literal 127.0.0.1 422; RFC1918 literal 10.0.0.1 422; IMDS 169.254.169.254 422. Fechado: Editor não pode criar repositórios. Não é RCE. Não requer Grafana Admin. Ignorar Grafana G2 (IAM SSOSetting k8s authorizer).

Como eu encontrei

A admissão em apps/provisioning/pkg/repository/validator.go chama URLValidator.ValidateURL. isBlockedIP tem quatro predicados. Unspecified é apenas 0.0.0.0 / ::. O restante de 0.0.0.0/8 e CGNAT passa. O clone depois usa nanogit.NewHTTPClient(gitConfig.URL) e re-resolve.

Caminhos errados já registrados: tratar URLs de DS de Org Admin como este resquício (essas são intencionais; isto é o bypass do validador do Git Sync); esperar que o IMDS 169.254 passasse (bloqueado na admissão); criação por Editor (negada); uma reverse shell. Teatro.

Lab

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

ou:

cd lab
./run.sh

Loopback: Grafana 127.0.0.1:19360, controle de DNS 127.0.0.1:19361, oráculo de rebind 127.0.0.1:19362. Imagem 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

A correção

Fixar o endereço resolvido durante o clone/Test, ou revalidar em cada discagem. Tratar 0.0.0.0/8 e CGNAT como bloqueados. Não ignorar o DNS em hosts na allowlist sem fixação.

Referências

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

Licença

GNU Affero GPL v3.0. Ver LICENSE. Apenas lab em loopback. Sem garantia.

Baixar ferramenta