# AWS - Secrets Manager Post Exploitation {{#include ../../../banners/hacktricks-training.md}} ## Secrets Manager Για περισσότερες πληροφορίες δείτε: {{#ref}} ../aws-services/aws-secrets-manager-enum.md {{#endref}} ### Ανάγνωση Secrets Τα **secrets είναι ευαίσθητες πληροφορίες**, [δείτε τη σελίδα privesc](../aws-privilege-escalation/aws-secrets-manager-privesc.md) για να μάθετε πώς να τα διαβάσετε. ### DoS — Αλλαγή τιμής του Secret Αλλάζοντας την τιμή του secret μπορείς να **DoS όλα τα συστήματα που εξαρτώνται από αυτήν την τιμή.** > [!WARNING] > Σημειώστε ότι οι προηγούμενες τιμές αποθηκεύονται επίσης, οπότε είναι εύκολο να επιστρέψετε στην προηγούμενη τιμή. ```bash # Requires permission secretsmanager:PutSecretValue aws secretsmanager put-secret-value \ --secret-id MyTestSecret \ --secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}" ``` ### DoS Change KMS key Αν ο attacker έχει την άδεια secretsmanager:UpdateSecret, μπορεί να ρυθμίσει το secret ώστε να χρησιμοποιεί ένα KMS key που ανήκει στον attacker. Αυτό το key αρχικά ρυθμίζεται με τέτοιο τρόπο ώστε οποιοσδήποτε να μπορεί να το προσπελάσει και να το χρησιμοποιήσει, επομένως η ενημέρωση του secret με το νέο key είναι δυνατή. Εάν το key δεν ήταν προσβάσιμο, το secret δεν θα μπορούσε να ενημερωθεί. Αφού αλλάξει το key για το secret, ο attacker τροποποιεί τη διαμόρφωση του key του ώστε μόνο ο ίδιος να έχει πρόσβαση. Με αυτόν τον τρόπο, στις επόμενες εκδόσεις του secret θα κρυπτογραφείται με το νέο key, και επειδή δεν υπάρχει πρόσβαση σε αυτό, η δυνατότητα ανάκτησης του secret θα χαθεί. Είναι σημαντικό να σημειωθεί ότι αυτή η μη προσβασιμότητα θα συμβεί μόνο σε μεταγενέστερες εκδόσεις, μετά την αλλαγή του περιεχομένου του secret, αφού η τρέχουσα έκδοση εξακολουθεί να είναι κρυπτογραφημένη με το αρχικό KMS key. ```bash aws secretsmanager update-secret \ --secret-id MyTestSecret \ --kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE ``` ### DoS Deleting Secret Ο ελάχιστος αριθμός ημερών για να διαγραφεί ένα secret είναι 7 ```bash aws secretsmanager delete-secret \ --secret-id MyTestSecret \ --recovery-window-in-days 7 ``` ## secretsmanager:RestoreSecret Είναι δυνατή η επαναφορά ενός secret, η οποία επιτρέπει την αποκατάσταση των secrets που έχουν προγραμματιστεί για διαγραφή, αφού η ελάχιστη περίοδος διαγραφής για τα secrets είναι 7 ημέρες και η μέγιστη 30 ημέρες. Σε συνδυασμό με την άδεια secretsmanager:GetSecretValue, αυτό καθιστά δυνατή την ανάκτηση του περιεχομένου τους. Για να ανακτήσετε ένα secret που βρίσκεται στη διαδικασία διαγραφής, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή: ```bash aws secretsmanager restore-secret \ --secret-id ``` ## secretsmanager:DeleteResourcePolicy Αυτή η ενέργεια επιτρέπει τη διαγραφή της πολιτικής πόρου που ελέγχει ποιος μπορεί να έχει πρόσβαση σε ένα μυστικό. Αυτό μπορεί να οδηγήσει σε DoS εάν η πολιτική πόρου είχε ρυθμιστεί ώστε να επιτρέπει πρόσβαση σε ένα συγκεκριμένο σύνολο χρηστών. Για να διαγράψετε την πολιτική πόρου: ```bash aws secretsmanager delete-resource-policy \ --secret-id ``` ## secretsmanager:UpdateSecretVersionStage Οι καταστάσεις ενός secret χρησιμοποιούνται για τη διαχείριση των εκδόσεων ενός secret. AWSCURRENT σηματοδοτεί την ενεργή έκδοση που χρησιμοποιούν οι εφαρμογές, AWSPREVIOUS διατηρεί την προηγούμενη έκδοση ώστε να μπορείτε να επαναφέρετε αν χρειαστεί, και AWSPENDING χρησιμοποιείται στη διαδικασία rotation για να προετοιμάσει και να επικυρώσει μια νέα έκδοση πριν την κάνει την τρέχουσα. Οι εφαρμογές διαβάζουν πάντα την έκδοση με AWSCURRENT. Αν κάποιος μετακινήσει αυτήν την ετικέτα σε λάθος έκδοση, οι εφαρμογές θα χρησιμοποιήσουν μη έγκυρα credentials και ενδέχεται να αποτύχουν. Το AWSPREVIOUS δεν χρησιμοποιείται αυτόματα. Ωστόσο, αν το AWSCURRENT αφαιρεθεί ή ανατεθεί λανθασμένα, μπορεί να φαίνεται ότι όλα εξακολουθούν να λειτουργούν με την προηγούμενη έκδοση. ```bash aws secretsmanager update-secret-version-stage \ --secret-id \ --version-stage AWSCURRENT \ --move-to-version-id \ --remove-from-version-id ``` {{#include ../../../banners/hacktricks-training.md}}