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-2026-22738-POC — Preuve de concept d'exploitation pour CVE-2026-22738, une injection SpEL critique permettant l'exécution de code à distance (RCE) dans Spring AI SimpleVectorStore, démontrant l'exécution de commandes système sans authentification. | Kitploit
Outils/GitHubGitHub/n0n4m3x41/cve-2026-22738-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebArticles et RechercheApprentissage et Éducation
GitHubn0n4m3x41/cve-2026-22738-poc

CVE-2026-22738-POC

Preuve de concept d'exploitation pour CVE-2026-22738, une injection SpEL critique permettant l'exécution de code à distance (RCE) dans Spring AI SimpleVectorStore, démontrant l'exécution de commandes système sans authentification.

Voir le dépôt
1324il y a 5 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

CVE-2026-22738 — Injection SpEL RCE dans Spring AI SimpleVectorStore

CVSS CWE Status

Exécution de code à distance non authentifiée via une injection dans Spring Expression Language (SpEL) dans SimpleVectorStore.similaritySearch().

Versions concernées

| Option | Défaut | Description | |---|---|---| | `--target` | `http://localhost:8082` | URL de base de l'application vulnérable | | `--wait` | désactivé | Interroger jusqu'à ce que la cible soit prête (utile après `docker compose up`) |
ArtifactVulnérableCorrigé
org.springframework.ai:spring-ai-core1.0.0 – 1.0.41.0.5
org.springframework.ai:spring-ai-core1.1.0-M1 – 1.1.31.1.4

Commit de correction : ba9220b22383e430d5f801ce8e4fa01cf9e75f29


Vulnérabilité

SimpleVectorStore.similaritySearch() transmet tel quel le nom de clé de filtre fourni par l'appelant dans un modèle SpEL évalué par StandardEvaluationContext. Comme StandardEvaluationContext expose l'ensemble de l'API de réflexion JVM, un attaquant peut injecter :

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec(...)

dans la clé de filtre pour obtenir une exécution de commandes OS non authentifiée.

Détails du contournement

L'injection naïve ne fonctionne pas directement — deux particularités du parseur doivent être contournées :

  1. Suppression des guillemets simples — une clé commençant par ' est traitée comme une chaîne entre guillemets ; les guillemets externes sont supprimés, ce qui altère la charge utile.
  2. Enveloppe de guillemets doubles — envelopper la charge utile dans "..." amène le parseur à supprimer les guillemets doubles externes, laissant l'expression SpEL interne intacte comme valeur de clé transmise à #metadata['<KEY>'].
  3. Clé de métadonnées vide — utiliser #metadata[''] des deux côtés de l'expression injectée (au lieu d'une variable non définie) évite une erreur SpEL unknown variable tout en déclenchant exec().

L'expression évaluée résultante prend la forme :

root@kitploit:~
#metadata[''] + T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/bash','-c','<cmd>'}) + #metadata[''] == 'x'

Indicateur de succès

Le corps de la réponse HTTP contiendra EL1030E — l'erreur d'exécution SpEL :

root@kitploit:~
operator ADD not supported between null and java.lang.ProcessImpl

Cette erreur est levée après le retour de exec(), confirmant l'exécution de commandes au niveau OS sans nécessiter de rappel hors bande.


Utilisation

Prérequis :

root@kitploit:~
pip install requests

Exécuter l'exploit :

root@kitploit:~
python3 exploit.py [--target http://localhost:8082] [--wait]
image

Docker Desktop (macOS/Windows) : utiliser host.docker.internal au lieu de 127.0.0.1 pour les charges utiles de rappel.


Étapes de l'exploit

Le PoC exécute cinq étapes séquentielles :

ÉtapeDescription
1Vérification de base — confirmer que le point de terminaison est accessible et renvoie les données initiales
2Sonde SpEL aveugle — lire java.version via T(java.lang.System) pour confirmer le point d'injection
3RCE : touch /tmp/pwned_cve_2026_22738 dans le conteneur
4RCE : écrire la sortie de id / uname / hostname dans /tmp/rce_proof.txt
5Vérification via docker exec — afficher le contenu du fichier de preuve

Avertissement

Cette preuve de concept est fournie à des fins éducatives et de tests de sécurité autorisés uniquement. Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite de test.

Télécharger l’outil