
Relatório detalhado de teste de penetração demonstrando path traversal não autenticado (CVE-2019-11447) no plugin Simple Backup do WordPress, incluindo etapas de exploração, análise de impacto e orientações de remediação.
| Item | Detalhes |
|---|---|
| Título do Documento | Relatório de Teste de Penetração - Path Traversal no WordPress |
| Cliente/Exame | HackTheBox Lab - CPTS Exercício 1 |
| Data | 22 de agosto de 2026 |
| Avaliador | Fernando Viana (Testador de Penetração) |
| Tipo de Avaliação | Gray Box (Externo, Sem Credenciais) |
| Ambiente do Laboratório | 154.57.164.73:30706 |
| Duração do Laboratório | 1 Hora |
| Objetivos | Identificar e explorar vulnerabilidades para obter arquivos restritos |
| Flag Obtida | HTB{my_f1r57_h4ck} |
Durante esta avaliação de penetração da aplicação web hospedada em 154.57.164.73:30706, foi identificada uma vulnerabilidade crítica que permite a atacantes não autenticados baixar e ler arquivos arbitrários do sistema de arquivos do servidor.
A instalação vulnerável do WordPress contém um plugin desatualizado (Simple Backup v2.7.10) com uma vulnerabilidade de path traversal (CVE-2019-11447) que permite acesso não autorizado a arquivos sem exigir autenticação ou autorização.
Essa vulnerabilidade foi explorada com sucesso para obter o arquivo /flag.txt a partir da raiz do servidor, confirmando comprometimento completo da confidencialidade. Um atacante com esse acesso poderia:
wp-config.php, .env)É necessária uma ação crítica para remediar essa vulnerabilidade imediatamente, pois ela representa um risco extremo para a segurança dos dados, a conformidade com privacidade (GDPR, HIPAA, PCI-DSS) e a integridade do sistema.
| Severidade | Contagem | Impacto no Negócio |
|---|---|---|
| 🔴 CRÍTICA | 1 | Violação completa da confidencialidade; acesso não autorizado a arquivos |
| 🟠 ALTA | 0 | — |
| 🟡 MÉDIA | 0 | — |
| 🟢 BAIXA | 0 | — |
| ℹ️ INFORMATIVA | 1 | Versões de software desatualizadas detectadas |
Tipo de Avaliação: Gray Box (atacante externo, sem credenciais fornecidas, acesso à rede disponível)
Datas da Avaliação: 22 de agosto de 2026
Abordagem de Teste: Avaliação não evasiva e metódica seguindo o framework padrão da indústria para testes de penetração (PTES):
CVE-2019-11447 | CWE-22: Limitação Imprópria de um Nome de Caminho para um Diretório Restrito
O plugin do WordPress Simple Backup (versão 2.7.10/2.7.11, Exploit-DB 39883) contém uma vulnerabilidade de path traversal em sua página administrativa "Backup Manager". O plugin não sanitiza o caminho de arquivo fornecido por meio do parâmetro GET download_backup_file, permitindo que um atacante percorra fora do diretório simple-backup/ pretendido usando sequências de caminho relativo (../) e baixe qualquer arquivo legível pelo processo do servidor web — incluindo arquivos na raiz do sistema de arquivos.
O endpoint vulnerável:
GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
page=backup_manager encaminha a requisição para o manipulador da página de administração do plugin; download_backup_file é o parâmetro que o código do plugin lê diretamente e concatena em um caminho do sistema de arquivos sem validação, permitindo directory traversal.
7.5 - ALTA (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
Violação de Confidencialidade: ⚠️ CRÍTICA
Atacantes podem ler qualquer arquivo acessível ao servidor web, incluindo:
| Arquivo | Impacto | Nível de Risco |
|---|---|---|
/wp-config.php | Credenciais de banco de dados, salts, chaves | 🔴 CRÍTICO |
/.env | Chaves de API, segredos, configuração | 🔴 CRÍTICO |
/etc/passwd | Enumeração de usuários, mapeamento do sistema | 🟠 ALTO |
Chaves SSH (.ssh/id_rsa) | Movimento lateral, acesso ao sistema | 🔴 CRÍTICO |
/proc/self/environ | Segredos da aplicação em execução | 🟠 ALTO |
| Diretório de uploads de usuários | Arquivos privados, mídia | 🟠 ALTO |
Impacto Regulatório:
O advisory do Exploit-DB (39883.txt, lido via searchsploit -x — consulte ht4-poc.png) documenta a primitiva de exclusão do plugin a partir de simple-backup-manager.php:
if(array_key_exists('delete_backup_file', $_GET)){
$this->delete_local_backup_file($_GET['delete_backup_file']);
}
$bk_dir = ABSPATH."simple-backup/";
unlink($bk_dir . $filename);
$filename vem diretamente de $_GET['delete_backup_file'] sem qualquer verificação de basename() ou de contenção de caminho. Passar ../pizza.txt resolve $bk_dir . $filename para .../simple-backup/../pizza.txt → .../pizza.txt, escapando da pasta de backup pretendida.
A primitiva de download efetivamente explorada neste engagement (download_backup_file) segue exatamente o mesmo padrão de concatenação não sanitizada no mesmo plugin, mas devolve o ficheiro ao requerente em vez de o eliminar — o que permitiu a obtenção de /flag.txt a partir da raiz do sistema de ficheiros (10× ../ a partir de ABSPATH/simple-backup/).
O Problema:
basename() para remover componentes de diretóriorealpath() permanece dentro de ABSPATH."simple-backup/"current_user_can() / de autenticação antes de servir o ficheiro — o handler é executado no carregamento do plugin, antes da própria barreira de autenticação wp-admin do WordPress, pelo que é acessível sem estar autenticadoLigação direta ao alvo através do navegador (http://154.57.164.73:30706/). A instalação WordPress tem o título "GETTING STARTED", e um post público de blog na página inicial divulga o nome e a versão exatos do plugin em texto simples: "Simple Backup Plugin 2.7.10 for WordPress" — não foi sequer necessária qualquer ferramenta de enumeração para identificar o componente vulnerável.