5.1 KiB
House of Force
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS और HackTricks swag प्राप्त करें
- हमारे विशेष NFTs कलेक्शन, The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह और हमें ट्विटर 🐦 @hacktricks_live** पर फॉलो** करें।
- अपने हैकिंग ट्रिक्स साझा करें, HackTricks और HackTricks Cloud github repos में PRs सबमिट करके।
मौलिक जानकारी
कोड
- यह तकनीक पैच की गई थी (यहाँ) और यह त्रुटि उत्पन्न करती है:
malloc(): corrupted top size
- आप इसे टेस्ट करने के लिए यहाँ से कोड देख सकते हैं।
लक्ष्य
- इस हमले का लक्ष्य एक विशिष्ट पते पर एक चंक को आवंटित करने की क्षमता होती है।
आवश्यकताएँ
- एक ओवरफ्लो जो शीर्ष चंक हेडर का आकार अधिलेखित करने की अनुमति देता है (उदा. -1)।
- हीप आवंटन का आकार नियंत्रित करने की क्षमता होना
हमला
यदि एक हमलावर किसी पते P पर एक चंक आवंटित करना चाहता है ताकि यहाँ का कोई मान अधिलेखित हो। वह -1
के साथ शीर्ष चंक का आकार अधिलेखित करके शुरू करता है (शायद एक ओवरफ्लो के साथ)। यह सुनिश्चित करता है कि malloc किसी भी आवंटन के लिए mmap का उपयोग नहीं करेगा क्योंकि शीर्ष चंक में हमेशा पर्याप्त स्थान होगा।
फिर, शीर्ष चंक के पते और लक्ष्य स्थान के बीच की दूरी की गणना करें ताकि आवंटन के लिए उस आकार के साथ malloc किया जाए जिससे शीर्ष चंक उस स्थिति पर ले जाने के लिए किया जाए। यह अंतर/आकार आसानी से गणित किया जा सकता है:
// From https://github.com/shellphish/how2heap/blob/master/glibc_2.27/house_of_force.c#L59C2-L67C5
/*
* The evil_size is calulcated as (nb is the number of bytes requested + space for metadata):
* new_top = old_top + nb
* nb = new_top - old_top
* req + 2sizeof(long) = new_top - old_top
* req = new_top - old_top - 2sizeof(long)
* req = target - 2sizeof(long) - old_top - 2sizeof(long)
* req = target - old_top - 4*sizeof(long)
*/
इसलिए, target - old_top - 4*sizeof(long)
का आकार आवंटित करना (4 longs क्योंकि शीर्ष चंक और नए चंक के मेटाडेटा के कारण) शीर्ष चंक को हमें ओवरराइट करने के लिए चाहिए वाले पते पर ले जाएगा।
फिर, एक और malloc करें ताकि डेटा की शुरुआत में एक चंक प्राप्त करें जिसमें लिखने के लिए लक्षित पते को।