Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2022-22947 — Spring-Cloud-Spel-RCE | Kitploit
Outils/GitHubGitHub/4nnns/cve-2022-22947
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebApprentissage et ÉducationLabs et Pratique
GitHub4nnns/cve-2022-22947

CVE-2022-22947

Spring-Cloud-Spel-RCE

Voir le dépôt
12218il y a 4 ansPas 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

Vulnérabilité d'exécution de commande SpringCloud-Gateway (CVE-2022-22947)

Mise en place de l'environnement

Méthode 1 :

En clonant le code d'environnement déjà écrit sur Github.

Dépôt Github

//⚠️ Attention : le chemin de téléchargement du code d'environnement ne doit pas contenir de caractères chinois ni d'espaces
git clone https://github.com/Ha0Liu/CVE-2022-22947.git

Ouvrez le paquet de code que nous venons de télécharger avec IDEA : Open ---> chemin du fichier téléchargé ---> Open.

Méthode 2 :

En créant manuellement un projet et en construisant l'environnement.

(1) Nouveau projet, configurez puis cliquez sur Next jusqu'à la fin ;

(2) Analyse de la structure du répertoire du projet :

    1. Le dossier .idea contient les fichiers de configuration par défaut d'IntelliJ IDEA, sans autre utilité. Vous pouvez le supprimer ou le conserver selon vos besoins ;
    1. Le dossier src est principalement la zone de code de l'ensemble du projet, comprenant deux dossiers : java et resource. java est la zone où le code Java du projet est écrit, resource est la zone de configuration de l'ensemble du projet. Par défaut, Spring ajoute la méthode SpringApplication dans java, qui est la méthode de démarrage par défaut de Spring. Dans resource, application.properties est ajouté par défaut, c'est le fichier de configuration du projet Spring ;
    1. Le dossier test est le dossier de test, où vous pouvez tester les méthodes ;
    1. pom.xml est le fichier de configuration Maven, qui inclut les dépendances, configurations, etc. nécessaires au projet ;
    1. .iml est la configuration des dépendances Maven, également ajoutée par défaut ;
    1. Le dossier External Libraries contient tous les paquets de dépendances de ce projet.

(3) Ajoutez les dépendances Maven dans le fichier pom.xml (le dépôt Maven contient tous les détails des dépendances).

    1. Le fichier pom génère par défaut une partie du code XML. Détails ci-dessous :

    1. Importez les dépendances nécessaires au projet. Comme ce projet est un projet SpringBoot, il a besoin de la dépendance spring-boot-starter comme lanceur du serveur. De plus, cette vulnérabilité concerne la passerelle Gateway de SpringCloud, les versions à risque sont inférieures à 3.1.1. Nous utilisons donc la version 3.1.0 pour reproduire la vulnérabilité. Nous avons également besoin de l'interface actuator pour surveiller et accéder à la passerelle, donc nous avons besoin de cette dépendance aussi. Contenu spécifique ci-dessous :

(4) Modifiez le fichier de configuration Spring (chemin : src -> main -> resources -> application.properties), détails ci-dessous :

    1. server.port est le port de démarrage du serveur Spring, par défaut le port 8080. Chacun peut le définir selon ses besoins ;
    1. management.endpoint.gateway.enabled=true active la détection de la passerelle SpringCloud-Gateway via le port actuator, par défaut false. Cette vulnérabilité nécessite de surveiller l'état de la passerelle, donc nous devons le passer manuellement à true pour activer la surveillance ;
    1. management.endpoints.web.exposure.include=gateway sélectionne la passerelle Gateway comme passerelle du serveur. Comme cette vulnérabilité concerne la passerelle Gateway, nous déclarons dans le fichier de configuration que la passerelle choisie est Gateway.

(5) Modifiez la classe Java générée automatiquement après la création du projet (le nom de la classe est généralement nomDuProjet+Application, chemin : src -> main -> java -> com.xxx.xxx -> xxxApplication). Voir l'image ci-dessous pour les détails :

(6) Démarrez le projet. Voir l'image ci-dessous pour les détails :

(7) Accédez à http://localhost:9000. Si la page affichée correspond à la capture d'écran, l'environnement est correctement mis en place.

Audit inverse (rétro-ingénierie)

(1) Examinons d'abord le correctif officiel, diff disponible ici : https://github.com/spring-cloud/spring-cloud-gateway/commit/337cef276bfd8c59fb421bfe7377a9e19c68fe1e. Officiellement, dans la fonction org.springframework.cloud.gateway.support.ShortcutConfigurable#getValue, StandardEvaluationContext a été remplacé par GatewayEvaluationContext pour exécuter les expressions SPEL.

D'après l'image ci-dessus, ce correctif modifie principalement la méthode d'analyse des expressions SPEL. La ligne 66 montre une instruction if qui vérifie si l'expression SPEL commence par #{ et se termine par }. La fonction getValue sert à analyser les expressions SPEL. On voit donc que cette vulnérabilité est une vulnérabilité RCE déclenchée par une expression SPEL.

(2) En cliquant sur le champ getValue avec Ctrl + clic gauche, vous remontez jusqu'à l'énumération org.springframework.cloud.gateway.support.ShortcutConfigurable.ShortcutType.

La méthode default mentionnée ci-dessus montre que la méthode DEFAULT de l'énumération est appelée. Détails de la méthode :

default ShortcutType shortcutType() {
		return ShortcutType.DEFAULT;
	}

Méthode DEFAULT

(3) Remontez jusqu'à org.springframework.cloud.gateway.support.ConfigurationService.class#normalizeProperties().

Cette méthode normalizeProperties() analyse les propriétés des filtres. Elle transmet les propriétés de configuration du filtre à normalize, qui entre finalement dans getValue pour exécuter l'expression SPEL, provoquant une injection d'expression SPEL.

Audit direct (chaîne sans retour d'affichage)

(1) D'après la documentation [https://cloud.spring.io/spring-cloud-gateway/multi/multi__actuator_api.html](https://cloud.spring.io/spring-cloud-gateway/multi/multi actuator_api.html), les utilisateurs peuvent créer et supprimer des routes dans la passerelle via l'actuator. L'image ci-dessous montre la structure de base de la passerelle.

Télécharger l’outil