Contournement de la Limite de Taux

Reading time: 8 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Techniques de contournement de la limite de taux

Exploration des Points de Terminaison Similaires

Des tentatives devraient ĂȘtre faites pour effectuer des attaques par force brute sur des variations du point de terminaison ciblĂ©, comme /api/v3/sign-up, y compris des alternatives comme /Sing-up, /SignUp, /singup, /api/v1/sign-up, /api/sign-up, etc.

Incorporation de CaractĂšres Vides dans le Code ou les ParamĂštres

L'insertion de bytes vides comme %00, %0d%0a, %0d, %0a, %09, %0C, %20 dans le code ou les paramĂštres peut ĂȘtre une stratĂ©gie utile. Par exemple, ajuster un paramĂštre Ă  code=1234%0a permet d'Ă©tendre les tentatives Ă  travers des variations d'entrĂ©e, comme l'ajout de caractĂšres de nouvelle ligne Ă  une adresse e-mail pour contourner les limitations de tentatives.

Manipulation de l'Origine IP via les En-tĂȘtes

Modifier les en-tĂȘtes pour altĂ©rer l'origine IP perçue peut aider Ă  Ă©chapper Ă  la limitation de taux basĂ©e sur l'IP. Des en-tĂȘtes tels que X-Originating-IP, X-Forwarded-For, X-Remote-IP, X-Remote-Addr, X-Client-IP, X-Host, X-Forwared-Host, y compris l'utilisation de plusieurs instances de X-Forwarded-For, peuvent ĂȘtre ajustĂ©s pour simuler des requĂȘtes provenant de diffĂ©rentes IP.

bash
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

Changer d'autres en-tĂȘtes

Il est recommandĂ© de modifier d'autres en-tĂȘtes de requĂȘte tels que l'agent utilisateur et les cookies, car ceux-ci peuvent Ă©galement ĂȘtre utilisĂ©s pour identifier et suivre les modĂšles de requĂȘtes. Changer ces en-tĂȘtes peut empĂȘcher la reconnaissance et le suivi des activitĂ©s du demandeur.

Tirer parti du comportement de la passerelle API

Certaines passerelles API sont configurĂ©es pour appliquer des limites de taux en fonction de la combinaison de l'endpoint et des paramĂštres. En variant les valeurs des paramĂštres ou en ajoutant des paramĂštres non significatifs Ă  la requĂȘte, il est possible de contourner la logique de limitation de taux de la passerelle, rendant chaque requĂȘte unique. Par exemple /resetpwd?someparam=1.

Se connecter Ă  votre compte avant chaque tentative

Se connecter à un compte avant chaque tentative, ou chaque ensemble de tentatives, peut réinitialiser le compteur de limite de taux. Cela est particuliÚrement utile lors des tests de fonctionnalités de connexion. Utiliser une attaque Pitchfork dans des outils comme Burp Suite, pour faire tourner les identifiants toutes les quelques tentatives et s'assurer que les redirections sont marquées, peut efficacement redémarrer les compteurs de limite de taux.

Utiliser des réseaux de proxy

DĂ©ployer un rĂ©seau de proxies pour distribuer les requĂȘtes sur plusieurs adresses IP peut contourner efficacement les limites de taux basĂ©es sur l'IP. En acheminant le trafic Ă  travers divers proxies, chaque requĂȘte semble provenir d'une source diffĂ©rente, diluant ainsi l'efficacitĂ© de la limite de taux.

Répartir l'attaque sur différents comptes ou sessions

Si le systÚme cible applique des limites de taux sur une base par compte ou par session, répartir l'attaque ou le test sur plusieurs comptes ou sessions peut aider à éviter la détection. Cette approche nécessite de gérer plusieurs identités ou jetons de session, mais peut efficacement répartir la charge pour rester dans les limites autorisées.

Continuez Ă  essayer

Notez que mĂȘme si une limite de taux est en place, vous devriez essayer de voir si la rĂ©ponse est diffĂ©rente lorsque le OTP valide est envoyĂ©. Dans ce post, le chasseur de bugs a dĂ©couvert que mĂȘme si une limite de taux est dĂ©clenchĂ©e aprĂšs 20 tentatives infructueuses en rĂ©pondant avec 401, si le valide Ă©tait envoyĂ©, une rĂ©ponse 200 Ă©tait reçue.


