सबसे पहले, सामने, मुझे नहीं पता कि प्रकल्पित हमलावर क्या हासिल करने की कोशिश कर रहा है। शायद वहाँ एक PHP स्क्रिप्ट या PHP संस्करण है जो कुछ अजीब सत्र आईडी हमले के लिए असुरक्षित है, मुझे पता नहीं है। आपको शायद इस बारे में चिंता करने की कोई बात नहीं है।
आपके सर्वर ने ठीक वैसा ही व्यवहार किया जैसा कि अपेक्षित था। 200 उस विशेष स्थिति में अपेक्षित कोड है क्योंकि Apache URL को कैसे पास करता है, इसकी व्याख्या करता है।
सबसे पहले, http://allrequestsallowed.com
अधिक सामान्य 'होस्ट:' शीर्षक की तरह व्यवहार किया जाता है ( ध्यान दें कि मुझे नहीं लगता कि यह RFC में निर्दिष्ट है और अन्य सर्वर इसे इस तरह से व्याख्या नहीं कर सकते हैं कि मैं गलत था। यह खंड 5.1 में RFC 2616 में निर्दिष्ट है। 2, भले ही ग्राहक शायद ही कभी उस फ़ॉर्म का उपयोग करते हों। मुझे माफ करें, मुझे एक HTTP सर्वर कार्यान्वयन ठीक करना होगा जिसे मैंने थोड़ी देर पहले लिखा था ...)।
अब, संभवतः आपके पास 'allrequestsallowed.com' नाम की कोई साइट नहीं है। तो क्या होता है जब अपाचे को Host:
होस्टनाम के लिए हेडर (या समतुल्य) मिलता है जो इसे पहचानता नहीं है? यह पहला वर्चुअल होस्ट डिफ़ॉल्ट के रूप में चुनता है। यह अपाचे के लिए अच्छी तरह से परिभाषित और प्रलेखित व्यवहार है। तो जो कुछ भी आपका पहला वर्चुअल होस्ट है (या सिर्फ मुख्य सर्वर कॉन्फ़िगरेशन है अगर कोई vhosts नहीं है) पर कोई फर्क नहीं पड़ता, चाहे वह किसी भी नाम का हो।
अब, दिए गए बाकी URL में दो भाग हैं - पथ /
, और एक GET पैरामीटर ( ?PHPSESSID...
बिट)।
अब, पथ /
हर वेब सर्वर पर मौजूद होना चाहिए। ज्यादातर मामलों में, यह index.html
एक index.php
स्क्रिप्ट की तरह या शायद कुछ के लिए मैप करता है , हालांकि आप इस पाठ्यक्रम के किसी भी ओवरराइड कर सकते हैं।
यदि यह एक स्थिर HTML फ़ाइल में मैप करता है, तो कुछ भी असामान्य नहीं होता है - फ़ाइल की सामग्री वापस आ जाती है, और यह है कि, पैरामीटर को केवल अनदेखा किया जाता है। (मान लें कि आपके पास कुछ उन्नत कॉन्फ़िगरेशन निर्देश सेट नहीं है, और आप लगभग निश्चित रूप से नहीं करते हैं।)
दूसरी ओर, यदि यह किसी प्रकार की स्क्रिप्ट है, तो वह PHPSESSID
चर स्क्रिप्ट में पास हो जाएगा। यदि स्क्रिप्ट वास्तव में उस चर का उपयोग करती है (इस विशेष मामले में, PHP के अंतर्निहित सत्र हैंडलिंग का उपयोग करने वाले केवल लिपियों की संभावना है), तो इसका व्यवहार सामग्री पर निर्भर करेगा।
सभी संभावना में, हालांकि, भले ही आपका /
सत्रों का उपयोग करके PHP स्क्रिप्ट में मैप करने के लिए होता है, उल्लेखनीय कुछ भी नहीं होगा। सत्र आईडी शायद वैसे भी मौजूद नहीं होगी, और या तो नजरअंदाज कर दिया जाएगा, या स्क्रिप्ट में त्रुटि दिखाई देगी।
इस मामले में कि सत्र आईडी मौजूद नहीं है, ठीक है, हमलावर किसी और के सत्र को हाइजैक कर सकता है। यह बुरा होगा, लेकिन यह वास्तव में अपने आप में एक सुरक्षा छेद नहीं है - यह छेद होगा जहां हमलावर को सत्र आईडी जानकारी मिली (यदि आप HTTPS का उपयोग नहीं कर रहे हैं तो वायरलेस नेटवर्क को सूँघना एक अच्छा उम्मीदवार है)। वे वास्तव में कुछ भी करने में सक्षम नहीं होंगे कि उपयोगकर्ता जिसका सत्र मूल रूप से नहीं कर सकता था।
संपादित करें: इसके अलावा, SESSIONID नक्शे के अंदर '% 5C' एक बैकस्लैश चरित्र के लिए है। यह विंडोज मेजबानों पर निर्देशिका ट्रैवर्सल हमलों के लिए एक परीक्षण प्रतीत होता है।
curl -v http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP -x www.example.com:80
:। डिफ़ॉल्ट कॉन्फ़िगरेशन हमारे ubuntu प्रणाली पर कोई सार्थक सामग्री के साथ "nginx में आपका स्वागत है" पृष्ठ पर वापस जाने के लिए लगता है। तो यह एक 200 की प्रतिक्रिया है, लेकिन यह एक सरल कैच-ऑल पेज है - हम वास्तव में अनुरोध को कहीं और या जैसे कुछ भी नहीं कर रहे हैं।