Apache-Solr-RCE-via-Velocity-template
Lien de référence
Cause de la vulnérabilité :
- Lorsqu'un attaquant peut accéder directement à la console Solr, il peut modifier le fichier de configuration du nœud en envoyant une requête POST du type /nom_du_nœud/config.
- Apache Solr intègre par défaut le plugin VelocityResponseWriter. Parmi les paramètres d'initialisation de ce plugin, l'option params.resource.loader.enabled contrôle si le chargeur de ressources paramétré est autorisé à spécifier un modèle dans les paramètres de requête Solr ; sa valeur par défaut est false. Lorsque params.resource.loader.enabled est défini sur true, l'utilisateur peut spécifier le chargement des ressources associées en définissant des paramètres dans la requête, ce qui signifie qu'un attaquant peut exécuter des commandes sur le serveur en construisant une requête malveillante.
Réplication de la vulnérabilité : vulnérabilité récurrente
Méthode 1 : Détection manuelle
Accédez à http://x.x.x.x:8983/solr/#/ pour entrer dans l'interface principale, cliquez sur Core Selector à gauche pour voir le nom de la collection.

Utilisez les deux payloads suivants
-
Modifier les paramètres de la collection

-
Exécution de commande
Exécution de la commande réussie !
Méthode 2 : Détection à l'aide d'un script


Recommandations de correctif :
- Il est recommandé de s'assurer que les paramètres réseau n'autorisent que le trafic de confiance à communiquer avec Solr.
- Définissez params.resource.loader.enabled sur false, puis passez le fichier de configuration en lecture seule.
Par défaut, params.resource.loader.enabled est false et il n'y a pas de fichier de configuration. Si vous souhaitez modifier sa valeur ou la forcer, vous avez besoin d'un fichier de configuration.
Par défaut, le fichier de configuration du nœud, configoverlay.json, dispose des permissions de lecture-écriture.
Chemin du fichier de configuration : (selon la situation réelle)
./example/example-DIH/solr/db/conf/configoverlay.json:
./example/example-DIH/solr/mail/conf/configoverlay.json:
./example/example-DIH/solr/solr/conf/configoverlay.json:
Définissez params.resource.loader.enabled sur false dans tous les fichiers configoverlay.json. S'il n'existe pas de configoverlay.json, il est recommandé d'en créer un manuellement, puis de définir ses permissions en lecture seule.
Description de l'EXP :
- Il faut rechercher les nœuds et les parcourir pour déterminer lesquels peuvent accepter une requête POST.
- Il faut déterminer la version du système d'exploitation, puis saisir la commande pour effectuer l'opération.