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 pt
This commit is contained in:
parent
d2a3aac023
commit
d81f4631d8
@ -1,8 +1,8 @@
|
||||
# Rate Limit Bypass
|
||||
# Bypass de Limite de Taxa
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Técnicas de bypass de limite de taxa
|
||||
## Técnicas de Bypass de Limite de Taxa
|
||||
|
||||
### Explorando Endpoints Similares
|
||||
|
||||
@ -34,15 +34,15 @@ Alterar outros cabeçalhos de solicitação, como o user-agent e cookies, é rec
|
||||
|
||||
### Aproveitando o Comportamento do API Gateway
|
||||
|
||||
Alguns gateways de API são configurados para aplicar limites de taxa com base na combinação de endpoint e parâmetros. Variando os valores dos parâmetros ou adicionando parâmetros não significativos à solicitação, é possível contornar a lógica de limitação de taxa do gateway, fazendo com que cada solicitação pareça única. Por exemplo `/resetpwd?someparam=1`.
|
||||
Alguns gateways de API são configurados para aplicar limitação de taxa com base na combinação de endpoint e parâmetros. Variando os valores dos parâmetros ou adicionando parâmetros não significativos à solicitação, é possível contornar a lógica de limitação de taxa do gateway, fazendo com que cada solicitação pareça única. Por exemplo `/resetpwd?someparam=1`.
|
||||
|
||||
### Fazendo Login na Sua Conta Antes de Cada Tentativa
|
||||
|
||||
Fazer login em uma conta antes de cada tentativa, ou a cada conjunto de tentativas, pode redefinir o contador de limite de taxa. Isso é especialmente útil ao testar funcionalidades de login. Utilizar um ataque Pitchfork em ferramentas como Burp Suite, para rotacionar credenciais a cada poucas tentativas e garantir que os redirecionamentos sejam marcados, pode efetivamente reiniciar os contadores de limite de taxa.
|
||||
Fazer login em uma conta antes de cada tentativa, ou a cada conjunto de tentativas, pode redefinir o contador de limitação de taxa. Isso é especialmente útil ao testar funcionalidades de login. Utilizando um ataque Pitchfork em ferramentas como Burp Suite, para rotacionar credenciais a cada poucas tentativas e garantindo que os redirecionamentos sejam marcados, pode efetivamente reiniciar os contadores de limitação de taxa.
|
||||
|
||||
### Utilizando Redes de Proxy
|
||||
|
||||
Implantar uma rede de proxies para distribuir as solicitações entre vários endereços IP pode contornar efetivamente os limites de taxa baseados em IP. Roteando o tráfego através de vários proxies, cada solicitação parece originar de uma fonte diferente, diluindo a eficácia do limite de taxa.
|
||||
Implantar uma rede de proxies para distribuir as solicitações entre vários endereços IP pode efetivamente contornar limites de taxa baseados em IP. Roteando o tráfego através de vários proxies, cada solicitação parece originar de uma fonte diferente, diluindo a eficácia da limitação de taxa.
|
||||
|
||||
### Dividindo o Ataque Entre Diferentes Contas ou Sessões
|
||||
|
||||
@ -50,10 +50,68 @@ Se o sistema alvo aplica limites de taxa com base em cada conta ou sessão, dist
|
||||
|
||||
### Continue Tentando
|
||||
|
||||
Observe que, mesmo que um limite de taxa esteja em vigor, você deve tentar ver se a resposta é diferente quando o OTP válido é enviado. No [**este post**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), o caçador de bugs descobriu que, mesmo que um limite de taxa seja acionado após 20 tentativas malsucedidas respondendo com 401, se o válido for enviado, uma resposta 200 foi recebida.
|
||||
Observe que, mesmo que um limite de taxa esteja em vigor, você deve tentar ver se a resposta é diferente quando o OTP válido é enviado. Em [**este post**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732), o caçador de bugs descobriu que, mesmo que um limite de taxa seja acionado após 20 tentativas malsucedidas, respondendo com 401, se o válido for enviado, uma resposta 200 foi recebida.
|
||||
|
||||
### Ferramentas
|
||||
---
|
||||
|
||||
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): hashtag-fuzz é uma ferramenta de fuzzing projetada para testar e contornar WAFs e CDNs. Ao aproveitar recursos avançados, como User-Agent e valor de cabeçalho aleatórios, atrasos aleatórios, gerenciamento de múltiplas threads, fragmentação seletiva de listas de palavras e rotação de proxy Round Robin para cada fragmento, oferece uma solução robusta para profissionais de segurança que buscam identificar vulnerabilidades em aplicações web.
|
||||
### Abusando da multiplexação HTTP/2 e do pipeline de solicitações (2023-2025)
|
||||
|
||||
Implementações modernas de limitadores de taxa frequentemente contam **conexões TCP** (ou até mesmo solicitações HTTP/1.1 individuais) em vez do *número de streams HTTP/2* que uma conexão contém. Quando a mesma conexão TLS é reutilizada, um atacante pode abrir centenas de streams paralelos, cada um carregando uma solicitação separada, enquanto o gateway deduz apenas *uma* solicitação da cota.
|
||||
```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
|
||||
```
|
||||
Se o limitador protege apenas `/verify`, mas não `/api/v2/verify`, você também pode combinar **confusão de caminho** com multiplexação HTTP/2 para *extremamente* alta velocidade de força bruta de OTP ou credenciais.
|
||||
|
||||
> 🐾 **Dica:** O [Turbo Intruder](https://portswigger.net/research/turbo-intruder) da PortSwigger suporta HTTP/2 e permite ajustar `maxConcurrentConnections` e `requestsPerConnection` para automatizar este ataque.
|
||||
|
||||
### Aliases GraphQL & operações em lote
|
||||
|
||||
GraphQL permite que o cliente envie **várias consultas ou mutações logicamente independentes em uma única solicitação** prefixando-as com *aliases*. Como o servidor executa cada alias, mas o limitador de taxa geralmente conta apenas *uma* solicitação, isso é uma forma confiável de contornar a limitação de login ou redefinição de senha.
|
||||
```graphql
|
||||
mutation bruteForceOTP {
|
||||
a: verify(code:"111111") { token }
|
||||
b: verify(code:"222222") { token }
|
||||
c: verify(code:"333333") { token }
|
||||
# … add up to dozens of aliases …
|
||||
}
|
||||
```
|
||||
Olhe para a resposta: exatamente um alias retornará 200 OK quando o código correto for atingido, enquanto os outros estão com limite de taxa.
|
||||
|
||||
A técnica foi popularizada pela pesquisa da PortSwigger sobre “GraphQL batching & aliases” em 2023 e tem sido responsável por muitos pagamentos recentes de bug-bounty.
|
||||
|
||||
### Abuso de endpoints REST *batch* ou *bulk*
|
||||
|
||||
Algumas APIs expõem endpoints auxiliares, como `/v2/batch`, ou aceitam um **array de objetos** no corpo da solicitação. Se o limitador for colocado apenas na frente dos endpoints *legacy*, envolver várias operações dentro de uma única solicitação em massa pode contornar completamente a proteção.
|
||||
```json
|
||||
[
|
||||
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"123"}},
|
||||
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"456"}}
|
||||
]
|
||||
```
|
||||
### Temporizando a janela deslizante
|
||||
|
||||
Um limitador clássico de token-bucket ou leaky-bucket *reinicia* em um limite de tempo fixo (por exemplo, a cada minuto). Se a janela for conhecida (por exemplo, através de mensagens de erro como `X-RateLimit-Reset: 27`), faça o número máximo permitido de solicitações **pouco antes** de o balde reiniciar, e então imediatamente faça outro estouro completo.
|
||||
```
|
||||
|<-- 60 s window ‑->|<-- 60 s window ‑->|
|
||||
###### ######
|
||||
```
|
||||
Essa simples otimização pode mais do que dobrar sua taxa de transferência sem tocar em nenhuma outra técnica de bypass.
|
||||
|
||||
---
|
||||
|
||||
## Ferramentas
|
||||
|
||||
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): Ferramenta de fuzzing que suporta randomização de cabeçalhos, listas de palavras em chunks e rotação de proxy round-robin.
|
||||
- [**https://github.com/ustayready/fireprox**](https://github.com/ustayready/fireprox): Cria automaticamente endpoints descartáveis do AWS API Gateway para que cada solicitação se origine de um endereço IP diferente – perfeito para derrotar a limitação baseada em IP.
|
||||
- **Burp Suite – IPRotate + extensão**: Usa um pool de proxies SOCKS/HTTP (ou AWS API Gateway) para rotacionar o IP de origem de forma transparente durante ataques *Intruder* e *Turbo Intruder*.
|
||||
- **Turbo Intruder (BApp)**: Motor de ataque de alto desempenho que suporta multiplexação HTTP/2; ajuste `requestsPerConnection` para 100-1000 para colapsar centenas de solicitações em uma única conexão.
|
||||
|
||||
## Referências
|
||||
|
||||
- PortSwigger Research – “Bypassing rate limits with GraphQL aliasing” (2023) <https://portswigger.net/research/graphql-authorization-bypass>
|
||||
- PortSwigger Research – “HTTP/2: The Sequel is Always Worse” (seção *Connection-based throttling*) (2024) <https://portswigger.net/research/http2>
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user