Ignition Machine

Introdução

O conhecimento em redes desempenha um papel fundamental na preparação de quem está se tornando um engenheiro de cibersegurança. Tecnologias como Active Directory, autenticação Kerberos, Server Message Block, HTTP (Hypertext Transfer Protocol) e Secure Shell podem ser analisadas de maneira quase simplificada, desde que se tenha um bom domínio de redes. Apesar de ser um tema amplo, neste caso, exploraremos apenas uma parte específica do assunto, concentrando-nos em HTTP, VHosts e DNS, com base neste objetivo.

No início da sua jornada pelo mundo das redes, você pode perceber que entende as conexões entre o seu host e um servidor de forma bastante geral e superficial. Basicamente, o pacote viaja do seu lado até o servidor e retorna com uma resposta, certo? Para facilitar a compreensão dos conceitos de rede abordados por esta máquina, este texto incluirá uma série de diagramas que evoluirão à medida que você aprofundar seu entendimento sobre as tecnologias de rede utilizadas atualmente. Vamos começar com um exemplo de requisição web: a simples ação de acessar um site por meio do seu navegador.

Você perceberá que, à medida que analisamos o exemplo atual, mais tecnologias serão adicionadas ao esquema apresentado, formando uma visão mais complexa da estrutura que sustenta a comunicação entre hosts na Internet como um todo.

Enumeração

Começamos com uma varredura usando o Nmap, selecionando as opções -sC e -sV para ativar a execução de scripts padrão e a detecção de versões. O resultado inicial mostra apenas a porta 80 aberta, executando o serviço nginx na versão 1.14.2. Até aqui, tudo parece simples. No entanto, logo abaixo no output, notamos que o campo http-title retorna a mensagem “Did not follow redirect to http://ignition.htb. Por enquanto, guarde essa URL em mente.
nmap -sC -sV 10.129.1.27
Ao tentar acessar a página da web pelo navegador, nos deparamos com o seguinte erro. A mensagem “Check if there is a typo in ignition.htb” faz referência à mesma URL identificada durante a varredura com o Nmap, mas não fornece detalhes sobre a causa do erro ao tentar acessar o site. Logo abaixo, é exibido um código de erro mais detalhado: DNS_PROBE_FINISHED_NXDOMAIN.

Após uma rápida pesquisa no Google sobre o erro, descobrimos que ele pode ter duas causas principais:

  1. Digitamos incorretamente o endereço ignition.htb na barra de busca do navegador, e os servidores DNS não conseguem encontrar o endereço IP associado ao nome digitado errado.
  2. Não inserimos nenhum hostname, como ignition.htb, na barra de busca, mas o site espera que isso seja feito.

Como sabemos que não digitamos nenhum hostname na barra de busca, iremos explorar apenas a segunda possibilidade. Essa opção está relacionada a um problema conhecido como name-based VHosting (ou Virtual Hosting). De acordo com o artigo da Wikipédia sobre Virtual Hosting, temos as seguintes informações:

O Virtual Hosting é um método de hospedagem que permite múltiplos nomes de domínio (com o tratamento separado para cada nome) em um único servidor (ou grupo de servidores). Isso permite que um servidor compartilhe seus recursos, como memória e ciclos de processador, sem a necessidade de todos os serviços utilizarem o mesmo nome de host. O termo virtual hosting é geralmente associado a servidores web, mas os princípios também se aplicam a outros serviços da Internet.

[…]

Uma pré-condição técnica necessária para name-based virtual hosts é um navegador web com suporte ao HTTP/1.1 (algo comum atualmente), que inclui o nome de host no cabeçalho da requisição. Isso permite que um servidor que hospeda múltiplos sites sob um único endereço IP entregue o conteúdo correto de cada site. Mais especificamente, significa configurar o cabeçalho Host no HTTP, que é obrigatório no HTTP/1.1.

[…]

Além disso, se o Sistema de Nomes de Domínio (DNS) não estiver funcionando corretamente, pode ser difícil acessar um site hospedado virtualmente, mesmo se o endereço IP for conhecido. Se o usuário tentar acessar usando o endereço IP diretamente, como em http://10.23.45.67/, o navegador enviará o endereço IP como o nome do host. Como o servidor web depende que o cliente informe qual nome de servidor (vhost) utilizar, ele responderá com o site padrão, muitas vezes não o site esperado pelo usuário.

