2.8 KiB

{{#include ../../banners/hacktricks-training.md}}

CONNECT विधि

Go प्रोग्रामिंग भाषा में, HTTP अनुरोधों को संभालने के लिए एक सामान्य प्रथा, विशेष रूप से net/http पुस्तकालय का उपयोग करते समय, अनुरोध पथ को एक मानकीकृत प्रारूप में स्वचालित रूप से परिवर्तित करना है। इस प्रक्रिया में शामिल हैं:

  • / के साथ समाप्त होने वाले पथ (/) जैसे /flag/ को उनके बिना स्लैश वाले समकक्ष, /flag पर पुनर्निर्देशित किया जाता है।
  • /../flag जैसे निर्देशिका ट्रैवर्सल अनुक्रमों वाले पथों को सरल बनाया जाता है और /flag पर पुनर्निर्देशित किया जाता है।
  • /flag/. के रूप में एक ट्रेलिंग अवधि वाले पथों को भी साफ पथ /flag पर पुनर्निर्देशित किया जाता है।

हालांकि, CONNECT विधि के उपयोग के साथ एक अपवाद देखा जाता है। अन्य HTTP विधियों के विपरीत, CONNECT पथ मानकीकरण प्रक्रिया को सक्रिय नहीं करता है। यह व्यवहार संरक्षित संसाधनों तक पहुँचने के लिए एक संभावित मार्ग खोलता है। curl में --path-as-is विकल्प के साथ CONNECT विधि का उपयोग करके, कोई मानक पथ मानकीकरण को बायपास कर सकता है और संभावित रूप से प्रतिबंधित क्षेत्रों तक पहुँच सकता है।

निम्नलिखित कमांड इस व्यवहार का लाभ उठाने का तरीका प्रदर्शित करती है:

curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag

https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364

{{#include ../../banners/hacktricks-training.md}}