Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
CriticalPublic exploit

Unauthenticated Arbitrary File Upload in Ninja Forms File Uploads for WordPress

IdentifiersCVE-2026-0740CWE-434· Unrestricted Upload of File with…

CVE-2026-0740 is a critical arbitrary file upload vulnerability in the Ninja Forms - File Uploads plugin for WordPress affecting all versions up to and including 3.3.26. The flaw is caused by missing file type and destination filename validation in the upload handling path, specifically involving NF_FU_AJAX_Controllers_Uploads::handle_upload and the underlying _process() logic. The plugin validates the source filename but fails to properly validate or sanitize a user-controlled destination filename derived from POST data, allowing attackers to supply dangerous extensions such as .php. Available reporting also indicates the destination filename can include path traversal sequences, enabling placement of uploaded files into web-accessible locations such as the webroot. An unauthenticated attacker can exploit the issue by sending a crafted POST request to wp-admin/admin-ajax.php targeting the Ninja Forms upload AJAX action, uploading a malicious PHP payload, and then requesting the uploaded file to execute code on the server. Versions 3.3.25 and 3.3.26 only partially addressed the issue; the vulnerability was fully fixed in 3.3.27.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation allows unauthenticated attackers to upload arbitrary files to the server, including PHP webshells or other executable payloads. If the uploaded file is placed in a web-accessible directory and executed, this can result in remote code execution in the context of the web server, full website compromise, persistent backdoor deployment, unauthorized modification of site content, theft of sensitive data, and potential follow-on activity such as lateral movement from the compromised host. Reporting indicates confidentiality, integrity, and availability impacts are all high, and active exploitation has been observed.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, restrict or disable the vulnerable file upload functionality and block unauthenticated access to the affected AJAX upload action where operationally feasible. Monitor and filter POST requests to /wp-admin/admin-ajax.php associated with Ninja Forms upload actions, especially requests containing suspicious destination filenames, executable extensions, or directory traversal sequences. Inspect the filesystem for unexpected files in upload paths and web-accessible directories, particularly PHP files under wp-content/uploads or other writable locations. Deploy available WAF/IPS protections such as vendor or third-party rules where supported. Because exploitation is active, mitigation should be treated only as temporary until the plugin is upgraded.

Remediation

Patch, then assume compromise.

Upgrade the Ninja Forms - File Uploads plugin to version 3.3.27 or later. Version 3.3.27 reportedly fully remediates the issue by applying basename() to the destination filename to prevent path traversal, sanitizing the destination filename with WordPress sanitize_file_name(), and validating the destination filename extension against a blacklist that rejects dangerous executable extensions including php, phtml, and phar. Do not rely on versions 3.3.25 or 3.3.26 as complete fixes, as both were only partial mitigations.
PUBLIC EXPLOITS

Exploits

5 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (2 hidden).

VALID 5 / 7 TOTALView more in app
CVE-2026-0740MaturityPoCVerified exploit

Single-file Python exploit targeting a WordPress Ninja Forms upload vulnerability labeled CVE-2026-0740. The script is an interactive, multithreaded exploitation tool rather than a mere detector. It accepts either a file of targets or manual target input, accepts a local payload file, and then concurrently attacks each target. For each host, it normalizes the URL to try HTTPS then HTTP, requests a nonce from /wp-admin/admin-ajax.php using the nf_fu_get_new_nonce action, and then submits a multipart upload using nf_fu_upload. The exploit abuses the image_jpg parameter to set a traversal-based destination path using the hardcoded prefix ../../../../ plus the supplied filename. If the server response indicates the temporary name matches the traversal path, the script constructs a public URL under /wp-content/uploads/ninja-forms/tmp/ and fetches it to validate success. Validation is tailored to a specific uploaded web shell or file manager payload by checking for 'File Manager' markers in the HTTP response body. Successful URLs are appended to vuln_ninja.txt. Repository structure is minimal: one Python script containing constants, logging helpers, target loading, URL normalization, upload/validation logic, threaded worker orchestration, and the CLI main entry point.

zycoder0dayDisclosed May 11, 2026pythonwebnetwork
CVE-2026-0740MaturityPoCVerified exploit

Repository is a small standalone Python exploit tool consisting of three files: README.md, a large target list (list.txt), and the main script (ninja.py). The script is not part of a known exploit framework. Its purpose is mass exploitation of WordPress sites using Ninja Forms upload-related AJAX actions. For each target URL from list.txt, it constructs the endpoint /wp-admin/admin-ajax.php, requests a nonce using action=nf_fu_get_new_nonce with hardcoded FORM_ID=7 and FIELD_ID=7, then attempts a multipart upload using action=nf_fu_upload. The uploaded content is a PHP web shell/uploader stored under the server-side name murrez.php while the multipart filename is disguised as doc.pdf with MIME type application/pdf. If the JSON response indicates success and references the expected tmp_name, the script assumes the shell is reachable at /wp-content/uploads/ninja-forms/tmp/murrez.php and appends that URL to shell.txt. The code disables TLS verification, suppresses urllib3 warnings, uses a generic Mozilla user-agent, and includes basic exception handling and progress output. This is an operational mass-upload exploit with a hardcoded payload rather than a detection script.

murrezDisclosed Apr 25, 2026pythonmarkdownweb
CVE-2026-0740MaturityPoCVerified exploit

This repository contains a standalone Python exploit and a companion Nuclei template for CVE-2026-0740, an unauthenticated arbitrary file upload vulnerability in the WordPress Ninja Forms File Uploads plugin up to version 3.3.26. The repository structure is small and focused: one Python exploit script (CVE-2026-0740.py), one YAML detection/verification template (CVE-2026-0740.yaml), plus README and license files. The main exploit capability is unauthenticated file upload via the plugin’s WordPress AJAX interface. Based on the README and YAML flow, exploitation works by first requesting a nonce from /wp-admin/admin-ajax.php using the nf_fu_get_new_nonce action, then submitting a multipart upload using nf_fu_upload. The README indicates support for path traversal through a destination parameter, allowing more controlled placement of the uploaded file. The operator provides the payload file locally, such as a PHP web shell, and the script attempts to confirm the resulting accessible URL. This makes the exploit operational rather than a simple proof of concept. The Python script is a custom exploit tool, not tied to a major exploitation framework. It uses httpx and httpx-socks, supports custom headers, configurable timeout, optional SOCKS5 proxying, optional SSL verification, colored logging, and command-line arguments for target URL, local file, and destination path. The visible code shows client setup, proxy handling, and invocation of an exploit() routine; the README confirms the intended workflow and options. The YAML file is a Nuclei-style template, but the repository as a whole is not primarily a framework module; it serves as both exploit and detection/verification material. Fingerprintable target endpoints include the WordPress AJAX endpoint /wp-admin/admin-ajax.php, the upload verification path under /wp-content/uploads/ninja-forms/tmp/, and the AJAX action names nf_fu_get_new_nonce and nf_fu_upload. The exploit targets web-accessible WordPress installations running the vulnerable plugin. Successful exploitation can result in arbitrary file placement and possible remote code execution if the uploaded file is executable by the server.

0xgh057r3c0nDisclosed Apr 17, 2026pythonyamlweb
CVE-2026-0740MaturityPoCVerified exploit

This repository is a small standalone Python exploit for CVE-2026-0740 affecting the WordPress Ninja Forms - File Uploads extension up to version 3.3.26. The repository contains one primary code file (CVE-2026-0740.py), a README with exploitation guidance and examples, and a minimal requirements.txt listing httpx and socksio. The exploit is not part of a larger offensive framework. Its workflow is straightforward: it accepts a target URL, a local file to upload, an optional destination path/filename, optional proxy settings, custom headers, and timeout values. It then sends a POST request to the WordPress AJAX endpoint /wp-admin/admin-ajax.php with action=nf_fu_get_new_nonce and a randomly generated field_id to obtain a valid upload nonce without authentication. After receiving the nonce, it performs a second multipart POST to the same endpoint with action=nf_fu_upload, attaching the attacker-controlled file while masquerading it as image.jpg and abusing the image_jpg POST parameter to control the final destination filename/path. The main exploit capability is unauthenticated arbitrary file upload. Because the destination filename is attacker-controlled, the exploit can be used to write files with dangerous extensions or traverse directories, depending on the vulnerable plugin version. The README explicitly documents that path traversal works on <= 3.3.24 and that later vulnerable versions still permit dangerous extension manipulation until 3.3.27 fully fixes the issue. The exploit itself does not generate a payload; instead, it uploads any user-supplied file. The README demonstrates using a PHP webshell payload to achieve remote command execution via a URL such as /wp-content/uploads/ninja-forms/ws.php?cmd=id. Notable fingerprintable targets and indicators include the WordPress AJAX endpoint /wp-admin/admin-ajax.php, the AJAX actions nf_fu_get_new_nonce and nf_fu_upload, the abused POST parameter image_jpg, and the upload path /wp-content/uploads/ninja-forms/tmp/. The script also uses a default traversal destination of ../../../, which is a strong indicator of intended arbitrary path placement. Overall, this is a real, functional exploit PoC with operational capability: it automates nonce retrieval and malicious upload, but leaves payload selection to the operator.

whattheslimeDisclosed Apr 7, 2026pythonmarkdownwebnetwork
CVE-2026-0740MaturityPoCVerified exploit

Repository contains a README and one Python exploit script, shadow.py. The script is a mass-exploitation tool for CVE-2026-0740 affecting the WordPress Ninja Forms - File Uploads plugin <= 3.3.26. Its workflow is: read target URLs from list.txt, POST to /wp-admin/admin-ajax.php with action=nf_fu_get_new_nonce using hardcoded form_id=7 and field_id=7, parse the returned nonce, then POST again to the same endpoint with action=nf_fu_upload and a multipart file upload. The uploaded content is a PHP web uploader disguised as doc.pdf with MIME type application/pdf, while the POST parameter doc_pdf requests server-side renaming to shadow.php. On success, the script constructs the shell URL under /wp-content/uploads/ninja-forms/tmp/shadow.php, prints it, and appends it to shell.txt. The exploit is operational rather than a simple PoC because it includes a working payload and supports batch targeting, but payload customization is minimal and hardcoded. The main capability is unauthenticated arbitrary file upload leading to remote code execution via a web-accessible PHP shell.

xShadow-HereDisclosed Apr 8, 2026pythonmarkdownweb
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
NinjaformsFile Uploadsapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

ACTIVITY FEED

Recent activity

35 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware1

Malware families riding this exploit, with evidence and IOCs.

Detection signatures1

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity31

Community discussion across Reddit, Mastodon, and other social sources.