disable_functions bypass - dl function
महत्वपूर्ण नोट:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F84577967%2F174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png&width=768&dpr=4&quality=100&sign=486a6573&sv=1)
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 स्क्रिप्ट को पीड़ित के सर्वर पर अपलोड करता है।स्क्रिप्ट
bypass.so
को गतिशील रूप से लोड करने के लिएdl_local
फ़ंक्शन का उपयोग करती है और फिरcmd
क्वेरी पैरामीटर के माध्यम से पास किए गए कमांड के साथbypass_exec
को कॉल करती है।
कमांड निष्पादन:
हमलावर अब कमांड निष्पादित कर सकता है:
http://www.example.com/script.php?cmd=<command>
यह विस्तृत मार्गदर्शिका एक PHP एक्सटेंशन बनाने और सिस्टम कमांड निष्पादित करने के लिए इसे तैनात करने की प्रक्रिया को रेखांकित करती है, dl
फ़ंक्शन का दुरुपयोग करते हुए, जिसे इस प्रकार की सुरक्षा उल्लंघनों को रोकने के लिए आदर्श रूप से अक्षम किया जाना चाहिए।
Last updated