
मनमाना DLL इंजेक्शन के साथ एक SEH ओवरफ्लो का प्रूफ ऑफ कॉन्सेप्ट
मनमाने DLL इंजेक्शन के साथ SEH ओवरफ्लो का एक प्रूफ ऑफ कॉन्सेप्ट
Kolibrì HTTP Server 2.0 एक स्टैक-आधारित बफर ओवरफ्लो से प्रभावित है। खोज के समय यह भेद्यता निर्देश पॉइंटर को JMP ESP निर्देश से ओवरराइट करके शोषित की गई थी, जहाँ ESP स्टैक पर रखे गए शेलकोड की ओर इशारा करता था। बाद में, यह पाया गया कि यदि एक बड़ा पेलोड भेजा जाए तो SEH श्रृंखला को ओवरराइट किया जा सकता है। हालाँकि, एप्लिकेशन में SE हैंडलर को अगले SEH रिकॉर्ड की ओर इंगित करने के लिए वैध POP - POP - RET निर्देश नहीं हैं। ऐसा इसलिए है क्योंकि सभी संबंधित मेमोरी पते nullbyte से शुरू होते हैं।

यह एक्सप्लॉइट DLL इंजेक्शन के माध्यम से SEH ओवरफ्लो के जरिए कोड निष्पादन का प्रस्ताव करता है। Kolibrì प्रक्रिया में एक मनमाना DLL इंजेक्ट करना SE हैंडलर को उस DLL की POP - POP - RET निर्देश की ओर इंगित करने वाले nullbyte-मुक्त पते से ओवरराइट करने का अवसर खोलता है। स्पष्ट रूप से यह विधि केवल प्रूफ ऑफ कॉन्सेप्ट विकसित करने के लिए इस्तेमाल की जा सकती है, और यदि सिस्टम विशेषाधिकारों को स्थानीय रूप से बढ़ाने के लिए शोषण किया जाता है तो इस पर भरोसा नहीं किया जा सकता। ऐसा इसलिए है क्योंकि यदि आप किसी प्रक्रिया में DLL इंजेक्ट करना चाहते हैं तो आपके पास लक्ष्य प्रक्रिया के समान विशेषाधिकार होने चाहिए। इसके अलावा, एक्सप्लॉइट काम करता है!

जब मैंने पहली बार यह एक्सप्लॉइट अपलोड किया था, तो यह केवल हार्डकोडेड WinExec और ExitProcess पतों वाले बहुत छोटे कस्टम शेलकोड का समर्थन करता था। यह SEH को ओवरराइट करने के बाद आने वाली कम बफर स्पेस के कारण था। अब मैंने SEH के ठीक बाद एक egghunter शेलकोड तैनात करके और वेब सर्वर के User-Agent हेडर में egg + शेलकोड डालकर एक्सप्लॉइट कोड को अपडेट कर दिया है। इसलिए निष्पादन प्रवाह ओवरराइट किए गए SEH से egghunter की ओर पुनर्निर्देशित किया जाएगा, जो फिर 'w00t' egg से चिह्नित शेलकोड की खोज करेगा।
इस विधि का श्रेय इस मूल रिपॉजिटरी के FULLSHADE को जाता है।
मैंने केवल इस विचार को इस विशिष्ट CVE पर लागू किया है।