When saving a new campaign, a user with edit_pages capabilities can store scripts in the campaign’s pop-up content. The code can then be executed on every page on the website.
Proof of concept
A user with the edit_pages capability can store any script in the pop-up’s content. The content is serialized and then saved as post_meta. Script tags are stripped, but on viewing the pop-up, the content is unserialized and script tags are added again.
If the checkbox to show the popup on every page is checked, the script will be executed on every page.
The editing function is accessible for the administrator and editor role, so any website with this plugin activated under version 1.4.10 and with a vulnerable user role from editor up, is vulnerable to site-wide XSS hacks.
Proof of content video: https://www.youtube.com/watch?v=0T7sHJwkP5o
Update: We realize that this is not a true XSS vulnerability, since in WordPress, some users are able to post unfiltered HTML.
- Tuesday, march 24th 2020: Vulnerability detected by Jeroen Mulder. Plugin’s author notified
- Friday, march 27th 2020: Vulnerability fixed by plugin author in version 1.4.11