AWS - Federation Abuse

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

SAML

SAML hakkında bilgi için lütfen kontrol edin:

SAML Attacks - HackTricks

SAML üzerinden Kimlik Federasyonu yapılandırmak için sadece bir isim ve tüm SAML yapılandırmasını içeren metadata XML sağlamanız yeterlidir (uç noktalar, açık anahtara sahip sertifika)

OIDC - Github Actions Abuse

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

  1. Sağlayıcı türü için OpenID Connect’i 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 Parmak izini al butonuna tıklayın.
  4. Hedef kitle için sts.amazonaws.com girin.
  5. Github eyleminin ihtiyaç duyduğu izinler ile birlikte bir yeni rol oluşturun ve sağlayıcıyı güvenen bir güven politikası oluşturun:

{ “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 belirli bir **tetikleyici** ile bir **kuruluşun** **depo**'sundan bir **dal**'ın yetkilendirildiğine dikkat edin.
7. Github eyleminin **taklit** edebileceği **rol**'ün **ARN**'si, github eyleminin bilmesi gereken "gizli" bilgi olacak, bu yüzden bunu bir **gizli** olarak bir **ortam** içinde **saklayın**.
8. Son olarak, iş akışı tarafından kullanılacak 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 Suistimali

# 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ı oluşturmak, EKS kümesinin OIDC URL’sini yeni bir Open ID Kimlik sağlayıcısı olarak ayarlamakla mümkündür. Bu 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, sadece EKS kümesi ile id 20C159CDF6F2349B68846BEC03BE031B rolü üstlenebileceğini doğru bir şekilde belirtiyor. Ancak, hangi hizmet hesabının bunu üstlenebileceğini belirtmiyor, bu da HERHANGİ bir hizmet hesabının web kimlik belirteci ile rolü üstlenebileceği anlamına geliyor.

Hangi hizmet hesabının rolü üstlenebileceğini belirtmek için, hizmet hesabı adının belirtildiği bir koşul tanımlamak gereklidir, örneğin:

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

Referanslar

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