unfurl: decompondo corpora de URLs para análise
unfurl · MIT
O unfurl recebe URLs no stdin e imprime um componente delas: o domínio, o path, as chaves de parâmetro, os valores. É um utilitário de texto, não um scanner, e é o que torna um corpus de URLs com 200 mil linhas utilizável.
Instalação
go install github.com/tomnomnom/unfurl@latest Comandos principais
# hostnames
cat urls.txt | unfurl -u domains
# só paths
cat urls.txt | unfurl -u paths
# nomes de parâmetro — uma wordlist no vocabulário da própria aplicação
cat urls.txt | unfurl -u keys
# valores de parâmetro — onde tokens vazados aparecem
cat urls.txt | unfurl -u values
# um formato customizado
cat urls.txt | unfurl format '%d%p' O -u deduplica. As diretivas de formato são %s scheme, %d domínio, %p path, %q query, %f fragment.
Saída
Texto simples, um componente por linha.
Onde ele entra no Tandera
O unfurl roda na fase de analyze do recon_web_lite. Ele fica depois dos produtores de URL — katana, gau, waybackurls — e transforma o corpus combinado deles em entradas estruturadas: listas de hostnames que realimentam o discovery, listas de paths, e listas de nomes de parâmetro que o arjun usa.
Usando em um pentest
unfurl -u keys é a melhor wordlist que você vai conseguir. Wordlists genéricas de parâmetro chutam. Esta é derivada de URLs que de fato existiram nesta aplicação, então reflete as convenções de nomenclatura dos desenvolvedores.
Faça grep nos valores, não só nas chaves. URLs arquivadas capturadas com query strings reais vazam tokens, identificadores de sessão e e-mails:
cat urls.txt | unfurl -u values | grep -iE '^(eyJ|ghp_|sk_|AKIA)' Use unfurl -u domains como um laço de realimentação. Corpora de URLs contêm hostnames que sua enumeração de subdomínios perdeu. Realimente-os no dnsx e no httpx e ocasionalmente você vai achar um host vivo que nada mais revelou.