This issue has been created
There is 1 update.
 
 
XWiki Platform / cid:jira-generated-image-avatar-2c117ba7-4069-4b53-9e43-113dbafddba7 XWIKI-24236 Open

Reflected XSS via $request.wikiId in WikiManager/CreateWiki cleanUp step

 
View issue   ·   Add comment
 

Issue created

 
cid:jira-generated-image-avatar-2966fe50-5172-4478-9099-64cc55f5a4e0 Clément Christiaens created this issue on 15/Apr/26 22:29
 
Summary: Reflected XSS via $request.wikiId in WikiManager/CreateWiki cleanUp step
Issue Type: cid:jira-generated-image-avatar-2c117ba7-4069-4b53-9e43-113dbafddba7 Bug
Assignee: Unassigned
Attachments: image-2026-04-15-22-29-20-660.png
Created: 15/Apr/26 22:29
Priority: cid:jira-generated-image-static-critical-c1f6a577-bf41-4b22-a731-09f94267b7b9 Critical
Reporter: Clément Christiaens
Description:

Requirements

  • None (guest accessible)

Explanation
CreateWiki.xml line 655 outputs $request.wikiId inside a html block without $escapetool.xml():

$services.localization.render('wiki.create.step.cleanUp.confirm', ["**${request.wikiId}**"])

The localization string renders as: You are about to delete wiki <strong>PAYLOAD</strong>. Please confirm.

The hidden input on line 657 correctly escapes it ($escapetool.xml($request.wikiId)).

This is the same bug as XWIKI-20297 but in CreateWiki, which was never patched.

POC
Visit as guest:

http://TARGET/xwiki/bin/view/WikiManager/CreateWiki?step=cleanUp&wikiId=<img+src%3Dx+onerror%3Dalert(document.domain)>

Alert fires immediately.

Impact
Guest reflected XSS. Send the link to an admin: XSS into full RCE. No account needed.

Fix

$services.localization.render('wiki.create.step.cleanUp.confirm', ["**${escapetool.xml($request.wikiId)}**"])

Also check lines 676 and 682 in the same file for the same pattern.

Tested on 18.2.1 and 18.3-snapshot

44706_image-2026-04-15-22-29-20-660.png

 
 

1 update

 
cid:jira-generated-image-avatar-2966fe50-5172-4478-9099-64cc55f5a4e0 Changes by Clément Christiaens on 15/Apr/26 22:34
 
Description: *Requirements*
- None (guest accessible)

*Explanation*
[CreateWiki.xml|https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-ui/xwiki-platform-wiki-ui-mainwiki/src/main/resources/WikiManager/CreateWiki.xml#L655] line 655 outputs $request.wikiId inside a {{html}} block without $escapetool.xml():
{code}
$services.localization.render('wiki.create.step.cleanUp.confirm', ["**${request.wikiId}**"])
{code}
The localization string renders as: You are about to delete wiki <strong>PAYLOAD</strong>. Please confirm.

The hidden input on line 657 correctly escapes it ($escapetool.xml($request.wikiId)).

This is the same bug as [XWIKI-20297|https://jira.xwiki.org/browse/XWIKI-20297] but in CreateWiki, which was never patched.

*POC*
Visit as guest:
{code}
http://
TARGET localhost:8080 /xwiki/bin/view/WikiManager/CreateWiki?step=cleanUp&wikiId=<img+src%3Dx+onerror%3Dalert(document.domain)>
{code}
Alert fires immediately.

*Impact*
Guest reflected XSS. Send the link to an admin: XSS into full RCE. No account needed.

*Fix*
{code}
$services.localization.render('wiki.create.step.cleanUp.confirm', ["**${escapetool.xml($request.wikiId)}**"])
{code}
Also check lines 676 and 682 in the same file for the same pattern.
Fix not tested.

??Tested on 18.2.1 and 18.3-snapshot??

!image-2026-04-15-22-29-20-660.png|width=100%, height=100%!