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

This commit is contained in:
Translator 2025-07-12 14:07:50 +00:00
parent edea3ce8dd
commit d108c65ca9

View File

@ -34,15 +34,15 @@ Preporučuje se menjanje drugih zaglavlja zahteva kao što su user-agent i kola
### Iskorišćavanje ponašanja API Gateway-a
Neki API gateway-evi su konfigurisani da primenjuju ograničenja 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`.
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 svakog skupa 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 kredencijala svakih nekoliko pokušaja i osiguranje da su praćeni preusmeravanja označeni, može efikasno restartovati brojače ograničenja brzine.
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, razvodnjavajući efikasnost ograničenja brzine.
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
@ -50,10 +50,68 @@ Ako ciljni sistem primenjuje ograničenja brzine na osnovu naloga ili sesije, di
### Nastavite da pokušavate
Imajte na umu da čak i ako je ograničenje brzine postavljeno, trebate pokušati da vidite da li je odgovor drugačiji kada se validni OTP pošalje. U [**ovom postu**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), lovac na greške je otkrio da čak i ako se ograničenje brzine aktivira nakon 20 neuspešnih pokušaja odgovaranjem sa 401, ako je validni poslat, primljen je odgovor 200.
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**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), 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.
### Alati
---
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): hashtag-fuzz je alat za fuzzing dizajniran za testiranje i zaobilaženje WAF-ova i CDN-ova. Korišćenjem naprednih funkcija kao što su nasumični User-Agent i vrednost zaglavlja, nasumična kašnjenja, upravljanje višestrukim nitima, selektivno deljenje rečnika i Round Robin rotacija proksija za svaki deljeni deo, nudi robusno rešenje za profesionalce u bezbednosti koji teže identifikaciji ranjivosti u web aplikacijama.
### 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.
```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
```
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](https://portswigger.net/research/turbo-intruder) podržava HTTP/2 i omogućava vam da precizno podesite `maxConcurrentConnections` i `requestsPerConnection` 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.
```graphql
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.
```json
[
{"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**](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**](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>
{{#include ../banners/hacktricks-training.md}}