------------------------------------------------------------------------ Cross-Site Scripting vulnerability in search function Activity Log WordPress Plugin ------------------------------------------------------------------------ Edwin Molenaar, 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 WordPress Plugin version 2.3.2. ------------------------------------------------------------------------ Fix ------------------------------------------------------------------------ This issue is fixed in Activity Log version 2.3.3 ------------------------------------------------------------------------ Details ------------------------------------------------------------------------ https://sumofpwn.nl/advisory/2016/cross_site_scripting_vulnerability_in_search_function_activity_log_wordpress_plugin.html 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 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 ------------------------------------------------------------------------ Summer of Pwnage (https://sumofpwn.nl) is a Dutch community project. Its goal is to contribute to the security of popular, widely used OSS projects in a fun and educational way.