Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-50340 — Exploit de prova de conceito para CVE-2024-50340 demonstrando injeção de variável de ambiente Symfony ArgvInput através de parâmetros de consulta de URL manipulados, permitindo a manipulação de APP_ENV e APP_DEBUG. | Kitploit
Ferramentas/GitHubGitHub/nyamort/cve-2024-50340
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubnyamort/cve-2024-50340

CVE-2024-50340

Exploit de prova de conceito para CVE-2024-50340 demonstrando injeção de variável de ambiente Symfony ArgvInput através de parâmetros de consulta de URL manipulados, permitindo a manipulação de APP_ENV e APP_DEBUG.

Ver Repositório
12há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2024-50340 POC

Requisitos

A opção register_argc_argv deve estar ativada no arquivo de configuração do PHP (php.ini). Essa configuração carrega argumentos de linha de comando e parâmetros de consulta em $_SERVER['argv']. https://www.php.net/manual/en/ini.core.php#ini.register-argc-argv

Explicação do Código Vulnerável

Este código do Symfony usa argumentos de entrada (ArgvInput) para determinar os valores de certas variáveis de ambiente, especificamente APP_ENV e APP_DEBUG. Aqui estão as partes relevantes do código do 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');
}

O código acima processa argumentos fornecidos através do ArgvInput. Se o parâmetro --env for especificado em argv, ele atualiza a variável de ambiente APP_ENV conforme necessário. Da mesma forma, se --no-debug estiver presente, ele define APP_DEBUG como 0.

A Classe ArgvInput

A classe ArgvInput inicializa os parâmetros argv passados via linha de comando, parâmetros de consulta ou, por padrão, aqueles em $_SERVER['argv']. A função array_shift($argv); remove o primeiro elemento do array $argv (normalmente o nome da aplicação) e armazena os argumentos restantes em $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);
}

Exemplo de PoC

Usando a seguinte URL: http://localhost/?+--env=dev, podemos injetar um argumento --env=dev em $_SERVER['argv']. Isso nos permite alterar o valor APP_ENV para dev sem modificar a configuração da aplicação diretamente.

  1. Ao acessar http://localhost/?+--env=dev, $_SERVER['argv'] pode ficar assim:
root@kitploit:~
$_SERVER['argv'] = ["+--env=dev"];
  1. Na classe ArgvInput, após a operação array_shift, $argv se torna:
root@kitploit:~
$argv = ["--env=dev"];
  1. ArgvInput então reconhecerá --env=dev como um parâmetro válido e atualizará APP_ENV de acordo através do método getParameterOption.
Baixar ferramenta