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
spring-shell-vuln — Spring a confirmé la RCE dans Spring Framework. L'équipe vient de publier la déclaration ainsi que les guides d'atténuation pour ce problème. Maintenant, cette vulnérabilité peut être suivie sous le nom CVE-2022-22965. | Kitploit
Outils/GitHubGitHub/snip3r69/spring-shell-vuln
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubsnip3r69/spring-shell-vuln

spring-shell-vuln

Spring a confirmé la RCE dans Spring Framework. L'équipe vient de publier la déclaration ainsi que les guides d'atténuation pour ce problème. Maintenant, cette vulnérabilité peut être suivie sous le nom CVE-2022-22965.

Voir le dépôt
1il 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

spring-shell-vuln

Spring4Shell: Vulnérabilité RCE de Spring core


Spring a confirmé la RCE dans Spring Framework. L'équipe vient de publier la déclaration ainsi que les guides d'atténuation pour ce problème. Maintenant, cette vulnérabilité peut être suivie sous le nom CVE-2022-22965.

Quelques informations sur la vulnérabilité Spring4Shell et ont partagé les détails sur le post Spring4Shell: Détails et Exploit. De plus, l'équipe de sécurité de Praetorian a confirmé que Spring Core sur JDK9+ est vulnérable à l'exécution de code à distance en raison d'un contournement de CVE-2010-1622.

Initialement, cela a commencé le 30 mars, la première notification de la vulnérabilité a été suggérée par le leader de l'équipe KnownSec 404, Heige. Il a tweeté avec le message d'avertissement "Spring core RCE (JDK >=9" accompagné de l'image de la PoC.

image

Alors que nous publions l'histoire de la vulnérabilité, Heige disparaît de Twitter. On ne connaît pas la raison derrière cela, mais il y a peut-être quelque chose.

Événements

Fin 2021, Internet était en ébullition avec la publication d'une vulnérabilité Zero-day d'exécution de code à distance également connue sous le nom de Log4Shell, dans Apache Log4j2. La vulnérabilité a été découverte par l'équipe de sécurité d'Alibaba Cloud.

- Cette vulnérabilité n'est PAS aussi grave que Log4Shell. Tous les scénarios d'attaque sont plus complexes en raison de la nature des attaques de manipulation de chargeur de classe en Java. L'exploitation de Spring4Shell nécessite une connaissance approfondie de Java pour obtenir un POC fonctionnel. La manipulation du chargeur de classe est plus compliquée à comprendre que la vulnérabilité Log4Shell.

Aujourd'hui, des chercheurs ont découvert une autre très grave vulnérabilité qui pourrait causer des dégâts importants. Maintenant, le bogue est suivi sous le nom CVE-2022-22965, nous pouvons l'appeler Spring4Shell. La vulnérabilité existe dans Spring core avec une version JDK supérieure ou égale à 9.0.

Spring Framework et framework dérivé spring -beans-*.jar fichiers ou CachedIntrospectionResults.class

Tous les détails ci-dessous sont maintenant confirmés. Je n'assume aucune responsabilité pour les dommages causés.

Détails de la vulnérabilité et enquête

En tant que l'un des frameworks open-source légers Java les plus populaires au monde, Spring permet aux développeurs de se concentrer sur la logique métier et simplifie le cycle de développement des applications d'entreprise Java.

L'exploitation nécessite un point d'accès avec DataBinder activé (par exemple, une requête POST qui décode automatiquement les données du corps de la requête) et dépend fortement du conteneur de servlet de l'application. Par exemple, lorsque Spring est déployé sur Apache Tomcat, le WebAppClassLoader est accessible, ce qui permet à un attaquant d'appeler des getters et setters pour finalement écrire un fichier JSP malveillant sur le disque. Cependant, si Spring est déployé avec le conteneur de servlet Tomcat embarqué, le classloader est un LaunchedURLClassLoader qui a un accès limité.

Cependant, dans la version JDK9 (et supérieure) du framework Spring, un attaquant distant peut obtenir l'objet AccessLogValve et des valeurs de champs malveillants via la fonction de liaison de paramètres du framework, à condition de remplir certaines conditions.

  • Il est actuellement connu que déclencher cette vulnérabilité nécessite deux conditions de base :
  • Utiliser le framework Spring MVC et JDK9 et supérieur

(1). Vérifier le numéro de version JDK

Sur le serveur en cours d'exécution du système de l'organisation, exécutez la commande "java -version" pour vérifier la version JDK en cours d'exécution. Si le numéro de version est inférieur ou égal à 8, il n'est pas affecté par la vulnérabilité.

(2). Vérifier l'utilisation du framework Spring

  1. Si le projet du système de l'organisation est déployé sous forme de package war, suivez les étapes ci-dessous pour évaluer.
  • Décompressez le package war : remplacez le suffixe du fichier war par .zip et décompressez le fichier zip.
  • Recherchez un fichier jar au format spring-beans-*.jar (par exemple, spring-beans-5.3.16.jar) dans le répertoire de décompression. S'il existe, cela signifie que le système métier est développé à l'aide du framework spring.
  • Si le fichier spring-beans-*.jar n'existe pas, recherchez la présence du fichier CachedIntrospectionResuLts.class dans le répertoire de décompression. S'il existe, cela signifie que le système métier est développé à l'aide du framework Spring.
  1. Si le projet du système de l'organisation s'exécute directement et indépendamment sous forme de package jar, évaluez selon les étapes suivantes.
  • Décompressez le package jar : remplacez le suffixe du fichier jar par .zip et décompressez le fichier zip.
  • Recherchez un fichier jar au format spring-beans-*.jar (par exemple, spring-beans-5.3.16.jar) dans le répertoire de décompression. S'il existe, cela signifie que le système métier est développé à l'aide du framework spring.
  • Si le fichier spring-beans-*.jar n'existe pas, recherchez la présence du fichier CachedIntrospectionResuLts.class dans le répertoire de décompression. S'il existe, cela signifie que le système métier est développé à l'aide du framework Spring.

(3) Enquête complète

Après avoir terminé les deux étapes de dépannage ci-dessus, les deux conditions suivantes sont remplies en même temps pour déterminer qu'il est affecté par cette vulnérabilité :

  1. Le numéro de version JDK est 9 et supérieur ;
  2. utilisation du framework spring ou d'un framework dérivé.

Guides de correction de vulnérabilité

Maintenant, l'équipe Spring a corrigé la vulnérabilité et a publié les dernières versions de Spring Boot 2.6.6 et 2.5.12 qui dépendent de Spring Framework 5.3.18

Protection WAF

Sur les dispositifs de protection réseau tels que WAF, mettez en œuvre un filtrage de règles pour les chaînes telles que "class.", "Class.", ".class." et ".Class." en fonction de la situation réelle du trafic des services déployés. Après avoir filtré les règles, testez le fonctionnement métier pour éviter tout impact supplémentaire.

Mesures de réparation temporaires

La réparation temporaire de la fuite doit être effectuée en suivant les deux étapes suivantes simultanément :

  1. Recherchez globalement l'annotation @InitBinder dans l'application pour voir si la méthode dataBinder.setDisallowedFields est appelée dans le corps de la méthode. Si l'introduction de cet extrait de code est trouvée, ajoutez {"class.","Class.",".class.",".Class."} à la liste noire d'origine. (Remarque : si cet extrait de code est beaucoup utilisé, il doit être ajouté partout)

  2. Créez la classe globale suivante sous le package du projet du système d'application, et assurez-vous que cette classe est chargée par Spring (il est recommandé de l'ajouter dans le package où se trouve le Controller). Une fois la classe ajoutée, le projet doit être recompilé et empaqueté, testé pour vérification fonctionnelle, puis republié.

import org.springframework.core.annotation.Order; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.InitBinder; @ControllerAdvice @Order(10000) public class GlobalControllerAdvice{ @InitBinder public void setAllowedFields(webdataBinder dataBinder){ String[]abd=new string[]{"class.","Class.",".class.",".Class."}; dataBinder.setDisallowedFields(abd); } }

image

D'après le dépôt Git des projets Spring, il semble que le développeur Spring travaille sur un correctif pour la vulnérabilité d'exécution de code à distance, mais nous devons attendre la confirmation officielle.

Télécharger l’outil