AWS Codebuild - Token Leakage
Recuperar Tokens Configurados do Github/Bitbucket
Primeiro, verifique se há credenciais de origem configuradas que você poderia vazar:
Via Imagem Docker
Se você descobrir que a autenticação, por exemplo, para o Github está configurada na conta, você pode extrair esse acesso (token GH ou token OAuth) fazendo com que o Codebuild utilize uma imagem Docker específica para executar a compilação do projeto.
Para isso, você poderia criar um novo projeto Codebuild ou alterar o ambiente de um existente para definir a imagem Docker.
A imagem Docker que você poderia usar é https://github.com/carlospolop/docker-mitm. Esta é uma imagem Docker muito básica que definirá as variáveis de ambiente https_proxy
, http_proxy
e SSL_CERT_FILE
. Isso permitirá que você intercepte a maioria do tráfego do host indicado em https_proxy
e http_proxy
e confie no CERT SSL indicado em SSL_CERT_FILE
.
Criar e Fazer Upload da sua Própria Imagem Docker MitM
Siga as instruções do repositório para definir o endereço IP do seu proxy e configurar seu certificado SSL e construir a imagem Docker.
NÃO DEFINA
http_proxy
para não interceptar solicitações ao endpoint de metadados.Você poderia usar o
ngrok
comongrok tcp 4444
para definir o proxy para o seu host.Depois de construir a imagem Docker, faça o upload para um repositório público (Dockerhub, ECR...)
Definir o Ambiente
Crie um novo projeto Codebuild ou modifique o ambiente de um existente.
Configure o projeto para usar a imagem Docker gerada anteriormente
Configurar o Proxy MitM em seu host
Conforme indicado no repositório do Github, você poderia usar algo como:
A versão do mitmproxy utilizada foi a 9.0.1, foi relatado que com a versão 10 isso pode não funcionar.
Execute a compilação & capture as credenciais
Você pode ver o token no cabeçalho Authorization:
Isso também poderia ser feito a partir do aws cli com algo como
Via protocolo HTTP
Essa vulnerabilidade foi corrigida pela AWS em algum momento na semana de 20 de fevereiro de 2023 (creio que na sexta-feira). Portanto, um atacante não pode mais explorá-la :)
Um atacante com permissões elevadas em um CodeBuild poderia vazar o token do Github/Bitbucket configurado ou, se as permissões fossem configuradas via OAuth, o token OAuth temporário usado para acessar o código.
Um atacante poderia adicionar as variáveis de ambiente http_proxy e https_proxy ao projeto CodeBuild apontando para sua máquina (por exemplo
http://5.tcp.eu.ngrok.io:14972
).
Em seguida, alterar a URL do repositório do github para usar HTTP em vez de HTTPS, por exemplo: **http://**github.com/carlospolop-forks/TestActions
Depois, executar o exemplo básico em https://github.com/synchronizing/mitm na porta apontada pelas variáveis de proxy (http_proxy e https_proxy)
Por fim, clique em Construir o projeto, as credenciais serão enviadas em texto claro (base64) para a porta mitm:
Agora um atacante poderá usar o token em sua máquina, listar todos os privilégios que ele possui e (ab)usar mais facilmente do que usando o serviço CodeBuild diretamente.
Última actualización