Rate Limit Bypass

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Rate limit bypass techniques

Exploring Similar Endpoints

लक्षित एंडपॉइंट के विभिन्न रूपों पर ब्रूट फोर्स हमलों का प्रयास किया जाना चाहिए, जैसे कि /api/v3/sign-up, जिसमें विकल्प जैसे /Sing-up, /SignUp, /singup, /api/v1/sign-up, /api/sign-up आदि शामिल हैं।

Incorporating Blank Characters in Code or Parameters

कोड या पैरामीटर में %00, %0d%0a, %0d, %0a, %09, %0C, %20 जैसे खाली बाइट्स डालना एक उपयोगी रणनीति हो सकती है। उदाहरण के लिए, एक पैरामीटर को code=1234%0a में समायोजित करना इनपुट में भिन्नताओं के माध्यम से प्रयासों को बढ़ाने की अनुमति देता है, जैसे कि ईमेल पते में नई पंक्ति के अक्षर जोड़ना ताकि प्रयास सीमाओं को पार किया जा सके।

Manipulating IP Origin via Headers

हेडर को संशोधित करना ताकि धारित IP मूल को बदला जा सके, IP-आधारित दर सीमाओं से बचने में मदद कर सकता है। हेडर जैसे X-Originating-IP, X-Forwarded-For, X-Remote-IP, X-Remote-Addr, X-Client-IP, X-Host, X-Forwared-Host, जिसमें X-Forwarded-For के कई उदाहरणों का उपयोग करना शामिल है, विभिन्न IPs से अनुरोधों का अनुकरण करने के लिए समायोजित किया जा सकता है।

bash
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Host: 127.0.0.1
X-Forwared-Host: 127.0.0.1

# Double X-Forwarded-For header example
X-Forwarded-For:
X-Forwarded-For: 127.0.0.1

अन्य हेडर बदलना

अन्य अनुरोध हेडर जैसे कि उपयोगकर्ता-एजेंट और कुकीज़ को बदलना अनुशंसित है, क्योंकि इनका उपयोग अनुरोध पैटर्न की पहचान और ट्रैकिंग के लिए भी किया जा सकता है। इन हेडर्स को बदलने से अनुरोधकर्ता की गतिविधियों की पहचान और ट्रैकिंग को रोकने में मदद मिल सकती है।

API गेटवे व्यवहार का लाभ उठाना

कुछ API गेटवे को एंडपॉइंट और पैरामीटर के संयोजन के आधार पर दर सीमा लागू करने के लिए कॉन्फ़िगर किया गया है। पैरामीटर मानों को बदलकर या अनुरोध में गैर-प्रमुख पैरामीटर जोड़कर, गेटवे की दर-सीमित लॉजिक को बायपास करना संभव है, जिससे प्रत्येक अनुरोध अद्वितीय प्रतीत होता है। उदाहरण के लिए /resetpwd?someparam=1

प्रत्येक प्रयास से पहले अपने खाते में लॉग इन करना

प्रत्येक प्रयास से पहले या प्रयासों के हर सेट से पहले एक खाते में लॉग इन करना दर सीमा काउंटर को रीसेट कर सकता है। यह लॉगिन कार्यक्षमताओं का परीक्षण करते समय विशेष रूप से उपयोगी है। Burp Suite जैसे उपकरणों में एक पिचफोर्क हमले का उपयोग करके, हर कुछ प्रयासों में क्रेडेंशियल्स को घुमाना और यह सुनिश्चित करना कि फॉलो रीडायरेक्ट्स को चिह्नित किया गया है, दर सीमा काउंटर को प्रभावी ढंग से पुनः प्रारंभ कर सकता है।

प्रॉक्सी नेटवर्क का उपयोग करना

कई IP पतों के बीच अनुरोधों को वितरित करने के लिए प्रॉक्सी का एक नेटवर्क तैनात करना IP-आधारित दर सीमाओं को प्रभावी ढंग से बायपास कर सकता है। विभिन्न प्रॉक्सियों के माध्यम से ट्रैफ़िक को रूट करके, प्रत्येक अनुरोध एक अलग स्रोत से उत्पन्न होता हुआ प्रतीत होता है, जिससे दर सीमा की प्रभावशीलता कम हो जाती है।

विभिन्न खातों या सत्रों के बीच हमले को विभाजित करना

यदि लक्षित प्रणाली प्रति-खाता या प्रति-सत्र आधार पर दर सीमाएँ लागू करती है, तो कई खातों या सत्रों के बीच हमले या परीक्षण को वितरित करना पहचान से बचने में मदद कर सकता है। इस दृष्टिकोण के लिए कई पहचान या सत्र टोकन का प्रबंधन करना आवश्यक है, लेकिन यह अनुमेय सीमाओं के भीतर रहने के लिए लोड को प्रभावी ढंग से वितरित कर सकता है।

प्रयास करते रहना

ध्यान दें कि भले ही दर सीमा लागू हो, आपको यह देखने के लिए प्रयास करना चाहिए कि क्या जब मान्य OTP भेजा जाता है तो प्रतिक्रिया अलग होती है। इस पोस्ट में, बग शिकारी ने खोजा कि भले ही 20 असफल प्रयासों के बाद दर सीमा सक्रिय हो जाती है और 401 के साथ प्रतिक्रिया मिलती है, यदि मान्य OTP भेजा गया तो 200 प्रतिक्रिया प्राप्त होती है।


HTTP/2 मल्टीप्लेक्सिंग और अनुरोध पाइपलाइनिंग का दुरुपयोग (2023-2025)

आधुनिक दर-सीमित कार्यान्वयन अक्सर TCP कनेक्शनों (या यहां तक कि व्यक्तिगत HTTP/1.1 अनुरोधों) की गिनती करते हैं, बजाय इसके कि एक कनेक्शन में HTTP/2 स्ट्रीम की संख्या कितनी है। जब वही TLS कनेक्शन पुन: उपयोग किया जाता है, तो एक हमलावर सैकड़ों समानांतर स्ट्रीम खोल सकता है, प्रत्येक एक अलग अनुरोध ले जा रहा है, जबकि गेटवे केवल एक अनुरोध को कोटा से घटाता है।

bash
# Send 100 POST requests in a single HTTP/2 connection with curl
seq 1 100 | xargs -I@ -P0 curl -k --http2-prior-knowledge -X POST \
-H "Content-Type: application/json" \
-d '{"code":"@"}' https://target/api/v2/verify &>/dev/null

यदि लिमिटर केवल /verify की रक्षा करता है लेकिन /api/v2/verify की नहीं, तो आप पथ भ्रम को HTTP/2 मल्टीप्लेक्सिंग के साथ अत्यधिक उच्च गति OTP या क्रेडेंशियल ब्रूट-फोर्सिंग के लिए संयोजित कर सकते हैं।

🐾 टिप: PortSwigger का Turbo Intruder HTTP/2 का समर्थन करता है और आपको इस हमले को स्वचालित करने के लिए maxConcurrentConnections और requestsPerConnection को ठीक से समायोजित करने की अनुमति देता है।

GraphQL उपनाम और बैच ऑपरेशंस

GraphQL क्लाइंट को एकल अनुरोध में कई तार्किक रूप से स्वतंत्र प्रश्न या म्यूटेशन भेजने की अनुमति देता है, जिन्हें उपनाम के साथ पूर्ववर्ती किया जाता है। क्योंकि सर्वर हर उपनाम को निष्पादित करता है लेकिन रेट-लिमिटर अक्सर केवल एक अनुरोध की गिनती करता है, यह लॉगिन या पासवर्ड-रीसेट थ्रॉटलिंग के लिए एक विश्वसनीय बाईपास है।

graphql
mutation bruteForceOTP {
a: verify(code:"111111") { token }
b: verify(code:"222222") { token }
c: verify(code:"333333") { token }
# … add up to dozens of aliases …
}

देखें, जब सही कोड हिट होता है, तो ठीक एक उपनाम 200 OK लौटाएगा, जबकि अन्य को दर-सीमा में रखा गया है।

यह तकनीक 2023 में PortSwigger के "GraphQL batching & aliases" पर शोध द्वारा लोकप्रिय हुई और हाल के कई बग-बाउंटी भुगतान के लिए जिम्मेदार रही है।

batch या bulk REST एंडपॉइंट्स का दुरुपयोग

कुछ APIs सहायक एंडपॉइंट्स जैसे /v2/batch को उजागर करते हैं या अनुरोध शरीर में वस्तुओं की एक सरणी को स्वीकार करते हैं। यदि सीमित करने वाला केवल legacy एंडपॉइंट्स के सामने रखा गया है, तो एकल बल्क अनुरोध के अंदर कई संचालन को लपेटना सुरक्षा को पूरी तरह से दरकिनार कर सकता है।

json
[
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"123"}},
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"456"}}
]

Timing the sliding-window

एक क्लासिक टोकन-बकेट या लीक-बकेट लिमिटर रीसेट एक निश्चित समय सीमा पर होता है (उदाहरण के लिए, हर मिनट)। यदि विंडो ज्ञात है (जैसे कि त्रुटि संदेशों के माध्यम से जैसे X-RateLimit-Reset: 27), तो बकेट रीसेट होने से पहले अधिकतम अनुमति प्राप्त अनुरोधों की संख्या को फायर करें, फिर तुरंत एक और पूर्ण बर्स्ट फायर करें।

|<-- 60 s window ‑->|<-- 60 s window ‑->|
######                 ######

यह सरल ऑप्टिमाइजेशन आपके थ्रूपुट को अन्य बायपास तकनीक को छुए बिना दोगुना कर सकता है।


Tools

  • https://github.com/Hashtag-AMIN/hashtag-fuzz: फज़िंग टूल जो हेडर रैंडमाइजेशन, चंक्ड वर्ड-लिस्ट और राउंड-रॉबिन प्रॉक्सी रोटेशन का समर्थन करता है।
  • https://github.com/ustayready/fireprox: स्वचालित रूप से डिस्पोजेबल AWS API गेटवे एंडपॉइंट बनाता है ताकि हर अनुरोध एक अलग IP पते से उत्पन्न हो – IP-आधारित थ्रॉटलिंग को हराने के लिए एकदम सही।
  • Burp Suite – IPRotate + extension: Intruder और Turbo Intruder हमलों के दौरान स्रोत IP को पारदर्शी रूप से घुमाने के लिए SOCKS/HTTP प्रॉक्सियों (या AWS API गेटवे) का एक पूल का उपयोग करता है।
  • Turbo Intruder (BApp): HTTP/2 मल्टीप्लेक्सिंग का समर्थन करने वाला उच्च-प्रदर्शन हमला इंजन; सैकड़ों अनुरोधों को एकल कनेक्शन में समेटने के लिए requestsPerConnection को 100-1000 पर ट्यून करें।

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें