Rate Limit Bypass

Reading time: 7 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Τεχνικές παράκαμψης περιορισμού ρυθμού

Εξερεύνηση παρόμοιων τελικών σημείων

Πρέπει να γίνουν προσπάθειες για την εκτέλεση επιθέσεων brute force σε παραλλαγές του στοχευμένου τελικού σημείου, όπως /api/v3/sign-up, συμπεριλαμβανομένων εναλλακτικών όπως /Sing-up, /SignUp, /singup, /api/v1/sign-up, /api/sign-up κ.λπ.

Ενσωμάτωση κενών χαρακτήρων σε κώδικα ή παραμέτρους

Η εισαγωγή κενών byte όπως %00, %0d%0a, %0d, %0a, %09, %0C, %20 σε κώδικα ή παραμέτρους μπορεί να είναι μια χρήσιμη στρατηγική. Για παράδειγμα, η προσαρμογή μιας παραμέτρου σε code=1234%0a επιτρέπει την επέκταση προσπαθειών μέσω παραλλαγών στην είσοδο, όπως η προσθήκη χαρακτήρων νέας γραμμής σε μια διεύθυνση email για να παρακαμφθούν οι περιορισμοί προσπαθειών.

Χειρισμός προέλευσης IP μέσω κεφαλίδων

Η τροποποίηση κεφαλίδων για την αλλαγή της αντιληπτής προέλευσης 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, μπορούν να προσαρμοστούν για να προσομοιώσουν αιτήματα από διαφορετικές IP.

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

Αλλαγή Άλλων Επικεφαλίδων

Η τροποποίηση άλλων επικεφαλίδων αιτήσεων όπως ο user-agent και τα cookies συνιστάται, καθώς αυτές μπορούν επίσης να χρησιμοποιηθούν για την αναγνώριση και παρακολούθηση προτύπων αιτήσεων. Η αλλαγή αυτών των επικεφαλίδων μπορεί να αποτρέψει την αναγνώριση και την παρακολούθηση των δραστηριοτήτων του αιτούντος.

Εκμετάλλευση Συμπεριφοράς API Gateway

Ορισμένα API gateways είναι ρυθμισμένα να εφαρμόζουν περιορισμούς ρυθμού με βάση τον συνδυασμό του endpoint και των παραμέτρων. Με την ποικιλία των τιμών παραμέτρων ή την προσθήκη μη σημαντικών παραμέτρων στην αίτηση, είναι δυνατόν να παρακαμφθεί η λογική περιορισμού ρυθμού του gateway, κάνοντάς την κάθε αίτηση να φαίνεται μοναδική. Για παράδειγμα /resetpwd?someparam=1.

Σύνδεση στον Λογαριασμό σας Πριν από Κάθε Απόπειρα

Η σύνδεση σε έναν λογαριασμό πριν από κάθε απόπειρα, ή κάθε σετ από προσπαθειών, μπορεί να επαναφέρει τον μετρητή περιορισμού ρυθμού. Αυτό είναι ιδιαίτερα χρήσιμο κατά τη δοκιμή λειτουργιών σύνδεσης. Η χρήση μιας επίθεσης Pitchfork σε εργαλεία όπως το Burp Suite, για την περιστροφή διαπιστευτηρίων κάθε λίγες απόπειρες και τη διασφάλιση ότι οι ανακατευθύνσεις είναι σημειωμένες, μπορεί να επανεκκινήσει αποτελεσματικά τους μετρητές περιορισμού ρυθμού.

Χρήση Δικτύων Proxy

Η ανάπτυξη ενός δικτύου proxies για τη διανομή των αιτήσεων σε πολλές διευθύνσεις IP μπορεί να παρακάμψει αποτελεσματικά τους περιορισμούς ρυθμού που βασίζονται σε IP. Με την δρομολόγηση της κίνησης μέσω διαφόρων proxies, κάθε αίτηση φαίνεται να προέρχεται από διαφορετική πηγή, αραιώνοντας την αποτελεσματικότητα του περιορισμού ρυθμού.

Διαχωρισμός της Επίθεσης σε Διαφορετικούς Λογαριασμούς ή Συνεδρίες

Εάν το στοχευόμενο σύστημα εφαρμόζει περιορισμούς ρυθμού ανά λογαριασμό ή ανά συνεδρία, η διανομή της επίθεσης ή της δοκιμής σε πολλούς λογαριασμούς ή συνεδρίες μπορεί να βοηθήσει στην αποφυγή ανίχνευσης. Αυτή η προσέγγιση απαιτεί τη διαχείριση πολλαπλών ταυτοτήτων ή tokens συνεδρίας, αλλά μπορεί να διανείμει αποτελεσματικά το φορτίο για να παραμείνει εντός των επιτρεπτών ορίων.

Συνεχίστε να Δοκιμάζετε

