Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Elementor-Pro-Unauthenticated-Arbitrary-File-Upload-to-RCE — CVE-2026-32475 The Elementor Pro Forms File Upload field handles validation and file processing in two separate loops with different handling of empty upload entries (UPLOAD_ERR_NO_FILE). An unauthenticated attacker can submit a multipart | Kitploit
Tools/GitHubGitHub/absholi7ly/elementor-pro-unauthenticated-arbitrary-file-upload-to-rce
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationWeb Security
GitHubabsholi7ly/elementor-pro-unauthenticated-arbitrary-file-upload-to-rce

Elementor-Pro-Unauthenticated-Arbitrary-File-Upload-to-RCE

CVE-2026-32475 The Elementor Pro Forms File Upload field handles validation and file processing in two separate loops with different handling of empty upload entries (UPLOAD_ERR_NO_FILE). An unauthenticated attacker can submit a multipart

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
View Repository
512 days agoNot yet reviewed
Share
  • Exploit Author: Abdualhadi Khalifa (https://x.com/absholi7ly)
  • Version: Elementor Pro <= 4.2.1
  • Tested on: WordPress + Elementor Pro 4.2.1 (Windows / Laragon / Apache )
  • CVE: CVE-2026-32475
  • Credits: Vulnerability discovered by Tin Pham (TF1T) via Patchstack Bug Bounty Program
  • Category: WebApps

Description:

The Elementor Pro Forms File Upload field handles validation and file processing in two separate loops with different handling of empty upload entries (UPLOAD_ERR_NO_FILE). An unauthenticated attacker can submit a multipart request with an empty first file part followed by a PHP payload for the same field, causing validation() to return early while process_field() still moves the PHP file into a public directory: wp-content/uploads/elementor/forms/.php

Prerequisite:

  • Published page containing an Elementor Pro Form widget
  • File Upload field present (non-required / default settings)

Usage

Automatically retrieves the post_id, form_id, and field_id from the target page:

root@kitploit:~
python poc.py -t http://localhost/wp --page-url "http://localhost/wp/?page_id=16" -c "whoami"

Or:

root@kitploit:~
python poc.py -t http://localhost/wp --page-id 16 -c "whoami"

Interactive Session

Start an interactive session:

root@kitploit:~
python poc.py -t http://localhost/wp --page-id 16 -i

Poc

Poc

You can modify the PoC to suit your needs and your testing environment.

Note

The core of the vulnerability is bypassing the file upload mechanism itself. This part does not differ whether you perform the test in a local lab or against a real server: the empty first file part + PHP payload in the upload field bypass extension validation, yet the file is still processed by process_field(). We demonstrated that the file is successfully written, which is exactly what it describes.

Regarding the hardcoded Laragon path:

That was only to facilitate local verification.

On the real target, the directory pattern is known and fixed:

root@kitploit:~
/wp-content/uploads/elementor/forms/

What is not fixed is the final filename.

Elementor does not retain the original filename. In process_field(), the stored filename is generated as follows:

Therefore, if you upload shell.php, the filename may become something like:

root@kitploit:~
66f3a1c2e9b47.php

inside:

root@kitploit:~
/wp-content/uploads/elementor/forms/

uniqid() is time-based and is not a strong random value; it is based approximately on the timestamp + microseconds. Therefore, recovering the file remotely becomes a filename discovery problem rather than an upload problem.

For example, you can use a timing window based on the server's Date header and request timing, search within a narrow range around the upload time, or recover the exact URL if the form sends an email containing [all-fields].

I kept the PoC focused on proving the core issue itself, which is unauthenticated file upload, clearly and directly. Fully explaining the remote recovery of the uniqid() value would make the demonstration much longer than necessary to validate the vulnerability itself.

Download Tool