AWS - IAM Post Exploitation

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

IAM

Für weitere Informationen zum IAM-Zugriff:

pageAWS - IAM, Identity Center & SSO Enum

Verwirrungsproblem des Stellvertretenden

Wenn Sie einem externen Konto (A) erlauben, auf eine Rolle in Ihrem Konto zuzugreifen, haben Sie wahrscheinlich keine Sichtbarkeit, wer genau auf dieses externe Konto zugreifen kann. Dies ist ein Problem, denn wenn ein anderes externes Konto (B) auf das externe Konto (A) zugreifen kann, ist es möglich, dass B auch auf Ihr Konto zugreifen kann.

Daher ist es beim Zulassen eines externen Kontos, auf eine Rolle in Ihrem Konto zuzugreifen, möglich, eine ExternalId anzugeben. Dies ist eine "geheime" Zeichenfolge, die das externe Konto (A) angeben muss, um die Rolle in Ihrer Organisation anzunehmen. Da das externe Konto B diese Zeichenfolge nicht kennt, selbst wenn es Zugriff auf A hat, kann es nicht auf Ihre Rolle zugreifen.

Beachten Sie jedoch, dass diese ExternalId "Geheimnis" kein Geheimnis ist, jeder, der die IAM-Annahme-Richtlinie lesen kann, wird sie sehen können. Aber solange das externe Konto A es kennt, aber das externe Konto B es nicht kennt, verhindert es, dass B A missbraucht, um auf Ihre Rolle zuzugreifen.

Beispiel:

{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}

Um einen verwirrten Deputy auszunutzen, muss ein Angreifer irgendwie herausfinden, ob Prinzipale des aktuellen Kontos Rollen in anderen Konten übernehmen können.

Unerwartete Vertrauensstellungen

Platzhalter als Prinzipal

{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" },
}

Diese Richtlinie erlaubt es allen AWS-Diensten, die Rolle anzunehmen.

Dienst als Prinzipal

{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}

Diese Richtlinie ermöglicht es jedem Konto, ihren API-Gateway so zu konfigurieren, dass es diese Lambda aufruft.

S3 als Hauptsubjekt

"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}

Wenn ein S3-Bucket als Principal angegeben wird, da S3-Buckets keine Kontonummer haben, könnten Angreifer dies missbrauchen, indem sie Ihren Bucket löschen und in ihrem eigenen Konto erstellen.

Nicht unterstützt

{
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}

Eine häufige Möglichkeit, Probleme mit verwirrten Stellvertretern zu vermeiden, ist die Verwendung einer Bedingung mit AWS:SourceArn, um die Ursprungs-ARN zu überprüfen. Einige Dienste unterstützen dies jedoch möglicherweise nicht (wie CloudTrail laut einigen Quellen).

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated