Pentest em WordPress: Um Guia para Avaliar a Segurança de site WordPress

Introdução ao Pentest em WordPress

Mais de 40% dos sites da internet hoje utilizam WordPress, tornando-o um alvo frequente para atacantes. WordPress é um projeto open source que possui uma variedade de plugins e temas desenvolvidos para atender os mais diversos sites, o que faz com que pentest de sites WordPress se expanda a testes nos mais diversos plugins e temas que podem existir em uma instalação WordPress.

Recon

Principais informações para serem obtidas na fase de reconhecimento são:

  • Versão do WordPress instalada
  • Plugins e temas instalados (e ativos)
  • Arquivos e diretórios sensíveis expostos
  • Usuários

Para enumeração de versão do WordPress, plugins e temas instalados, podemos analisar o source code das páginas do site.

Identificando a Versão do WordPress

A versão do WordPress conseguimos encontrar na meta tag “generator”:

<meta name="generator" content="WordPress 6.7.1">

Enumeração de Plugins e Temas

Também conseguimos encontrar a versão do WordPress como request parameter de recursos do WordPress. Atenção para não confundir com recursos de plugins, temas e afins. Um exemplo é recurso vindo do diretório wp-includes:

<script src="https://blog.lucianohanna.com.br/wp-includes/js/wp-emoji-release.min.js?ver=6.7.1" defer=""></script>

Já a enumeração de plugins e temas podemos enumerar de forma passiva ou de forma ativa. Para enumerar de forma passiva, nós analisamos os recursos utilizados pelo site que estão em diretórios como “wp-content/themes” ou “wp-content/plugins”. Já para enumerar de forma ativa, a técnica se baseia em fazer brute force para verificar se existem arquivos específicos que podem identificar um plugin, não irei me aprofundar em enumeração ativa nesse post, porém, é possível encontrar wordlists e scripts na internet que auxiliam nisso.

Colocarei a seguir alguns exemplos:


<link rel="stylesheet" id="prismatic-blocks-css" href="https://blog.lucianohanna.com.br/wp-content/plugins/prismatic/css/styles-blocks.css?ver=6.7.1" type="text/css" media="all">
<script type="text/javascript" src="https://blog.lucianohanna.com.br/wp-content/themes/web-log/assets/js/theme.js?ver=200.0.4" id="web-log-theme-js"></script>

O primeiro recurso podemos ver o diretório “wp-content/plugins/prismatic”, indicando que possui o plugin Prismatic instalado e ativo, já o segundo recurso podemos ver o diretório “wp-content/themes/web-log” indicando que está utilizando tema Web Log. Também podemos notar que possui request parameter referente a versão, porém, use essa informação apenas como um indicativo, nesse caso específico, o plugin Prismatic acusa a versão 6.7.1 mas essa versão não é a do plugin instalado atualmente (provavelmente é a versão do WordPress).

Dependendo do plugin/tema, pode ser que encontre informações úteis sobre versão instalada em algum arquivo porém não existe um arquivo exato para analisar em cada plugin. Como muitos temas e plugins utilizados no WordPress são open source, recomendo que, se possível, baixe o plugin/tema para procurar algum arquivo que identifique a versão, ou, se achar útil, também pode comparar alguns arquivos com as versões publicadas para encontrar uma versão aproximada do plugin/tema.

Descoberta de Arquivos Sensíveis

Já em relação a arquivos e diretórios sensíveis expostos, podemos verificar se a listagem dos seguintes diretórios está habilitada no servidor: “wp-content”, “wp-content/themes”, “wp-content/plugins”, “wp-content/uploads” além de fazer enumeração ativa de arquivos e diretórios usando ferramenta como dirbuster e wordlist como a disponível no repositório do SecLists.

Enumeração de Usuários

A enumeração de usuários é útil para futuramente fazer brute force de autenticação, existem alguns métodos para fazer essa enumeração:

O WordPress possui a URL https://blog.lucianohanna.com.br/index.php?author=1 que lista todas as postagens do usuário com ID 1, nesse caso seria necessário fazer brute force para enumerar os usuários incrementando o ID. Caso o ID exista, será retornada uma página com o nome do usuário, já caso não exista, será retornado erro 404.

