AWS - Zloupotreba Federacije

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

SAML

Za informacije o SAML-u, molimo proverite:

SAML Attacks - HackTricks

Da biste konfigurisali Identitetsku Federaciju putem SAML-a, potrebno je da obezbedite ime i metadata XML koji sadrži svu SAML konfiguraciju (endpoints, sertifikat sa javnim ključem)

OIDC - Zloupotreba Github Akcija

Da biste dodali github akciju kao provajdera identiteta:

  1. Za Tip provajdera, izaberite OpenID Connect.
  2. Za URL provajdera, unesite https://token.actions.githubusercontent.com
  3. Kliknite na Preuzmi otisak da biste dobili otisak provajdera
  4. Za Publiku, unesite sts.amazonaws.com
  5. Kreirajte novu ulogu sa dozvolama koje github akcija zahteva i politiku poverenja koja veruje provajderu kao:

{ “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. Obratite pažnju u prethodnoj politici kako je samo jedna **grana** iz **repozitorijuma** **organizacije** autorizovana sa specifičnim **okidačem**.
7. **ARN** **uloge** koju github akcija može da **imitira** biće "tajna" koju github akcija treba da zna, pa je **čuvajte** unutar **tajne** unutar **okruženja**.
8. Na kraju, koristite github akciju da konfigurišete AWS kredencijale koji će se koristiti u radnom toku:
```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 Abuse

# 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 providers u EKS klasteru jednostavno postavljanjem OIDC URL klastera kao novog Open ID Identity provider. 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 koja usluga može da je preuzme, što znači da BILO koja usluga sa web identitet tokenom će moći da preuzme ulogu.

Da bi se odredilo koja usluga bi trebala da može da preuzme ulogu, potrebno je odrediti uslov gde je ime usluge navedeno, kao što je:

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

Reference

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks