Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-52813-Gogs-RCE — CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) informe defensivo: análisis de causa raíz y del parche, reglas de detección Sigma/SIEM, IOCs, escáner de versiones no intrusivo. Sin PoC armado. | Kitploit
Herramientas/GitHubGitHub/iqx6889/cve-2026-52813-gogs-rce
Gestión de Indicadores de Compromiso (IOC)Escáneres de VulnerabilidadesAnálisis de VulnerabilidadesInteligencia de AmenazasPapers e InvestigaciónAprendizaje y EducaciónRespuesta a IncidentesAnálisis de RegistrosLabs y Práctica

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
GitHubiqx6889/cve-2026-52813-gogs-rce

CVE-2026-52813-Gogs-RCE

CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) informe defensivo: análisis de causa raíz y del parche, reglas de detección Sigma/SIEM, IOCs, escáner de versiones no intrusivo. Sin PoC armado.

Ver Repositorio
1hace 1 mesAún no revisado

CVE-2026-52813 — Path traversal en Gogs que conduce a ejecución remota de código en Git Hooks (análisis defensivo)

Investigación de seguridad / writeup para equipo azul. Este repositorio no contiene ningún PoC weaponizado. Los investigadores que necesiten reproducir el fallo deben usar el PoC público referenciado en el advisory oficial.

CampoContenido
CVECVE-2026-52813
AliasGHSA-c39w-43gm-34h5 / GO-2026-5305
Versiones afectadasGogs < 0.14.3
Versión corregida0.14.3 — PR #8334
CVSS 3.110.0 Critical AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWECWE-23 Relative Path Traversal → RCE
Requisito previoUna cuenta registrada normal (con el registro abierto por defecto = RCE sin autenticación)

TL;DR

Al crear una organización, Gogs aplica la validación de caracteres AlphaDashDot en el formulario web para bloquear /, pero la API REST POST /api/v1/user/orgs no la aplica. El atacante envía un nombre de organización con ../ a través de la API, evade la validación y llega directamente a os.MkdirAll(repoutil.UserPath(org.Name), 0777) (internal/database/org.go:165), escribiendo el directorio del repositorio en cualquier ruta del sistema de archivos. Combinado con el árbol de trabajo temporal del editor web de Gogs (local-r/<repo_id>/), puede desplegar un hooks/update malicioso dentro del checkout local de otro repositorio, que git ejecuta automáticamente → RCE como el usuario git.


Versiones afectadas y mitigación

Versión de GogsEstado
< 0.14.3Afectada, actualice de inmediato
>= 0.14.3Corregida

La actualización es la única medida de corrección definitiva:

root@kitploit:~
# Docker
docker pull gogs/gogs:0.14.3
# 或源码
git checkout v0.14.3 && go build

Mitigaciones temporales (cuando no se puede actualizar):

  • Deshabilitar el registro abierto (app.ini → [service] DISABLE_REGISTRATION = true), degradando el requisito previo de "sin autenticación" a "requiere una cuenta existente";
  • Añadir reglas WAF en la capa del proxy inverso (nginx/Caddy/Traefik) para bloquear las solicitudes POST /api/v1/user/orgs y POST /api/v1/org/*/repos cuyo cuerpo contenga .. o / en los campos username / name (ver detection/);
  • Restringir los permisos de escritura del contenedor de Gogs fuera de /data/gogs/data/tmp/ (selinux/apparmor).

Análisis de la causa raíz

1. Validación asimétrica: el formulario web la tiene, la API no

Formulario web (internal/form/org.go, v0.14.2):

root@kitploit:~
type CreateOrg struct {
    OrgName string `binding:"Required;AlphaDashDot;MaxSize(35)"` // 正则 ^[a-zA-Z0-9._-]+$
}

API (internal/route/api/v1/org/org.go, v0.14.2):

root@kitploit:~
// api.CreateOrgOption (go-gogs-client) 的绑定 tag:
type CreateOrgOption struct {
    UserName string `json:"username" binding:"Required"` // ← 没有 AlphaDashDot!
}

→ El campo username de POST /api/v1/user/orgs puede contener cualquier carácter y llegar directamente a la capa de base de datos.

2. La capa de BD solo comprueba nombres reservados, no el juego de caracteres

internal/database/users.go:1532 isNameAllowed solo bloquea nombres reservados y prefijos/sufijos (como admin, -bot), no valida el juego de caracteres, por lo que ../ puede pasar.

3. Sink de ruta sin saneamiento

internal/repoutil/repoutil.go (v0.14.2):

root@kitploit:~
func UserPath(user string) string {
    return filepath.Join(conf.Repository.Root, strings.ToLower(user)) // ← 直接拼接
}

internal/database/org.go:165:

root@kitploit:~
os.MkdirAll(repoutil.UserPath(org.Name), os.ModePerm) // org.Name 含 ../ → 任意路径写入

4. Uso del árbol de trabajo local-r para desplegar el hook

Cuando Gogs procesa la edición de archivos vía Web/API, hace checkout del repositorio en /data/gogs/data/tmp/local-r/<repo_id>/. <repo_id> coincide exactamente con el id del repositorio en la base de datos. El atacante:

  1. Crea un repositorio personal writer y obtiene id == n;
  2. Crea por la API una organización transversal con username = "../../../../data/gogs/data/tmp/local-r/n/nested" → el directorio físico queda dentro del árbol de trabajo de writer;
  3. Crea un repositorio rce-x dentro de esa organización → queda en local-r/n/nested/rce-x.git;
  4. Clona writer, hace commit de nested/rce-x.git/hooks/update como archivo normal y hace push (queda dentro del árbol de trabajo de writer);
  5. La API dispara una operación de archivos sobre writer → Gogs ejecuta git en local-r/n/ → git ejecuta hooks/update → RCE.

Punto clave: el hook malicioso entra como contenido normal del repositorio mediante un push legítimo y no requiere la configuración ENABLE_GIT_HOOKS — esa es la diferencia con la vía del "abuso tradicional de git hooks".

El análisis detallado del diff del parche está en patch/ANALYSIS.md.


Detección

Reglas completas en detection/:

  • Regla Sigma: detection/sigma/ — cubre los intentos de ataque (solicitudes API con ../) y la explotación exitosa (despliegue en el sistema de archivos)
  • Consultas SIEM: detection/queries.md — Splunk / Elastic / Kibana / Loki
  • IOCs: detection/iocs.md — rastros en el sistema de archivos, firmas de logs, patrones de nombres de usuario

Las dos más críticas:

  1. Bloqueo a nivel de WAF / proxy inverso: solicitudes POST /api/v1/user/orgs y POST /api/v1/org/*/repos cuyo cuerpo JSON contenga .. o / en los campos username/name.
  2. Inspección del sistema de archivos: aparición de subdirectorios inesperados (nested/, rce-*.git, hooks/update) bajo /data/gogs/data/tmp/local-r/*/.

Herramientas defensivas

  • tools/check_version.py — escáner de versiones no intrusivo: comprueba mediante GET /api/v1/version si la instancia de Gogs es < 0.14.3; admite escaneo masivo y salida CSV, ideal para el inventario de activos.

Este repositorio no proporciona herramientas de explotación weaponizadas. Para reproducir el fallo, use el PoC público referenciado en el advisory oficial y hágalo únicamente en un entorno aislado propio.


Entorno de laboratorio

Las reglas de detection/ deben validarse en una instancia de Gogs afectada; lab/docker-compose.yml proporciona un entorno aislado de Gogs 0.14.2 para que el equipo azul pruebe si las reglas de detección aciertan. No lo exponga a Internet; úselo solo localmente.


Cronología

FechaEvento
2026-06-08CVE reservado
2026-06-24Divulgación pública; lanzamiento de Gogs 0.14.3
2026-06-24Publicación del advisory oficial GHSA-c39w-43gm-34h5

Referencias

  • Advisory oficial: https://github.com/gogs/gogs/security/advisories/GHSA-c39w-43gm-34h5
  • PR de corrección: https://github.com/gogs/gogs/pull/8334
  • OSV: https://osv.dev/vulnerability/CVE-2026-52813
  • Release de Gogs 0.14.3: https://github.com/gogs/gogs/releases/tag/v0.14.3

⚠️ Sobre la desinformación de la "inyección de parámetros gitrebase"

Hay quien describe este CVE como "inyección de parámetros gitrebase con ejecución remota de código en Gogs" — es incorrecto. Esta vulnerabilidad no tiene relación con git rebase / gitrebase; la causa raíz es un path traversal en la API. Este documento sigue el análisis real de la vulnerabilidad.


Licencia

MIT — ver LICENSE.

Descargar herramienta