
Repository di ricerca per CVE-2026-19089, una vulnerabilità di esecuzione remota di comandi in WooCommerce Product Input Fields di Tyche Softwares. Contiene bozza di script di ricerca e note per test di laboratorio autorizzati.

Product Input Fields for WooCommerce < 2.0.2 - caricamento arbitrario di file non autenticato
Il plugin Product Input Fields for WooCommerce di Tyche Softwares non convalida i tipi di file caricati quando l'impostazione dei tipi accettati del campo viene lasciata vuota (la sua stessa documentazione la pubblicizza come "accetta tutti i file"). Un ospite non autenticato può allegare un file arbitrario durante l'aggiunta al carrello, completare il checkout e recuperare l'oggetto nella directory di caricamento del plugin. Su host che eseguono quella struttura come PHP, lo stesso percorso è esecuzione di codice in remoto.
| CVE | CVE-2026-19089 |
| CWE | CWE-434: Unrestricted Upload of File with Dangerous Type |
| CVSS 3.1 | 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Vendor | Tyche Softwares |
| Product | Product Input Fields for WooCommerce (product-input-fields-for-woocommerce) |
| Affected | dalla 2.0.0 alla 2.0.1 (plugin precedente alla 2.0.2) |
| Patched | 2.0.2 |
| Related | CVE-2024-13359 (AFU limitato fino alla 1.12.0) |
| CNA | WPScan |
Questo repository contiene un proof-of-concept di Abraxas Labs per soli test autorizzati - divulgazione al fornitore, riproduzione in laboratorio o un host per cui si dispone di autorizzazione scritta alla valutazione.
Ho eseguito il client contro un negozio WooCommerce locale con Product Input Fields 2.0.1, checkout come ospite più Cash on Delivery, e un campo File globale i cui tipi accettati erano vuoti. Lo script prepara il caricamento e il checkout; non include una webshell.
Un campo di input prodotto di tipo File è associato al modulo add-to-cart dello storefront come alg_wc_pif_global_* / alg_wc_pif_local_*. Quando i tipi di file accettati sono vuoti, il plugin memorizza qualunque cosa l'ospite abbia inviato. Dopo un ordine andato a buon fine il file viene persistito sotto wp-content/uploads/product_input_fields/, tipicamente denominato {item_id}_{original_filename}.
I siti sono esposti quando tutte queste condizioni sono vere:
In tali condizioni l'impatto è la scrittura arbitraria di file come utente web. Se la directory di caricamento è eseguibile, si tratta di takeover del sito.
Il client rimane sullo storefront. Non include una webshell PHP né una reverse shell.
GET dell'URL del prodotto, raccolta dei nomi dei campi file PIF e dell'id prodotto add-to-cart.POST add-to-cart con un marker PNG benigno (image/png) sotto il nome del campo PIF. Il nome file predefinito è pifx.php così un laboratorio può vedere se il plugin ha consentito un'estensione pericolosa. Il marker non è PHP eseguibile./?wc-ajax=checkout con Cash on Delivery.redirect di checkout se presente, poi scansiona wp-content/uploads/product_input_fields/{1..499}_{name} e POST x cercando il testimone SHELL_OK. [ LIVE ] viene stampato solo quando quel testimone ritorna.CVE-2026-19089-WooCommerce-Tyche-Abraxas-Labs.py è un piccolo client Python 3: banner figlet colorato, poi i quattro passaggi sopra. Comunica solo con gli URL che si passano sulla riga di comando.
requestsSu macOS con Python di Homebrew (PEP 668), usare un venv invece di un pip install di sistema:
python3 -m venv .venv
.venv/bin/pip install requests
CVE-2026-19089-WooCommerce-Tyche-Abraxas-Labs.py <base_url> <product_url> [shell_name]
.venv/bin/python3 CVE-2026-19089-WooCommerce-Tyche-Abraxas-Labs.py \
https://shop.example \
https://shop.example/product/demo/
Un terzo argomento imposta il nome file caricato; il valore predefinito è pifx.php.
Con meno di due argomenti lo script stampa il banner e le istruzioni d'uso, poi esce con 1. È un modo sicuro per confermare che il client si avvii.
WooCommerce con checkout come ospite e un gateway utilizzabile (il client invia payment_method=cod), Product Input Fields precedente alla 2.0.2, e un prodotto pubblicato il cui campo File accetta qualsiasi tipo. Contro la 2.0.2+ o un campo con una allow-list rigida, l'oggetto non dovrebbe arrivare come caricamento .php.
Non puntare questo strumento verso alcun host che non si possiede o per cui non si ha autorizzazione scritta al test.
wp-content/uploads/product_input_fields/ (e woocommerce_uploads/alg_uploads/product_input_fields/ in alcune configurazioni), rimuovere oggetti inattesi e ruotare i segreti per wp-admin.Solo per uso di ricerca ed educativo. Non eseguire, distribuire o utilizzare questo materiale contro alcun host a meno che non si abbia esplicita autorizzazione scritta sia dalla parte che ospita questo repository sia dal proprietario dei sistemi target.
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null