# House of Orange
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
* अगर आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
* हमारे संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) का खोज करें, **The PEASS Family**
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो** करें।
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में **PRs सबमिट करके** अपने हैकिंग ट्रिक्स साझा करें।
## मूलभूत जानकारी
### कोड
* [https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_orange.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_orange.c) में एक उदाहरण खोजें
* इस [पैच](https://sourceware.org/git/?p=glibc.git;a=blobdiff;f=stdlib/abort.c;h=117a507ff88d862445551f2c07abb6e45a716b75;hp=19882f3e3dc1ab830431506329c94dcf1d7cc252;hb=91e7cf982d0104f0e71770f5ae8e3faf352dea9f;hpb=0c25125780083cbba22ed627756548efe282d1a0) में एक्सप्लोइटेशन तकनीक ठीक की गई थी (2.26 से पहले काम करती थी)
* और अधिक टिप्पणियों के साथ समान उदाहरण [https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html](https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html)
### लक्ष्य
* `malloc_printerr` फ़ंक्शन का दुरुपयोग
### आवश्यकताएँ
* ऊपरी चंक का आकार अधिलेखित करें
* Libc और हीप लीक्स
### पृष्ठभूमि
[**इस उदाहरण**](https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html) के टिप्पणियों से कुछ आवश्यक पृष्ठभूमि:
बात यह है, पुराने संस्करणों में libc में, जब `malloc_printerr` फ़ंक्शन को कॉल किया जाता था तो यह **`_IO_list_all`** में संग्रहीत **`_IO_FILE`** संरचियों की सूची के माध्यम से चलाता था, और वास्तव में उस संरचना में एक निर्देशिका पॉइंटर को **एक्जीक्यूट** करता था।\
यह हमला एक नकली **`_IO_FILE`** संरचना बनाएगा जिसे हम **`_IO_list_all`** में लिखेंगे, और `malloc_printerr` को चलाएगा।\
फिर यह **वह पता चलाएगा जिस पते** को हमने **`_IO_FILE`** संरचनाओं के जंप टेबल में संग्रहीत किया है, और हमें कोड निष्पादित करने की अनुमति मिलेगी।
### हमला
हमला ऊपरी चंक को **अनसॉर्टेड बिन** में प्राप्त करके शुरू होता है। इसे `mmap` आवंटन को ट्रिगर करने वाले **`mmp_.mmap_threshold`** (डिफ़ॉल्ट 128K) से छोटा लेकर `malloc` को कॉल करके प्राप्त किया जाता है। जब भी ऊपरी चंक का आकार संशोधित किया जाता है, तो यह महत्वपूर्ण है कि **ऊपरी चंक + इसका आकार** पेज-संरेखित हो और **पिछला इनयूज़** बिट हमेशा सेट रहे।
अनसॉर्टेड बिन में ऊपरी चंक प्राप्त करने के लिए, एक चंक आवंटित करें ताकि ऊपरी चंक बनाने के लिए, ऊपरी चंक का आकार बदलें (आवंटित चंक में ओवरफ़्लो होने के साथ) ताकि **ऊपरी चंक + आकार** पेज-संरेखित हो और **पिछला इनयूज़** बिट सेट हो। फिर नए ऊपरी चंक के आकार से अधिक एक चंक आवंटित करें। ध्यान दें कि ऊपरी चंक को अनसॉर्टेड बिन में प्राप्त करने के लिए कभी `free` कॉल नहीं किया जाता है।
पुराना ऊपरी चंक अब अनसॉर्टेड बिन में है। माना जा सकता है कि हम उसमें से डेटा पढ़ सकते हैं (शायद एक विकल्पन से जो ओवरफ़्लो का कारण भी हो सकता है), तो उससे libc पतों को लीक करना संभव है और **\_IO\_list\_all** का पता लगाना संभव है।
एक अनसॉर्टेड बिन हमला अधिलेखित करने के द्वारा किया जाता है, ओवरफ़्लो का दुरुपयोग करके `topChunk->bk->fwd = _IO_list_all - 0x10` लिखने के लिए। जब एक नया चंक आवंटित किया जाता है, तो पुराना ऊपरी चंक विभाजित हो जाएगा, और एक प्वाइंटर अनसॉर्टेड बिन में लिखा जाएगा **`_IO_list_all`** में।
अगला कदम पुराने ऊपरी चंक का आकार छोटा करना है ताकि एक छोटे बिन में फिट हो, विशेष रूप से उसका आकार **0x61** सेट करना। इसके दो उद्देश्य हैं:
1. **छोटे बिन 4 में इन्सर्शन**: जब `malloc` अनसॉर्टेड बिन के माध्यम से स्कैन करता है और इस चंक को देखता है, तो यह इसे छोटे बिन 4 में डालने का प्रयास करेगा क्योंकि इसका आकार छोटा है। यह चंक छोटे बिन 4 की सूची के शीर्ष पर जाता है जो **`_IO_list_all`** के चंक के FD पॉइंटर का स्थान है क्योंकि हमने अनसॉर्टेड बिन हमला के माध्यम से **`_IO_list_all`** में एक क्लोज पता लिखा था।
2. **मैलोक चेक को ट्रिगर करना**: यह चंक आकार मानिपुलेशन `malloc` को आंतरिक जांच करने के लिए कारण बनाएगा। जब यह झूठा फॉरवर्ड चंक का आकार जांचता है, जो शून्य होगा, तो यह एक त्रुटि को ट्रिगर करेगा और `malloc_printerr` को कॉल करेगा।
छोटे बिन का मानिपुलेशन आपको चंक के फॉरवर्ड पॉइंटर को नियंत्रित करने की अनुमति देगा। **\_IO\_list\_all** के साथ ओवरलैप का उपयोग एक नकली **\_IO\_FILE** संरचना बनाने के लिए किया जाता है। संरचना को सावधानी से तैयार किया जाता है ताकि मुख्य क्षेत्र जैसे `_IO_write_base` और `_IO_write_ptr` जैसे महत्वपूर्ण क्षेत्रों को शामिल किया जाए जो libc में आंतरिक जांचों को पार करने वाले मान्यताएँ देते हैं। इसके अतिरिक्त, एक जंप टेबल नकली संरचना के भीतर बनाई जाती है, जहां एक निर्देशिका पॉइंटर को एक पते पर सेट किया जाता है जहां विभिन्न कोड (उदाहरण के लिए, `system` फ़ंक्शन) को निष्पादित किया जा सकता है।
तकनीक के शेष हिस्से को सारांशित करने के लिए:
* **पुराने ऊपरी चंक का आकार कम करें**: पुराने ऊपरी चंक का आकार समायोजित करें ताकि इसे छोटे बिन में फिट किया जा सके।
* **नकली `_IO_FILE` संरचना सेट करें**: पुराने ऊपरी चं
## संदर्भ
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_orange/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_orange/)
* [https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html](https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html)
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में** देखना चाहते हैं या **HackTricks को PDF में डाउनलोड** करना चाहते हैं तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](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 repos में।