Awesome WAF 
वेब एप्लीकेशन फ़ायरवॉल (WAF) के बारे में सब कुछ, एक सुरक्षा दृष्टिकोण से। 🔥
प्रस्तावना: यह मूलतः WAF पर मेरा अपना संग्रह था। मैं इसे इस उम्मीद में ओपन-सोर्स कर रहा हूँ कि यह पेंटेस्टर्स और शोधकर्ताओं के लिए उपयोगी होगा। जैसा कि कहावत है, "समुदाय एक-दूसरे से सीखता है।"

एक संक्षिप्त परिभाषा: फ़ायरवॉल एक सुरक्षा नीति प्रवर्तन बिंदु है जो वेब एप्लीकेशन और क्लाइंट एंडपॉइंट के बीच स्थित होता है। यह कार्यक्षमता सॉफ़्टवेयर या हार्डवेयर में लागू की जा सकती है, किसी उपकरण में चलाकर, या किसी सामान्य ऑपरेटिंग सिस्टम चलाने वाले सामान्य सर्वर पर। यह एक स्वतंत्र उपकरण हो सकता है या अन्य नेटवर्क घटकों में एकीकृत हो सकता है। (स्रोत: PCI DSS IS 6.6)
एक वेब-एप्लीकेशन फ़ायरवॉल उपयोगकर्ता और वेबएप के बीच बैठता है और उसका कार्य किसी भी दुर्भावनापूर्ण गतिविधि को वेबएप तक पहुँचने से रोकना है। WAF या तो अनुरोध के दुर्भावनापूर्ण भाग को फ़िल्टर कर देता है या बस उसे ब्लॉक कर देता है।
योगदान करने के लिए स्वागत है।
सामग्री:
परिचय:
WAF कैसे काम करते हैं:
- सामान्य अनुरोधों और दुर्भावनापूर्ण अनुरोधों के बीच अंतर करने के लिए नियमों के एक सेट का उपयोग करना।
- कभी-कभी वे उपयोगकर्ता व्यवहार के बारे में सीखकर स्वतः नियम जोड़ने के लिए लर्निंग मोड का उपयोग करते हैं।
संचालन मोड:
- नेगेटिव मॉडल (ब्लैकलिस्ट-आधारित) - एक ब्लैकलिस्टिंग मॉडल स्पष्ट रूप से दुर्भावनापूर्ण अनुरोधों को ब्लॉक करने के लिए पूर्व-निर्धारित सिग्नेचर का उपयोग करता है। नेगेटिव मॉडल में काम करने वाले WAF के सिग्नेचर विशेष रूप से उन हमलों को रोकने के लिए तैयार किए जाते हैं जो कुछ वेब एप्लीकेशन कमजोरियों का शोषण करते हैं। ब्लैकलिस्टिंग मॉडल वेब एप्लीकेशन फ़ायरवॉल सार्वजनिक इंटरनेट पर उजागर वेब एप्लीकेशन के लिए एक बढ़िया विकल्प हैं और प्रमुख कमजोरियों के खिलाफ अत्यधिक प्रभावी हैं। उदा. सभी
<script>*</script> इनपुट को ब्लॉक करने का नियम बुनियादी क्रॉस-साइट स्क्रिप्टिंग हमलों को रोकता है।
- पॉजिटिव मॉडल (व्हाइटलिस्ट-आधारित) - एक व्हाइटलिस्टिंग मॉडल केवल विशेष रूप से कॉन्फ़िगर की गई शर्तों के अनुसार वेब ट्रैफ़िक को अनुमति देता है। उदाहरण के लिए, इसे केवल कुछ IP पतों से HTTP GET अनुरोधों की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है। यह मॉडल बड़े पैमाने पर हमलों को रोकने के लिए बहुत प्रभावी हो सकता है, लेकिन साथ ही बहुत सारे वैध ट्रैफ़िक को भी ब्लॉक करेगा। व्हाइटलिस्टिंग मॉडल फ़ायरवॉल संभवतः आंतरिक नेटवर्क पर उन वेब एप्लीकेशन के लिए सबसे अच्छे हैं जिन्हें केवल लोगों के एक सीमित समूह, जैसे कर्मचारियों, द्वारा उपयोग करने के लिए डिज़ाइन किया गया है।
- मिश्रित/हाइब्रिड मॉडल (समावेशी मॉडल) - एक हाइब्रिड सुरक्षा मॉडल व्हाइटलिस्टिंग और ब्लैकलिस्टिंग दोनों को मिश्रित करता है। सभी प्रकार के कॉन्फ़िगरेशन विवरणों पर निर्भर करते हुए, हाइब्रिड फ़ायरवॉल आंतरिक नेटवर्क पर वेब एप्लीकेशन और सार्वजनिक इंटरनेट पर वेब एप्लीकेशन दोनों के लिए सबसे अच्छा विकल्प हो सकते हैं। एक अच्छा परिदृश्य तब हो सकता है जब वेब-एप्लीकेशन सार्वजनिक इंटरनेट का सामना कर रहा हो (ब्लैकलिस्ट का उपयोग करें) जबकि एडमिन पैनल को उपयोगकर्ताओं के केवल एक सबसेट के लिए उजागर करने की आवश्यकता हो (व्हाइटलिस्ट का उपयोग करें)।
परीक्षण पद्धति:
कहाँ देखें:
- हमेशा सामान्य पोर्टों पर ध्यान दें जो WAF को उजागर करते हैं, अर्थात्
80, 443, 8000, 8080 और 8888 पोर्ट। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि WAF को HTTP सेवा चलाने वाले किसी भी पोर्ट पर आसानी से तैनात किया जा सकता है। पहले HTTP सेवा पोर्टों की गणना करना और फिर WAF की तलाश करना अच्छा है।
- कुछ WAF अनुरोधों में अपने स्वयं के कुकीज़ सेट करते हैं (जैसे Citrix Netscaler, Yunsuo WAF)।
- कुछ स्वयं को अलग-अलग हेडर के साथ जोड़ते हैं (जैसे Anquanbao WAF, Amazon AWS WAF)।
- कुछ अक्सर हेडर को बदलते हैं और हमलावर को भ्रमित करने के लिए वर्णों को गड़बड़ करते हैं (जैसे Netscaler, Big-IP)।
- कुछ
Server हेडर में स्वयं को उजागर करते हैं (जैसे Approach, WTS WAF)।
- कुछ WAF प्रतिक्रिया सामग्री में स्वयं को उजागर करते हैं (जैसे DotDefender, Armor, Sitelock)।
- अन्य WAF दुर्भावनापूर्ण अनुरोधों पर असामान्य प्रतिक्रिया कोड के साथ उत्तर देते हैं (जैसे WebKnight, 360 WAF)।
पहचान तकनीक:
WAF की पहचान करने के लिए, हमें इसे (नकली) उत्तेजित करना होगा।
- ब्राउज़र से एक सामान्य GET अनुरोध करें, इंटरसेप्ट करें और प्रतिक्रिया हेडर (विशेष रूप से कुकीज़) रिकॉर्ड करें।
- कमांड लाइन से अनुरोध करें (जैसे cURL), और प्रतिक्रिया सामग्री और हेडर का परीक्षण करें (कोई यूज़र-एजेंट शामिल नहीं)।
- यादृच्छिक खुले पोर्टों पर GET अनुरोध करें और बैनर प्राप्त करें जो WAF की पहचान को उजागर कर सकते हैं।
- लॉगिन पेजों पर, सामान्य (आसानी से पहचाने जाने योग्य) पेलोड जैसे
" or 1 = 1 -- इंजेक्ट करें।
- सर्च बार, संपर्क फ़ॉर्म और अन्य इनपुट फ़ील्ड में शोर करने वाले पेलोड जैसे
<script>alert()</script> इंजेक्ट करें।
- URL के अंत में एक यादृच्छिक पैरामीटर पर एक डमी
../../../etc/passwd संलग्न करें।
- URL के अंत में किसी भी यादृच्छिक पैरामीटर पर कुछ आकर्षक कीवर्ड जैसे
' OR SLEEP(5) OR ' जोड़ें।
- पुराने प्रोटोकॉल जैसे
HTTP/0.9 के साथ GET अनुरोध करें (HTTP/0.9 POST प्रकार की क्वेरी का समर्थन नहीं करता)।
- कई बार, WAF विभिन्न प्रकार की अंतःक्रियाओं पर
Server हेडर को बदलता है।
- ड्रॉप एक्शन तकनीक - सर्वर पर एक रॉ क्राफ्टेड FIN/RST पैकेट भेजें और प्रतिक्रिया की पहचान करें।
टिप: यह विधि HPing3 या Scapy जैसे उपकरणों से आसानी से प्राप्त की जा सकती है।
- साइड चैनल हमले - अनुरोध और प्रतिक्रिया सामग्री के समय व्यवहार की जाँच करें।
टिप: अधिक विवरण यहाँ एक ब्लॉगपोस्ट में पाए जा सकते हैं।