LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure
compress.zlib://
और PHP_STREAM_PREFER_STDIO
compress.zlib://
और PHP_STREAM_PREFER_STDIO
एक फ़ाइल जो compress.zlib://
प्रोटोकॉल का उपयोग करके PHP_STREAM_PREFER_STDIO
फ़्लैग के साथ खोली गई हो, उसमें आने वाले डेटा को बाद में उसी फ़ाइल में लिखना जारी रख सकती है।
इसका मतलब है कि एक कॉल जैसा:
एक अनुरोध भेजेंगे जिसमें http://attacker.com/file के लिए पूछा जाएगा, फिर सर्वर संभावित रूप से अनुरोध का उत्तर एक मान्य HTTP प्रतिक्रिया के साथ भेजेगा, कनेक्शन खुला रखेगा, और कुछ समय बाद अतिरिक्त डेटा भेजेगा जो भी फ़ाइल में लिखा जाएगा।
आप php-src कोड के इस हिस्से में इस जानकारी को देख सकते हैं main/streams/cast.c:
Race Condition से RCE तक
इस CTF को पिछले ट्रिक का उपयोग करके हल किया गया था।
हमलावर विक्टिम सर्वर को एक कनेक्शन खोलने के लिए मजबूर करेगा जो अटैकर सर्वर से एक फ़ाइल पढ़ रहा है जिसमें compress.zlib
प्रोटोकॉल का उपयोग किया जाएगा।
जब यह कनेक्शन मौजूद होगा, तो हमलावर टेम्प फ़ाइल के लिए रास्ता निकालेगा (यह सर्वर द्वारा लीक हो जाता है)।
जब कनेक्शन अभी भी खुला है, तो हमलावर एक LFI का शिकार होगा जिसमें वह नियंत्रण करता है।
हालांकि, वेब सर्वर में एक जांच है जो <?
शामिल फ़ाइलें लोड करने से रोकती है। इसलिए, हमलावर एक Race Condition का दुरुपयोग करेगा। जो कनेक्शन अभी भी खुला है, उसमें हमलावर फ़ाइल में निषेधित वर्णकों की जांच करने के बाद PHP पेलोड भेजेगा लेकिन वेब सर्वर ने इसकी सामग्री लोड करने से पहले।
अधिक जानकारी के लिए रेस कंडीशन और CTF का विवरण देखें https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer
Last updated