Abstract
Multiple reflected Cross-Site Scripting (XSS) vulnerabilities have been found in the Ninja Forms WordPress Plugin. By using this issue an attacker can inject malicious JavaScript code into the application, which will execute within the browser of any user who views the relevant application content.
OVE ID
OVE-20160714-0017
Tested versions
This issue was successfully tested on Ninja Forms WordPress Plugin version 2.9.51.
Fix
This issue is resolved in Ninja Forms v2.9.52 (18 July 2016).
Introduction
The WordPress Ninja Forms plugin is a plugin that simplifies creating forms and managing submissions. Multiple reflected Cross-Site Scripting vulnerabilities have been discovered in the WordPress Ninja Forms plugin that allow an unauthenticated attacker to inject malicious JavaScript code into the application, which will execute within the browser of any user who views the relevant application content. The attacker-supplied code can perform a wide variety of actions, such as stealing victims' session tokens or login credentials, performing arbitrary actions on their behalf, and logging their keystrokes or deliver malware.
Details
The WordPress Ninja Forms plugin insufficiently performs CSRF validation (ajaxreferer
and nonce
) and fails to perform output encoding according to context at any point where user-supplied input is copied into application responses. The vulnerability at least resides in the admin-ajax.php
and edit.php
page actions of the Ninja Forms plugin. As a result this malicious code will be executed.
Authenticated WP-Admins can be induced to issue the attacker's crafted request in various ways. For example, the attacker can send a victim a link containing a malicious URL or they can create an innocuous looking web site that causes anyone viewing it to make arbitrary cross-domain requests to the vulnerable application (using GET).
Proof of concept
These vulnerabilities can be demonstrated by submitting the following requests to the form_id
parameter of the admin-ajax.php
and edit.php
pages respectively:
/wp-admin/admin-ajax.php?step=4&total_steps=6&args[form_id]=1lxmjg<img src%3daonerror%3dalert(document.cookie)>meiij&args[filename]=kllk'<&action=nf_download_all_subs
/wp-admin/edit.php?post_status=all&post_type=nf_sub&action=-1&m=0&form_id=1'><script>alert('SumOfPwn.nl')<%2Fscript>&paged=1&mode=list&action2=-1
Please note that the other parameter in this request are also vulnerable.