AWS - API Gateway 인증되지 않은 열거
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 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
API 호출 우회
Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo 강연에 따르면, Lambda Authorizers는 API 엔드포인트를 호출할 수 있는 권한을 부여하기 위해 IAM 구문을 사용하여 구성할 수 있습니다. 이는 문서에서 가져온 내용입니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Permission",
"Action": ["execute-api:Execution-operation"],
"Resource": [
"arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path"
]
}
]
}
이 엔드포인트를 호출하기 위한 권한을 부여하는 방법의 문제는 "*"가 "모든 것"을 의미하며 더 이상 regex 구문이 지원되지 않는다는 것입니다.
몇 가지 예시:
- 각 사용자에게
/dashboard/user/{username}
에 대한 접근을 허용하기 위해arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
와 같은 규칙을 사용하면, 예를 들어/admin/dashboard/createAdmin
과 같은 다른 경로에 대한 접근도 허용됩니다.
warning
"*"는 슬래시로 확장을 멈추지 않으므로, 예를 들어 api-id에 "*"를 사용하면 최종 regex가 여전히 유효한 한 "모든 단계" 또는 "모든 메서드"를 나타낼 수 있습니다.
따라서 arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
는 예를 들어 /prod/GET/dashboard/admin
경로에 대한 테스트 단계에 대한 POST 요청을 검증할 수 있습니다.
항상 접근을 허용하고자 하는 내용을 명확히 하고, 부여된 권한으로 다른 시나리오가 가능한지 확인해야 합니다.
자세한 정보는 docs 외에도 이 공식 aws github에서 권한 부여자를 구현하는 코드를 찾을 수 있습니다.
IAM 정책 주입
같은 talk에서 코드가 사용자 입력을 사용하여 IAM 정책을 생성하는 경우, 와일드카드(및 "." 또는 특정 문자열과 같은 다른 것들)가 포함될 수 있으며, 이는 제한을 우회하는 목표를 가지고 있습니다.
공개 URL 템플릿
https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}
공개 API Gateway URL에서 계정 ID 가져오기
S3 버킷, Data Exchange 및 Lambda URL 게이트웨이와 마찬가지로, 공개 API Gateway URL에서 aws:ResourceAccount
정책 조건 키를 악용하여 계정의 계정 ID를 찾는 것이 가능합니다. 이는 정책의 aws:ResourceAccount
섹션에서 와일드카드를 악용하여 한 번에 한 문자씩 계정 ID를 찾음으로써 이루어집니다.
이 기술은 태그 키를 알고 있다면 태그의 값을 가져오는 것도 허용합니다(흥미로운 기본 태그가 몇 개 있습니다).
자세한 정보는 원본 연구와 이 악용을 자동화하는 도구 conditional-love에서 확인할 수 있습니다.
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 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.