AWS - S3 Post Exploitation

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

S3

更多信息请参见:

AWS - S3, Athena & Glacier Enum

敏感信息

有时你可以在 buckets 中以可读形式找到敏感信息。例如,terraform state 中的 secrets。

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. An attacker with write permissions could modify the code from the bucket to pivot to other platforms, or takeover accounts modifying JS files.

S3 Ransomware

在这种场景中,attacker creates a KMS (Key Management Service) key in their own AWS account 或在另一个被攻破的账户中创建 KMS key。然后他们使该 key accessible to anyone in the world,允许任何 AWS user、role 或 account 使用此 key 对对象进行加密,但这些对象无法被解密。

攻击者识别目标 S3 bucket 并获得写级别访问,方式多样。可能是由于 bucket 配置不当导致公开暴露,或攻击者获得了 AWS 环境本身的访问权限。攻击者通常针对包含敏感信息的桶,如 PII、PHI、日志、备份等。

为了确定该 bucket 是否可以作为勒索目标,攻击者会检查其配置,包括验证 S3 Object Versioning 是否启用以及 multi-factor authentication delete (MFA delete) 是否启用。如果 Object Versioning 未启用,攻击者可以继续。如果 Object Versioning 启用但 MFA delete 未启用,攻击者可以 disable Object Versioning。如果同时启用了 Object Versioning 和 MFA delete,则对该 bucket 实施勒索将更加困难。

通过 AWS API,攻击者用使用其 KMS key 加密的副本替换桶中的每个对象。这会有效地加密桶中的数据,未持有密钥则无法访问。

为施加更大压力,攻击者会安排删除用于攻击的 KMS key。这会给目标一个 7 天的窗口来恢复数据,在密钥被删除并且数据永久丢失之前。

最后,攻击者可能会上传一个最终文件,通常名为 “ransom-note.txt”,其中包含关于如何取回文件的说明。此文件通常以未加密形式上传,以引起目标注意并告知其遭遇了勒索攻击。

s3:RestoreObject

拥有 s3:RestoreObject permission 的攻击者可以重新激活存档在 Glacier 或 Deep Archive 中的对象,使其暂时可访问。这使得恢复并外泄历史存档数据(备份、快照、日志、证书、旧 secrets)成为可能,这些数据通常无法触及。如果攻击者将此权限与读取权限(例如 s3:GetObject)结合使用,就可以获取敏感数据的完整副本。

aws s3api restore-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--restore-request '{
"Days": <NUMBER_OF_DAYS>,
"GlacierJobParameters": { "Tier": "Standard" }
}'

s3:Delete*

拥有 s3:Delete* 权限的攻击者可以删除对象、版本和整个桶,破坏备份,并导致即时且不可逆的数据丢失、证据毁灭以及备份或恢复工件的泄露或损坏。

# 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>

欲了解更多信息 check the original research.

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks