CVE-2016-20066
Description
WordPress CP Polls 1.0.8 stores unsanitized file uploads, enabling persistent XSS via crafted scripts with event handlers.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
WordPress CP Polls 1.0.8 stores unsanitized file uploads, enabling persistent XSS via crafted scripts with event handlers.
Vulnerability
WordPress CP Polls plugin version 1.0.8 (and possibly earlier versions) contains a persistent cross-site scripting (XSS) vulnerability [1]. The plugin fails to properly sanitize values from file uploads before storing them in the database. This allows an attacker to upload a file containing malicious script payloads with event handlers, such as onerror, that will execute arbitrary JavaScript in the browser of any user viewing the affected poll content.
Exploitation
An attacker can exploit this vulnerability by first uploading a file with a crafted script payload via the poll's file upload functionality [1][2]. Successful exploitation may require a privileged user (e.g., an administrator) to perform an action, such as clicking a malicious link that triggers a cross-site request forgery (CSRF) attack [1]. The attacker does not need direct authentication; they can use CSRF to trick the administrator into uploading the malicious file or otherwise saving the unsanitized payload. The script executes when a victim views the page containing the uploaded file.
Impact
Successful exploitation leads to arbitrary JavaScript execution in the context of the victim's browser session [1][2]. Since the XSS is persistent, every user who visits the affected poll page will execute the injected script. Depending on the victim's privileges, this can result in session hijacking, defacement, or theft of sensitive data. The attacker does not gain direct server-level access but can perform any action that the victim user can within the WordPress admin panel.
Mitigation
As of the vulnerability disclosure (2016-02-22), the affected version CP Polls 1.0.8 is the latest. The vendor (dwbooster) has not released a security update to address this issue [1]. Users are advised to disable or remove the plugin until a fix is available, or to implement a web application firewall rule that blocks malicious file uploads. No CISA KEV listing is known.
AI Insight generated on Jun 15, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
1Patches
0No patches discovered yet.
Vulnerability mechanics
Root cause
"Missing input sanitization in CSV file import and poll settings fields allows injection of arbitrary HTML and JavaScript."
Attack vector
An attacker can craft a malicious CSV file containing JavaScript payloads in event handlers such as `<img src=x onerror=alert('You_are_owned!')>` and upload it via the import functionality. Because there is no CSRF protection on this action, the attacker can also chain this with a CSRF attack by sending a crafted HTML page to an administrator; if the administrator visits the page while authenticated, the malicious CSV is imported silently [ref_id=1]. Once imported, the injected script executes in the browsers of any user viewing the affected poll data, leading to persistent cross-site scripting.
Affected code
The CP Polls plugin for WordPress (version 1.0.8) fails to sanitize values before saving them to the database, and the CSV import functionality does not sanitize uploaded file contents. The import endpoint at `wp-admin/admin.php?page=CP_Polls&cal=1&list=1&import=1` accepts a `importfile` parameter without proper validation [ref_id=1].
What the fix does
The advisory states that version 1.0.9 was released on 2016-03-01 to address these issues [ref_id=1]. The patch does not show the exact code changes, but the fix would need to sanitize all user-supplied values before saving them to the database and validate/escape the contents of imported CSV files to prevent HTML/JavaScript injection. Additionally, CSRF tokens should be added to the import and settings endpoints to prevent cross-site request forgery.
Preconditions
- configThe target site must be running WordPress with CP Polls plugin version 1.0.8
- inputAn attacker must be able to upload a crafted CSV file via the import functionality, or trick an authenticated administrator into visiting a malicious CSRF page
- authThe administrator must be logged into WordPress when the CSRF attack is executed
Generated on Jun 15, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
2News mentions
0No linked articles in our index yet.