Σημειώστε ότι ακόμη και αν υπάρχει περιορισμός ρυθμού, θα πρέπει να προσπαθήσετε να δείτε αν η απόκριση είναι διαφορετική όταν αποστέλλεται το έγκυρο OTP. Στο αυτό το άρθρο, ο κυνηγός σφαλμάτων ανακάλυψε ότι ακόμη και αν ενεργοποιηθεί περιορισμός ρυθμού μετά από 20 αποτυχημένες απόπειρες με απόκριση 401, αν το έγκυρο αποσταλεί, ελήφθη απόκριση 200.


Κατάχρηση του HTTP/2 multiplexing & request pipelining (2023-2025)

Οι σύγχρονες υλοποιήσεις περιοριστών ρυθμού συχνά μετρούν TCP connections (ή ακόμη και μεμονωμένα HTTP/1.1 requests) αντί για τον αριθμό των HTTP/2 streams που περιέχει μια σύνδεση. Όταν η ίδια TLS σύνδεση επαναχρησιμοποιείται, ένας επιτιθέμενος μπορεί να ανοίξει εκατοντάδες παράλληλα streams, το καθένα μεταφέροντας μια ξεχωριστή αίτηση, ενώ το gateway αφαιρεί μόνο μία αίτηση από την ποσόστωση.

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, μπορείτε επίσης να συνδυάσετε path confusion με HTTP/2 multiplexing για εξαιρετικά υψηλή ταχύτητα OTP ή brute-forcing διαπιστευτηρίων.

🐾 Tip: Το PortSwigger’s Turbo Intruder υποστηρίζει HTTP/2 και σας επιτρέπει να ρυθμίσετε το maxConcurrentConnections και requestsPerConnection για να αυτοματοποιήσετε αυτή την επίθεση.

GraphQL aliases & batched operations

Το GraphQL επιτρέπει στον πελάτη να στείλει αρκετά λογικά ανεξάρτητα queries ή mutations σε ένα μόνο αίτημα προσθέτοντας aliases. Επειδή ο διακομιστής εκτελεί κάθε alias αλλά ο περιοριστής ρυθμού συχνά μετρά μόνο μία αίτηση, αυτό είναι μια αξιόπιστη παράκαμψη για throttling σύνδεσης ή επαναφοράς κωδικού πρόσβασης.

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

Κοιτάξτε την απάντηση: ακριβώς ένα alias θα επιστρέψει 200 OK όταν χτυπηθεί ο σωστός κωδικός, ενώ οι άλλοι είναι περιορισμένοι σε ρυθμό.

Η τεχνική δημοσιοποιήθηκε από την έρευνα της PortSwigger σχετικά με το “GraphQL batching & aliases” το 2023 και έχει ευθύνη για πολλές πρόσφατες πληρωμές bug-bounty.

Κατάχρηση των batch ή bulk REST endpoints

Ορισμένα APIs εκθέτουν βοηθητικά endpoints όπως το /v2/batch ή δέχονται μια array of objects στο σώμα του αιτήματος. Εάν ο περιοριστής τοποθετηθεί μπροστά μόνο από τα legacy endpoints, η περιτύλιξη πολλαπλών λειτουργιών μέσα σε ένα μόνο bulk αίτημα μπορεί να παρακάμψει εντελώς την προστασία.

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

Χρονομέτρηση του sliding-window

Ένας κλασικός περιοριστής token-bucket ή leaky-bucket επαναφέρεται σε μια σταθερή χρονική οριοθέτηση (για παράδειγμα, κάθε λεπτό). Εάν το παράθυρο είναι γνωστό (π.χ. μέσω μηνυμάτων σφάλματος όπως X-RateLimit-Reset: 27), στείλτε τον μέγιστο επιτρεπόμενο αριθμό αιτημάτων λίγο πριν η δεξαμενή επαναφερθεί, στη συνέχεια στείλτε αμέσως μια άλλη πλήρη έκρηξη.

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

Αυτή η απλή βελτιστοποίηση μπορεί να διπλασιάσει την απόδοσή σας χωρίς να αγγίξετε καμία άλλη τεχνική παράκαμψης.


Εργαλεία

  • https://github.com/Hashtag-AMIN/hashtag-fuzz: Εργαλείο fuzzing που υποστηρίζει τυχαία επικεφαλίδα, κατακερματισμένες λίστες λέξεων και περιστροφή proxy round-robin.
  • https://github.com/ustayready/fireprox: Δημιουργεί αυτόματα αναλώσιμα endpoints AWS API Gateway ώστε κάθε αίτημα να προέρχεται από διαφορετική διεύθυνση IP – τέλειο για να νικήσει την περιορισμένη ταχύτητα βάσει IP.
  • Burp Suite – IPRotate + επέκταση: Χρησιμοποιεί μια δεξαμενή SOCKS/HTTP proxies (ή AWS API Gateway) για να περιστρέφει τη διεύθυνση IP προέλευσης διαφανώς κατά τη διάρκεια επιθέσεων Intruder και Turbo Intruder.
  • Turbo Intruder (BApp): Μηχανή επίθεσης υψηλής απόδοσης που υποστηρίζει HTTP/2 multiplexing; ρυθμίστε το requestsPerConnection σε 100-1000 για να συγχωνεύσετε εκατοντάδες αιτήματα σε μία μόνο σύνδεση.

Αναφορές

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks