mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/rate-limit-bypass.md'] to el
This commit is contained in:
parent
f53479c254
commit
b00026f9ad
@ -4,17 +4,17 @@
|
||||
|
||||
## Τεχνικές παράκαμψης περιορισμού ρυθμού
|
||||
|
||||
### Εξερεύνηση Παρόμοιων Τερματικών Σημείων
|
||||
### Εξερεύνηση παρόμοιων τελικών σημείων
|
||||
|
||||
Πρέπει να γίνουν προσπάθειες για την εκτέλεση επιθέσεων brute force σε παραλλαγές του στοχευμένου τερματικού σημείου, όπως το `/api/v3/sign-up`, συμπεριλαμβανομένων εναλλακτικών όπως το `/Sing-up`, `/SignUp`, `/singup`, `/api/v1/sign-up`, `/api/sign-up` κ.λπ.
|
||||
Πρέπει να γίνουν προσπάθειες για την εκτέλεση επιθέσεων 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 για να παρακαμφθούν οι περιορισμοί προσπαθειών.
|
||||
Η εισαγωγή κενών byte όπως `%00`, `%0d%0a`, `%0d`, `%0a`, `%09`, `%0C`, `%20` σε κώδικα ή παραμέτρους μπορεί να είναι μια χρήσιμη στρατηγική. Για παράδειγμα, η προσαρμογή μιας παραμέτρου σε `code=1234%0a` επιτρέπει την επέκταση προσπαθειών μέσω παραλλαγών στην είσοδο, όπως η προσθήκη χαρακτήρων νέας γραμμής σε μια διεύθυνση email για να παρακαμφθούν οι περιορισμοί προσπαθειών.
|
||||
|
||||
### Χειρισμός Προέλευσης IP μέσω Επικεφαλίδων
|
||||
### Χειρισμός προέλευσης 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.
|
||||
Η τροποποίηση κεφαλίδων για την αλλαγή της αντιληπτής προέλευσης 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
|
||||
@ -30,7 +30,7 @@ X-Forwarded-For: 127.0.0.1
|
||||
```
|
||||
### Αλλαγή Άλλων Επικεφαλίδων
|
||||
|
||||
Η τροποποίηση άλλων επικεφαλίδων αιτήσεων, όπως ο user-agent και τα cookies, συνιστάται, καθώς αυτές μπορούν επίσης να χρησιμοποιηθούν για την αναγνώριση και παρακολούθηση προτύπων αιτήσεων. Η αλλαγή αυτών των επικεφαλίδων μπορεί να αποτρέψει την αναγνώριση και την παρακολούθηση των δραστηριοτήτων του αιτούντος.
|
||||
Η τροποποίηση άλλων επικεφαλίδων αιτήσεων όπως ο user-agent και τα cookies συνιστάται, καθώς αυτές μπορούν επίσης να χρησιμοποιηθούν για την αναγνώριση και παρακολούθηση προτύπων αιτήσεων. Η αλλαγή αυτών των επικεφαλίδων μπορεί να αποτρέψει την αναγνώριση και την παρακολούθηση των δραστηριοτήτων του αιτούντος.
|
||||
|
||||
### Εκμετάλλευση Συμπεριφοράς API Gateway
|
||||
|
||||
@ -38,7 +38,7 @@ X-Forwarded-For: 127.0.0.1
|
||||
|
||||
### Σύνδεση στον Λογαριασμό σας Πριν από Κάθε Απόπειρα
|
||||
|
||||
Η σύνδεση σε έναν λογαριασμό πριν από κάθε απόπειρα, ή κάθε σύνολο απόπειρων, μπορεί να επαναφέρει τον μετρητή περιορισμού ρυθμού. Αυτό είναι ιδιαίτερα χρήσιμο κατά τη δοκιμή λειτουργιών σύνδεσης. Η χρήση μιας επίθεσης Pitchfork σε εργαλεία όπως το Burp Suite, για την περιστροφή διαπιστευτηρίων κάθε λίγες απόπειρες και τη διασφάλιση ότι οι ανακατευθύνσεις είναι σημειωμένες, μπορεί να επανεκκινήσει αποτελεσματικά τους μετρητές περιορισμού ρυθμού.
|
||||
Η σύνδεση σε έναν λογαριασμό πριν από κάθε απόπειρα, ή κάθε σετ από προσπαθειών, μπορεί να επαναφέρει τον μετρητή περιορισμού ρυθμού. Αυτό είναι ιδιαίτερα χρήσιμο κατά τη δοκιμή λειτουργιών σύνδεσης. Η χρήση μιας επίθεσης Pitchfork σε εργαλεία όπως το Burp Suite, για την περιστροφή διαπιστευτηρίων κάθε λίγες απόπειρες και τη διασφάλιση ότι οι ανακατευθύνσεις είναι σημειωμένες, μπορεί να επανεκκινήσει αποτελεσματικά τους μετρητές περιορισμού ρυθμού.
|
||||
|
||||
### Χρήση Δικτύων Proxy
|
||||
|
||||
@ -46,14 +46,72 @@ X-Forwarded-For: 127.0.0.1
|
||||
|
||||
### Διαχωρισμός της Επίθεσης σε Διαφορετικούς Λογαριασμούς ή Συνεδρίες
|
||||
|
||||
Εάν το στοχευόμενο σύστημα εφαρμόζει περιορισμούς ρυθμού σε βάση ανά λογαριασμό ή ανά συνεδρία, η διανομή της επίθεσης ή της δοκιμής σε πολλούς λογαριασμούς ή συνεδρίες μπορεί να βοηθήσει στην αποφυγή ανίχνευσης. Αυτή η προσέγγιση απαιτεί τη διαχείριση πολλαπλών ταυτοτήτων ή tokens συνεδρίας, αλλά μπορεί να διανείμει αποτελεσματικά το φορτίο για να παραμείνει εντός των επιτρεπτών ορίων.
|
||||
Εάν το στοχευόμενο σύστημα εφαρμόζει περιορισμούς ρυθμού ανά λογαριασμό ή ανά συνεδρία, η διανομή της επίθεσης ή της δοκιμής σε πολλούς λογαριασμούς ή συνεδρίες μπορεί να βοηθήσει στην αποφυγή ανίχνευσης. Αυτή η προσέγγιση απαιτεί τη διαχείριση πολλαπλών ταυτοτήτων ή tokens συνεδρίας, αλλά μπορεί να διανείμει αποτελεσματικά το φορτίο για να παραμείνει εντός των επιτρεπτών ορίων.
|
||||
|
||||
### Συνεχίστε να Δοκιμάζετε
|
||||
|
||||
Σημειώστε ότι ακόμη και αν υπάρχει περιορισμός ρυθμού, θα πρέπει να προσπαθήσετε να δείτε αν η απάντηση είναι διαφορετική όταν αποστέλλεται το έγκυρο OTP. Σε [**αυτή την ανάρτηση**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), ο κυνηγός σφαλμάτων ανακάλυψε ότι ακόμη και αν ενεργοποιηθεί περιορισμός ρυθμού μετά από 20 αποτυχημένες απόπειρες με απάντηση 401, αν το έγκυρο αποσταλεί, ελήφθη απάντηση 200.
|
||||
Σημειώστε ότι ακόμη και αν υπάρχει περιορισμός ρυθμού, θα πρέπει να προσπαθήσετε να δείτε αν η απόκριση είναι διαφορετική όταν αποστέλλεται το έγκυρο OTP. Στο [**αυτό το άρθρο**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), ο κυνηγός σφαλμάτων ανακάλυψε ότι ακόμη και αν ενεργοποιηθεί περιορισμός ρυθμού μετά από 20 αποτυχημένες απόπειρες με απόκριση 401, αν το έγκυρο αποσταλεί, ελήφθη απόκριση 200.
|
||||
|
||||
### Εργαλεία
|
||||
---
|
||||
|
||||
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): το hashtag-fuzz είναι ένα εργαλείο fuzzing σχεδιασμένο για να δοκιμάζει και να παρακάμπτει WAFs και CDNs. Εκμεταλλευόμενο προηγμένα χαρακτηριστικά όπως τυχαίος User-Agent και τιμή επικεφαλίδας, τυχαίες καθυστερήσεις, διαχείριση πολλαπλών νημάτων, επιλεκτική κοπή λιστών λέξεων και περιστροφή proxy Round Robin για κάθε κομμένο, προσφέρει μια ισχυρή λύση για επαγγελματίες ασφαλείας που στοχεύουν στην αναγνώριση ευπαθειών σε διαδικτυακές εφαρμογές.
|
||||
### Κατάχρηση του 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](https://portswigger.net/research/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**](https://github.com/Hashtag-AMIN/hashtag-fuzz): Εργαλείο fuzzing που υποστηρίζει τυχαία επικεφαλίδα, κατακερματισμένες λίστες λέξεων και περιστροφή proxy round-robin.
|
||||
- [**https://github.com/ustayready/fireprox**](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 για να συγχωνεύσετε εκατοντάδες αιτήματα σε μία μόνο σύνδεση.
|
||||
|
||||
## Αναφορές
|
||||
|
||||
- PortSwigger Research – “Bypassing rate limits with GraphQL aliasing” (2023) <https://portswigger.net/research/graphql-authorization-bypass>
|
||||
- PortSwigger Research – “HTTP/2: The Sequel is Always Worse” (τμήμα *Connection-based throttling*) (2024) <https://portswigger.net/research/http2>
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user