AWS - STS Enum

HackTricks 지원

STS

**AWS Security Token Service (STS)**는 주로 임시, 제한된 권한의 자격 증명을 발급하기 위해 설계되었습니다. 이러한 자격 증명은 AWS Identity and Access Management (IAM) 사용자 또는 인증된 사용자(연합 사용자)에 대해 요청할 수 있습니다.

STS의 목적이 신원 사칭을 위한 자격 증명 발급이기 때문에, 이 서비스는 권한 상승 및 지속성 유지에 매우 유용합니다. 비록 옵션이 많지 않더라도 말입니다.

Assume Role 사칭

AWS STS가 제공하는 AssumeRole 액션은 주체가 다른 주체의 자격 증명을 획득하여 본질적으로 그들을 사칭할 수 있게 해주기 때문에 매우 중요합니다. 호출 시, 지정된 ARN에 해당하는 액세스 키 ID, 비밀 키 및 세션 토큰을 응답으로 제공합니다.

침투 테스터 또는 Red Team 멤버에게 이 기술은 권한 상승에 매우 유용합니다 (자세한 내용은 여기 참조). 그러나 이 기술은 매우 눈에 띄며 공격자를 놀라게 하지 않을 수 있습니다.

Assume Role 로직

역할 ARN을 특정하게 허용하는 역할을 동일한 계정에서 가정하려면:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

역할 **priv-role**의 경우, 특정하게 허용될 필요는 없습니다 (그 허용만으로 충분합니다).

그러나, 역할이 계정이 그것을 가정하도록 허용하는 경우, 다음과 같이:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

역할을 가정하려는 역할은 그것을 가정하기 위해 해당 역할에 대한 특정 sts:AssumeRole 권한이 필요합니다.

다른 계정에서 역할을 가정하려고 하면, 가정된 역할이 이를 허용해야 합니다 (역할 ARN 또는 외부 계정을 나타내야 함), 그리고 다른 역할을 가정하려는 역할은 반드시 그것을 가정할 수 있는 권한을 가져야 합니다 (이 경우 가정된 역할이 ARN을 지정하더라도 선택 사항이 아닙니다).

Enumeration

# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>

Privesc

다음 페이지에서 STS 권한을 남용하여 권한을 상승시키는 방법을 확인할 수 있습니다:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

Support HackTricks

Last updated