
PoC autenticato per CVE-2026-0911: verifica il caricamento debole di file e il comportamento dei file orfani nell'endpoint di importazione dei moduli del plugin WordPress Hustle, con scansione multi-target e personalizzazione del payload.
Strumento assistente di ricerca / pentest che testa il comportamento di caricamento tramite l'endpoint di importazione modulo (con autenticazione) per il plugin WordPress Hustle (wordpress-popup, WPMU DEV), nell'ambito di CVE-2026-0911.
Lo script CVE-2026-0911.py in questo repository o set di file deve essere utilizzato esclusivamente su sistemi di vostra proprietà o testati con autorizzazione scritta.
Nelle versioni interessate (Wordfence/NVD: 7.8.9.2 e precedenti) la chiamata a wp_handle_upload() in action_import_module() viene eseguita con test_type => false, quindi la verifica del tipo di file risulta debole; anche se la validazione JSON post-importazione fallisce, il file caricato potrebbe (file "orfano"). Se il server esegue PHP in , questo può far parte di una catena che porta praticamente all'esecuzione remota di codice. Nelle versioni patchate viene introdotto e una restrizione tramite temporaneo.
wp-content/uploadstest_type => true.jsonupload_mimesPer un riepilogo tecnico dettagliato, consultare la voce NVD e i riferimenti Wordfence.
from __future__ import annotations)Esempio di installazione:
pip install requests
È obbligatorio almeno un target (-u o -l) e una sessione WordPress valida (--cookie o --cookie-file).
python CVE-2026-0911.py -u "https://esempio.com" --cookie "wordpress_logged_in_...=...; ..."
Aiuto:
python CVE-2026-0911.py --help
| Parametro | Descrizione |
|---|---|
-u, --url | URL root di un singolo target (es. https://site.com) |
-l, --list | File con un URL per riga (commenti con #) |
--cookie | Stringa cookie copiata dal browser |
--cookie-file | File contenente il cookie su una singola riga |
--nonce | Nonce WordPress manuale per hustle_single_action (invece del recupero automatico) |
--admin-page | Valore admin.php?page= da cui recuperare il nonce (default: hustle_popup_listing) |
--module-id | moduleId POST (default 0: modulo non valido → flusso di importazione) |
--module-type | popup, slidein, embedded, social_sharing |
--module-mode | Es. informational, optin |
--remote-name | Nome file inviato nel multipart (default: probe_rce.php) |
--payload-file | Legge il contenuto da caricare da un file (sostituisce --uploader e la probe predefinita) |
--uploader | Usa il corpo del mini form-uploader PHP integrato |
--workers | Numero di thread concorrenti in modalità lista (default: 8) |
--timeout | Timeout richiesta in secondi (default: 25) |
--verify-ssl | Abilita la verifica TLS (default: disabilitata) |
--debug | Output di debug aggiuntivo |
--quiet |
admin-ajax.php, possibili URL candidati. Con più target le righe possono apparire mescolate poiché provengono dai thread; ogni riga contiene il dominio del target.--quiet questi dettagli vengono soppressi.append) immediatamente al file -o, scritti su disco con flush / fsync quando possibile. Nome file predefinito: cve-2026-0911-hits.txt (viene riepilogato il percorso assoluto nella directory di lavoro).Sito singolo, verifica TLS, debug:
python CVE-2026-0911.py -u "https://lab.local" --cookie-file cookie.txt --verify-ssl --debug
Scansione lista, 16 worker, output personalizzato:
python CVE-2026-0911.py -l target.txt --cookie "..." --workers 16 -o risultati.txt
Corpo uploader integrato e nome file remoto personalizzato:
python CVE-2026-0911.py -u "https://lab.local" --cookie "..." --uploader --remote-name test.php
single_module_action_nonce in optinVars.moduleId=0 il plugin potrebbe restituire un errore prima del caricamento a causa del limite moduli; in tal caso il file non viene scritto.wp-content/uploads/YYYY/MM/; se WordPress rinomina il file, il percorso reale potrebbe differire.--cookie non funziona su domini diversi; nei test multi-sito è necessaria una sessione appropriata per ogni ambiente.0, altrimenti un codice diverso da zero (ritorno di main interno allo script).Ctrl+C: 130.Questo strumento è destinato esclusivamente a test di sicurezza legali, formazione e uso difensivo. L'utilizzo su sistemi non autorizzati è illegale e può comportare gravi sanzioni. Autori e contributori non possono essere ritenuti responsabili per un uso improprio.
| Disattiva i log di dominio/passaggi; focalizzato sul riepilogo |
-o, --output | File a cui vengono aggiunte le righe di "hit" riuscite |