Az - Tokens & Public Applications
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Entra ID, Microsoft'un bulut tabanlı kimlik ve erişim yönetimi (IAM) platformudur ve Microsoft 365 ve Azure Resource Manager gibi hizmetler için temel kimlik doğrulama ve yetkilendirme sistemi olarak hizmet vermektedir. Azure AD, kaynaklara erişimi yönetmek için OAuth 2.0 yetkilendirme çerçevesini ve OpenID Connect (OIDC) kimlik doğrulama protokolünü uygular.
OAuth 2.0'da Anahtar Katılımcılar:
Kaynak Sunucusu (RS): Kaynak sahibine ait kaynakları korur.
Kaynak Sahibi (RO): Genellikle korunan kaynaklara sahip olan son kullanıcıdır.
İstemci Uygulaması (CA): Kaynak sahibinin adına kaynaklara erişim talep eden bir uygulamadır.
Yetkilendirme Sunucusu (AS): İstemci uygulamalarına erişim belirteçleri verir, bunları kimlik doğrulama ve yetkilendirme işlemlerinden sonra.
Kapsamlar ve Onay:
Kapsamlar: Erişim seviyelerini belirten, kaynak sunucusunda tanımlanan ayrıntılı izinlerdir.
Onay: Bir kaynak sahibinin, belirli kapsamlarla kaynaklara erişim izni verdiği süreçtir.
Microsoft 365 Entegrasyonu:
Microsoft 365, IAM için Azure AD'yi kullanır ve birden fazla "birinci taraf" OAuth uygulamasından oluşur.
Bu uygulamalar derinlemesine entegre edilmiştir ve genellikle karşılıklı hizmet ilişkilerine sahiptir.
Kullanıcı deneyimini basitleştirmek ve işlevselliği korumak için Microsoft, bu birinci taraf uygulamalarına "örtük onay" veya "ön onay" verir.
Örtük Onay: Belirli uygulamalar, açık kullanıcı veya yönetici onayı olmadan belirli kapsamlar için erişim izni alır.
Bu ön onaylı kapsamlar genellikle hem kullanıcılar hem de yöneticiler için gizlidir, bu da standart yönetim arayüzlerinde daha az görünür hale getirir.
İstemci Uygulama Türleri:
Gizli İstemciler:
Kendi kimlik bilgilerine (örneğin, parolalar veya sertifikalar) sahiptir.
Yetkilendirme sunucusuna güvenli bir şekilde kimlik doğrulaması yapabilirler.
Açık İstemciler:
Benzersiz kimlik bilgilerine sahip değildir.
Yetkilendirme sunucusuna güvenli bir şekilde kimlik doğrulaması yapamazlar.
Güvenlik Etkisi: Bir saldırgan, belirteç talep ederken bir açık istemci uygulamasını taklit edebilir, çünkü yetkilendirme sunucusunun uygulamanın meşruiyetini doğrulamak için bir mekanizması yoktur.
OIDC'de kullanılan üç tür belirteç vardır:
Erişim Belirteçleri: İstemci, bu belirteci kaynak sunucusuna kaynaklara erişim için sunar. Sadece belirli bir kullanıcı, istemci ve kaynak kombinasyonu için kullanılabilir ve iptal edilemez; süresi dolana kadar - bu varsayılan olarak 1 saattir.
ID Belirteçleri: İstemci, bu belirteci yetkilendirme sunucusundan alır. Kullanıcı hakkında temel bilgileri içerir. Belirli bir kullanıcı ve istemci kombinasyonuna bağlıdır.
Yenileme Belirteçleri: Erişim belirteci ile birlikte istemciye verilir. Yeni erişim ve ID belirteçleri almak için kullanılır. Belirli bir kullanıcı ve istemci kombinasyonuna bağlıdır ve iptal edilebilir. Varsayılan süresi dolmuş yenileme belirteçleri için 90 gündür ve aktif belirteçler için süresi yoktur (bir yenileme belirteci ile yeni yenileme belirteçleri almak mümkündür).
Bir yenileme belirteci, bir aud
ile, bazı kapsamlarla ve bir kiracıyla ilişkilendirilmelidir ve yalnızca o aud, kapsamlar (ve daha fazlası değil) ve kiracı için erişim belirteçleri üretebilmelidir. Ancak, bu FOCI uygulama belirteçleri için geçerli değildir.
Bir yenileme belirteci şifrelenmiştir ve yalnızca Microsoft bunu çözebilir.
Yeni bir yenileme belirteci almak, önceki yenileme belirtecini iptal etmez.
Koşullu erişim bilgileri JWT içinde saklanır. Yani, izin verilen bir IP adresinden belirteci talep ederseniz, o IP belirteçte saklanır ve ardından bu belirteci izin verilmeyen bir IP'den kaynaklara erişmek için kullanabilirsiniz.
"aud" alanında belirtilen alan, giriş yapmak için kullanılan kaynak sunucusudur (uygulama).
az account get-access-token --resource-type [...]
komutu, aşağıdaki türleri destekler ve her biri sonuçta oluşan erişim belirtecinde belirli bir "aud" ekleyecektir:
Aşağıdakilerin yalnızca az account get-access-token
tarafından desteklenen API'ler olduğunu unutmayın, ancak daha fazlası vardır.
Bir erişim belirtecinin kapsamı, erişim belirteci JWT'si içindeki scp anahtarında saklanır. Bu kapsamlar, erişim belirtecinin erişim sağladığı şeyleri tanımlar.
Eğer bir JWT belirli bir API ile iletişim kurmasına izin verilirse ancak istenen eylemi gerçekleştirmek için kapsamı yoksa, o eylemi gerçekleştiremeyecektir.
Daha önce, yenileme tokenlarının oluşturulduğu kapsamlar, uygulama ve kiracı ile ilişkilendirilmesi gerektiği belirtilmişti. Bu sınırlardan herhangi biri ihlal edilirse, kullanıcının erişim iznine sahip olduğu diğer kaynaklar ve kiracılar için erişim tokenları oluşturmak mümkün olacağından yetki yükseltmek mümkündür ve bu, başlangıçta amaçlandığından daha fazla kapsam ile yapılabilir.
Ayrıca, bu, Microsoft kimlik platformu (Microsoft Entra hesapları, Microsoft kişisel hesapları ve Facebook ve Google gibi sosyal hesaplar) ile tüm yenileme tokenları için mümkündür çünkü belgelerde belirtildiği gibi: "Yenileme tokenları, kullanıcı ve istemci kombinasyonuna bağlıdır, ancak bir kaynak veya kiracıya bağlı değildir. Bir istemci, izin verildiği herhangi bir kaynak ve kiracı kombinasyonu üzerinden erişim tokenları almak için bir yenileme tokenı kullanabilir. Yenileme tokenları şifrelenmiştir ve yalnızca Microsoft kimlik platformu bunları okuyabilir."
Ayrıca, FOCI uygulamalarının kamuya açık uygulamalar olduğunu ve bu nedenle sunucuya kimlik doğrulamak için hiçbir sır gerekmediğini unutmayın.
Daha sonra, orijinal araştırmada bildirilen bilinen FOCI istemcileri burada bulunabilir.
Önceki örnek koduna devam ederek, bu kodda farklı bir kapsam için yeni bir token talep edilmektedir:
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)