------------------------------------------------------------------------
Reflected Cross-Site Scripting vulnerability in W3 Total Cache plugin
------------------------------------------------------------------------
Sipke Mellema, July 2016
------------------------------------------------------------------------
Abstract
------------------------------------------------------------------------
A Cross-Site Scripting vulnerability was found in the W3 Total Cache
plugin. This issue allows an attacker to perform a wide variety of
actions, such as stealing Administrators' session tokens, or performing
arbitrary actions on their behalf. In order to exploit this issue, the
attacker has to lure/force a logged on WordPress Administrator into
opening a URL provided by an attacker.
------------------------------------------------------------------------
OVE ID
------------------------------------------------------------------------
OVE-20160719-0004
------------------------------------------------------------------------
Tested versions
------------------------------------------------------------------------
This issue was successfully tested on W3 Total Cache version 0.9.4.1.
------------------------------------------------------------------------
Fix
------------------------------------------------------------------------
This issue is resolved in W3 Total Cache [2] version 0.9.5.
------------------------------------------------------------------------
Introduction
------------------------------------------------------------------------
The W3 Total Cache plugin is a WordPress Performance Optimization (WPO)
framework designed to improve user experience and page speed. A
Cross-Site Scripting vulnerability was found in the W3 Total Cache
plugin. This issue allows an attacker to perform a wide variety of
actions, such as stealing Administrators' session tokens, or performing
arbitrary actions on their behalf. In order to exploit this issue, the
attacker has to lure/force a logged on WordPress Administrator into
opening a URL provided by an attacker.
------------------------------------------------------------------------
Details finding
------------------------------------------------------------------------
The issue exists in the file inc/options/support/form.php and is caused
by the lack of output encoding on the request_id request parameter. The
vulnerable code is listed below.
------------------------------------------------------------------------
Proof of concept
------------------------------------------------------------------------
Have an authenticated admin visit the URL:
http:///wp-admin/admin.php?page=w3tc_support&request_type=bug_report&request_id=">A
pop-up box should appear, meaning the JavaScript contained in the
request_id request parameter was executed by the browser.
------------------------------------------------------------------------
References
------------------------------------------------------------------------
[1]
https://sumofpwn.nl/advisory/2016/reflected_cross_site_scripting_vulnerability_in_w3_total_cache_plugin.html
[2] https://downloads.wordpress.org/plugin/w3-total-cache.0.9.5.zip