Proxy / WAF Protections Bypass
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Bypass Nginx ACL Rules with Pathname Manipulation
तकनीकें इस शोध से.
Nginx नियम का उदाहरण:
Nginx बायपास को रोकने के लिए पथ सामान्यीकरण करता है। हालाँकि, यदि बैकएंड सर्वर एक अलग सामान्यीकरण करता है (ऐसे वर्णों को हटाना जो nginx नहीं हटाता) तो इस रक्षा को बायपास करना संभव हो सकता है।
NodeJS - Express
Nginx Version | Node.js Bypass Characters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
Flask
Nginx Version | Flask Bypass Characters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
Spring Boot
Nginx Version | Spring Boot Bypass Characters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
PHP-FPM
Nginx FPM कॉन्फ़िगरेशन:
Nginx को /admin.php
तक पहुँच को ब्लॉक करने के लिए कॉन्फ़िगर किया गया है लेकिन इसे /admin.php/index.php
तक पहुँचकर बायपास करना संभव है।
कैसे रोकें
Bypass Mod Security Rules
Path Confusion
इस पोस्ट में बताया गया है कि ModSecurity v3 (3.0.12 तक), REQUEST_FILENAME
वेरिएबल को गलत तरीके से लागू किया गया था, जिसमें वह पथ होना चाहिए था जो एक्सेस किया गया था (पैरामीटर की शुरुआत तक)। इसका कारण यह है कि यह पथ प्राप्त करने के लिए एक URL डिकोड करता है।
इसलिए, एक अनुरोध जैसे http://example.com/foo%3f';alert(1);foo=
में मोड सुरक्षा यह मान लेगा कि पथ केवल /foo
है क्योंकि %3f
को ?
में बदल दिया गया है जो URL पथ को समाप्त करता है, लेकिन वास्तव में सर्वर को प्राप्त होने वाला पथ /foo%3f';alert(1);foo=
होगा।
वेरिएबल REQUEST_BASENAME
और PATH_INFO
भी इस बग से प्रभावित हुए थे।
Mod Security के संस्करण 2 में कुछ समान हुआ था जिसने एक सुरक्षा को बायपास करने की अनुमति दी थी जो उपयोगकर्ता को बैकअप फ़ाइलों से संबंधित विशिष्ट एक्सटेंशन वाली फ़ाइलों तक पहुँचने से रोकती थी (जैसे .bak
) बस डॉट को %2e
में URL एन्कोड करके भेजकर, उदाहरण के लिए: https://example.com/backup%2ebak
.
Bypass AWS WAF ACL
Malformed Header
यह शोध का उल्लेख है कि AWS WAF नियमों को HTTP हेडर पर बायपास करना संभव था, एक "गलत स्वरूपित" हेडर भेजकर जिसे AWS द्वारा सही तरीके से पार्स नहीं किया गया लेकिन बैकएंड सर्वर द्वारा किया गया।
उदाहरण के लिए, X-Query हेडर में SQL इंजेक्शन के साथ निम्नलिखित अनुरोध भेजना:
यह AWS WAF को बायपास करना संभव था क्योंकि यह नहीं समझता था कि अगली पंक्ति हेडर के मान का हिस्सा है जबकि NODEJS सर्वर ने समझा (इसका समाधान किया गया)।
सामान्य WAF बायपास
अनुरोध आकार सीमाएँ
आम तौर पर WAFs के पास अनुरोधों की जांच के लिए एक निश्चित लंबाई सीमा होती है और यदि POST/PUT/PATCH अनुरोध इससे अधिक है, तो WAF अनुरोध की जांच नहीं करेगा।
AWS WAF के लिए, आप दस्तावेज़ देखें:
ऐप्लिकेशन लोड बैलेंसर और AWS AppSync सुरक्षा के लिए निरीक्षण किया जा सकने वाले वेब अनुरोध शरीर का अधिकतम आकार | 8 KB |
CloudFront, API गेटवे, Amazon Cognito, App Runner, और Verified Access सुरक्षा के लिए निरीक्षण किया जा सकने वाले वेब अनुरोध शरीर का अधिकतम आकार** | 64 KB |
पुराने वेब एप्लिकेशन फ़ायरवॉल जिनमें कोर नियम सेट 3.1 (या उससे कम) है, वे 128 KB से बड़े संदेशों की अनुमति देते हैं, लेकिन ये संदेश कमजोरियों के लिए जांचे नहीं जाएंगे। नए संस्करणों (कोर नियम सेट 3.2 या नए) के लिए, अधिकतम अनुरोध शरीर सीमा को अक्षम करके यही किया जा सकता है। जब एक अनुरोध आकार सीमा को पार करता है:
यदि रोकथाम मोड: अनुरोध को लॉग करता है और ब्लॉक करता है।
यदि पता लगाने का मोड: सीमा तक निरीक्षण करता है, बाकी को अनदेखा करता है, और यदि Content-Length
सीमा को पार करता है तो लॉग करता है।
डिफ़ॉल्ट रूप से, WAF केवल अनुरोध के पहले 8KB का निरीक्षण करता है। इसे उन्नत मेटाडेटा जोड़कर 128KB तक बढ़ाया जा सकता है।
128KB तक।
ओबफस्केशन
Unicode Compatability
Unicode सामान्यीकरण के कार्यान्वयन के आधार पर (अधिक जानकारी यहाँ), ऐसे वर्ण जो Unicode संगतता साझा करते हैं, WAF को बायपास करने और इच्छित पेलोड के रूप में निष्पादित करने में सक्षम हो सकते हैं। संगत वर्ण यहाँ पाए जा सकते हैं।
Example
H2C Smuggling
Upgrade Header SmugglingIP Rotation
https://github.com/ustayready/fireprox: ffuf के साथ उपयोग के लिए एक API गेटवे URL उत्पन्न करें
https://github.com/rootcathacking/catspin: fireprox के समान
https://github.com/PortSwigger/ip-rotate: Burp Suite प्लगइन जो API गेटवे IPs का उपयोग करता है
https://github.com/fyoorer/ShadowClone: एक गतिशील रूप से निर्धारित संख्या में कंटेनर उदाहरणों को इनपुट फ़ाइल के आकार और विभाजन कारक के आधार पर सक्रिय किया जाता है, जिसमें इनपुट को समानांतर निष्पादन के लिए टुकड़ों में विभाजित किया जाता है, जैसे 100 उदाहरण 10,000-लाइन इनपुट फ़ाइल से 100 टुकड़ों को संसाधित करते हैं जिसमें विभाजन कारक 100 पंक्तियाँ हैं।
Regex Bypasses
फायरवॉल पर regex फ़िल्टर को बायपास करने के लिए विभिन्न तकनीकों का उपयोग किया जा सकता है। उदाहरणों में वैकल्पिक केस, लाइन ब्रेक जोड़ना, और पेलोड को एन्कोड करना शामिल हैं। विभिन्न बायपास के लिए संसाधन PayloadsAllTheThings और OWASP पर पाए जा सकते हैं। नीचे दिए गए उदाहरण इस लेख से लिए गए थे।
Tools
nowafpls: Burp प्लगइन जो WAFs को लंबाई के द्वारा बायपास करने के लिए अनुरोधों में जंक डेटा जोड़ता है
References
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Last updated