Translated ['src/pentesting-web/rate-limit-bypass.md'] to it

This commit is contained in:
Translator 2025-07-12 14:08:14 +00:00
parent 26827eae52
commit 0f5bacb5fe

View File

@ -40,9 +40,9 @@ Alcuni API gateway sono configurati per applicare il rate limiting in base alla
Accedere a un account prima di ogni tentativo, o di ogni serie di tentativi, potrebbe resettare il contatore del rate limit. Questo è particolarmente utile quando si testano le funzionalità di login. Utilizzare un attacco Pitchfork in strumenti come Burp Suite, per ruotare le credenziali ogni pochi tentativi e assicurarsi che i reindirizzamenti siano contrassegnati, può effettivamente riavviare i contatori del rate limit.
### Utilizzare Reti Proxy
### Utilizzare Reti di Proxy
Distribuire una rete di proxy per distribuire le richieste su più indirizzi IP può eludere efficacemente i limiti di rate basati su IP. Instradando il traffico attraverso vari proxy, ogni richiesta appare provenire da una fonte diversa, diluendo l'efficacia del rate limit.
Distribuire una rete di proxy per distribuire le richieste su più indirizzi IP può eludere efficacemente i limiti di rate basati su IP. Instradando il traffico attraverso vari proxy, ogni richiesta sembra provenire da una fonte diversa, diluendo l'efficacia del rate limit.
### Suddividere l'Attacco tra Diversi Account o Sessioni
@ -52,8 +52,66 @@ Se il sistema target applica limiti di rate su base per-account o per-sessione,
Nota che anche se è in atto un rate limit, dovresti provare a vedere se la risposta è diversa quando viene inviato l'OTP valido. In [**questo post**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), il cacciatore di bug ha scoperto che anche se un rate limit viene attivato dopo 20 tentativi non riusciti rispondendo con 401, se quello valido veniva inviato, si riceveva una risposta 200.
### Strumenti
---
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): hashtag-fuzz è uno strumento di fuzzing progettato per testare e eludere WAF e CDN. Sfruttando funzionalità avanzate come User-Agent e valori di header casuali, ritardi casuali, gestione del multi-threading, suddivisione selettiva delle wordlist e rotazione proxy Round Robin per ogni chunk, offre una soluzione robusta per i professionisti della sicurezza che mirano a identificare vulnerabilità nelle applicazioni web.
### Abusare del multiplexing HTTP/2 e del request pipelining (2023-2025)
Le implementazioni moderne del rate-limiter contano frequentemente **connessioni TCP** (o anche singole richieste HTTP/1.1) invece del *numero di stream HTTP/2* che una connessione contiene. Quando la stessa connessione TLS viene riutilizzata, un attaccante può aprire centinaia di stream paralleli, ognuno dei quali trasporta una richiesta separata, mentre il gateway deduce solo *una* richiesta dalla quota.
```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
```
Se il limitatore protegge solo `/verify` ma non `/api/v2/verify`, puoi anche combinare **confusione del percorso** con il multiplexing HTTP/2 per un *estremamente* veloce brute-forcing di OTP o credenziali.
> 🐾 **Suggerimento:** PortSwiggers [Turbo Intruder](https://portswigger.net/research/turbo-intruder) supporta HTTP/2 e ti consente di ottimizzare `maxConcurrentConnections` e `requestsPerConnection` per automatizzare questo attacco.
### Alias GraphQL e operazioni in batch
GraphQL consente al client di inviare **diverse query o mutazioni logicamente indipendenti in una singola richiesta** prefissandole con *alias*. Poiché il server esegue ogni alias ma il limitatore di velocità conta spesso solo *una* richiesta, questo è un bypass affidabile per il throttling di accesso o reset della password.
```graphql
mutation bruteForceOTP {
a: verify(code:"111111") { token }
b: verify(code:"222222") { token }
c: verify(code:"333333") { token }
# … add up to dozens of aliases …
}
```
Guarda la risposta: esattamente un alias restituirà 200 OK quando il codice corretto viene colpito, mentre gli altri sono soggetti a limitazione di velocità.
La tecnica è stata popolarizzata dalla ricerca di PortSwigger su “GraphQL batching & aliases” nel 2023 ed è stata responsabile di molti recenti pagamenti di bug-bounty.
### Abuso di endpoint REST *batch* o *bulk*
Alcune API espongono endpoint di supporto come `/v2/batch` o accettano un **array di oggetti** nel corpo della richiesta. Se il limitatore è posizionato solo davanti agli endpoint *legacy*, racchiudere più operazioni all'interno di una singola richiesta bulk può completamente eludere la protezione.
```json
[
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"123"}},
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"456"}}
]
```
### Timing the sliding-window
Un classico limitatore a token-bucket o leaky-bucket *si resetta* su un confine di tempo fisso (ad esempio, ogni minuto). Se la finestra è nota (ad esempio, tramite messaggi di errore come `X-RateLimit-Reset: 27`), invia il numero massimo di richieste consentite **subito prima** che il bucket si resetti, quindi invia immediatamente un altro pieno scoppio.
```
|<-- 60 s window ->|<-- 60 s window ->|
###### ######
```
Questa semplice ottimizzazione può più che raddoppiare il tuo throughput senza toccare alcuna altra tecnica di bypass.
---
## Strumenti
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): Strumento di fuzzing che supporta la randomizzazione degli header, liste di parole a chunk e rotazione dei proxy round-robin.
- [**https://github.com/ustayready/fireprox**](https://github.com/ustayready/fireprox): Crea automaticamente endpoint API Gateway AWS usa e getta in modo che ogni richiesta provenga da un indirizzo IP diverso perfetto per sconfiggere il throttling basato su IP.
- **Burp Suite IPRotate + estensione**: Utilizza un pool di proxy SOCKS/HTTP (o AWS API Gateway) per ruotare l'IP sorgente in modo trasparente durante gli attacchi *Intruder* e *Turbo Intruder*.
- **Turbo Intruder (BApp)**: Motore di attacco ad alte prestazioni che supporta il multiplexing HTTP/2; regola `requestsPerConnection` a 100-1000 per ridurre centinaia di richieste in una singola connessione.
## Riferimenti
- 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” (sezione *Connection-based throttling*) (2024) <https://portswigger.net/research/http2>
{{#include ../banners/hacktricks-training.md}}