disable_functions bypass - dl function

Support HackTricks

重要な注意:

image

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拡張を作成することを決定します。

攻撃者が取ったステップ:

  1. PHPバージョンの特定:

  • 攻撃者はスクリプト(<?php echo 'PHP Version is '.PHP_VERSION; ?>)を使用してPHPバージョンを特定します。

  1. PHPソースの取得:

  1. ローカルPHPセットアップ:

  • 特定のPHPバージョンを自分のシステムに抽出してインストールします。

  1. 拡張の作成:

  • PHP拡張の作成を学び、PHPソースコードを調査します。

  • ext/standard/exec.cにあるexec関数の機能を複製することに焦点を当てます。

カスタム拡張のコンパイルに関する注意事項:

  1. ZEND_MODULE_API_NO:

  • bypass.cZEND_MODULE_API_NOは、現在のZend Extension Buildと一致する必要があります。これは次のコマンドで取得できます:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. PHP_FUNCTIONの修正:

  • 最近のPHPバージョン(5、7、8)では、PHP_FUNCTION(bypass_exec)の調整が必要な場合があります。提供されたコードスニペットはこの修正の詳細を示しています。

カスタム拡張ファイル:

  • bypass.c:

  • カスタム拡張のコア機能を実装します。

  • php_bypass.h:

  • 拡張のプロパティを定義するヘッダーファイル。

  • config.m4:

  • phpizeによってカスタム拡張のビルド環境を構成するために使用されます。

拡張のビルド:

  1. コンパイルコマンド:

  • phpize./configure、およびmakeを使用して拡張をコンパイルします。

  • 結果として得られるbypass.soは、モジュールのサブディレクトリに配置されます。

  1. クリーンアップ:

  • コンパイル後にmake cleanphpize --cleanを実行します。

被害者ホストへのアップロードと実行:

  1. バージョンの互換性:

  • 攻撃者と被害者のシステム間でPHP APIバージョンが一致していることを確認します。

  1. 拡張のロード:

  • dl関数を利用し、相対パスやスクリプトを使用してプロセスを自動化することで制限を回避します。

  1. スクリプトの実行:

  • 攻撃者はbypass.soとPHPスクリプトを被害者のサーバーにアップロードします。

  • スクリプトはdl_local関数を使用してbypass.soを動的にロードし、cmdクエリパラメータを介して渡されたコマンドでbypass_execを呼び出します。

コマンドの実行:

  • 攻撃者は次のURLにアクセスすることでコマンドを実行できます:http://www.example.com/script.php?cmd=<command>

この詳細な手順は、dl関数を悪用してシステムコマンドを実行するためのPHP拡張を作成し、展開するプロセスを概説しています。この関数は理想的には無効にされるべきであり、そのようなセキュリティ侵害を防ぐべきです。

Support HackTricks

Last updated