AWS - Federation Abuse

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

SAML

Za informacije o SAML-u, molimo proverite:

Da biste konfigurisali Identity Federation preko SAML-a, samo trebate pružiti ime i metadata XML koji sadrži sve SAML konfiguracije (endpoints, sertifikat sa javnim ključem)

OIDC - Zloupotreba Github akcija

Da biste dodali Github akciju kao pružaoca identiteta:

  1. Za Tip pružaoca, izaberite OpenID Connect.

  2. Za URL pružaoca, unesite https://token.actions.githubusercontent.com

  3. Kliknite na Get thumbprint da biste dobili otisak prsta pružaoca

  4. Za Publika, unesite sts.amazonaws.com

  5. Kreirajte novu ulogu sa dozvolama koje Github akcija zahteva i polisom poverenja koji veruje pružaocu, na primer:

{ "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. Primetite u prethodnoj polisi kako je samo **grana** iz **repozitorijuma** organizacije ovlašćena sa određenim **okidačem**.
7. **ARN** uloge koju Github akcija može **personifikovati** će biti "tajna" koju Github akcija treba da zna, pa je **sačuvajte** unutar **tajne** u okviru **okruženja**.
8. Na kraju koristite Github akciju da konfigurišete AWS akreditive koji će biti korišćeni u toku rada:
```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

Zloupotreba OIDC - EKS

Opis

OpenID Connect (OIDC) je otvoreni standard za autentifikaciju i autorizaciju koji se često koristi u AWS Elastic Kubernetes Service (EKS) okruženju. Međutim, loše konfigurisane OIDC postavke mogu dovesti do zloupotrebe sistema.

Tehnika zloupotrebe

  1. Preuzimanje tokena: Napadač može iskoristiti slabosti u konfiguraciji OIDC da bi preuzeo OIDC token.

  2. Privilegije: Korišćenjem ukradenog OIDC tokena, napadač može dobiti privilegije za pristup i manipulaciju resursima u EKS okruženju.

  3. Lateralno kretanje: Napadač može koristiti privilegije dobijene putem zloupotrebljenog OIDC tokena za lateralno kretanje kroz EKS okruženje i pristup drugim resursima.

Preporuke za zaštitu

Da biste sprečili zloupotrebu OIDC u EKS okruženju, preporučuje se sledeće:

  1. Pravilna konfiguracija: Pažljivo konfigurišite OIDC postavke kako biste osigurali da su ispravno podešene i da ne postoje slabosti.

  2. Kontrola pristupa: Ograničite pristup OIDC tokenima samo autorizovanim korisnicima i ulogama.

  3. Redovno ažuriranje: Redovno ažurirajte EKS okruženje kako biste ispravili poznate slabosti i ranjivosti.

  4. Nadgledanje aktivnosti: Pratite i nadgledajte aktivnosti u EKS okruženju kako biste otkrili sumnjive ili neautorizovane aktivnosti.

Zaključak

Zloupotreba OIDC u EKS okruženju može dovesti do ozbiljnih sigurnosnih problema. Pravilna konfiguracija i implementacija sigurnosnih mera su ključne za sprečavanje zloupotrebe i zaštitu EKS okruženja.

# 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

Moguće je generisati OIDC provajdere u EKS klasteru jednostavno postavljanjem OIDC URL-a klastera kao novog Open ID Identity provajdera. Ovo je uobičajena podrazumevana politika:

{
"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"
}
}
}
]
}

Ova politika ispravno ukazuje da samo EKS klaster sa id 20C159CDF6F2349B68846BEC03BE031B može preuzeti ulogu. Međutim, ne ukazuje na to koji servisni nalog može preuzeti ulogu, što znači da će BILO KOJI servisni nalog sa web identifikacionim tokenom moći preuzeti ulogu.

Da biste specificirali koji servisni nalog treba moći preuzeti ulogu, potrebno je navesti uslov u kojem je navedeno ime servisnog naloga, na primer:

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

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated