Fast Bin Attack
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
फास्ट बिन के बारे में अधिक जानकारी के लिए इस पृष्ठ को देखें:
Bins & Memory Allocationsचूंकि फास्ट बिन एक सिंगली लिंक्ड लिस्ट है, इसलिए अन्य बिनों की तुलना में सुरक्षा बहुत कम होती है और बस एक फ्रीड फास्ट बिन चंक में एक पते को संशोधित करना पर्याप्त है ताकि बाद में किसी भी मेमोरी पते पर एक चंक आवंटित किया जा सके।
सारांश के रूप में:
आप एक बहुत अच्छी तरह से समझाई गई कोड में पूरा उदाहरण https://guyinatuxedo.github.io/28-fastbin_attack/explanation_fastbinAttack/index.html पर पा सकते हैं:
यदि global_max_fast
के मान को एक बड़े नंबर से ओवरराइट करना संभव है, तो यह बड़े आकार के फास्ट बिन चंक्स उत्पन्न करने की अनुमति देता है, संभावित रूप से उन परिदृश्यों में फास्ट बिन हमले करने की अनुमति देता है जहाँ पहले यह संभव नहीं था। यह स्थिति large bin attack और unsorted bin attack के संदर्भ में उपयोगी है।
चंक्स आवंटित करना, उन्हें मुक्त करना, उनके सामग्री को पढ़ना और उन्हें भरना (एक ओवरफ्लो भेद्यता के साथ) संभव है।
सूचना लीक के लिए चंक को समेकित करना: तकनीक मूल रूप से ओवरफ्लो का दुरुपयोग करके एक नकली prev_size
बनाने के लिए है ताकि एक पिछले चंक्स को एक बड़े में रखा जा सके, इसलिए जब बड़े चंक्स को आवंटित किया जाता है जिसमें एक और चंक होता है, तो इसके डेटा को प्रिंट करना और libc के लिए एक पता लीक करना संभव है (main_arena+88
)।
malloc हुक को ओवरराइट करना: इसके लिए, और पिछले ओवरलैपिंग स्थिति का दुरुपयोग करते हुए, 2 चंक्स को एक ही मेमोरी की ओर इशारा करते हुए प्राप्त करना संभव था। इसलिए, दोनों को मुक्त करना (सुरक्षाओं से बचने के लिए बीच में एक और चंक को मुक्त करना) यह संभव था कि फास्ट बिन में एक ही चंक 2 बार हो। फिर, इसे फिर से आवंटित करना संभव था, अगले चंक के पते को __malloc_hook
से थोड़ा पहले इंगित करने के लिए ओवरराइट करना (ताकि यह एक पूर्णांक की ओर इशारा करे जिसे malloc एक मुक्त आकार मानता है - एक और बायपास), इसे फिर से आवंटित करना और फिर एक और चंक आवंटित करना जो malloc हुक के लिए एक पता प्राप्त करेगा।
अंत में, वहाँ एक one gadget लिखा गया था।
एक हीप ओवरफ्लो और उपयोग के बाद मुक्त और डबल फ्री है क्योंकि जब एक चंक मुक्त होता है तो इसे पुनः उपयोग और पुनः मुक्त करना संभव है।
Libc सूचना लीक: बस कुछ चंक्स को मुक्त करें और उन्हें मुख्य एरेना स्थान के एक भाग के लिए एक पता मिलेगा। चूंकि आप मुक्त किए गए पointers को पुनः उपयोग कर सकते हैं, बस इस पते को पढ़ें।
फास्ट बिन हमला: आवंटनों के सभी पointers एक एरे में संग्रहीत होते हैं, इसलिए हम कुछ फास्ट बिन चंक्स को मुक्त कर सकते हैं और अंतिम में पते को इस पointers के एरे से थोड़ा पहले इंगित करने के लिए ओवरराइट कर सकते हैं। फिर, समान आकार के कुछ चंक्स आवंटित करें और हमें पहले वैध एक मिलेगा और फिर नकली एक जो पointers के एरे को शामिल करेगा। हम अब इस आवंटन पointers को ओवरराइट कर सकते हैं ताकि free
का GOT पता system
की ओर इंगित करे और फिर चंक 1 में "/bin/sh"
लिखें ताकि फिर free(chunk1)
को कॉल किया जा सके जो इसके बजाय system("/bin/sh")
को निष्पादित करेगा।
एक और उदाहरण एक बाइट ओवरफ्लो का दुरुपयोग करके चंक्स को असंरचित बिन में समेकित करना और एक libc सूचना लीक प्राप्त करना और फिर malloc हुक को एक one gadget पते के साथ ओवरराइट करने के लिए फास्ट बिन हमले को निष्पादित करना।
एक सूचना लीक के बाद असंरचित बिन का दुरुपयोग करते हुए UAF के साथ libc पता और एक PIE पता लीक किया गया, इस CTF का शोषण एक फास्ट बिन हमले का उपयोग करके एक चंक को उस स्थान पर आवंटित करने के लिए किया गया जहाँ नियंत्रित चंक्स के लिए पointers स्थित थे ताकि कुछ पointers को ओवरराइट करना संभव हो सके और GOT में एक one gadget लिखना।
आप एक फास्ट बिन हमला असंरचित बिन हमले के माध्यम से दुरुपयोग करते हुए पा सकते हैं:
ध्यान दें कि फास्ट बिन हमले करने से पहले libc/heap पते लीक करने के लिए फ्री-लिस्ट का दुरुपयोग करना सामान्य है (जब आवश्यक हो)।
हम केवल 0x100
से बड़े आकार के चंक्स आवंटित कर सकते हैं।
एक असंरचित बिन हमले का उपयोग करके global_max_fast
को ओवरराइट करें (ASLR के कारण 1/16 बार काम करता है, क्योंकि हमें 12 बिट्स को संशोधित करने की आवश्यकता है, लेकिन हमें 16 बिट्स को संशोधित करना चाहिए)।
चंक्स के एक वैश्विक एरे को संशोधित करने के लिए फास्ट बिन हमला। यह एक मनमाना पढ़ने/लिखने की प्राइमिटिव देता है, जो GOT को संशोधित करने और कुछ कार्यों को system
की ओर इंगित करने की अनुमति देता है।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)