01263: XSS vulnerability with prefs

Summary: XSS vulnerability with prefs
Created: 2011-07-20 11:30
Status: Closed - fixed for 2.2.28
Category: Bug
Assigned:
Priority: 3
Version: 2.2.27
OS: Win32/Apache 2.2.18 PHP 5.2.17

Description:
<Babelfish>
This time I found no further security vulnerability - rather XSS vulnerability in XLPage Reloaded - The original vulnerability could not close because of PmWiki 2.2.3 disasters. It was therefore resolved that the XLPage was written to protect. Well, if I do not change XLPage, can I make my own:

 'Hello World!' => '<script>alert("Hello Script!")</script>', 
 'Edit' => '<script>document.write('edit'.fontcolor('red').blink())</script>', 

$[Hello World!]

Vulnerability: [ [[{$FullName}?setprefs={$FullName}|Enable]] | [[{$FullName}?setprefs=|Disable]] ]
 'Hello World!' => '<script>alert("Hello Script!")</script>', 
 'Edit' => '<script>document.write('edit'.fontcolor('red').blink())</script>', 

Hello World!

Vulnerability: [ Enable | Disable ]

The problem affects only public wikis, since you need write access to any page. And of course $EnablePrefs must be enabled! To solve the problem, I propose to introduce a variable, which may have XLPage HTML code. e.g. '^(Site|PmWiki|PmWikiDe|...)\.XLPage$'

PS: Does anyone have a tip for me, how do I get that stupid grin off my face ;-D
</Babelfish>


<German>

XSS Schwachstelle mit prefs

Dieses Mal entdeckte ich keine weitere Sicherheitsschwachstelle - vielmehr XSS vulnerability in XLPage Reloaded d.H. Die ursprüngliche Schwachstelle konnte man wegen des PmWiki 2.2.3 disasters nicht schließen. Es wurde damit gelöst, dass die Seite XLPage schreibschützt wurde. Nun, wenn ich XLPage nicht verändern kann, dann mache ich mir eine eigene: (Siehe Beispiel:)

Das Problem betrifft nur Öffentliche Wikis, da man dazu schreibzugriff auf irgendeine Seite braucht. Und natürlich $EnablePrefs muss aktiviert sein! Zur Lösung des Problems schlage ich vor, eine Variabel einzuführen, welche XLPages HTML-Codes haben dürfen. z.B. '^(Site|PmWiki|PmWikiDe|...)\.XLPage$'

PS: Hat jemand ein Tipp für mich, wie ich dieses dämliche Grinsen aus meinen Gesicht bekomme ;-D
</German>

Great work, thanks! The html/javascript feature was disabled for version 2.2.28, however it is still possible to change some interface strings like "Edit", "History", "Save" and make the wiki more difficult to use. I'm still thinking how to deal with it. --Petko July 20, 2011, at 05:01 PM

I have discovered today a way to insert JavaScript in some way related to this report, and while fixing it, I also fixed the "replace interface strings" problem so I am closing this entry. --Petko May 08, 2013, at 06:14 AM