Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-50340 — CVE-2024-50340 の概念実証エクスプロイト。Symfony ArgvInput における環境変数インジェクションを、細工した URL クエリパラメータを介して実証し、APP_ENV および APP_DEBUG の操作を可能にします。 | Kitploit
ツール/GitHubGitHub/nyamort/cve-2024-50340
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubnyamort/cve-2024-50340

CVE-2024-50340

CVE-2024-50340 の概念実証エクスプロイト。Symfony ArgvInput における環境変数インジェクションを、細工した URL クエリパラメータを介して実証し、APP_ENV および APP_DEBUG の操作を可能にします。

リポジトリを見る
121年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024-50340 PoC

要件

register_argc_argv オプションは、PHP設定ファイル (php.ini) で有効にする必要があります。この設定により、コマンドライン引数とクエリパラメータが $_SERVER['argv'] に読み込まれます。 https://www.php.net/manual/en/ini.core.php#ini.register-argc-argv

脆弱なコードの説明

このSymfonyコードは、入力引数 (ArgvInput) を使用して、特定の環境変数 (具体的には APP_ENV と APP_DEBUG) の値を決定します。以下はSymfonyのコードの関連部分です。

root@kitploit:~
//Symfony\Component\Runtime\SymfonyRuntime
$input = new ArgvInput();

if (isset($this->options['env'])) {
    return $this->input = $input;
}

if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
    putenv($this->options['env_var_name'].'='.$_SERVER[$this->options['env_var_name']] = $_ENV[$this->options['env_var_name']] = $env);
}

if ($input->hasParameterOption('--no-debug', true)) {
    putenv($this->options['debug_var_name'].'='.$_SERVER[$this->options['debug_var_name']] = $_ENV[$this->options['debug_var_name']] = '0');
}

上記のコードは、ArgvInputを介して提供された引数を処理します。argvで --env パラメータが指定されている場合、それに応じて環境変数 APP_ENV を更新します。同様に、--no-debug が存在する場合、APP_DEBUG を 0 に設定します。

ArgvInputクラス

ArgvInputクラスは、コマンドライン、クエリパラメータ、またはデフォルトで $_SERVER['argv'] を介して渡されたargvパラメータを初期化します。array_shift($argv); 関数は、$argv 配列の最初の要素(通常はアプリケーション名)を削除し、残りの引数を $this->tokens に格納します。

root@kitploit:~
//Symfony\Component\Console\Input\ArgvInput
public function __construct(?array $argv = null, ?InputDefinition $definition = null)
{
    $argv ??= $_SERVER['argv'] ?? [];

    // strip the application name
    array_shift($argv);

    $this->tokens = $argv;

    parent::__construct($definition);
}

PoC例

次のURL: http://localhost/?+--env=dev を使用すると、$_SERVER['argv'] に --env=dev 引数を注入できます。これにより、アプリケーションの設定を直接変更することなく、APP_ENV の値を dev に変更できます。

  1. http://localhost/?+--env=dev にアクセスすると、$_SERVER['argv'] は次のようになります:
root@kitploit:~
$_SERVER['argv'] = ["+--env=dev"];
  1. ArgvInputクラス内で、array_shift 操作後、$argv は次のようになります:
root@kitploit:~
$argv = ["--env=dev"];
  1. その後、ArgvInput は --env=dev を有効なパラメータとして認識し、getParameterOption メソッドを介して APP_ENV を適宜更新します。
ツールをダウンロード