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 sr
This commit is contained in:
parent
edea3ce8dd
commit
d108c65ca9
@ -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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user