House of Einherjar
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)
Check the example from https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
Or the one from https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (आपको tcache भरने की आवश्यकता हो सकती है)
लक्ष्य लगभग किसी भी विशिष्ट पते पर मेमोरी आवंटित करना है।
जब हम एक चंक आवंटित करना चाहते हैं तो एक नकली चंक बनाएं:
सैनीटी चेक को बायपास करने के लिए पॉइंटर्स को अपने आप पर सेट करें
एक चंक से अगले चंक तक PREV_INUSE
फ्लैग को संशोधित करने के लिए एक नल बाइट के साथ एक-बाइट ओवरफ्लो।
नल द्वारा ऑफ़सेट चंक के prev_size
में अपने और नकली चंक के बीच का अंतर इंगित करें
नकली चंक का आकार भी सैनीटी चेक को बायपास करने के लिए समान आकार में सेट किया जाना चाहिए
इन चंक्स का निर्माण करने के लिए, आपको एक हीप लीक की आवश्यकता होगी।
A
नकली चंक एक चंक के अंदर बनाया गया है जिसे हमलावर द्वारा नियंत्रित किया जाता है जो मूल चंक को बायपास करने के लिए fd
और bk
के साथ पॉइंट करता है
2 अन्य चंक्स (B
और C
) आवंटित किए जाते हैं
B
में एक द्वारा एक का दुरुपयोग करते हुए prev in use
बिट को साफ किया जाता है और prev_size
डेटा को C
चंक के आवंटन के स्थान से पहले बनाए गए नकली A
चंक के बीच के अंतर के साथ ओवरराइट किया जाता है
यह prev_size
और नकली चंक A
में आकार समान होना चाहिए ताकि चेक को बायपास किया जा सके।
फिर, tcache भरा जाता है
फिर, C
को मुक्त किया जाता है ताकि यह नकली चंक A
के साथ समेकित हो जाए
फिर, एक नया चंक D
बनाया जाता है जो नकली A
चंक में शुरू होगा और B
चंक को कवर करेगा
हाउस ऑफ़ आइन्हेरजार यहाँ समाप्त होता है
इसे एक तेज़ बिन हमले या Tcache विषाक्तता के साथ जारी रखा जा सकता है:
तेज़ बिन / Tcache में जोड़ने के लिए B
को मुक्त करें
B
का fd
ओवरराइट किया जाता है जिससे यह लक्षित पते की ओर पॉइंट करता है जो D
चंक का दुरुपयोग करता है (क्योंकि इसमें B
शामिल है)
फिर, 2 mallocs किए जाते हैं और दूसरा लक्षित पते को आवंटित करने जा रहा है
पॉइंटर्स को मुक्त करने के बाद उन्हें नल नहीं किया जाता है, इसलिए उनके डेटा तक पहुंचना अभी भी संभव है। इसलिए एक चंक को अनसॉर्टेड बिन में रखा जाता है और इसमें शामिल पॉइंटर्स को लीक किया जाता है (libc leak) और फिर एक नया हीप अनसॉर्टेड बिन पर रखा जाता है और इसे प्राप्त किए गए पॉइंटर से एक हीप पता लीक किया जाता है।
strtok
में नल-बाइट ओवरफ्लो बग।
ओवरलैपिंग चंक्स की स्थिति प्राप्त करने के लिए हाउस ऑफ़ आइन्हेरजार का उपयोग करें और Tcache विषाक्तता के साथ समाप्त करें ताकि एक मनमाना लिखने की प्राइमिटिव प्राप्त हो सके।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)