Fastly Subdomain Takeover $ 2.000

Nov 28 2022
Bug Bounty - De zero a HERÓI
WHOAMI Meu nome é Alexandar Thangavel, também conhecido como ValluvarSploit, um caçador e treinador de insetos em tempo integral. Eu amo reconhecimento.

QUEM SOU EU

Meu nome é Alexandr Thangavel, também conhecido como ValluvarSploit, um caçador e treinador de insetos em tempo integral. Eu amo reconhecimento. Sou o fundador e CEO da ValluvarSploit Security. Na ValluvarSploit Security, estamos oferecendo treinamento de Bug Bounty em uma sessão online individual. Para mais informações, consulte nossa página no LinkedIn.

OBJETIVO

Hoje, vou compartilhar como descobri a vulnerabilidade de aquisição de subdomínio Fastly e ganhar minha recompensa de quatro dígitos. Vamos começar.

HISTÓRIA

Isso foi iniciado em 2 de outubro de 2022, domingo. O dia começou como de costume. Acordei às 6h, terminei o trabalho de rotina, verifiquei meu saldo de dados móveis (1,3 GB restantes), habilitei meu Mobile Hotspot, conectei meu laptop e retomei a busca em um programa privado. Passei algumas horas no aplicativo de destino, mas não encontrei nada, então fiz uma pequena pausa. Eu costumava revisitar meus antigos programas particulares pelo menos uma vez a cada seis meses. Então, revisei meus convites privados, escolhi um programa antigo e comecei a realizar a enumeração de subdomínios (vamos chamar nosso destino de redacted.com).

COMPROMISSO DE SUBDOMÍNIO

O controle de subdomínio ocorre quando um invasor assume o controle de um subdomínio de um domínio. Isso acontece devido a erros/configurações incorretas do DNS.

ENUMERAÇÃO DE SUBDOMÍNIO

Comecei a enumeração de subdomínios com as ferramentas Google Dorking, OWASP Amass e Gobuster .

# Passive Subdomain Enumeration using Google Dorking
site:*.redacted.com -www -www1 -blog
site:*.*.redacted.com -product

# Passive Subdomain Enumeration using OWASP Amass
amass enum -passive -d redacted.com -config config.ini -o amass_passive_subs.txt

# Subdomain Brute force using Gobuster
gobuster dns -d redacted.com -w wordlist.txt - show-cname - no-color -o gobuster_subs.txt

# Merging subdomains into one file
cat google_subs.txt amass_passive_subs.txt gobuster_subs.txt | anew subdomains.txt

# Enumerate CNAME records
./cname.sh -l subdomains.txt -o cnames.txt

# We can use HTTPX tool as well
httpx -l subdomains.txt -cname cnames.txt

# Probe for live HTTP/HTTPS servers
httpx -l subdomains.txt -p 80,443,8080,3000 -status-code -title -o servers_details.txt

Comecei a analisar o arquivo cnames.txt e encontrei um subdomínio que apontava para dois registros CNAME diferentes. Executei o comando dig no subdomínio e obtive os seguintes,

dig next.redacted.com CNAME

      
                
DNS query for CNAME record

Comecei a analisar o arquivo servers_details.txt em busca de coisas interessantes e encontrei esta linha. Observe o código de status e o título do site.

https://next.redacted.com [500] [246] [Fastly error: unknown domain next.redacted.com]

Na maioria dos casos, não podemos assumir o serviço Fastly. Por exemplo caso abaixo,

Mas se o domínio ainda não estiver ocupado por outro cliente, podemos reivindicar o domínio e assumir o controle do subdomínio completamente.

CONFIRMANDO A VULNERABILIDADE

Fui ao site oficial do Fastly e executei as etapas abaixo:
1. Criei uma conta no fastly.com usando um e-mail temporário.
2. Entrei no meu Fastly Dashboard e cliquei no botão “Create a Delivery Service”.
3. Digite o nome do subdomínio de destino (next.redacted.com) e clique no botão Adicionar.

Eu esperava que aparecesse a mensagem de erro (“o domínio já está sendo usado por outro cliente”), mas não houve mensagem de erro. Fui redirecionado para a próxima página “Página de hosts”. Eu estava surpreso.

Domínio reivindicado no Fastly

ETAPAS DE CRIAÇÃO DO POC

Assim que a vulnerabilidade foi confirmada, entrei no meu servidor VPS e criei um diretório chamado “hosting”. Em seguida, dentro do diretório “hosting”, criei um arquivo HTML simples chamado “index.html”.

mkdir hosting

cd hosting

nano index.html

<!DOCTYPE html>

<html>
    <head><title>STO PoC</title></head>
    <body>
        <h1>ValluvarSploit PoC</h1>
    </body>
</html>

python3 -m http.server 80

Configuração VPS

Após alguns segundos, abri uma nova janela do navegador e visitei “http://next.redacted.com/index.html" página. Meu arquivo PoC foi renderizado com sucesso. Escrevi um relatório detalhado e o enviei no HackerOne.

Prova de conceito

APRENDIZAGEM MONITORANDO LOGS DO SERVIDOR

Mantive meu serviço Fastly em execução por 3 dias e monitorei os logs do servidor em busca de informações confidenciais. Foi divertido observar a metodologia de outros caçadores de bugs.

Monitorando os logs do servidor por diversão

RECOMPENSA

Meu relatório foi classificado como uma vulnerabilidade de gravidade ALTA e recompensado com $ 2.000 em 10 dias.

Recompensa

CONCLUSÕES PRINCIPAIS

1. Revise seus antigos alvos pelo menos uma vez a cada 6 meses.
2. A enumeração do subdomínio é fundamental. Enumere os subdomínios o máximo possível.
3. Não desista.

Obrigado por reservar um tempo para ler meu artigo.

Siga-me no:

Twitter

LinkedIn

Dos relatórios da Infosec: Muito está surgindo na Infosec todos os dias, o que é difícil de acompanhar. Junte-se ao nosso boletim semanal para obter todas as últimas tendências da Infosec na forma de 5 artigos, 4 tópicos, 3 vídeos, 2 repositórios e ferramentas do GitHub e 1 alerta de trabalho GRATUITAMENTE!