Realiza buscas avançadas no Google para encontrar arquivos sensíveis expostos.

Contexto

O Google Dorking (ou Google Hacking) consiste em utilizar operadores de busca avançados para encontrar informações que não deveriam estar públicas, mas foram indexadas.

Um Pentester utiliza isso para encontrar:

  • Arquivos de Configuração: web.config, settings.py, .env.
  • Documentos Expostos: PDFs com dados de clientes, planilhas de senhas (XLSX).
  • Painéis de Login: Páginas de administração de roteadores ou sistemas internos.
  • Vulnerabilidades Conhecidas: Versões de softwares que aparecem no rodapé das páginas.

Possibilidades de Implementação

  • Scraping Direto: Usar BeautifulSoup para extrair links dos resultados (requer cuidado com o bloqueio do Google).
  • Custom Search API: Utilizar a API oficial do Google (mais estável, porém com limites gratuitos).
  • Uso de User-Agents: Rotacionar o cabeçalho do navegador para evitar ser identificado como um bot e receber um CAPTCHA.

Código

Nesta lição, vamos criar um automatizador que utiliza a biblioteca googlesearch-python para buscar por arquivos específicos de um domínio alvo.

Requisito: pip install googlesearch-python

from googlesearch import search
import time

def google_dorking_automator(target_domain):
    print(f"{'='*60}")
    print(f"   30 LESSONS IN PYTHON FOR PENTEST - LIÇÃO 04")
    print(f"        FERRAMENTA: GOOGLE DORKING AUTOMATOR")
    print(f"{'='*60}")
    print(f"[*] Alvo: {target_domain}")
    print(f"[*] Buscando por arquivos sensíveis...\n")

    # Lista de Dorks para testar
    # filetype:pdf -> Busca arquivos PDF
    # intitle:index.of -> Busca diretórios expostos
    dorks = [
        f"site:{target_domain} filetype:pdf",
        f"site:{target_domain} filetype:xlsx",
        f"site:{target_domain} intitle:index.of",
        f"site:{target_domain} inurl:admin"
    ]

    for dork in dorks:
        print(f"[!] Executando Dork: {dork}")
        try:
            # Realiza a busca e retorna os 5 primeiros resultados para cada dork
            for result in search(dork, num_results=5):
                print(f"    [+] Encontrado: {result}")

            # Pausa para evitar bloqueio (Anti-Bot do Google)
            time.sleep(2) 

        except Exception as e:
            print(f"[!] Erro na busca: {e}")
        print("-" * 30)

if __name__ == "__main__":
    # Exemplo de uso (Alvo fictício para teste)
    alvo = "tesla.com"
    google_dorking_automator(alvo)