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

This commit is contained in:
Translator 2025-07-12 14:07:44 +00:00
parent 5ea9df5045
commit d73a3cc329

View File

@ -30,7 +30,7 @@ X-Forwarded-For: 127.0.0.1
```
### Diğer Başlıkları Değiştirme
Kullanıcı ajanı ve çerezler gibi diğer istek başlıklarını değiştirmek önerilir, çünkü bunlar da istek kalıplarını tanımlamak ve takip etmek için kullanılabilir. Bu başlıkları değiştirmek, istekte bulunan kişinin faaliyetlerinin tanınmasını ve izlenmesini önleyebilir.
Kullanıcı ajanı ve çerezler gibi diğer istek başlıklarını değiştirmek önerilir, çünkü bunlar da istek kalıplarını tanımlamak ve takip etmek için kullanılabilir. Bu başlıkların değiştirilmesi, talep edenin faaliyetlerinin tanınmasını ve izlenmesini önleyebilir.
### API Gateway Davranışını Kullanma
@ -52,8 +52,66 @@ Hedef sistem, oran sınırlamalarını hesap başına veya oturum başına uygul
Bir oran sınırlaması olsa bile, geçerli OTP gönderildiğinde yanıtın farklı olup olmadığını görmek için denemeye devam etmelisiniz. [**bu yazıda**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), hata avcısı, 20 başarısız denemeden sonra 401 ile yanıt verildiğinde bir oran sınırlamasının tetiklendiğini keşfetti, ancak geçerli olan gönderildiğinde 200 yanıtı alındı.
### Araçlar
---
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): hashtag-fuzz, WAF'ları ve CDN'leri test etmek ve aşmak için tasarlanmış bir fuzzing aracıdır. Rastgele Kullanıcı-Ajanı ve başlık değeri, rastgele gecikmeler, çoklu iş parçacığı yönetimi, kelime listelerinin seçici parçalara ayrılması ve her parça için Round Robin proxy döngüsü gibi gelişmiş özelliklerden yararlanarak, web uygulamalarındaki güvenlik açıklarını tanımlamayı amaçlayan güvenlik profesyonelleri için sağlam bir çözüm sunar.
### HTTP/2 çoklama ve istek boru hattı istismar etme (2023-2025)
Modern oran sınırlayıcı uygulamaları genellikle **TCP bağlantılarını** (veya hatta bireysel HTTP/1.1 isteklerini) sayar, bir bağlantının içerdiği *HTTP/2 akışlarının sayısı* yerine. Aynı TLS bağlantısı yeniden kullanıldığında, bir saldırgan yüzlerce paralel akış açabilir, her biri ayrı bir isteği taşırken, geçit yalnızca *bir* isteği kotalardan düşer.
```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
```
Eğer sınırlayıcı yalnızca `/verify`'yi koruyorsa ancak `/api/v2/verify`'yi korumuyorsa, **path confusion**'ı HTTP/2 çoklama ile birleştirerek *son derece* yüksek hızlı OTP veya kimlik bilgisi brute-forcing yapabilirsiniz.
> 🐾 **İpucu:** PortSwiggerin [Turbo Intruder](https://portswigger.net/research/turbo-intruder) HTTP/2'yi destekler ve bu saldırıyı otomatikleştirmek için `maxConcurrentConnections` ve `requestsPerConnection` değerlerini ince ayar yapmanıza olanak tanır.
### GraphQL takma adları ve toplu işlemler
GraphQL, istemcinin **bir istekte birden fazla mantıksal olarak bağımsız sorgu veya mutasyon göndermesine** olanak tanır; bunları *takma adlar* ile öne alarak. Sunucu her takma adı yürütse de, sınırlayıcı genellikle yalnızca *bir* isteği saydığından, bu, giriş veya şifre sıfırlama kısıtlaması için güvenilir bir geçiştir.
```graphql
mutation bruteForceOTP {
a: verify(code:"111111") { token }
b: verify(code:"222222") { token }
c: verify(code:"333333") { token }
# … add up to dozens of aliases …
}
```
Bakın, doğru kod gönderildiğinde tam olarak bir takma ad 200 OK dönecek, diğerleri ise hız sınırlı olacak.
Bu teknik, 2023'te PortSwigger'ın “GraphQL batching & aliases” konusundaki araştırmasıyla popüler hale geldi ve birçok son zamanlardaki bug-bounty ödemelerinin sorumlusu oldu.
### *Batch* veya *bulk* REST uç noktalarının kötüye kullanımı
Bazı API'ler, `/v2/batch` gibi yardımcı uç noktaları açar veya istek gövdesinde bir **nesne dizisi** kabul eder. Eğer sınırlayıcı yalnızca *legacy* uç noktalarının önünde yer alıyorsa, birden fazla işlemi tek bir toplu isteğin içine sarmak korumayı tamamen atlayabilir.
```json
[
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"123"}},
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"456"}}
]
```
### Kaydırmalı Pencereyi Zamanlama
Klasik bir token-bucket veya sızıntılı-bucket sınırlayıcı, sabit bir zaman sınırında *sıfırlanır* (örneğin, her dakika). Pencere biliniyorsa (örneğin, `X-RateLimit-Reset: 27` gibi hata mesajları aracılığıyla), bucket sıfırlanmadan **hemen önce** izin verilen maksimum sayıda isteği gönderin, ardından hemen başka bir tam patlama yapın.
```
|<-- 60 s window ->|<-- 60 s window ->|
###### ######
```
Bu basit optimizasyon, başka herhangi bir bypass tekniğine dokunmadan, verimliliğinizi iki katından fazla artırabilir.
---
## Araçlar
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): Başlık rastgeleleştirmeyi, parçalı kelime listelerini ve yuvarlak-rota proxy döngüsünü destekleyen fuzzing aracı.
- [**https://github.com/ustayready/fireprox**](https://github.com/ustayready/fireprox): Her isteğin farklı bir IP adresinden gelmesini sağlamak için otomatik olarak harcanabilir AWS API Gateway uç noktaları oluşturur IP tabanlı kısıtlamaları aşmak için mükemmel.
- **Burp Suite IPRotate + uzantı**: *Intruder* ve *Turbo Intruder* saldırıları sırasında kaynak IP'yi şeffaf bir şekilde döndürmek için bir SOCKS/HTTP proxy havuzu (veya AWS API Gateway) kullanır.
- **Turbo Intruder (BApp)**: HTTP/2 çoklama desteği olan yüksek performanslı saldırı motoru; yüzlerce isteği tek bir bağlantıda birleştirmek için `requestsPerConnection` değerini 100-1000 olarak ayarlayın.
## Referanslar
- PortSwigger Research “GraphQL aliasing ile rate limit aşma” (2023) <https://portswigger.net/research/graphql-authorization-bypass>
- PortSwigger Research “HTTP/2: Devamı Her Zaman Daha Kötüdür” (bölüm *Bağlantı tabanlı kısıtlama*) (2024) <https://portswigger.net/research/http2>
{{#include ../banners/hacktricks-training.md}}