Multiple system messages are inserted as HTML by the AdvancedSearch extension, allowing for stored XSS.
Reproduction steps
- Enable AdvancedSearch
- Make sure $wgUseXssLanguage is set to 'true`
- Go to /w/index.php?search=test&uselang=x-xss
A number of alerts should pop up for the following messages:
- advancedsearch-field-deepcategory
- advancedsearch-field-fileh
- advancedsearch-field-filetype
- advancedsearch-field-filew
- advancedsearch-field-hastemplate
- advancedsearch-field-inlanguage
- advancedsearch-field-intitle
- advancedsearch-field-not
- advancedsearch-field-or
- advancedsearch-field-phrase
- advancedsearch-field-plain
- advancedsearch-field-sort
- advancedsearch-field-subpageof
Cause
The messages are retrieved via mw.msg, which does not escape the contents, and stored in the head variable.
head is then inserted as HTML via a HTMLSnippet.