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
CVE-2026-0911 — Authenticated PoC for CVE-2026-0911: tests weak file upload and orphan file behavior in WordPress Hustle plugin's module import endpoint, with multi-target scanning and payload customization. | Kitploit
Tools/GitHubGitHub/murrez/cve-2026-0911
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingPayload Development
GitHubmurrez/cve-2026-0911

CVE-2026-0911

Authenticated PoC for CVE-2026-0911: tests weak file upload and orphan file behavior in WordPress Hustle plugin's module import endpoint, with multi-target scanning and payload customization.

View Repository
14 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-0911 — Hustle Module Import PoC

A research / pentest helper tool that tests the upload behavior via the authenticated module import endpoint for the WordPress plugin Hustle (wordpress-popup, WPMU DEV) under CVE-2026-0911.

The CVE-2026-0911.py script in this repository or file set should only be used on systems you own or have explicit written permission to test.


Brief summary (vulnerability logic)

In affected versions (Wordfence/NVD: 7.8.9.2 and earlier), the wp_handle_upload() call inside action_import_module() is made with test_type => false, leaving file type validation weak; even if JSON validation fails after import, the uploaded file may not be deleted ("orphan" file). If the server executes PHP under wp-content/uploads, this can be part of a chain leading to remote code execution in practice. Patched versions introduce and a restriction via temporary .

test_type => true
.json
upload_mimes

See the NVD record and Wordfence references for a detailed technical summary.


Requirements

  • Python 3.9+ (type hints compatible via from __future__ import annotations)
  • Package: requests

Example installation:

root@kitploit:~
pip install requests

Running

At least one target (-u or -l) and a valid WordPress session (--cookie or --cookie-file) are required.

root@kitploit:~
python CVE-2026-0911.py -u "https://example.com" --cookie "wordpress_logged_in_...=...; ..."

Help:

root@kitploit:~
python CVE-2026-0911.py --help

Command-line parameters

ParameterDescription
-u, --urlSingle target root URL (e.g. https://site.com)
-l, --listFile containing one URL per line (# for comments)
--cookieCookie string copied from the browser
--cookie-fileFile holding the cookie on a single line
--nonceManually supplied WordPress nonce for hustle_single_action (instead of automatic retrieval)
--admin-pageadmin.php?page= value from which the nonce is fetched (default: hustle_popup_listing)
--module-idPOST moduleId (default 0: invalid module → import flow)
--module-typepopup, slidein, embedded, social_sharing
--module-modeE.g. informational, optin
--remote-nameFilename sent in the multipart (default: probe_rce.php)
--payload-fileRead payload content from a file (overrides --uploader and the default probe)
--uploaderUse the built-in mini PHP form-uploader body
--workersNumber of concurrent threads in list mode (default: 8)
--timeoutRequest timeout in seconds (default: 25)
--verify-sslEnable TLS verification (default: off)
--debugAdditional debug output
--quietDisable domain/step logs; summary-focused

Output and logging

  • By default, step logs are printed for each target: nonce GET request, admin-ajax.php POST summary, possible candidate URLs. With multiple targets, lines may appear interleaved since they come from threads; each line includes the target domain.
  • --quiet suppresses these details.
  • Results considered successful (an "orphan upload" signal in the script's internal logic) are immediately appended to the -o file, written to disk with flush / fsync where possible. Default filename: cve-2026-0911-hits.txt (absolute path in the working directory is summarized).
  • File format: target and description on one line; indented candidate shell URLs below.

Example scenarios

Single site, TLS verification, debugging:

root@kitploit:~
python CVE-2026-0911.py -u "https://lab.local" --cookie-file cookie.txt --verify-ssl --debug

List scan, 16 workers, custom output:

root@kitploit:~
python CVE-2026-0911.py -l targets.txt --cookie "..." --workers 16 -o results.txt

Built-in uploader body and custom remote filename:

root@kitploit:~
python CVE-2026-0911.py -u "https://lab.local" --cookie "..." --uploader --remote-name test.php

Prerequisites and limitations

  • Valid WordPress session and access to the Hustle admin interface; the nonce is usually read from the single_module_action_nonce field inside optinVars.
  • Free tier quota: on the moduleId=0 path, the plugin may return an error due to module limits before uploading; in that case the file is not written.
  • Candidate URLs are generated based on the wp-content/uploads/YYYY/MM/ assumption; if WordPress renames the file, the actual path may differ.
  • The same --cookie does not work across different domains; multi-site testing requires an appropriate session for each environment.

Exit code

  • 0 if at least one "hit" is successful, non-zero otherwise (script-internal main return).
  • Interrupt with Ctrl+C: 130.

References

  • NVD — CVE-2026-0911
  • WordPress.org — Hustle plugin
  • The Wordfence threat intelligence link is listed in the NVD "References" section.

Disclaimer

This tool is intended for legal security testing, education, and defensive purposes only. Use on unauthorized systems is illegal and may lead to severe penalties. The authors and contributors cannot be held responsible for misuse.

Download Tool
-o, --outputFile to which successful "hit" lines are appended