AWS - IAM Post Exploitation

Reading time: 3 minutes

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 지원하기

IAM

IAM 접근에 대한 자세한 정보:

AWS - IAM, Identity Center & SSO Enum

혼란스러운 대리인 문제

만약 **외부 계정(A)**이 귀하의 계정의 역할에 접근할 수 있도록 허용하면, 누가 정확히 그 외부 계정에 접근할 수 있는지에 대한 가시성0이 될 것입니다. 이는 문제입니다. 왜냐하면 다른 외부 계정(B)이 외부 계정(A)에 접근할 수 있다면, B가 귀하의 계정에 접근할 수 있는 가능성도 있기 때문입니다.

따라서 외부 계정이 귀하의 계정의 역할에 접근할 수 있도록 허용할 때 ExternalId를 지정할 수 있습니다. 이는 외부 계정(A)이 귀하의 조직에서 역할을 맡기 위해 반드시 지정해야 하는 "비밀" 문자열입니다. 외부 계정 B는 이 문자열을 알지 못하기 때문에, A에 대한 접근 권한이 있더라도 귀하의 역할에 접근할 수 없습니다.

그러나 이 ExternalId "비밀"은 비밀이 아닙니다. IAM 역할 맡기 정책을 읽을 수 있는 누구나 이를 볼 수 있습니다. 하지만 외부 계정 A가 이를 알고 있고, 외부 계정 B는 이를 모른다면, 이는 B가 A를 악용하여 귀하의 역할에 접근하는 것을 방지합니다.

예:

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

warning

공격자가 혼란스러운 대리인을 악용하려면 현재 계정의 주체가 다른 계정의 역할을 가장할 수 있는지 확인해야 합니다.

예상치 못한 신뢰

와일드카드 주체

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

이 정책은 모든 AWS가 역할을 맡을 수 있도록 허용합니다.

주체로서의 서비스

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

이 정책은 모든 계정이 자신의 apigateway를 구성하여 이 Lambda를 호출할 수 있도록 허용합니다.

S3를 주체로 사용

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

S3 버킷이 주체로 제공되는 경우, S3 버킷에는 계정 ID가 없기 때문에, 만약 당신의 버킷을 삭제하고 공격자가 자신의 계정에서 그것을 생성하면, 그들은 이를 악용할 수 있습니다.

지원되지 않음

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

Confused Deputy 문제를 피하는 일반적인 방법은 AWS:SourceArn 조건을 사용하여 원본 ARN을 확인하는 것입니다. 그러나 일부 서비스는 이를 지원하지 않을 수 있습니다 (일부 출처에 따르면 CloudTrail과 같은).

References

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 지원하기