AWS - IAM Post Exploitation
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
IAM
Per ulteriori informazioni sull'accesso IAM:
AWS - IAM, Identity Center & SSO Enum
Problema del Deputato Confuso
Se consenti a un account esterno (A) di accedere a un ruolo nel tuo account, probabilmente avrai 0 visibilità su chi può esattamente accedere a quell'account esterno. Questo è un problema, perché se un altro account esterno (B) può accedere all'account esterno (A), è possibile che B possa anche accedere al tuo account.
Pertanto, quando consenti a un account esterno di accedere a un ruolo nel tuo account, è possibile specificare un ExternalId
. Questa è una stringa "segreta" che l'account esterno (A) deve specificare per assumere il ruolo nella tua organizzazione. Poiché l'account esterno B non conoscerà questa stringa, anche se ha accesso su A, non potrà accedere al tuo ruolo.
.png)
Tuttavia, nota che questo ExternalId
"segreto" non è un segreto, chiunque possa leggere la policy di assunzione del ruolo IAM sarà in grado di vederlo. Ma finché l'account esterno A lo conosce, ma l'account esterno B non lo conosce, impedisce a B di abusare di A per accedere al tuo ruolo.
Esempio:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}
warning
Per un attaccante sfruttare un deputy confuso, dovrà in qualche modo scoprire se i principali dell'account attuale possono impersonare ruoli in altri account.
Fiducia Inaspettata
Wildcard come principale
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" }
}
Questa policy consente a tutti gli AWS di assumere il ruolo.
Servizio come principale
{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}
Questa policy consente a qualsiasi account di configurare il proprio apigateway per chiamare questo Lambda.
S3 come principale
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
Se un bucket S3 è fornito come principale, poiché i bucket S3 non hanno un ID account, se hai eliminato il tuo bucket e l'attaccante lo ha creato nel proprio account, allora potrebbe abusarne.
Non supportato
{
"Effect": "Allow",
"Principal": { "Service": "cloudtrail.amazonaws.com" },
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}
Un modo comune per evitare problemi di Confused Deputy è l'uso di una condizione con AWS:SourceArn
per controllare l'ARN di origine. Tuttavia, alcuni servizi potrebbero non supportarlo (come CloudTrail secondo alcune fonti).
Riferimenti
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.