AWS - Federation Abuse

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ı:

SAML

SAML hakkında bilgi için lütfen şuraya bakın:

SAML aracılığıyla Kimlik Federasyonu yapılandırmak için sadece bir ad ve SAML yapılandırmasını içeren metadata XML sağlamanız gerekmektedir (uç noktalar, genel anahtarla sertifika).

OIDC - Github Actions Kötüye Kullanımı

Bir github eylemini Kimlik sağlayıcı olarak eklemek için:

  1. Sağlayıcı türü için OpenID Connect seçin.

  2. Sağlayıcı URL'si için https://token.actions.githubusercontent.com girin.

  3. Sağlayıcının parmak izini almak için Thumbprint Al düğmesine tıklayın.

  4. Hedef Kitle için sts.amazonaws.com girin.

  5. Github eyleminin ihtiyaç duyduğu izinler ve sağlayıcıya güvenen bir güven politikası ile bir yeni rol oluşturun, örneğin:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::0123456789:oidc-provider/token.actions.githubusercontent.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "token.actions.githubusercontent.com:sub": [ "repo:ORG_OR_USER_NAME/REPOSITORY:pull_request", "repo:ORG_OR_USER_NAME/REPOSITORY:ref:refs/heads/main" ], "token.actions.githubusercontent.com:aud": "sts.amazonaws.com" } } } ] }

6. Önceki politikada yalnızca bir **şube**, bir **kuruluşun** bir **depo**sundan belirli bir **tetikleyici** ile yetkilendirildiğine dikkat edin.
7. Github eyleminin **taklit edebileceği rolün ARN**'si, github eyleminin bilmesi gereken bir "gizli" olacak, bu yüzden bir **ortamın içindeki bir gizli** olarak saklayın.
8. Son olarak, AWS kimlik bilgilerini yapılandırmak için bir github eylemi kullanın.
```yaml
name: 'test AWS Access'

# The workflow should only trigger on pull requests to the main branch
on:
pull_request:
branches:
- main

# Required to get the ID Token that will be used for OIDC
permissions:
id-token: write
contents: read # needed for private repos to checkout

jobs:
aws:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-region: eu-west-1
role-to-assume: ${{ secrets.READ_ROLE }}
role-session-name: OIDCSession

- run: aws sts get-caller-identity
shell: bash

OIDC - EKS Kötüye Kullanımı

Bu bölümde, OpenID Connect (OIDC) protokolünün Amazon Elastic Kubernetes Service (EKS) üzerindeki kötüye kullanımını ele alacağız. OIDC, kimlik doğrulama ve yetkilendirme için kullanılan bir protokoldür. EKS, OIDC'yi kullanarak Kubernetes kümesine kimlik doğrulama sağlar.

EKS OIDC Kimlik Doğrulama Akışı

  1. Kullanıcı, EKS kümesine erişmek için bir istek gönderir.

  2. EKS, kullanıcıya bir kimlik sağlamak için OIDC sağlayıcısına yönlendirir.

  3. Kullanıcı, OIDC sağlayıcısına kimlik bilgilerini sağlar.

  4. OIDC sağlayıcısı, kullanıcının kimliğini doğrular ve bir JWT (JSON Web Token) döndürür.

  5. Kullanıcı, JWT'yi EKS'ye sunar.

  6. EKS, JWT'yi doğrular ve kullanıcıya erişim izni verir.

EKS OIDC Kötüye Kullanım Senaryoları

  1. Kimlik Doğrulama Token'ının Çalınması: Bir saldırgan, kullanıcının kimlik doğrulama token'ını ele geçirerek EKS kümesine yetkisiz erişim elde edebilir. Bu, saldırganın EKS kümesinde istenmeyen eylemler gerçekleştirmesine olanak tanır.

  2. Kimlik Doğrulama Token'ının Sızdırılması: Bir saldırgan, kimlik doğrulama token'ını başka bir kullanıcıya sızdırarak yetkisiz erişim sağlayabilir. Bu, saldırganın başka bir kullanıcının kimliğiyle EKS kümesine erişmesine olanak tanır.

  3. Kimlik Doğrulama Token'ının Sahtelenmesi: Bir saldırgan, geçerli bir kimlik doğrulama token'ı oluşturarak EKS kümesine yetkisiz erişim sağlayabilir. Bu, saldırganın kimlik doğrulama sürecini atlayarak EKS kümesine erişmesine olanak tanır.

EKS OIDC Kötüye Kullanımını Önleme Yöntemleri

  1. Güçlü Kimlik Doğrulama Politikaları: EKS kümesinde güçlü kimlik doğrulama politikaları uygulayarak kimlik doğrulama token'ının kötüye kullanımını önleyebilirsiniz. Örneğin, çok faktörlü kimlik doğrulama (MFA) kullanabilirsiniz.

  2. Kimlik Doğrulama Token'ının Süresini Kısaltma: Kimlik doğrulama token'ının süresini kısaltarak saldırganların token'ı uzun süre boyunca kullanmasını engelleyebilirsiniz. Token süresini kısaltmak için geçerli bir süre belirleyebilirsiniz.

  3. Kimlik Doğrulama Token'ının Revize Edilmesi: Kimlik doğrulama token'ının revize edilmesi, token'ın geçerliliğini ve bütünlüğünü sağlamak için kullanılabilir. Token'ın revize edilmesi, saldırganların token'ı sahtelemesini zorlaştırır.

Bu önlemleri uygulayarak EKS kümesinde OIDC kötüye kullanımını önleyebilir ve güvenliği artırabilirsiniz.

# Crate an EKS cluster (~10min)
eksctl create cluster --name demo --fargate
# Create an Identity Provider for an EKS cluster
eksctl utils associate-iam-oidc-provider --cluster Testing --approve

OIDC sağlayıcıları, bir EKS kümesindeki OIDC URL'sini yeni bir Açık Kimlik Kimlik sağlayıcısı olarak ayarlayarak kolayca oluşturulabilir. Bu genellikle yaygın bir varsayılan politikadır:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::123456789098:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.eks.us-east-1.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:aud": "sts.amazonaws.com"
}
}
}
]
}

Bu politika, yalnızca 20C159CDF6F2349B68846BEC03BE031B kimlik numarasına sahip EKS kümesinin rolü üstlenebileceğini doğru bir şekilde belirtmektedir. Ancak, hangi hizmet hesabının rolü üstlenebileceğini belirtmediği için, herhangi bir web kimlik belirtimi olan hizmet hesabı rolü üstlenebilecektir.

Rolü üstlenebilecek hangi hizmet hesabının belirtilmesi için, hizmet hesabı adının belirtildiği bir koşul belirtilmesi gerekmektedir, örneğin:

"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",

Referanslar

A'dan Z'ye AWS hackleme becerilerini öğrenmek için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)'ı kullanın!

HackTricks'i desteklemenin diğer yolları:

Last updated