
Exploit em Python para CVE-2022-36804, que permite execução remota de comandos e transferência de arquivos em instâncias vulneráveis do Bitbucket Server/Data Center por meio de solicitações de arquivo especialmente criadas.
Este repositório contém um script de exploração em Python para a vulnerabilidade CVE-2022-36804 do Atlassian Bitbucket Server/Data Center. O problema é uma falha de injeção de comandos no fluxo de arquivamento do Git, onde parâmetros prefix maliciosamente elaborados podem ser interpretados pelo servidor e executados como comandos de shell.
A CVE-2022-36804 é uma vulnerabilidade de execução remota de comandos no Bitbucket Server/Data Center. Ela foi causada pelo tratamento inseguro do valor prefix no endpoint de arquivamento, permitindo que dados controlados pelo atacante chegassem a uma invocação de shell por meio do Git. A consequência é a execução de comandos não autenticada ou autenticada, dependendo do caminho e do modelo de implantação.
Este script tem como alvo o endpoint de arquivamento vulnerável e usa uma solicitação maliciosamente elaborada para acionar a injeção.
Este PoC é destinado a builds afetados do Bitbucket Server/Data Center cobertos pelo boletim da Atlassian para a CVE-2022-36804. Na prática, o intervalo vulnerável inclui versões 7.x/8.x mais antigas do Bitbucket Server/Data Center anteriores às versões corrigidas listadas pela Atlassian. Não é destinado a builds corrigidos ou atualizados.
Use isto apenas contra sistemas que você possui ou para os quais está explicitamente autorizado a testar.
O script envia uma solicitação para:
/rest/api/latest/projects/{project}/repos/{repo}/archive
com um parâmetro prefix especialmente elaborado, que se parece com:
ax%00--exec=`<command>`%00--remote=origin
O truque é explorar o byte nulo / caminho de comando do Git para que o servidor acabe executando um comando de shell a partir da solicitação de arquivamento. O script envolve o comando em gzip + base64 quando necessário, para que a saída seja retornada de forma compacta e decodificada localmente.
O script suporta dois modos principais:
python cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -c "whoami"
Opções:
-c, --command: executa um comando--no-encode: envia o comando bruto, sem o encapsulamento gzip+base64-p, --project: chave do projeto Bitbucket-r, --repo: slug do repositório Bitbucketpython cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -f /path/to/local.bin -o /tmp/remote.bin
Isso lê um arquivo local em blocos, codifica cada bloco em base64 e usa o exploit para reconstruí-lo no servidor no caminho de destino.
requests.Session com autenticação básica.verify = False) para simplificar os testes contra endpoints com certificados autoatribuídos.Esta ferramenta é apenas para pesquisa de segurança autorizada e testes controlados. Usá-la contra sistemas que você não possui ou para os quais não tem permissão de teste é ilegal e antiético.