AWS - S3 Post Exploitation
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
S3
For more information check:
AWS - S3, Athena & Glacier Enum
Sensitive Information
Parfois, vous pourrez trouver des informations sensibles lisibles dans les buckets. Par exemple, des secrets dâĂ©tat terraform.
Pivoting
Different platforms could be using S3 to store sensitive assets.
For example, airflow could be storing DAGs code in there, or web pages could be directly served from S3. Un attaquant disposant de permissions dâĂ©criture pourrait modifier le code depuis le bucket pour pivot vers dâautres plateformes, ou takeover accounts en modifiant des fichiers JS.
S3 Ransomware
Dans ce scĂ©nario, lâattaquant crĂ©e une clĂ© KMS (Key Management Service) dans son propre compte AWS ou dans un autre compte compromis. Il rend ensuite cette clĂ© accessible Ă nâimporte qui dans le monde, permettant Ă tout utilisateur, rĂŽle ou compte AWS de chiffrer des objets avec cette clĂ©. Cependant, les objets ne peuvent pas ĂȘtre dĂ©chiffrĂ©s.
Lâattaquant identifie un S3 bucket cible et obtient un accĂšs en Ă©criture dessus en utilisant diverses mĂ©thodes. Cela peut ĂȘtre dĂ» Ă une mauvaise configuration du bucket lâexposant publiquement ou Ă lâaccĂšs de lâattaquant Ă lâenvironnement AWS lui-mĂȘme. Lâattaquant cible gĂ©nĂ©ralement les buckets contenant des informations sensibles telles que PII, PHI, les logs, les backups, et plus encore.
Pour dĂ©terminer si le bucket peut ĂȘtre ciblĂ© pour du ransomware, lâattaquant vĂ©rifie sa configuration. Cela inclut la vĂ©rification si S3 Object Versioning est activĂ© et si la multi-factor authentication delete (MFA delete) est activĂ©e. Si Object Versioning nâest pas activĂ©, lâattaquant peut procĂ©der. Si Object Versioning est activĂ© mais que MFA delete est dĂ©sactivĂ©, lâattaquant peut dĂ©sactiver Object Versioning. Si Ă la fois Object Versioning et MFA delete sont activĂ©s, il devient plus difficile pour lâattaquant dâexĂ©cuter un ransomware sur ce bucket spĂ©cifique.
En utilisant lâAPI AWS, lâattaquant remplace chaque objet du bucket par une copie chiffrĂ©e utilisant sa clĂ© KMS. Cela chiffre effectivement les donnĂ©es du bucket, les rendant inaccessibles sans la clĂ©.
Pour exercer une pression supplĂ©mentaire, lâattaquant planifie la suppression de la clĂ© KMS utilisĂ©e dans lâattaque. Cela donne Ă la cible une fenĂȘtre de 7 jours pour rĂ©cupĂ©rer ses donnĂ©es avant que la clĂ© soit supprimĂ©e et que les donnĂ©es deviennent irrĂ©mĂ©diablement perdues.
Enfin, lâattaquant peut uploader un fichier final, gĂ©nĂ©ralement nommĂ© âransom-note.txtâ, qui contient des instructions pour la cible sur la maniĂšre de rĂ©cupĂ©rer ses fichiers. Ce fichier est uploadĂ© sans chiffrement, probablement pour attirer lâattention de la cible et lâinformer de lâattaque de ransomware.
SSE-C (Customer-Provided Key) Ransomware (Codefinger-like)
Une autre variante abuse de SSE-C (S3 server-side encryption with customer-provided keys). Avec SSE-C, le client fournit la clĂ© de chiffrement Ă chaque requĂȘte et AWS ne stocke pas la clĂ©. Cela signifie que si un attaquant réécrit des objets en utilisant sa propre clĂ© SSE-C, les donnĂ©es de la victime deviennent illisibles Ă moins que la victime puisse fournir cette clĂ© contrĂŽlĂ©e par lâattaquant.
- Preconditions: Compromised AWS credentials (or any principal with the right permissions) and the ability to rewrite objects (e.g.,
s3:PutObjecton the target keys/prefixes). This is often paired with the ability to set destructive lifecycle policies (see below), e.g.s3:PutLifecycleConfiguration. - Attack chain:
- Attacker generates a random 256-bit key (AES-256) and keeps it.
- Attacker rewrites existing objects (same object keys) using SSE-C headers so the stored object is now encrypted with the attacker key.
- Victim cannot download/decrypt without providing the SSE-C key (even if IAM permissions are fine).
- Attacker can delete the key (or simply never provide it) to make data unrecoverable.
Example (conceptual) CLI usage:
# Upload/overwrite an object encrypted with attacker-provided SSE-C key
aws s3 cp ./file s3://<BUCKET>/<KEY> \
--sse-c AES256 \
--sse-c-key <BASE64_32_BYTES>
# Download requires providing the same key again
aws s3 cp s3://<BUCKET>/<KEY> ./file \
--sse-c AES256 \
--sse-c-key <BASE64_32_BYTES>
Ajouter de la pression : abus du âtimerâ de cycle de vie
Pour supprimer les options de récupération (comme les anciennes versions), un attaquant peut associer des réécritures SSE-C à des rÚgles de cycle de vie qui expirent les objets et/ou suppriment les versions non actuelles aprÚs une courte période :
s3:PutLifecycleConfigurationsur le bucket permet Ă un attaquant de programmer des suppressions sans Ă©mettre dâopĂ©rations delete explicites pour chaque objet/version.- Ceci est particuliĂšrement impactant lorsque la gestion des versions est activĂ©e, car cela peut supprimer lâancienne version valide qui permettrait autrement la rĂ©cupĂ©ration.
Détection & atténuations
- PrĂ©fĂ©rez SSE-KMS (ou SSE-S3) Ă SSE-C sauf si vous avez une raison opĂ©rationnelle solide dâautoriser SSE-C.
- Surveillez/alertez les requĂȘtes
PutObjectutilisant des en-tĂȘtes SSE-C (CloudTrail data events pour S3). - Surveillez/alertez les
PutBucketLifecycleConfigurationinattendus (changements de lifecycle). - Surveillez/alertez les pics soudains dâactivitĂ© dâĂ©crasement (mĂȘmes clĂ©s mises Ă jour rapidement) et les suppressions de delete-marker/version.
- Restreindre les permissions Ă haut risque : limitez
s3:PutObjectaux prĂ©fixes nĂ©cessaires ; restreignez fortements3:PutLifecycleConfigurationets3:PutBucketVersioning; envisagez dâexiger MFA pour les actions dâadministration sensibles (lorsque applicable) et utilisez des rĂŽles admin sĂ©parĂ©s avec approbations. - Posture de rĂ©cupĂ©ration : utilisez versioning, backups, et des copies immuables/hors ligne (S3 replication vers un compte protĂ©gĂ©, backup vaults, etc.) ; protĂ©gez les versions non actuelles contre les suppressions agressives et protĂ©gez les changements de lifecycle avec des SCPs / guardrails.
s3:RestoreObject
Un attaquant disposant de la permission s3:RestoreObject peut rĂ©activer des objets archivĂ©s dans Glacier ou Deep Archive, les rendant temporairement accessibles. Cela permet la rĂ©cupĂ©ration et lâexfiltration de donnĂ©es archivĂ©es historiquement (sauvegardes, snapshots, logs, certifications, anciens secrets) qui seraient normalement hors de portĂ©e. Si lâattaquant combine cette permission avec des permissions de lecture (par ex., s3:GetObject), il peut obtenir des copies complĂštes de donnĂ©es sensibles.
aws s3api restore-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--restore-request '{
"Days": <NUMBER_OF_DAYS>,
"GlacierJobParameters": { "Tier": "Standard" }
}'
s3:Delete*
Un attaquant disposant de la permission s3:Delete* peut supprimer des objets, des versions et des buckets entiers, perturber les sauvegardes et provoquer une perte de donnĂ©es immĂ©diate et irrĂ©versible, la destruction de preuves et la compromission dâartefacts de sauvegarde ou de rĂ©cupĂ©ration.
# Delete an object from a bucket
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY>
# Delete a specific version
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--version-id <VERSION_ID>
# Delete a bucket
aws s3api delete-bucket \
--bucket <BUCKET_NAME>
Pour plus dâinformations check the original research.
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

