Voltar ao início

Host Header Injection

Salvee, rapaziada, como estão? Vou abordar um tema que era bastante curioso para mim, gostei bastante de ter feito este artigo, porque eu realmente estava interessado em saber como este ataque funciona e o motivo dele ser daora 🙂

Vamos lá, então!

Para que serve um Header Host?

A proposta do Header “Host” nas requisições é a seguinte: ajudar com o a comunicação de qual componente do back-end o cliente quer utilizar. Um exemplo é quando temos mais de um subdomínio em um mesmo endereço IP, para conseguirmos acessar “subdomínio.site.com.br” no endereço IP 187.171.80.15 é necessário que haja um header denominado “Host” para que o servidor entenda de qual subdomínio ele irá pegar dados.

GET /web-security HTTP/1.1
Host: portswigger.net

Ataque no Host Header

Ataques ao header “Host” se dão em cenários em que o servidor está tratando, de forma insegura, o que é passado nele.

Quando o servidor confia no valor de entrada do header “Host” e não valida ou escapa o mesmo, um cenário de ataque acaba sendo possível, neste caso, para injetar alguns payloads para manipular o que o server-side (lado do servidor) irá retornar. Ataques como este, que envolvem injeção de payloads diretamente no header, são conhecidos como: “Host Header Injection”.

Procurando por Host Header Injection

Para testar se um site é vulnerável a ataques por meio do cabeçalho HTTP Host, você precisará, primeiro, de um proxy de interceptação, como Burp, e de ferramentas de teste manuais, como Burp Repeater e Burp Intruder.

Alguns proxies de interceptação derivam o endereço IP de destino diretamente do cabeçalho do Host, o que torna esse tipo de teste praticamente impossível; quaisquer alterações feitas no cabeçalho fariam com que a solicitação fosse enviada para um endereço IP completamente diferente. No entanto, o Burp Suite mantém essa separação necessária entre o cabeçalho do host e o endereço IP de destino. Para isso, então, recomendo fortemente o uso do BurpSuite que, além de ser uma ferramenta acessível, supre bastante coisa no dia a dia só com a versão gratuita.

Laboratório

Agora, faremos um lab que contém um pouco de host header injection, bastante interessante para fixação do que É, em si, um ataque de host header injection.

Ele é baseado em outro tipo de ataque (Password Reset Poisoning), mas não precisa saber como ele funciona minuciosamente, explicarei o que fazer em cada parte do teste a seguir 🙂

O objetivo deste laboratório é conseguir autenticar com a conta do usuário “carlos. Para isso, precisaremos, primeiro, fazer o login com as credenciais fornecidas e entender como a aplicação está tratando a funcionalidade de resetar a senha (por ser um lab que tem a premissa de password reset poisoning, iremos direto para a funcionalidade que sabemos que está vulnerável, para entender como ela se comporta).

Para ser possível o teste no reset de senha, precisamos de um email.

Usaremos do usuário que nos foi fornecido credenciais (wiener) e veremos como esse reset de senha funciona.

Ao clicarmos na opção “Forget Password”, depois escrever o email no campo de reset, podemos ver como chega o link desta ação na caixa de entrada do lab: “Go to exploit server” → “Email client”

Observa-se que, no link, existe um parâmetro “temp-forgot-password-token”. Sabendo disto, porque não tentamos, ao invés de mandar para o email do wiener, mandar para o usuário carlos e alterar o cabeçalho “Host” para o servidor do laboratório?

Vamos fazer isso então!

Para conseguirmos receber essa requisição do servidor, precisaremos, primeiramente, alterar o header “Host” do request que enviamos para solicitar o reset de senha com a url do servidor do laboratório.

Certo, agora só falta mandar a requisição e checar no log (”Go to exploit server” → “Access log”).

Boa, recebemos! Agora basta acessarmos a url utilizando este token, trocar a senha e autenticar no usuário carlos para finalizarmos o lab.

Rapaziada, este foi meu último artigo dedicado, somente, ao blog do Guia Anônima. Espero que tenham gostado das coisas que estudei e tentei compartilhar um pouco com vocês ❤

Foi um imenso prazer escrever pra cá!!!

Obs:. Último recado, regulem esse sono ai, rapaziada 🙂 Sem sono, não tem cérebro saudável, sem cérebro saudável, não tem aprendizado. Flwwww, bons estudos a todos!!!!!!

Referências

How to identify and exploit HTTP Host header vulnerabilities | Web Security Academy
In this section, we’ll look more closely at how you can identify whether a website is vulnerable to HTTP Host header…portswigger.net

Lab: Basic password reset poisoning | Web Security Academy
This lab is vulnerable to password reset poisoning. The user carlos will carelessly click on any links in emails that…portswigger.net

WSTG – Latest
WSTG – Latest on the main website for The OWASP Foundation. OWASP is a nonprofit foundation that works to improve the…owasp.org