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 a listagem dos nomes de usuários no WordPress compromete sua segurança?
Tweet
Por que evitar a listagem dos nomes de usuários
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 à 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 realizar a listagem
Um atacante pode fazer uso de variadas formas para listar os nomes de usuários de uma instalação WordPress.
De processos simples à sofisticados, de manual à automatizados. Antes de nos prevenir, é importante que saibamos como é possível identificar os nomes de usuários.
Identificando nomes de usuários manualmente (usando parâmetro /?author=1)
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
Resumindo: hackers podem encontrar seu nome de usuário no WordPress anexando a query /?author=1 na URL. Isso irá redirecioná-lo para a página do autor que, é claro, revelará o nome de usuário.
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
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
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.