Tcache Bin Attack
Last updated
Last updated
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Tcache बिन के बारे में अधिक जानकारी के लिए इस पृष्ठ को देखें:
Bins & Memory Allocationsसबसे पहले, ध्यान दें कि Tcache को Glibc संस्करण 2.26 में पेश किया गया था।
Tcache हमला (जिसे Tcache विषाक्तता के रूप में भी जाना जाता है) guyinatuxido पृष्ठ में प्रस्तावित किया गया है, जो तेज बिन हमले के समान है जहाँ लक्ष्य एक मुक्त चंक के अंदर बिन में अगले चंक के लिए पॉइंटर को एक मनमाने पते पर ओवरराइट करना है ताकि बाद में उस विशेष पते को आवंटित करना और संभावित रूप से पॉइंटर्स को ओवरराइट करना संभव हो सके।
हालांकि, आजकल, यदि आप उल्लेखित कोड चलाते हैं तो आपको त्रुटि मिलेगी: malloc(): unaligned tcache chunk detected
। इसलिए, नए पॉइंटर में एक संरेखित पता (या बाइनरी को पर्याप्त बार चलाना ताकि लिखा गया पता वास्तव में संरेखित हो) के रूप में लिखना आवश्यक है।
आमतौर पर, यह संभव है कि हीप की शुरुआत में एक चंक हो जिसमें tcache के अंदर प्रति इंडेक्स चंकों की मात्रा और प्रत्येक tcache इंडेक्स के हेड चंक का पता हो। यदि किसी कारण से इस जानकारी को संशोधित करना संभव है, तो यह संभव होगा कि कुछ इंडेक्स के हेड चंक को एक इच्छित पते पर इंगित किया जाए (जैसे __malloc_hook
) ताकि फिर इंडेक्स के आकार का एक चंक आवंटित किया जा सके और इस मामले में __malloc_hook
की सामग्री को ओवरराइट किया जा सके।
Libc जानकारी लीक: यह tcaches को भरना संभव है, एक चंक को असंरचित सूची में जोड़ना, tcache को खाली करना और केवल पहले 8B को ओवरराइट करके असंरचित बिन से चंक को फिर से आवंटित करना संभव है, जिससे चंक से libc के दूसरे पते को बरकरार रखा जा सके ताकि हम इसे पढ़ सकें।
Tcache हमला: बाइनरी एक 1B हीप ओवरफ्लो के लिए संवेदनशील है। इसका दुरुपयोग आवंटित चंक के आकार के हेडर को बदलने के लिए किया जाएगा जिससे यह बड़ा हो जाए। फिर, इस चंक को मुक्त किया जाएगा, इसे नकली आकार के चंकों के tcache में जोड़ दिया जाएगा। फिर, हम नकली आकार के साथ एक चंक आवंटित करेंगे, और पिछले चंक को वापस किया जाएगा यह जानते हुए कि यह चंक वास्तव में छोटा था और यह हमें मेमोरी में अगले चंक को ओवरराइट करने का अवसर प्रदान करता है।
हम इसका दुरुपयोग करेंगे अगले चंक के FD पॉइंटर को ओवरराइट करने के लिए ताकि यह malloc_hook
की ओर इंगित करे, ताकि फिर 2 पॉइंटर्स आवंटित करना संभव हो: पहले वैध पॉइंटर जिसे हमने अभी संशोधित किया, और फिर दूसरा आवंटन malloc_hook
में एक चंक लौटाएगा जिसे one gadget लिखने के लिए दुरुपयोग किया जा सकता है।
Libc जानकारी लीक: यहाँ एक उपयोग के बाद मुक्त और एक डबल फ्री है। इस लेख में लेखक ने एक छोटे बिन में रखे गए चंक के पते को पढ़कर libc का एक पता लीक किया (जैसे इसे असंरचित बिन से लीक करना लेकिन छोटे बिन से)।
Tcache हमला: एक Tcache डबल फ्री के माध्यम से किया जाता है। एक ही चंक को दो बार मुक्त किया जाता है, इसलिए Tcache के अंदर चंक स्वयं की ओर इंगित करेगा। फिर, इसे आवंटित किया जाता है, इसका FD पॉइंटर फ्री हुक की ओर इंगित करने के लिए संशोधित किया जाता है और फिर इसे फिर से आवंटित किया जाता है ताकि सूची में अगला चंक फ्री हुक में हो। फिर, इसे भी आवंटित किया जाता है और यहाँ system
का पता लिखना संभव है ताकि जब "/bin/sh"
वाला malloc मुक्त किया जाए तो हमें एक शेल मिल सके।
यहाँ मुख्य कमजोरी यह है कि किसी भी पते को हीप में free
करने की क्षमता है।
Tcache indexes attack: यह संभव है कि एक ऐसे आकार का चंक आवंटित और मुक्त किया जाए जो जब tcache चंक (tcache बिन की जानकारी वाला चंक) के अंदर संग्रहीत किया जाता है तो 0x100 के मान वाला एक पता उत्पन्न करेगा। इसका कारण यह है कि tcache प्रत्येक बिन में चंकों की मात्रा को विभिन्न बाइट्स में संग्रहीत करता है, इसलिए एक विशिष्ट इंडेक्स में एक चंक 0x100 का मान उत्पन्न करता है।
फिर, यह मान ऐसा दिखता है जैसे 0x100 का आकार का एक चंक है। इसे free
करके दुरुपयोग करने की अनुमति देता है। यह उस पते को tcache में आकार 0x100 के चंकों के इंडेक्स में जोड़ देगा।
फिर, 0x100 के आकार का एक चंक आवंटित करते समय, पिछले पते को एक चंक के रूप में लौटाया जाएगा, जिससे अन्य tcache इंडेक्स को ओवरराइट करना संभव होगा। उदाहरण के लिए, malloc हुक का पता उनमें से एक में डालकर और उस इंडेक्स के आकार का एक चंक आवंटित करके calloc हुक में एक चंक प्राप्त करना संभव होगा, जो एक one gadget लिखने की अनुमति देता है जिससे हमें एक शेल मिल सके।
पहले जैसा ही कमजोर, लेकिन एक अतिरिक्त प्रतिबंध के साथ।
Tcache indexes attack: पिछले वाले के समान हमला लेकिन कम चरणों का उपयोग करके tcache जानकारी वाला चंक मुक्त करके ताकि इसका पता उसके आकार के tcache इंडेक्स में जोड़ा जा सके ताकि उस आकार को आवंटित करना संभव हो और tcache चंक जानकारी को एक चंक के रूप में प्राप्त किया जा सके, जो एक इंडेक्स के पते के रूप में फ्री हुक को जोड़ने की अनुमति देता है, इसे आवंटित करें, और उस पर एक one gadget लिखें।
fd
पॉइंटर में एक संख्या जोड़ने के लिए Write After Free।
इस चुनौती में बहुत सारे heap feng-shui की आवश्यकता है। लेख में दिखाया गया है कि Tcache फ्री-लिस्ट के हेड को नियंत्रित करना कितना उपयोगी है।
stdout
(FSOP) के माध्यम से Glibc लीक।
मनमाने लिखने की प्राइमिटिव प्राप्त करने के लिए Tcache विषाक्तता।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)