Rate Limit Bypass
Reading time: 7 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Tehnike za zaobilaženje ograničenja brzine
Istraživanje sličnih krajnjih tačaka
Treba pokušati izvršiti brute force napade na varijacije ciljne krajnje tačke, kao što su /api/v3/sign-up
, uključujući alternative poput /Sing-up
, /SignUp
, /singup
, /api/v1/sign-up
, /api/sign-up
itd.
Uključivanje praznih karaktera u kod ili parametre
Umetanje praznih bajtova kao što su %00
, %0d%0a
, %0d
, %0a
, %09
, %0C
, %20
u kod ili parametre može biti korisna strategija. Na primer, podešavanje parametra na code=1234%0a
omogućava produžavanje pokušaja kroz varijacije u unosu, kao što je dodavanje karaktera novog reda u adresu e-pošte kako bi se zaobišla ograničenja pokušaja.
Manipulacija IP poreklom putem zaglavlja
Modifikovanje zaglavlja kako bi se promenilo percipirano IP poreklo može pomoći u izbegavanju ograničenja brzine zasnovanih na IP-u. Zaglavlja kao što su X-Originating-IP
, X-Forwarded-For
, X-Remote-IP
, X-Remote-Addr
, X-Client-IP
, X-Host
, X-Forwared-Host
, uključujući korišćenje više instanci X-Forwarded-For
, mogu se prilagoditi kako bi se simulirali zahtevi sa različitih IP adresa.
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
Promena drugih zaglavlja
Preporučuje se menjanje drugih zaglavlja zahteva kao što su user-agent i kolačići, jer se oni takođe mogu koristiti za identifikaciju i praćenje obrazaca zahteva. Promena ovih zaglavlja može sprečiti prepoznavanje i praćenje aktivnosti podnosioca zahteva.
Iskorišćavanje ponašanja API Gateway-a
Neki API gateway-i su konfigurisani da primenjuju ograničenje brzine na osnovu kombinacije krajnje tačke i parametara. Variranjem vrednosti parametara ili dodavanjem nevažnih parametara u zahtev, moguće je zaobići logiku ograničenja brzine gateway-a, čineći svaki zahtev jedinstvenim. Na primer /resetpwd?someparam=1
.
Prijavljivanje na svoj nalog pre svakog pokušaja
Prijavljivanje na nalog pre svakog pokušaja, ili svake grupe pokušaja, može resetovati brojač ograničenja brzine. Ovo je posebno korisno prilikom testiranja funkcionalnosti prijavljivanja. Korišćenje Pitchfork napada u alatima kao što je Burp Suite, za rotaciju akreditiva svakih nekoliko pokušaja i osiguranje da su praćeni preusmeravanja označeni, može efikasno restartovati brojače ograničenja brzine.
Korišćenje mreža proksija
Implementacija mreže proksija za distribuciju zahteva preko više IP adresa može efikasno zaobići ograničenja brzine zasnovana na IP-u. Usmeravanjem saobraćaja kroz različite proksije, svaki zahtev izgleda kao da potiče iz različitog izvora, razblažujući efikasnost ograničenja brzine.
Deljenje napada preko različitih naloga ili sesija
Ako ciljni sistem primenjuje ograničenja brzine na osnovu naloga ili sesije, distribucija napada ili testa preko više naloga ili sesija može pomoći u izbegavanju otkrivanja. Ovaj pristup zahteva upravljanje više identiteta ili sesijskih tokena, ali može efikasno raspodeliti opterećenje kako bi ostalo unutar dozvoljenih granica.
Nastavite da pokušavate
Imajte na umu da čak i ako je ograničenje brzine postavljeno, trebali biste pokušati da vidite da li je odgovor drugačiji kada je validan OTP poslat. U ovom postu, lovac na greške je otkrio da čak i ako je ograničenje brzine aktivirano nakon 20 neuspešnih pokušaja odgovaranjem sa 401, ako je validan poslat, primljen je odgovor 200.
Zloupotreba HTTP/2 multiplexing-a i pipelining-a zahteva (2023-2025)
Moderne implementacije ograničivača brzine često broje TCP veze (ili čak pojedinačne HTTP/1.1 zahteve) umesto broja HTTP/2 tokova koje veza sadrži. Kada se ista TLS veza ponovo koristi, napadač može otvoriti stotine paralelnih tokova, od kojih svaki nosi poseban zahtev, dok gateway samo odbija jedan zahtev iz kvote.
# 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
Ako limiter štiti samo /verify
ali ne i /api/v2/verify
, možete takođe kombinovati confuziju putanje sa HTTP/2 multiplexingom za ekstremno brzu brute-force napad na OTP ili akreditive.
🐾 Savjet: PortSwigger-ov Turbo Intruder podržava HTTP/2 i omogućava vam da precizno podesite
maxConcurrentConnections
irequestsPerConnection
za automatizaciju ovog napada.
GraphQL aliasi i grupisane operacije
GraphQL omogućava klijentu da pošalje several logically independent queries or mutations in a single request tako što ih prefiksira sa aliasima. Pošto server izvršava svaki alias, ali limiter često broji samo jedan zahtev, ovo je pouzdan zaobilaženje za ograničavanje prijavljivanja ili resetovanja lozinke.
mutation bruteForceOTP {
a: verify(code:"111111") { token }
b: verify(code:"222222") { token }
c: verify(code:"333333") { token }
# … add up to dozens of aliases …
}
Pogledajte odgovor: tačno jedan alias će vratiti 200 OK kada se ispravan kod aktivira, dok su ostali podložni ograničenju.
Tehnika je popularizovana istraživanjem PortSwigger-a o “GraphQL batchovanju i aliasima” 2023. godine i odgovorna je za mnoge nedavne isplate u okviru bug-bounty programa.
Zloupotreba batch ili bulk REST krajnjih tačaka
Neki API-ji izlažu pomoćne krajnje tačke kao što su /v2/batch
ili prihvataju niz objekata u telu zahteva. Ako je ograničivač postavljen samo ispred legacy krajnjih tačaka, obavijanje više operacija unutar jednog bulk zahteva može potpuno zaobići zaštitu.
[
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"123"}},
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"456"}}
]
Tajming kliznog prozora
Klasični token-bucket ili leaky-bucket limiter resetuje se na fiksnoj vremenskoj granici (na primer, svake minute). Ako je prozor poznat (npr. putem poruka o grešci kao što je X-RateLimit-Reset: 27
), pošaljite maksimalan dozvoljeni broj zahteva neposredno pre nego što se kofa resetuje, a zatim odmah pošaljite još jedan pun udar.
|<-- 60 s window ‑->|<-- 60 s window ‑->|
###### ######
Ova jednostavna optimizacija može više nego udvostručiti vašu propusnost bez dodirivanja bilo koje druge tehnike za zaobilaženje.
Alati
- https://github.com/Hashtag-AMIN/hashtag-fuzz: Alat za fuzzing koji podržava randomizaciju zaglavlja, delimične liste reči i rotaciju proxy servera u krug.
- https://github.com/ustayready/fireprox: Automatski kreira jednokratne AWS API Gateway krajnje tačke tako da svaka zahtev dolazi sa različite IP adrese – savršeno za prevazilaženje ograničenja zasnovanih na IP-u.
- Burp Suite – IPRotate + ekstenzija: Koristi bazen SOCKS/HTTP proxy servera (ili AWS API Gateway) za transparentnu rotaciju izvorne IP adrese tokom Intruder i Turbo Intruder napada.
- Turbo Intruder (BApp): Visoko performantni napadački motor koji podržava HTTP/2 multiplexing; podesite
requestsPerConnection
na 100-1000 da biste spojili stotine zahteva u jednu vezu.
Reference
- PortSwigger Research – “Zaobilaženje ograničenja brzine pomoću GraphQL aliasinga” (2023) https://portswigger.net/research/graphql-authorization-bypass
- PortSwigger Research – “HTTP/2: Nastavak je uvek gori” (odeljak Ograničenje zasnovano na vezi) (2024) https://portswigger.net/research/http2
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.