AWS Codebuild - Token Leakage
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:
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.
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
gibingrok
kullanabilirsiniz.Docker imajınızı oluşturduktan sonra, genel bir depoya (Dockerhub, ECR...) yükleyin.
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.
Ana bilgisayarınızda MitM proxy'sini ayarlayın
Github deposunda belirtildiği gibi, şuna benzer bir şey kullanabilirsiniz:
Kullanılan mitmproxy sürümü 9.0.1 idi, sürüm 10 ile bu işe yaramayabileceği bildirildi.
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
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.
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.
Last updated