AWS - Κατάχρηση Ομοσπονδίας

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

SAML

Για πληροφορίες σχετικά με το SAML, παρακαλώ ελέγξτε:

SAML Attacks - HackTricks

Για να ρυθμίσετε μια Ομοσπονδία Ταυτότητας μέσω SAML, χρειάζεται απλώς να παρέχετε ένα όνομα και το metadata XML που περιέχει όλες τις ρυθμίσεις SAML (endpoints, πιστοποιητικό με δημόσιο κλειδί)

OIDC - Κατάχρηση Github Actions

Για να προσθέσετε μια δράση github ως πάροχο ταυτότητας:

  1. Για Τύπος Παρόχου, επιλέξτε OpenID Connect.
  2. Για URL Παρόχου, εισάγετε https://token.actions.githubusercontent.com
  3. Κάντε κλικ στο Get thumbprint για να αποκτήσετε το thumbprint του παρόχου
  4. Για Audience, εισάγετε sts.amazonaws.com
  5. Δημιουργήστε έναν νέο ρόλο με τις άδειες που χρειάζεται η δράση github και μια πολιτική εμπιστοσύνης που εμπιστεύεται τον πάροχο όπως:

{ “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. Σημειώστε στην προηγούμενη πολιτική πώς μόνο μια **κλάδος** από **αποθετήριο** μιας **οργάνωσης** είχε εξουσιοδοτηθεί με μια συγκεκριμένη **ενεργοποίηση**.
7. Το **ARN** του **ρόλου** που η δράση github θα μπορεί να **παριστάνει** θα είναι το "μυστικό" που χρειάζεται να γνωρίζει η δράση github, οπότε **αποθηκεύστε** το μέσα σε ένα **μυστικό** σε ένα **περιβάλλον**.
8. Τέλος, χρησιμοποιήστε μια δράση github για να ρυθμίσετε τα AWS creds που θα χρησιμοποιηθούν από τη ροή εργασίας:
```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 Κατάχρηση

# 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 providers σε ένα EKS cluster απλά ρυθμίζοντας το OIDC URL του cluster ως νέο Open ID Identity provider. Αυτή είναι μια κοινή προεπιλεγμένη πολιτική:

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

Αυτή η πολιτική υποδεικνύει σωστά ότι μόνο το EKS cluster με id 20C159CDF6F2349B68846BEC03BE031B μπορεί να αναλάβει τον ρόλο. Ωστόσο, δεν υποδεικνύει ποιος λογαριασμός υπηρεσίας μπορεί να τον αναλάβει, πράγμα που σημαίνει ότι ΟΠΟΙΟΣΔΗΠΟΤΕ λογαριασμός υπηρεσίας με ένα web identity token θα είναι σε θέση να αναλάβει τον ρόλο.

Για να προσδιοριστεί ποιος λογαριασμός υπηρεσίας θα πρέπει να μπορεί να αναλάβει τον ρόλο, είναι απαραίτητο να προσδιοριστεί μια συνθήκη όπου το όνομα του λογαριασμού υπηρεσίας είναι καθορισμένο, όπως:

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

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks