Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
grafana-gitsync-dns-rebind — Grafana OSS 13.2.3 - Alta - Remota - SSRF - Git Sync URLValidator es solo DNS de admisión | Kitploit
Herramientas/GitHubGitHub/abraxas/grafana-gitsync-dns-rebind
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed TeamingLabs y Práctica
GitHubabraxas/grafana-gitsync-dns-rebind

grafana-gitsync-dns-rebind

Grafana OSS 13.2.3 - Alta - Remota - SSRF - Git Sync URLValidator es solo DNS de admisión

Ver Repositorio
hace 3 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - grafana-gitsync-dns-rebind

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

grafana-gitsync-dns-rebind

Clase: SSRF Alcance: Remoto

Grafana OSS 13.2.3 (6193dc0) - Grafana Labs

Git Sync URLValidator comprueba el host de la URL del repositorio en la admisión. nanogit / Test vuelven a resolver más tarde sin fijar la IP. isBlockedIP solo cubre loopback, RFC1918, link-local y no especificada. El literal 0.0.0.1 no está bloqueado. Un nombre de host que es público en el momento de la validación puede reasignarse a RFC1918 para el GET del clonado.

Que un Org Admin pruebe una URL de Git con rebinding hace que Grafana haga GET a un host interno que el validador fue escrito para rechazar.

IDaún sin CVE
ClaseSSRF (DNS rebind / hueco en 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
ProductoGrafana OSS
Afectado13.2.3 (6193dc0); Git Sync activado por defecto
AuthOrg Admin (repositories:create / :write). No creación por Viewer/Editor.
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Qué puede hacer un atacante

El actor es Org Admin, no un desconocido. Un Org Admin ya puede apuntar datasources a URLs internas en OSS. Este residuo es un bypass del URLValidator de Git Sync que estaba destinado a cerrar esa clase para las URLs de repositorio.

PrivilegioMétodo / sinkRecon / integridad / disponibilidadProbado en lab o inferido
Hacer que Grafana haga GET a una URL de Git con rebindingOrg Admin POST .../repositories/{name}/test con spec.git.url=http://git.lab/...Recon (HTTP saliente desde el proceso de Grafana)Probado en lab. DNS A1 público, después A RFC1918. Oráculo de rebind hits=3, testigo en el body
Alcanzar una URL de Git literal 0.0.0.1Mismo Test con http://0.0.0.1:18080/lab/gitsync.gitReconProbado en lab que no se bloquea en la admisión (status 400 de transporte, no 422 público-o-permitido)
Leer Git Smart HTTP / body HTTP desde ese host en los errores de TestgitRepository.Test interpola el error de transporteReconInferido a partir del pin. El lab usó un anuncio git 200
Rebind a RFC1918 / CGNAT tras la admisiónTOCTOU: validar DNS y luego marcar nanogitReconProbado en lab para el sidecar RFC1918 172.30.60.3
Lectura por Viewer del spec.*.url almacenado, incluido userinforepositories:readReconInferido a partir del pin. No en este lab

Cerrado en este residuo (probado en lab): loopback literal 127.0.0.1 422; RFC1918 literal 10.0.0.1 422; IMDS 169.254.169.254 422. Cerrado: Editor no puede crear repos. No es RCE. No requiere Grafana Admin. Se omite Grafana G2 (IAM SSOSetting k8s authorizer).

Cómo lo encontré

La admisión en apps/provisioning/pkg/repository/validator.go llama a URLValidator.ValidateURL. isBlockedIP son cuatro predicados. No especificada es solo 0.0.0.0 / ::. El resto de 0.0.0.0/8 y CGNAT pasan. El clonado posterior usa nanogit.NewHTTPClient(gitConfig.URL) y vuelve a resolver.

Caminos equivocados ya registrados: tratar las URLs de DS de Org Admin como este residuo (esas son intencionadas; esto es el bypass del validador de Git Sync); esperar que IMDS 169.254 pase (bloqueado en la admisión); creación por Editor (denegada); una reverse shell. Teatro.

Lab

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

o:

cd lab
./run.sh

Loopback: Grafana 127.0.0.1:19360, control DNS 127.0.0.1:19361, oráculo de rebind 127.0.0.1:19362. Imagen 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 solución

Fijar la dirección resuelta durante el clonado/Test, o revalidar en cada marcado. Tratar 0.0.0.0/8 y CGNAT como bloqueados. No omitir el DNS en hosts en allowlist sin fijar la IP.

Referencias

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

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo lab en loopback. Sin garantía.

Descargar herramienta