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
BeautifulSouppara 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)