Aprenda e pratique Hacking AWS:<imgsrc="../../../.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="../../../.gitbook/assets/arte.png"alt=""data-size="line">\
Aprenda e pratique Hacking GCP: <imgsrc="../../../.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="../../../.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Em versões mais antigas do Drupal **(antes da versão 8)**, era possível fazer login como administrador e **ativar o módulo `PHP filter`**, que "Permite que códigos/snippets PHP incorporados sejam avaliados." Mas a partir da versão 8, este módulo não é instalado por padrão.
{% endhint %}
1. Vá para **/modules/php** e se um erro 403 for retornado, então o **plugin PHP filter está instalado e você pode continuar**
2. Então, para explorá-lo, clique em `Add content`, selecione `Basic Page` ou `Article` e escreva a **backdoor PHP**, depois selecione `PHP` como formato de texto e finalmente selecione `Preview`
3. Para acioná-lo, basta acessar o nó recém-criado:
```bash
curl http://drupal.local/node/3
```
## Instalar o Módulo PHP Filter
{% hint style="warning" %}
Nas versões atuais, não é mais possível instalar plugins apenas tendo acesso à web após a instalação padrão.
A partir da versão **8**, o [**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **não é instalado por padrão**. Para aproveitar essa funcionalidade, teríamos que **instalar o módulo nós mesmos**.
2. Após o download, vá para **`Administração`** > **`Relatórios`** > **`Atualizações disponíveis`**.
3. Clique em **`Procurar`**, selecione o arquivo do diretório para o qual o baixamos e clique em **`Instalar`**.
4. Uma vez que o módulo esteja instalado, podemos clicar em **`Conteúdo`** e **criar uma nova página básica**, semelhante ao que fizemos no exemplo do Drupal 7. Novamente, certifique-se de **selecionar `Código PHP` no menu suspenso `Formato de texto`**.
## Módulo com Backdoor
{% hint style="warning" %}
Nas versões atuais, não é mais possível instalar plugins apenas tendo acesso à web após a instalação padrão.
Era possível **baixar** um **módulo**, adicionar um **backdoor** a ele e **instalá-lo**. Por exemplo, baixando o módulo [**Trurnstile**](https://www.drupal.org/project/turnstile) em formato comprimido, criando um novo arquivo de backdoor PHP dentro dele, permitindo o acesso ao arquivo PHP com um arquivo `.htaccess`:
E então indo para **`http://drupal.local/admin/modules/install`** para instalar o módulo com backdoor e acessar **`/modules/turnstile/back.php`** para executá-lo.
### Parte 1 (ativação de _Media_ e _Media Library_)
No menu _Extend_ (/admin/modules), você pode ativar o que parecem ser plugins já instalados. Por padrão, os plugins _Media_ e _Media Library_ não parecem estar ativados, então vamos ativá-los.
### Parte 2 (aproveitando o recurso _Sincronização de Configuração_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
> Eu não uso isso neste post do blog, mas é importante notar que é possível definir a entrada `file_directory` de maneira arbitrária e que é vulnerável a um ataque de traversal de caminho (então podemos voltar dentro da árvore do sistema de arquivos do Drupal).
### Parte 3 (aproveitando o recurso _Adicionar Documento_) <a href="#part-3-leveraging-feature-add-document" id="part-3-leveraging-feature-add-document"></a>
A última etapa é a mais simples e é dividida em dois subpassos. O primeiro é fazer o upload de um arquivo no formato .htaccess para aproveitar as diretivas do Apache e permitir que arquivos .txt sejam interpretados pelo motor PHP. O segundo é fazer o upload de um arquivo .txt contendo nosso payload.
Arquivo: .htaccess
```
<Files*>
SetHandler application/x-httpd-php
</Files>
# Vroum! Vroum!
# We reactivate PHP engines for all versions in order to be targetless.
<IfModulemod_php.c>
php_flag engine on
</IfModule>
<IfModulemod_php7.c>
php_flag engine on
</IfModule>
<IfModulemod_php5.c>
php_flag engine on
</IfModule>
```
Por que esse truque é legal?
Porque uma vez que o Webshell (que chamaremos de LICENSE.txt) é colocado no servidor Web, podemos transmitir nossos comandos via `$_COOKIE` e nos logs do servidor Web, isso aparecerá como uma solicitação GET legítima para um arquivo de texto.
Por que nomear nosso Webshell LICENSE.txt?
Simplesmente porque se pegarmos o seguinte arquivo, por exemplo [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (que já está presente no núcleo do Drupal), temos um arquivo de 339 linhas e 17,6 KB de tamanho, que é perfeito para adicionar um pequeno trecho de código PHP no meio (já que o arquivo é grande o suficiente).
Primeiro, aproveitamos o recurso _Adicionar Documento_ (/media/add/document) para fazer o upload do nosso arquivo contendo as diretivas do Apache (.htaccess).
Em seguida, aproveitamos novamente o recurso _Adicionar Documento_ (/media/add/document) para fazer o upload de um Webshell oculto dentro de um arquivo de licença.
### Parte 4 (interação com o Webshell) <a href="#part-4-interaction-with-the-webshell" id="part-4-interaction-with-the-webshell"></a>
A última parte consiste em interagir com o Webshell.
Como mostrado na captura de tela a seguir, se o cookie esperado pelo nosso Webshell não estiver definido, obtemos o resultado subsequente ao consultar o arquivo via um navegador Web.
Aprenda e pratique Hacking AWS:<imgsrc="../../../.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="../../../.gitbook/assets/arte.png"alt=""data-size="line">\
Aprenda e pratique Hacking GCP: <imgsrc="../../../.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="../../../.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).