AWS - STS Enum

Support HackTricks

STS

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

STS의 목적이 신원 사칭을 위한 자격 증명 발급인 만큼, 이 서비스는 권한 상승 및 지속성 유지에 매우 유용합니다. 비록 다양한 옵션이 많지 않을 수 있지만요.

Assume Role Impersonation

AWS STS에서 제공하는 AssumeRole 작업은 주체가 다른 주체의 자격 증명을 획득할 수 있도록 허용하므로 매우 중요합니다. 호출 시, 지정된 ARN에 해당하는 액세스 키 ID, 비밀 키 및 세션 토큰으로 응답합니다.

침투 테스터 또는 레드 팀 구성원에게 이 기술은 권한 상승에 필수적입니다(자세한 내용은 여기에서 설명). 그러나 이 기술은 꽤 눈에 띄기 때문에 공격자를 놀라게 할 수는 없습니다.

Assume Role Logic

동일한 계정에서 역할을 맡으려면 맡을 역할이 특정 역할 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 권한을 악용하여 권한 상승하는 방법을 확인할 수 있습니다:

Post Exploitation

Persistence

References

Support HackTricks

Last updated