Outra possibilidade é através da API wp-json pela URL https://blog.lucianohanna.com.br/wp-json/wp/v2/users, essa URL pode retornar um JSON listando todos os usuários, é uma boa prática de segurança que a API wp-json esteja desabilitada caso não seja necessário o uso.

Caso nenhum dos métodos anteriores não deu certo, ainda podemos tentar fazer brute force na página wp-login.php, a página de login retorna mensagem diferente caso tente fazer login com usuário que não existe, sendo assim possível que faça brute force usando wordlist de nomes de usuários. É menos provável de conseguir enumerar todos nomes de usuário usando essa técnica visto que o brute force é usando wordlist de nomes de usuários ao invés da primeira citada que utiliza ID sequencial.

Análise de Vulnerabilidades

Com as informações coletadas na fase anterior, podemos verificar se existem vulnerabilidades conhecidas nas versões instaladas do WordPress, tema ou plugins pesquisando por CVEs relacionadas aos mesmos. Também podemos analisar de forma aprofundada os plugins e temas instalados.

Uma facilidade em pentest de instalação WordPress é que, mesmo que o pentest seja black box, nós conseguimos acesso ao source code do próprio WordPress e de vários temas e plugins instalados (porém não todos), tendo esse acesso ao source code, é possível instalar em um ambiente de teste com mais controle para analisar o funcionamento, como, por exemplo, se tiver tentando explorar um SQL injection, ao instalar em um ambiente de testes podemos executar depurador ou até modificar o código para ver melhor o fluxo do dado e como podemos bypassar os mecanismos implementados para proteção, além de ser possível utilizar análise de código estático e dinâmico (SAST e DAST) nos plugins e temas.

Testes de Autenticação

Existem alguns pontos que é importante testar em relação à autenticação, porém, é válido ressaltar que é necessário avaliar a necessidade de cada site e viabilidade de implementação dos mecanismos.

Primeiro ponto para ser avaliado é sobre o acesso da página wp-login.php, é comum que administradores de sistemas mudem o caminho da página e/ou restrinja o acesso por IP. É interessante fazer essas modificações para dificultar acessos indevidos, porém pode ser inviável caso os usuários autenticados precisem acessar de endereços IPs variados.

Outro ponto para verificar é proteções contra ataques de brute force, para isso, podemos utilizar scripts que realize várias tentativas de login e verificar se a partir de certo ponto está dando erro ou, caso tenha usuário para testar, verificar se consegue realizar login normalmente com o usuário depois de várias tentativas falhas de login.

Por fim, existem certas políticas que é importante verificar se estão implantadas no site como o uso de autenticação de dois fatores e critérios para criação de senhas.

Ferramentas Úteis para Pentest em WordPress

Durante a execução dos testes de segurança em WordPress, existem diversas ferramentas que podem auxiliar no processo. Abaixo, apresento algumas das principais ferramentas organizadas por categoria de uso:

Reconhecimento e Enumeração

  • WPScan: Ferramenta específica para WordPress que realiza enumeração de plugins, temas, usuários e vulnerabilidades conhecidas. É uma das ferramentas mais completas para avaliação inicial.
  • Nmap: Útil para identificação de versões e serviços, possui scripts específicos para WordPress.

Descoberta de Arquivos e Diretórios

  • DirBuster: Ferramenta Java para descoberta de arquivos e diretórios através de força bruta.
  • FFUF: Ferramenta versátil para fuzzing que pode ser usada tanto para descoberta de conteúdo quanto para testes de parâmetros.

Análise de Vulnerabilidades

  • OWASP ZAP: Ferramenta de teste de segurança, pode ser usado como proxy para inteceptar as requisições realizadas, sendo útil para análise dinâmica. Além de também ter as mesmas funcionalidades que o DirBuster e FFUF.

Por fim, lembre-se que ferramentas são apenas auxiliares no processo de pentest. O conhecimento técnico e a experiência do profissional são fundamentais para interpretar corretamente os resultados e identificar falsos positivos.

Ficou alguma dúvida, sugestão ou crítica? Sinta-se a vontade para deixar um comentário abaixo!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *