------------------------------------------------------------------------ Cross-Site Scripting vulnerability in search function Activity Log WordPress Plugin ------------------------------------------------------------------------ Edwin Molenaar [2], July 2016 ------------------------------------------------------------------------ Abstract ------------------------------------------------------------------------ A Cross-Site Scripting vulnerability was found in the Activity Log WordPress Plugin. This issue allows an attacker to perform a wide variety of actions, such as stealing users' session tokens, or performing arbitrary actions on their behalf. In order to exploit this issue, the attacker has to lure/force a victim into opening a malicious website/link. ------------------------------------------------------------------------ OVE ID ------------------------------------------------------------------------ OVE-20160718-0002 ------------------------------------------------------------------------ Tested versions ------------------------------------------------------------------------ This issue was successfully tested on Activity Log [3] WordPress Plugin version 2.3.2. ------------------------------------------------------------------------ Fix ------------------------------------------------------------------------ This issue is fixed in Activity Log version 2.3.3 [4] ------------------------------------------------------------------------ Introduction ------------------------------------------------------------------------ The Activity Log [3] WordPress Plugin helps monitor & log all changes and activities on a WordPress site. A reflected Cross-Site Scripting vulnerability exists in the Activity Log WordPress plugin. This vulnerability allows an attacker to perform any action with the privileges of the target user. ------------------------------------------------------------------------ Details ------------------------------------------------------------------------ The vulnerability exists in improper filtering of the search input parameter $search_data in the file aryo-activity-log/classes/class-aal-activity-log-list-table.php at line 483. The WordPress sanitize_text_field [5] sanitizer is used, but this still allows us to use spaces, " and () to craft a Cross-Site Scripting payload. public function search_box( $text, $input_id ) { $search_data = isset( $_REQUEST['s'] ) ? sanitize_text_field( $_REQUEST['s'] ) : ''; $input_id = $input_id . '-search-input'; ?> When a search on the activity log is preformed, a CSRF token is added to the URL, however it is not checked. Consequently, it can be exploited by luring the target user into clicking a specially crafted link or visiting a malicious website (or advertisement). ------------------------------------------------------------------------ Proof of concept ------------------------------------------------------------------------ http:///wp-admin/admin.php?page=activity_log_page&s=111"+onfocus=alert(document.domain)+"+autofocus="&paged=1 ------------------------------------------------------------------------ References ------------------------------------------------------------------------ [1] https://sumofpwn.nl/advisory/2016/cross_site_scripting_vulnerability_in_search_function_activity_log_wordpress_plugin.html [2] https://www.linkedin.com/in/edwinmolenaar [3] https://wordpress.org/plugins/aryo-activity-log/ [4] https://downloads.wordpress.org/plugin/aryo-activity-log.zip [5] https://developer.wordpress.org/reference/functions/sanitize_text_field/