YOP Poll 5.7.3, Reflected XSS
The YOP Poll plugin exposes a number of AJAX requests to the public (see lines 15-40 in th efile yop-poll/inc/admin.php). An XSS vulnerability has been found in at least one of these functions – namely yop_poll_set_wordpress_vote. This function is available to both registered and non-registered users. The fields that are vulnerable are Base64 encoded (see lines 859 to 912 of yop-poll/inc/admin.php), meaning any attacks performed will bypass not only the auto-escaping on quotes performed by WordPress/PHP, but also any XSS-prevention methods implemented by browsers.
Homepage
https://wordpress.org/plugins/yop-poll/
CVSS Score
5
CSSS Vector
(AV:N/AC:L/Au:N/C:N/I:P/A:N)
Attack Scope
remote
Authorization Required
None
Mitigation
Update to version 5.7.4.
Proof of Concept
http://localhost/wp-admin/admin-ajax.php?action=yop_poll_set_wordpress_vote&poll_id=JzthbGVydCgxKTsn
When the above URL is visited, an alert will be presented to the user. Note, the original value of the ‘poll_id’ field is ‘;alert(1);’, including single quotes.
Timeline
- 2015-05-14: Discovered
- 2015-05-14: Vendor notified
- 2015-05-14: Vendor responded
- 2015-05-16: Vendor provided code for review – issue appears resolved in proposed update
- 2015-06-17: Vendor notified of pending email to WordPress Plugins team for plugin removal
- 2015-06-17: Vendor stated that release of update was delayed, but that an update has now been released
- 2015-06-24: Vendor queried over update – still seeing vulnerable version as most recent version
- 2015-06-24: Vendor responds that we’re mistaken – states 5.7.3 is patched
- 2015-06-25: Version 5.7.3 re-tested, and is confirmed as vulnerable to the original PoC. Update requested from vendor. One week given until notification of WordPress Plugins team due to lack of adequate response
- 2015-06-26: Vendor states that the issue will be looked in to – communication error between Development and Support
- 2015-06-29: Vendor states that version 5.7.4 is pending release
- 2015-07-01: Version 5.7.4 released – issue resolved
- 2015-07-08: Advisory released