Evite a listagem dos nomes de usuários no WordPress

Aprenda a listar os nomes de usuários e principalmente evitar essa prática que contribue para os ataques de força bruta.

Seus amigos merecem saber desse conteúdo?

Nomes de usuários em complemento com suas respectivas senhas é a combinação necessária para ter acesso ao painel administrativo do WordPress. É preciso uma melhor política de segurança para essas informações. Você deve, sempre, fazer uso de senhas fortes para proteger sua conta e evitar a exposição do seu nome de usuário. Além de considerar o uso da autenticação de dois fatores.

Por que evitar a listagem dos nomes de usuários no WordPress

O usuário “admin” do WordPress é comumente citado em dicas de segurança para WordPress nos alertando para evitar seu uso, uma vez que ele pode ser utilizado em ataques de força bruta. Um atacante pode tentar uma combinação de senha com o usuário “admin”, e em caso de sucesso ganhar acesso a administração do seu site.

Se removermos, ou alterarmos, o usuário “admin” do WordPress eliminamos um ingrediente óbvio para os atacantes. Mas, e se ele conseguir uma listagem de todos os nomes de usuários de uma instalação WP?

Precisamos dificultar a vida dos atacantes e evitar a exposição de informações que contribuem para sua missão de atacar um site e principalmente ganhar acessso ao painel administrativo. Veremos neste artigo como listar e evitar a listagem dos nomes de usuários.

Como o WordPress lida com os nomes de usuários

Uma das características de um blog é a listagem de todos os posts de um autor, desde que ele tenha publicado o mínimo de um. A URL de listagem desses posts tem dois possíveis padrão, um sem os Links Permanentes e outro com esse recurso habilitado, vejamos:

https://url-do-site.com/?author=x
https://url-do-site.com/author/nome-de-usuario

Quando a funcionalidade de Links Permanentes está habilitada e acessamos, por exemplo, o endereço https://url-do-site.com/?author=x somos redirecionado para https://url-do-site.com/author/nome-do-usuario.

Como listar os nomes de usuários do WordPress

Um atacante pode fazer uso de variadas formas para listar os nomes de usuários de uma instalação WordPress. De processos simples a sofisticados, de manual a automatizados. Antes de nos prevenirmos é importante que saibamos como é possível identificar os nomes de usuários.

Identificando nomes de usuários manualmente

Exemplo de nome de usuário na resposta do HTTP da página

O processo mais simples de todos é fazer uso do navegador de internet e incluir o parâmetro author na URL com o valor de 1 a n, onde n é a quantidade de vezes que você fará o processo de descobrir os nomes de usuários manualmente.

Portanto, quando você fizer isso com o número 1 (um), por exemplo, você será redirecionado para uma URL amigável de listagem dos posts do respectivo autor e na URL estará exposta seu nome de usuário.

Através do terminal é ainda mais simples e o retorno da requisição HTTP traz a informação desejada. Observe:

curl -I 'https://url-do-site.com?author=1'
HTTP/1.1 301 Moved Permanently
Date: Mon, 05 Oct 2015 01:32:07 GMT
Server: Apache
X-Pingback: https://url-do-site.com/xmlrpc.php
Location: https://url-do-site.com/author/nome-do-usuario/
Cache-Control: max-age=3600
Expires: Mon, 05 Oct 2015 02:32:07 GMT
Vary: User-Agent,Accept-Encoding
Content-Type: text/html; charset=UTF-8

Identificando nomes de usuários através do Shell

Um script Shell automatiza o processo e precisamos apenas configurar o domínio e a quantidade de nomes de usuários a serem listados. A origem do código é o site hackertarget.com.

for i in {1..5}; do curl -s -L -i https://url-do-site.com/?author=$i | grep -E -o "\" title=\"View all posts by [a-z0-9A-Z\-\.]*|Location:.*" | sed 's/\// /g' | cut -f 6 -d ' ' | grep -v "^$"; done

Identificando nomes de usuários através do WPScan

Nomes de usuários listados através do WPScan

O WPScan tem opções para listar várias propriedades de um site WordPress, uma delas é a opção de listar os nomes de usuários. Por padrão são listados até 10, mas é possível configurar o comando para aumentar a quantidade.

ruby wpscan.rb --url https://url-do-site.com/ --enumerate u
ruby wpscan.rb --url https://url-do-site.com/ --enumerate u[1-30]

Observe que no segundo exemplo definimos que a listagem dos nomes de usuários acontecerá do ID 1 a 30 do usuário da instalação WP.

Como evitar a listagem dos nomes de usuários no WordPress

Através de uma instrução no arquivo .htaccess interpretado pelos servidores web Apache dificultamos a vida dos atacantes que estão a procura de nomes de usuários em instalação WordPress para praticarem ataques de força bruta. Veja como é simples:

# Evita listagem dos nomes de usuários
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ https://url-do-site.com/? [L,R=301]

Considere fazer uso do código acima para evitar a listagem dos nomes de usuários que auxiliam no ataque de força bruta e mantenha sua instalação WordPress segura.

Opa! Não conseguimos encontrar o seu formulário.