AWS Codebuild - Token Leakage
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Primeiro, verifique se há credenciais de origem configuradas que você poderia vazar:
Se você descobrir que a autenticação para, por exemplo, Github está configurada na conta, você pode exfiltrar esse acesso (token GH ou token OAuth) fazendo com que o Codebuild use uma imagem docker específica para executar a construçã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 irá definir as variáveis de ambiente https_proxy
, http_proxy
e SSL_CERT_FILE
. Isso permitirá que você intercepte a maior parte do tráfego do host indicado em https_proxy
e http_proxy
e confie no SSL CERT indicado em SSL_CERT_FILE
.
Crie e faça 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 construa a imagem docker.
NÃO DEFINA http_proxy
para não interceptar solicitações ao endpoint de metadados.
Você poderia usar ngrok
como ngrok tcp 4444
para definir o proxy para o seu host.
Uma vez que você tenha a imagem Docker construída, faça upload para um repositório público (Dockerhub, ECR...)
Defina o ambiente
Crie um novo projeto Codebuild ou modifique o ambiente de um existente.
Defina o projeto para usar a imagem Docker gerada anteriormente.
Defina o proxy MitM no seu host
Como indicado no repositório Github, você poderia usar algo como:
A versão do mitmproxy utilizada foi 9.0.1, foi relatado que com a versão 10 isso pode não funcionar.
Execute a construção e capture as credenciais
Você pode ver o token no cabeçalho Authorization:
Isso também pode ser feito a partir do aws cli com algo como
Codebuild projetos têm uma configuração chamada insecureSsl
que está oculta na web e você só pode alterá-la pela API.
Ativar isso permite que o Codebuild se conecte ao repositório sem verificar o certificado oferecido pela plataforma.
Primeiro, você precisa enumerar a configuração atual com algo como:
Em seguida, com as informações coletadas, você pode atualizar a configuração do projeto insecureSsl
para True
. O seguinte é um exemplo da minha atualização de um projeto, note o insecureSsl=True
no final (esta é a única coisa que você precisa mudar na configuração coletada).
Além disso, adicione também as variáveis de ambiente http_proxy e https_proxy apontando para o seu tcp ngrok como:
Em seguida, execute o exemplo básico de https://github.com/synchronizing/mitm na porta indicada pelas variáveis de proxy (http_proxy e https_proxy)
Finalmente, clique em Build the project, as credenciais serão enviadas em texto claro (base64) para a porta mitm:
Essa vulnerabilidade foi corrigida pela AWS em algum momento da semana do dia 20 de fevereiro de 2023 (acho que na sexta-feira). Portanto, um atacante não pode mais abusar disso :)
Um atacante com permissões elevadas em um CodeBuild poderia vazar o token do Github/Bitbucket configurado ou, se as permissões foram 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, mude a URL do repositório do github para usar HTTP em vez de HTTPS, por exemplo: http://github.com/carlospolop-forks/TestActions
Em seguida, execute o exemplo básico de https://github.com/synchronizing/mitm na porta apontada pelas variáveis de proxy (http_proxy e https_proxy)
Finalmente, clique em Build the project, as credenciais serão enviadas em texto claro (base64) para a porta mitm:
Agora um atacante poderá usar o token de sua máquina, listar todos os privilégios que possui e (ab)usar mais facilmente do que usando o serviço CodeBuild diretamente.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)