disable_functions bypass - dl function
महत्वपूर्ण नोट:
dl
एक PHP फ़ंक्शन है जिसका उपयोग PHP एक्सटेंशन लोड करने के लिए किया जा सकता है। यदि फ़ंक्शन अक्षम नहीं है तो इसका दुरुपयोग करके disable_functions
को अनदेखा करने और विविध कमांड्स को निष्पादित करने के लिए किया जा सकता है।
हालांकि, इसके कुछ सख्त सीमाएँ हैं:
dl
फ़ंक्शन को परिवेश में उपस्थित होना चाहिए और अक्षम नहीं होना चाहिएPHP एक्सटेंशन को उसी मुख्य संस्करण (PHP API संस्करण) के साथ कंपाइल किया जाना चाहिए जिसका सर्वर उपयोग कर रहा है (आप phpinfo के आउटपुट में इस जानकारी को देख सकते हैं)
PHP एक्सटेंशन को उस निर्दिष्ट निर्देशिका में स्थित होना चाहिए जिसे
extension_dir
निर्देशिका द्वारा परिभाषित किया गया है (आप phpinfo के आउटपुट में इसे देख सकते हैं)। एक हमलावर जो सर्वर का दुरुपयोग करने की कोशिश कर रहा है, उसके पास इस निर्देशिका पर लेखन पहुंच होने की संभावना बहुत कम है, इसलिए यह आवश्यकता शायद आपको इस तकनीक का दुरुपयोग करने से रोक देगी)।
यदि आप इन आवश्यकताओं को पूरा करते हैं, तो पोस्ट को पढ़ना जारी रखें https://antichat.com/threads/70763/ और जानें कि कैसे disable_functions
को अनदेखा करें। यहाँ एक सारांश है:
dl फ़ंक्शन का उपयोग स्क्रिप्ट निष्पादन के दौरान PHP एक्सटेंशन डायनामिक रूप से लोड करने के लिए किया जाता है। PHP एक्सटेंशन, आम तौर पर C/C++ में लिखा जाता है, PHP की क्षमताओं को बढ़ाता है। हमलावर, dl
फ़ंक्शन को अक्षम नहीं होने पर, निर्दिष्ट किए गए सिस्टम कमांड्स को निष्पादित करने के लिए एक कस्टम PHP एक्सटेंशन बनाने का निर्णय लेता है।
हमलावर द्वारा लिए गए कदम:
PHP संस्करण पहचान:
हमलावर एक स्क्रिप्ट का उपयोग करके PHP संस्करण की पहचान करता है (
<?php echo 'PHP Version is '.PHP_VERSION; ?>
).
PHP स्रोत प्राप्ति:
PHP स्रोत को आधिकारिक PHP वेबसाइट से या आर्काइव से डाउनलोड करता है यदि संस्करण पुराना है।
स्थानीय PHP सेटअप:
विशेष PHP संस्करण को उनके सिस्टम पर निकालता है और स्थापित करता है।
एक्सटेंशन निर्माण:
PHP एक्सटेंशन बनाने का अध्ययन करता है और PHP स्रोत को जांचता है।
ext/standard/exec.c
में स्थित exec फ़ंक्शन की कार्यक्षमता को नकल करने पर ध्यान केंद्रित करता है।
कस्टम एक्सटेंशन को कंपाइल करने के लिए नोट:
ZEND_MODULE_API_NO:
bypass.c
मेंZEND_MODULE_API_NO
को वर्तमान Zend Extension Build के साथ मेल खाना चाहिए, जिसे निम्नलिखित से प्राप्त किया जा सकता है:
PHP_FUNCTION संशोधन:
हाल के PHP संस्करणों (5, 7, 8) के लिए,
PHP_FUNCTION(bypass_exec)
को संशोधित करने की आवश्यकता हो सकती है। प्रदान किए गए कोड स्निपेट इस संशोधन का विवरण देता है।
कस्टम एक्सटेंशन फ़ाइलें:
bypass.c:
कस्टम एक्सटेंशन की मूल कार्यक्षमता को लागू करता है।
php_bypass.h:
हेडर फ़ाइल, एक्सटेंशन गुणों को परिभाषित करती है।
config.m4:
phpize
द्वारा कस्टम एक्सटेंशन के लिए निर्माण पर्यावरण को कॉन्फ़िगर करने के लिए उपयोग किया जाता है।
एक्सटेंशन को निर्माण करना:
कंपाइलेशन कमांड्स:
एक्सटेंशन को कंपाइल करने के लिए
phpize
,./configure
, औरmake
का उपयोग करता है।परिणामी
bypass.so
फिर मॉड्यूल्स उपनिर्देशिका में स्थित होता है।
सफाई:
कंपाइलेशन के बाद
make clean
औरphpize --clean
चलाता है।
पीड़ित होस्ट पर अपलोड और निष्पादन:
संस्करण संगतता:
सुनिश्चित करता है कि हमलावर और पीड़ित के सिस्टमों के बीच PHP API संस्करण मेल खाते हैं।
एक्सटेंशन लोडिंग:
अवधारित पथों का उपयोग करके या प्रक्रिया को स्वचालित करने के लिए एक स्क्रिप्ट का उपयोग करके,
dl
फ़ंक्शन का उपयोग करता है।
स्क्रिप्ट निष्पादन:
हमलावर
bypass.so
और एक PHP स्क्रिप्ट को पीड़ित सर्वर पर अपलोड करता है।स्क्रिप्ट
dl_local
फ़ंक्शन का उपयोग करता है ताकि डायनामिक रूप सेbypass.so
को लोड करें और फिरcmd
क्वेरी पैरामीटर के माध्यम से भेजे गए एक कमांड को निष्पादित करें।
कमांड निष्पादन:
हमलावर अब कमांड निष्पादित कर सकता है जब वह पहुंचता है:
http://www.example.com/script.php?cmd=<command>
यह विस्तृत वॉकथ्रू एक प्रक्रिया का बयान करता है जिसमें PHP एक्सटेंशन बनाने और निष्पादित करने की प्रक्रिया को समझाया गया है ताकि सिस्टम कमांड्स को निष्पादित करने के लिए dl
फ़ंक्शन का दुरुपयोग किया जा सके, जो ऐसी सुरक्षा उल्लंघनों को रोकने के
Last updated