
Scanner de segurança WordPress que detecta vulnerabilidades, enumera plugins/temas/usuários e verifica senhas fracas. Integra-se com a API do WPScan para dados de vulnerabilidade em tempo real.
<p align="center">
<a href="https://wpscan.com/">
<img src="https://assets.kitploit.com/production/public/readmes/203/c3143aca4c894753cffdf1b314e19df72e588310fccde3db2d2e09dfbf4b2474.png" alt="Logotipo do WPScan">
</a>
</p>
<h3 align="center">WPScan</h3>
<p align="center">
Scanner de Segurança WordPress
<br>
<br>
<a href="https://wpscan.com/" title="página inicial" target="_blank">Base de Dados de Vulnerabilidades WordPress do WPScan</a> - <a href="https://wordpress.org/plugins/wpscan/" title="plugin de segurança WordPress" target="_blank">Plugin de Segurança WordPress</a>
</p>
<p align="center">
<a href="https://badge.fury.io/rb/wpscan" target="_blank"><img src="https://badge.fury.io/rb/wpscan.svg"></a>
<a href="https://hub.docker.com/r/wpscanteam/wpscan/" target="_blank"><img src="https://img.shields.io/docker/pulls/wpscanteam/wpscan.svg"></a>
<a href="https://github.com/wpscanteam/wpscan/actions?query=workflow%3ABuild" target="_blank"><img src="https://github.com/wpscanteam/wpscan/workflows/Build/badge.svg"></a>
<a href="https://qlty.sh/gh/wpscanteam/projects/wpscan" target="_blank"><img src="https://qlty.sh/gh/wpscanteam/projects/wpscan/maintainability.svg" alt="Maintainability"></a>
<a href="https://coveralls.io/github/wpscanteam/wpscan?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/wpscanteam/wpscan/badge.svg?branch=master" alt="Coverage Status"></a>
</p>
# INSTALAÇÃO
## Pré-requisitos
- (Opcional, mas altamente recomendado: [rbenv](https://github.com/rbenv/rbenv))
- Ruby >= 3.3 - Recomendado: última versão estável
- Curl >= 7.72 - Recomendado: última versão estável
- O 7.29 tem uma falha de segmentação (segfault)
- Versões < 7.72 podem resultar em `Stream error in the HTTP/2 framing layer` em alguns casos
- RubyGems - Recomendado: última versão estável
- Nokogiri pode exigir a instalação de pacotes através do seu gerenciador de pacotes dependendo do seu SO, veja https://nokogiri.org/tutorials/installing_nokogiri.html
### Em uma distribuição de pentest
Ao usar uma distribuição de pentest (como Kali Linux), é recomendado instalar/atualizar o wpscan através do gerenciador de pacotes se disponível.
### No macOSX via Homebrew
```shell
brew install wpscanteam/tap/wpscan
```
### A partir do RubyGems
O WPScan depende de gems com extensões nativas (ex.: `yajl-ruby`, `nokogiri`, `ffi`), portanto, uma toolchain C funcional e cabeçalhos de desenvolvimento Ruby devem estar presentes antes do `gem install wpscan`. Sem eles, a instalação falha com erros como `Failed to build gem native extension` ou `make: x86_64-linux-gnu-gcc: No such file or directory` (veja [#1844](https://github.com/wpscanteam/wpscan/issues/1844)).
- **Debian / Ubuntu**:
```shell
sudo apt install build-essential ruby-dev
```
- **Fedora / RHEL / CentOS**:
```shell
sudo dnf install @development-tools ruby-devel
```
- **Arch Linux**:
```shell
sudo pacman -S base-devel ruby
```
- **Alpine**:
```shell
sudo apk add build-base ruby-dev
```
- **macOS**: instale as Ferramentas de Linha de Comando do Xcode (`xcode-select --install`).
Em seguida, instale a gem:
```shell
gem install wpscan
```
No MacOSX, se um ```Gem::FilePermissionError``` for levantado devido à Proteção de Integridade do Sistema (SIP) da Apple, instale o RVM e instale o wpscan novamente, ou execute ```sudo gem install -n /usr/local/bin wpscan``` (veja [#1286](https://github.com/wpscanteam/wpscan/issues/1286))
# Atualização
Você pode atualizar a base de dados local usando ```wpscan --update```
A atualização do próprio WPScan é feita via ```gem update wpscan``` ou pelo gerenciador de pacotes (isso é bastante importante para distribuições como Kali Linux: ```apt-get update && apt-get upgrade```) dependendo de como o WPScan foi (pré)instalado
# Docker
Baixe o repositório com ```docker pull wpscanteam/wpscan```
Enumeração de nomes de utilizador
```shell
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --url https://target.tld/ --enumerate u
```
Enumeração de uma faixa de nomes de utilizador
```shell
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --url https://target.tld/ --enumerate u1-100
```
** substitua u1-100 por uma faixa à sua escolha.
## Como persistir a base de dados local
A imagem inclui uma cópia da base de dados local incorporada no momento da compilação. Como os comandos de exemplo acima usam `--rm`, qualquer atualização da base de dados realizada durante a execução é descartada quando o contêiner é encerrado, então a próxima execução começa novamente a partir da cópia incorporada (potencialmente desatualizada).
Montar um volume nomeado em `/wpscan/.cache/wpscan/db` (o diretório de cache do usuário `wpscan` dentro do contêiner) mantém a base de dados entre execuções, então o `wpscan --update` só baixa novamente os arquivos cujos checksums realmente mudaram e o aviso de desatualização de 5 dias se comporta como em uma instalação local:
```shell
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --update
```
O volume nomeado é criado automaticamente no primeiro uso se ainda não existir.
# Uso
A documentação completa do usuário pode ser encontrada aqui; https://github.com/wpscanteam/wpscan/wiki/WPScan-User-Documentation
```wpscan --url blog.tld``` Isso irá escanear o blog usando opções padrão com um bom compromisso entre velocidade e precisão. Realiza deteção de versão, deteção de temas e descoberta de achados interessantes. Para enumerar plugins, temas, utilizadores, pastas de backup, etc., use a opção `-e` (ex.: `-e ap` para todos os plugins, `-e vp` para plugins vulneráveis, `-e bf` para pastas de backup).
Se for necessária uma abordagem mais furtiva, então ```wpscan --stealthy --url blog.tld``` pode ser usado.
Como resultado, ao usar a opção ```--enumerate```, não se esqueça de definir o ```--plugins-detection``` adequadamente, pois seu padrão é 'passive'.
Para mais opções, abra um terminal e digite ```wpscan --help``` (se você compilou o wpscan a partir do código-fonte, deve digitar o comando fora do repositório git)
## Localização da base de dados
A localização da base de dados segue a [Especificação do Diretório Base XDG](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html):
- **Novas instalações**: `~/.cache/wpscan/db` (ou `$XDG_CACHE_HOME/wpscan/db` se definido)
- **Instalações existentes**: `~/.wpscan/db` (caminho legado, mantido para retrocompatibilidade)
Os arquivos de tempo de execução, como o cache HTTP padrão e o cookie jar, são armazenados em `$TMPDIR/wpscan` quando `$TMPDIR` está definido. Caso contrário, eles usam o mesmo diretório de cache XDG por usuário, por exemplo `~/.cache/wpscan/cache` e `~/.cache/wpscan/cookie_jar.txt`. Esses padrões podem ser sobrescritos com `--cache-dir` e `--cookie-jar`.
Para migrar uma instalação existente para o caminho XDG:
```shell
mv ~/.wpscan ~/.cache/wpscan
```
## Opcional: API da Base de Dados de Vulnerabilidades WordPress
A ferramenta CLI do WPScan usa a [API da Base de Dados de Vulnerabilidades WordPress](https://wpscan.com/api) para obter dados de vulnerabilidades WordPress em tempo real. Para que o WPScan recupere os dados de vulnerabilidade, um token de API deve ser fornecido através da opção `--api-token` ou através de um arquivo de configuração, conforme discutido abaixo. Um token de API pode ser obtido registrando uma conta em [WPScan.com](https://wpscan.com/register).
Até **25** solicitações de API por dia são oferecidas gratuitamente, o que deve ser suficiente para escanear a maioria dos sites WordPress pelo menos uma vez por dia. Quando as 25 solicitações diárias de API forem esgotadas, o WPScan continuará funcionando normalmente, mas sem dados de vulnerabilidade.
### Quantas solicitações de API você precisa?
- Nosso scanner WordPress faz uma solicitação de API para a versão do WordPress, uma solicitação por plugin instalado e uma solicitação por tema instalado.
- Em média, um site WordPress tem 22 plugins instalados.
## Carregar opções da CLI a partir de arquivo(s)
O WPScan pode carregar todas as opções (incluindo `--url`) de arquivos de configuração, os seguintes locais são verificados (ordem: primeiro ao último):
- `$XDG_CONFIG_HOME/wpscan/scan.json` (se `$XDG_CONFIG_HOME` estiver definido)
- `$XDG_CONFIG_HOME/wpscan/scan.yml` (se `$XDG_CONFIG_HOME` estiver definido)
- `~/.config/wpscan/scan.json` (se `$XDG_CONFIG_HOME` não estiver definido)
- `~/.config/wpscan/scan.yml` (se `$XDG_CONFIG_HOME` não estiver definido)
- `~/.wpscan/scan.json`
- `~/.wpscan/scan.yml`
- `pwd/.wpscan/scan.json`
- `pwd/.wpscan/scan.yml`
Se esses arquivos existirem, as opções da chave `cli_options` serão carregadas e sobrescritas se encontradas duas vezes.
ex.:
`~/.config/wpscan/scan.yml`:
```yml
cli_options:
proxy: 'http://127.0.0.1:8080'
verbose: true
```
`pwd/.wpscan/scan.yml`:
```yml
cli_options:
proxy: 'socks5://127.0.0.1:9090'
url: 'http://target.tld'
```
Executar ```wpscan``` no diretório atual (pwd) é o mesmo que ```wpscan -v --proxy socks5://127.0.0.1:9090 --url http://target.tld```
Outras opções de linha de comando podem ser adicionadas usando a convenção snake case. ex.:
```yml
cli_options:
user_agent: "Testing UA"
max_threads: 1
headers: "Custom-Header: aaaa; Another Header: bbb"
```
## Salvar token de API em um arquivo
O recurso mencionado acima é útil para manter o token de API em um arquivo de configuração e não precisar fornecê-lo via CLI toda vez. Para fazer isso, crie o arquivo ~/.config/wpscan/scan.yml contendo o seguinte:
```yml
cli_options:
api_token: 'YOUR_API_TOKEN'
```
## Carregar token de API a partir da variável de ambiente (desde v3.7.10)
O token de API será carregado automaticamente da variável de ambiente `WPSCAN_API_TOKEN` se presente. Se a opção CLI `--api-token` também for fornecida, o valor da CLI será usado.
## Status do Serviço API
Se você tiver problemas de conexão com a API do WPScan, pode verificar o status do serviço em https://status.wpscan.com/. Quando ocorrerem erros de conexão com a API, o WPScan incluirá um link para a página de status na mensagem de erro.
## Enumeração de nomes de utilizador
```shell
wpscan --url https://target.tld/ --enumerate u
```
Enumeração de uma faixa de nomes de utilizador
```shell
wpscan --url https://target.tld/ --enumerate u1-100
```
** substitua u1-100 por uma faixa à sua escolha.
## Enumeração de pastas de backup
```shell
wpscan --url https://target.tld/ --enumerate bf
```
Isso irá verificar pastas de backup criadas por plugins populares de backup do WordPress. Essas pastas podem conter dados sensíveis como dumps de banco de dados, arquivos de configuração ou backups completos do site.
# LICENÇA
## Licença Pública de Código Fonte do WPScan
O software WPScan (doravante referido simplesmente como "WPScan") possui licenciamento duplo - Copyright 2011-2019 WPScan Team.
Casos que incluam a comercialização do WPScan requerem uma licença comercial, não gratuita. Caso contrário, o WPScan pode ser usado gratuitamente sob os termos estabelecidos abaixo.
### 1. Definições
1.1 "Licença" significa este documento.
1.2 "Contribuidor" significa cada indivíduo ou entidade legal que cria, contribui para a criação ou possui o WPScan.
1.3 "Equipe WPScan" significa os desenvolvedores principais do WPScan.
### 2. Comercialização
Uso comercial é aquele destinado a vantagem comercial ou compensação monetária.
Exemplos de casos de comercialização são:
- Usar o WPScan para fornecer serviços comerciais gerenciados/Software como Serviço.
- Distribuir o WPScan como um produto comercial ou como parte de um.
- Usar o WPScan como um serviço/produto de valor agregado.
Exemplos de casos que não requerem uma licença comercial e, portanto, se enquadram nos termos abaixo, incluem (mas não se limitam a):
- Testadores de penetração (ou organizações de teste de penetração) usando o WPScan como parte de seu kit de ferramentas de avaliação.
- Distribuições Linux de Teste de Penetração, incluindo mas não se limitando a Kali Linux, SamuraiWTF, BackBox Linux.
- Usar o WPScan para testar seus próprios sistemas.
- Qualquer uso não comercial do WPScan.
Se você precisar adquirir uma licença comercial ou não tiver certeza se precisa adquirir uma licença comercial, entre em contato conosco - [email protected].
Termos e Condições de Uso Gratuito;
### 3. Redistribuição
A redistribuição é permitida sob as seguintes condições:
- Licença não modificada é fornecida com o WPScan.
- Avisos de direitos autorais não modificados são fornecidos com o WPScan.
- Não entra em conflito com a cláusula de comercialização.
### 4. Cópia
A cópia é permitida desde que não entre em conflito com a cláusula de Redistribuição.
### 5. Modificação
A modificação é permitida desde que não entre em conflito com a cláusula de Redistribuição.
### 6. Contribuições
Quaisquer Contribuições pressupõem que o Contribuidor concede à Equipe WPScan o direito ilimitado e não exclusivo de reutilizar, modificar e relicenciar o conteúdo do Contribuidor.
### 7. Suporte, atualizações e manutenção
O WPScan é fornecido no estado em que se encontra (AS-IS) e sem qualquer suporte, atualizações ou manutenção. Suporte, atualizações e manutenção podem ser fornecidos a critério exclusivo da Equipe WPScan.
### 8. Isenção de Garantia
O WPScan é fornecido sob esta Licença no estado em que se encontra, sem garantia de qualquer tipo, expressa, implícita ou estatutária, incluindo, sem limitação, garantias de que o WPScan está livre de defeitos, comercializável, adequado a um propósito específico ou não infringe direitos.
### 9. Limitação de Responsabilidade
Na medida permitida por lei, o WPScan é fornecido no estado em que se encontra. A Equipe WPScan nunca, e sem qualquer limite, será responsável por qualquer dano, custo, despesa ou qualquer outro pagamento incorrido como resultado das ações, falhas, bugs e/ou qualquer outra interação entre o WPScan e equipamentos finais, computadores, outros softwares ou qualquer terceiro, equipamento final, computador ou serviços.
### 10. Aviso Legal
Executar o WPScan contra sites sem consentimento mútuo prévio pode ser ilegal em seu país. A Equipe WPScan não aceita responsabilidade e não se responsabiliza por qualquer uso indevido ou dano causado pelo WPScan.
### 11. Marca Registrada
O termo "wpscan" é uma marca registrada. Esta Licença não concede o uso da marca "wpscan" ou o uso do logotipo do WPScan.