Adquirindo sites de empresas – Subdomain Takeover

Falaaa pessoal, tranquilos?

Bora analisar, nesse artigo, uma falha muito massa que te permite adquirir um site de uma empresa: o Subdomain Takeover.

Essa vulnerabilidade é um pouco teórica então, antes de explicá-la, vamos dar uma pequena volta por alguns temas importantes, o primeiro deles é

Como funciona um DNS:

O DNS (Domain Name System) é responsável por uma parte muito importante da internet, ele converte o nome de um site (aquele que você digita como URL) para um endereço IP que o computador consiga se conectar, afinal, computadores não entendem nomes é muito mais fácil para eles lidarem com os endereços IPs.

Esse serviço existe pois é inimaginável que você, usuário final, tivesse que decorar todos os endereços IPs dos sites que gosta de acessar.

De forma simples, quando ele recebe um nome é realizada uma pesquisa em sua tabela à procura do respectivo IP após encontrá-lo, o valor é retornado para o usuário.

Okk, por enquanto tudo tranquilo, né? Então vamos dar uma mergulhada.

Tipos de servidores DNS:

É interessante que vocês saibam que não existe apenas um tipo de servidor DNS antes do endereço IP retornar à sua máquina ele passa por diversas consultas em DNS diferentes.

O primeiro que deve ser analisado é o recursivo já que ele é a primeira parada de uma consulta, após recebê-la ele verifica se possui o valor em cache ou se deve contactar o servidor root, no segundo caso, é feita uma consulta a um root DNS, este é conhecido por todos os DNS recursivos e retorna um nameserver TLD com base na extensão do domínio (.com, .org, .net etc).

Como vocês vão perceber a resolução do nome é feita da direita para a esquerda.

O servidor recursivo contendo o nameserver TLD em “mãos” envia uma consulta para ele o qual é responsável por todos os domínios que possuam uma extensão em comum, por exemplo o TLD de domínios “.org” contém informações de todos os sites “.org”, feita a pesquisa ele retorna um nameserver autoritativo.

No último passo de nossa consulta o recursivo, finalmente, consulta um autoritativo este realmente possui autoridade para indicar o endereço IP de um domínio que então o retorna para o recursivo o qual, por fim, o passa ao usuário.

O passo a passo pode ser conferido nesta imagem

Por fim, bora dar uma olhada nos tipos de registro DNS antes de entrar de fato na falha.

Tipos de registro DNS:

Basicamente esses registros controlam o comportamento do domínio, vou discorrer rapidamente sobre os principais, e dar uma detalhada a mais no CNAME, já que vamos precisar dele para entender de fato a vulnerabilidade.

  • A – Esses são, de longe, o mais comum, simplesmente funcionam vinculando um domínio ou subdomínio à um endereço IPv4.
  • AAAA – Esse tipo funciona de forma muito parecida com o A, entretanto, ele realiza o mapeamento usando endereços IPV6.
  • MX – Esse registro é usado exclusivamente para servidores de e-mail ele também pode ser configurado com uma lista de prioridade que define alternativas para caso um e-mail não possa ser entregue.
  • CNAME – Esse registro funciona de forma especial, ao invés de conectar diretamente o nome ao endereço IP ele realiza um redirecionamento, ou seja, você aponta para um domínio que aponta para outro, isso é muito útil quando necessita-se conectar mais de um registro ao mesmo domínio. Seu funcionamento é da seguinte forma

Se você está lendo este artigo inteiramente quero pedir para que faça uma pausa agora, tente pensar em todo o conteúdo que já leu e imagine em que parte dessa grande estrutura nossa falha pode se localizar é muito importante que um hunter tente, a partir de todo conhecimento que possui, concluir onde pode existir uma vulnerabilidade.

Mas fique tranquilo caso ainda não consiga, isso é adquirido com a prática.

Então, sem mais delongas

De fato o que é Subdomain Takeover?

Esta vulnerabilidade ocorre quando o CNAME aponta para um domínio que não funciona mais, então, o usuário pode simplesmente ir na empresa que o hospeda e adquiri-lo, assim o hunter terá um subdomínio da empresa apontando para um site seu, lá ele pode fazer o que quiser, solicitar uma nova senha, mudar senha, pedir cartão de crédito e etc.

