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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
SAML
Για πληροφορίες σχετικά με το SAML, παρακαλώ ελέγξτε:
Για να ρυθμίσετε μια Ομοσπονδία Ταυτότητας μέσω SAML, χρειάζεται απλώς να παρέχετε ένα όνομα και το metadata XML που περιέχει όλες τις ρυθμίσεις SAML (endpoints, πιστοποιητικό με δημόσιο κλειδί)
OIDC - Κατάχρηση Github Actions
Για να προσθέσετε μια δράση github ως πάροχο ταυτότητας:
- Για Τύπος Παρόχου, επιλέξτε OpenID Connect.
- Για URL Παρόχου, εισάγετε
https://token.actions.githubusercontent.com - Κάντε κλικ στο Get thumbprint για να αποκτήσετε το thumbprint του παρόχου
- Για Audience, εισάγετε
sts.amazonaws.com - Δημιουργήστε έναν νέο ρόλο με τις άδειες που χρειάζεται η δράση 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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