Abuser du multiplexage HTTP/2 et du pipelining des requĂȘtes (2023-2025)

Les implĂ©mentations modernes de limiteurs de taux comptent frĂ©quemment les connexions TCP (ou mĂȘme les requĂȘtes HTTP/1.1 individuelles) au lieu du nombre de flux HTTP/2 qu'une connexion contient. Lorsque la mĂȘme connexion TLS est rĂ©utilisĂ©e, un attaquant peut ouvrir des centaines de flux parallĂšles, chacun transportant une requĂȘte distincte, tandis que la passerelle ne dĂ©duit qu'une requĂȘte du 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

Si le limiteur protĂšge uniquement /verify mais pas /api/v2/verify, vous pouvez Ă©galement combiner la confusion de chemin avec le multiplexage HTTP/2 pour un extrĂȘmement rapide OTP ou brute-forcing de crĂ©dentiels.

đŸŸ Astuce : Le Turbo Intruder de PortSwigger prend en charge HTTP/2 et vous permet d'affiner maxConcurrentConnections et requestsPerConnection pour automatiser cette attaque.

Aliases GraphQL & opérations groupées

GraphQL permet au client d'envoyer plusieurs requĂȘtes ou mutations logiquement indĂ©pendantes dans une seule requĂȘte en les prĂ©fixant avec des alias. Comme le serveur exĂ©cute chaque alias mais que le limiteur de dĂ©bit compte souvent seulement une requĂȘte, c'est un contournement fiable pour le throttling de connexion ou de rĂ©initialisation de mot de passe.

graphql
mutation bruteForceOTP {
a: verify(code:"111111") { token }
b: verify(code:"222222") { token }
c: verify(code:"333333") { token }
# 
 add up to dozens of aliases 

}

Regardez la réponse : exactement un alias renverra 200 OK lorsque le code correct est atteint, tandis que les autres sont soumis à une limitation de taux.

La technique a Ă©tĂ© popularisĂ©e par la recherche de PortSwigger sur “GraphQL batching & aliases” en 2023 et a Ă©tĂ© responsable de nombreux paiements rĂ©cents de bug-bounty.

Abus des points de terminaison REST batch ou bulk

Certaines API exposent des points de terminaison d'assistance tels que /v2/batch ou acceptent un tableau d'objets dans le corps de la requĂȘte. Si le limiteur est placĂ© uniquement devant les points de terminaison legacy, envelopper plusieurs opĂ©rations dans une seule requĂȘte bulk peut complĂštement contourner la protection.

json
[
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"123"}},
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"456"}}
]

ChronomĂ©trage de la fenĂȘtre glissante

Un limiteur classique de type token-bucket ou leaky-bucket se rĂ©initialise Ă  une frontiĂšre temporelle fixe (par exemple, chaque minute). Si la fenĂȘtre est connue (par exemple, via des messages d'erreur tels que X-RateLimit-Reset: 27), effectuez le nombre maximum de requĂȘtes autorisĂ©es juste avant que le seau ne se rĂ©initialise, puis effectuez immĂ©diatement une autre pleine rafale.

|<-- 60 s window ‑->|<-- 60 s window ‑->|
######                 ######

Cette simple optimisation peut plus que doubler votre débit sans toucher à aucune autre technique de contournement.


Outils

  • https://github.com/Hashtag-AMIN/hashtag-fuzz : Outil de fuzzing qui prend en charge la randomisation des en-tĂȘtes, des listes de mots en morceaux et la rotation de proxy en round-robin.
  • https://github.com/ustayready/fireprox : CrĂ©e automatiquement des points de terminaison AWS API Gateway jetables afin que chaque requĂȘte provienne d'une adresse IP diffĂ©rente – parfait pour vaincre le throttling basĂ© sur l'IP.
  • Burp Suite – IPRotate + extension : Utilise un pool de proxies SOCKS/HTTP (ou AWS API Gateway) pour faire tourner l'IP source de maniĂšre transparente lors des attaques Intruder et Turbo Intruder.
  • Turbo Intruder (BApp) : Moteur d'attaque haute performance prenant en charge le multiplexage HTTP/2 ; rĂ©glez requestsPerConnection Ă  100-1000 pour regrouper des centaines de requĂȘtes en une seule connexion.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks