Um laboratório prático investigando o CVE-2025-39507 da perspectiva de um analista de SOC de Nível 1. Inclui revisão de logs no Microsoft Sentinel, análise de IP, capturas de tela reais e uma explicação simples de uma vulnerabilidade de inclusão de arquivo local em um plugin do WordPress.
É uma segunda-feira comum. Estou logado no painel do SOC, revisando alertas como de costume. Um deles chama minha atenção:
ALERTA: Possível Tentativa de Inclusão de Arquivo Local (LFI)
Endereço IP: 203.0.113.44
URL:/index.php?file=../../../../etc/passwd
User Agent: curl/7.81.0
Parece que alguém está tentando acessar arquivos do sistema manipulando uma URL. Meu trabalho é investigar e decidir se isso precisa ser escalado.
Após uma pesquisa rápida, descobri que isso corresponde a uma vulnerabilidade conhecida: CVE-2025-39507. Ela afeta um plugin do WordPress chamado Nasa Core (versão 6.3.2 e anteriores). Permite que atacantes visualizem arquivos confidenciais no servidor alterando um parâmetro de entrada de arquivo.
Exemplo:
/index.php?file=../../../../etc/passwd
Se o plugin não validar corretamente a entrada do arquivo, ele simplesmente seguirá o caminho que o atacante fornecer.
Não escrevi a regra de detecção, mas a revisei para entender o que disparou o alerta. Ela procura por coisas como:
/etc/passwd ou /wp-config.phpAqui está uma versão simplificada da regra:
CommonSecurityLog
| where RequestURL has "../"
or RequestURL has "etc/passwd"
or RequestURL has "wp-config"
| where DeviceCustomString1 contains "curl" or DeviceCustomString1 contains "python"
| project TimeGenerated, SourceIP, RequestURL, DeviceCustomString1
Executei uma consulta para ver se o IP 203.0.113.44 estava tentando algo mais:
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize count() by RequestURL
Acontece que ele também acessou outros caminhos como /admin/, /login.php e /wp-config.php. Isso me disse que não era apenas uma requisição única... provavelmente era um scanner ou alguém fazendo reconhecimento.
Verifiquei há quanto tempo o IP estava ativo em nossos logs:
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated)
Começou há algumas horas e ainda estava ativo recentemente. Então não era ruído histórico — isso estava em andamento.
Aqui está como documentei para escalação:
“Possível varredura de LFI do IP 203.0.113.44. O padrão de requisição corresponde ao CVE-2025-39507. O IP acessou 9 caminhos únicos, incluindo /etc/passwd e wp-config.php usando curl. O comportamento sugere reconhecimento automatizado. Recomendo revisão do Nível 2 e possível bloqueio do IP.”
| # | Descrição | Arquivo |
|---|---|---|
| 1 | Listagem do CVE (Patchstack) | 1_cve_selection_listing.png |
| 2 | Visão Geral do Patchstack | 2_patchstack_cve_overview.png |
| 3 | Exemplo de Vetor do VulDB | 3_vuldb_exploit_vector.png |
| 4 | VM Kali do Azure Criada | 4_kali_vm_deployed.png |
| 5 | Captura de Tela da VM em Execução | 5_kali_vm_running_status.png |
| 6 | Acesso SSH ao Kali | 6_kali_vm_logged_in.png |
| 7 | Revisão da Regra KQL do Sentinel | 7_lfi_detection_kql_query.png |
Todas as capturas de tela estão localizadas na pasta /screenshots.
Algumas perguntas que me fiz ao trabalhar nisso:
Em seguida, executarei uma simulação segura deste ataque em um ambiente de laboratório controlado usando uma plataforma como TryHackMe. O objetivo é entender melhor como esse tipo de atividade se parece do lado do atacante — e que tipo de logs ele cria.
P.S. Este laboratório foi realizado em um ambiente seguro e ético apenas para fins de treinamento. Nenhum sistema real foi alvo ou danificado. Sempre siga as regras da sua organização e nunca teste exploits em sistemas que você não possui ou não tem permissão para testar.