Em nossa imagem do CNAME, nós deveríamos basicamente tentar adquirir o domínio chamado anotherdomain.com, assim ele estaria sendo apontado pelo DNS mas quem o controlaria seu conteúdo seria você.

Bora esclarecer mais as coisas comum exemplo, imagine o seguinte cenário: existe um domínio exemplo.com, este por sua vez possui um subdomínio sub.exemplo.com, o qual aponta para dominio.com criado nosso cenário, bora analisar alguns passos para essa falha ocorrer:

O dono de exemplo.com deseja excluir seu subdomínio, entretanto o mesmo exclui somente dominio.com, e não exclui o registro do DNS sub.exemplo.com com isso ele ainda está apontando para algum lugar, só que este não existe, caso um atacante reivindique-o ele poderá ter total acesso a pagina e fazer o que quiser com ela.

Vocês devem saber que quando um subdomínio está apontando para um local inexistente a página costuma retornar o status code 40x, é muito importante ter isso em mente quando for enumerar os subdomínios.

Como vocês podem perceber a falha em si não é complexa, o problema é entender todo o conceito por trás do funcionamento do Domain Name Server, então, caso tenha dúvidas volte quantas vezes precisar a esta parte do artigo.

Agora, bora pra parte que todo mundo curte

Como explorar o subdomain takeover?

Existem diversos métodos de exploração desta falha, mas vou explicar o menos automático pois quero que aprendam o passo a passo e não que fiquem copiando e colando códigos no terminal.

Primeiramente, nós precisamos obviamente de uma lista de subdomínios, após, o ideal é separá-los por seus respectivos status code deixando os que contém 40x para análise e “descartando” o restante.

Percebam que não é por que um subdomínio tem status code 40x que ele necessariamente é vulnerável a essa falha, então como separar os falsos positivos?

Simples. Quando uma empresa possui seu domínio livre para compra ela costuma apresentar um template quando tentamos acessá-lo, geralmente, é algo do tipo:

“If this is your website and you’ve just created it, try refreshing in a minute”

“The specified bucket does not exist”

“Please try again or try Desk.com free for 14 days.”

“Fastly error: unknown domain:”

Então bora verificar que páginas tem esses template e quais simplesmente estão retornando um 404 padrão, para isso, eu gosto da ferramente Gowitness ela foi desenvolvida em Go e simplesmente acessa uma lista de urls e printa o resultado para nós, tudo isso em segundo plano.

Separado os falsos positivos, nós precisamos basicamente verificar em qual empresa o domínio está registrado e se ela é vulnerável a Subdomain Takeover.

Para a última parte recomendo o repositório do Github chamado Can I take over XYZ?, ele contém uma lista com todos os serviços vulneráveis ou não.

Por fim, só precisamos descobrir em qual serviço ele está registrado, isso geralmente pode ser feito usando a ferramenta dig do terminal, que funciona realizando uma consulta no DNS e nos retornando o resultado.

Caso ela não esteja instalada em seu sistema, basta dar um

apt-get install dnsutils : Debian/Ubuntu
yum install bind-utils : CentosOS
pacman -Sy dnsutils : Arch

Sua sintaxe é muito simples, só com um

dig domain.com

Conseguimos descobrir o comportamento do DNS para resolvê-lo.

Então bora fechar o artigo com um

Exemplo de report

Este report foi enviado pelo hunter parzel para a plataforma Starbucks, e ele recebeu um bounty de $2000.

Ele começa seu relatório dizendo que o subdomínio datacafe-cert.starbucks.com possui um CNAME apontando para um endereço do serviço Microsoft Azure, caso verifiquemos o Can I Take Over XYZ veremos que ele é vulnerável.

Ele também disse que a url para qual o CNAME aponta é s00397nasv101-datacafe-cert.azurewebsites.net e que conseguiu reivindicá-la no na Microsoft, portanto, ele já possuía o controle do subdomínio, percebam que essa é uma das poucas falhas que talvez seja necessário gastar algum dinheiro para prová-la, pois é necessário muitas vezes adquirir o domínio.

0 Compart.
Twittar
Compartilhar
Compartilhar
Pin