Uma solução alternativa nesse caso é adicionar o endereço IP e o nome do host ao arquivo de hosts do sistema cliente. Dessa forma, acessar o servidor pelo nome de domínio deve funcionar novamente.

Em resumo, múltiplos sites podem compartilhar o mesmo endereço IP, permitindo que os usuários os acessem separadamente ao visitar os nomes de host específicos de cada site, em vez do endereço IP do servidor de hospedagem. O servidor web ao qual estamos fazendo requisições está nos retornando um erro porque não especificamos um nome de host específico entre os que podem ser hospedados nesse mesmo endereço IP de destino. A partir disso, poderíamos pensar que simplesmente inserir ignition.htb em vez do endereço IP na barra de pesquisa resolveria o problema, mas, infelizmente, não é o caso. Ao inserir um nome de host em vez de um endereço IP como destino da requisição, há um intermediário envolvido que você talvez não conheça.

O Sistema de Nomes de Domínio (DNS) é um sistema hierárquico e descentralizado de nomes para computadores, serviços ou outros recursos conectados à Internet ou a uma rede privada. Ele associa diversas informações aos nomes de domínio atribuídos a cada uma das entidades participantes. De forma mais destacada, o DNS traduz nomes de domínio, que são mais fáceis de memorizar, para os endereços IP numéricos necessários para localizar e identificar serviços e dispositivos de computadores nos protocolos de rede subjacentes. Ao fornecer um serviço de diretório distribuído mundialmente, o Sistema de Nomes de Domínio tem sido um componente essencial da funcionalidade da Internet desde 1985.

Como o DNS está envolvido na tradução dos nomes de host para o único endereço IP disponível no lado do servidor, isso pode se tornar um problema quando o alvo está isolado, como no nosso caso. Para resolver isso, podemos editar o nosso próprio arquivo de hosts local, que inclui correlações entre nomes de host e endereços IP, para compensar a falta de um servidor DNS que faça isso por nós.

Até lá, precisamos primeiro confirmar se nossa suposição está correta. Para obter uma visão mais precisa das requisições e respostas sendo feitas e confirmar nossa suspeita, usaremos uma ferramenta popular e fácil de usar chamada cURL. Essa ferramenta nos permitirá manipular requisições HTTP feitas a um servidor e receber as respostas diretamente no terminal, sem que essas respostas sejam interpretadas pelo navegador como mensagens de erro genéricas, como no exemplo acima.

O cURL já vem pré-instalado na maioria dos sistemas operacionais Linux. Para ver suas funcionalidades, digite curl -h no terminal.

Ao analisar as opções do menu de ajuda, decidimos simplesmente tornar a saída mais detalhada, a fim de aprender o máximo possível sobre as respostas do alvo. Podemos alcançar isso aumentando a verbosidade da saída do script.

-v: Torna a operação mais “falante”. Saídas mais detalhadas serão exibidas durante a execução.

 

Como observado na captura de tela acima, nossa requisição contém um campo Host com o endereço IP do alvo em vez do nome do host. A resposta 302 Found, juntamente com o cabeçalho Location, indica que o recurso solicitado ( / ) foi (temporariamente) movido para http://ignition.htb/. Isso confirma que nossas suposições estavam corretas.

Para resolver o problema que estamos enfrentando, vamos modificar nosso arquivo local de DNS, chamado hosts, localizado no diretório /etc. O primeiro comando ilustrado abaixo tem como objetivo inserir o endereço IP do alvo com o nome de host associado na tabela de hosts, o que permitirá que seu cliente web acesse o site que anteriormente estava apresentando erro.

O segundo comando tem a função de verificar sua entrada anterior. Ler o arquivo /etc/hosts do seu sistema Linux deve retornar uma entrada para ignition.htb com o endereço IP associado ao alvo.

Foothold

Após explorar a página de entrada por um curto período, podemos deduzir que não há nada útil que possa ser aproveitado aqui. A única opção para explorar o site mais a fundo é utilizando o gobuster.

gobuster dir –url http://ignition.htb/ –wordlist /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima