It's possible to store Javascript or groovy scripts in an mention macro anchor or reference field. The stored code is executed by anyone visiting the page with the mention.
{{mention reference="XWiki.Translation" anchor="{{/html~}~}{{async async=~"true~" cached=~"false~" context=~"doc.reference~"~}~}{{groovy~}~}new File(~"/tmp/exploit.txt~").withWriter { out -> out.println(~"owned!~"); }{{/groovy~}~}{{/async~}~}"/}}
This issue has been patched on XWiki 14.4 and 13.10.6.
<a id="$anchor" class="$stringtool.join($cssClasses, ' ')" data-reference="$services.model.serialize($reference.reference, 'default')" href="$link">$content</a>
<a id="$escapetool.xml($anchor)" class="$stringtool.join($cssClasses, ' ')" data-reference="$escapetool.xml($services.model.serialize($reference.reference, 'default'))" href="$escapetool.xml($link)">
$escapetool.xml($content)
</a>
Impact
It's possible to store Javascript or groovy scripts in an mention macro anchor or reference field. The stored code is executed by anyone visiting the page with the mention.
For example, the example below will create a file at
/tmp/exploit.txt
:Patches
This issue has been patched on XWiki 14.4 and 13.10.6.
Workarounds
It's possible to fix the vulnerability by updating
XWiki.Mentions.MentionsMacro
and edit theMacro code
field of theXWiki.WikiMacroClass
XObject.Must be replaced by
See the patches:
References
For more information
If you have any questions or comments about this advisory: