tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
重要な注意:
dl
はPHPの関数で、PHP拡張をロードするために使用されます。この関数が無効でない場合、disable_functions
をバイパスして任意のコマンドを実行するために悪用される可能性があります。
しかし、いくつかの厳しい制限があります:
dl
関数は環境に存在し、無効でない必要があります- PHP拡張はサーバーが使用しているのと同じメジャーバージョン(PHP APIバージョン)でコンパイルされている必要があります(この情報はphpinfoの出力で確認できます)
- PHP拡張は**
extension_dir
ディレクティブで定義されたディレクトリに配置されている必要があります**(これもphpinfoの出力で確認できます)。攻撃者がサーバーを悪用しようとする場合、このディレクトリに書き込みアクセスを持つことは非常に考えにくいため、この要件はおそらくこの技術を悪用するのを防ぐでしょう。
これらの要件を満たす場合は、投稿を読み続けてください https://antichat.com/threads/70763/ disable_functions
をバイパスする方法を学びます。以下は要約です:
dl関数は、スクリプト実行中にPHP拡張を動的にロードするために使用されます。PHP拡張は通常C/C++で書かれ、PHPの機能を拡張します。攻撃者はdl
関数が無効でないことに気づくと、システムコマンドを実行するためのカスタムPHP拡張を作成することを決定します。
攻撃者が取ったステップ:
- PHPバージョンの特定:
- 攻撃者はスクリプト(
<?php echo 'PHP Version is '.PHP_VERSION; ?>
)を使用してPHPバージョンを特定します。
- PHPソースの取得:
- ローカルPHPセットアップ:
- 特定のPHPバージョンを自分のシステムに抽出してインストールします。
- 拡張の作成:
カスタム拡張のコンパイルに関する注意事項:
- ZEND_MODULE_API_NO:
bypass.c
のZEND_MODULE_API_NO
は、現在のZend Extension Buildと一致する必要があります。これは以下のコマンドで取得できます:
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- PHP_FUNCTIONの修正:
- 最近のPHPバージョン(5, 7, 8)では、
PHP_FUNCTION(bypass_exec)
の調整が必要な場合があります。提供されたコードスニペットがこの修正の詳細を示しています。
カスタム拡張ファイル:
- bypass.c:
- カスタム拡張のコア機能を実装します。
- php_bypass.h:
- 拡張のプロパティを定義するヘッダーファイル。
- config.m4:
phpize
によってカスタム拡張のビルド環境を構成するために使用されます。
拡張のビルド:
- コンパイルコマンド:
phpize
、./configure
、およびmake
を使用して拡張をコンパイルします。- 結果として得られる
bypass.so
は、モジュールのサブディレクトリに配置されます。
- クリーンアップ:
- コンパイル後に
make clean
とphpize --clean
を実行します。
被害者ホストへのアップロードと実行:
- バージョンの互換性:
- 攻撃者と被害者のシステム間でPHP APIバージョンが一致していることを確認します。
- 拡張のロード:
dl
関数を利用し、相対パスやスクリプトを使用してプロセスを自動化することで制限を回避します。
- スクリプトの実行:
- 攻撃者は
bypass.so
とPHPスクリプトを被害者のサーバーにアップロードします。 - スクリプトは
dl_local
関数を使用してbypass.so
を動的にロードし、cmd
クエリパラメータを介して渡されたコマンドでbypass_exec
を呼び出します。
コマンドの実行:
- 攻撃者は次のURLにアクセスすることでコマンドを実行できます:
http://www.example.com/script.php?cmd=<command>
この詳細な手順は、システムコマンドを実行するためのPHP拡張を作成し展開するプロセスを概説しており、dl
関数を悪用するもので、理想的にはこのようなセキュリティ侵害を防ぐために無効にされるべきです。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。