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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-78159 — CVE-2026-78159에 대한 개념 증명 익스플로잇으로, The Events Calendar WordPress 플러그인의 parse_array 위젯 클래스 싱크를 통한 인증되지 않은 RCE입니다. | Kitploit
도구/GitHubGitHub/abraxas/cve-2026-78159
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingRemote Access Tool
GitHubabraxas/cve-2026-78159

CVE-2026-78159

CVE-2026-78159에 대한 개념 증명 익스플로잇으로, The Events Calendar WordPress 플러그인의 parse_array 위젯 클래스 싱크를 통한 인증되지 않은 RCE입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs — CVE-2026-78159

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  CVE-2026-78159

CVE-2026-78159

The Events Calendar 6.17.3 — stellarwp

WordPress용 The Events Calendar 플러그인은 parse_array 함수를 통해 6.17.3 이하의 모든 버전에서 원격 코드 실행(Remote Code Execution)에 취약합니다. 이는 위젯 'classes' 맵에 대한 검증이 불충분하기 때문에 발생하며, 일반 배열(plain-array) 페이로드가 is_safe_widget_instance() 객체 검사를 우회하여 Element_Classes::parse_array()의 호출 가능(callable) 호출 싱크에 도달할 수 있게 합니다. 이로 인해 인증되지 않은 공격자가 서버에서 코드를 실행할 수 있습니다. 악용을 위해서는 대상 사이트에서 tribe_events 게시물에 댓글이 활성화되어 있어야 하며, 조작된 wp:legacy-widget 블록을 포함하는 댓글이 최소 하나 이상 제출되어 있어야 합니다. 이는 do_blocks()가 댓글 영역을 포함한 단일 이벤트 HTML을 처리할 때 공격 체인이 트리거되기 때문입니다.

CVECVE-2026-78159 · CVE.org
CWECWE-94
CVSSCritical: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ProductThe Events Calendar
Affected6.17.3 이하 모든 버전 (포함)
Patched6.17.3.1 및 이후 버전
Auth없음 (소스 맵 참조)
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 전용 · 벤더/클라이언트 공개 팩, 스캐너 아님

권고 (소스 맵에서 발췌)

parse_array는 싱크이며 ajax action=이 아닙니다. HTTP는 POST /wp-comments-post.php 후 GET 검토 미리보기 URL입니다. 위젯 idBase는 events-list가 아닌 tribe-widget-events-list입니다.


진입점

  • Method: POST
  • Path: /wp-comments-post.php
  • Router: 인증되지 않은 wp-comments-post.php. TEC V2 단일 이벤트는 comments_template()을 버퍼링한 후 do_blocks()를 실행합니다. render_block_data는 tribe-widget-* 인스턴스를 재해시합니다. featured_events_only가 true인 the_widget('tribe-widget-events-list')는 목록을 비우므로 components/messages.php가 tec_classes($classes)를 실행합니다. Element_Classes::parse_array는 문자열 호출 가능(string-callable) 값을 호출합니다. 랩 카나리아 poc_witness_78159이며 system()도 wp_update_user도 아닙니다.
  • Notes: CVE-2026-78159 CWE-94: The Events Calendar 6.17.3. idBase는 반드시 tribe-widget-events-list여야 합니다 (PREFIX tribe-widget- + slug events-list). 더미 해시도 무방합니다. 첫 GET /event/lab-event/는 수집(harvest) 전용입니다. 댓글 리다이렉트 후 POCWitness78159가 나타날 때만 성공입니다.

호출 체인

  • GET /event/lab-event/ harvest comment_post_ID
  • POST /wp-comments-post.php comment=<!-- wp:legacy-widget {idBase tribe-widget-events-list, instance.encoded php-serialize-base64, instance.hash 0} /-->
  • 302 Location includes unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt)
  • GET that Location: comments_template includes the unapproved comment
  • Template_Bootstrap::get_v1_single_event_template_html do_blocks($html)
  • Service_Provider::enable_rendering_widget_copied (render_block_data) unserialize allowed_classes false, is_safe_widget_instance rejects objects only, wp_hash the plain array
  • render_block_core_legacy_widget the_widget tribe-widget-events-list
  • Widget_List setup_arguments array_merge instance (classes survives; setup_template_vars does not overwrite it)
  • empty featured list -> widget-events-list.php else branch components/messages.php
  • tec_classes($classes) -> Element_Classes::parse_array string key + is_callable value -> poc_witness_78159($results) echoes POCWitness78159

랩 전제 조건

  • The Events Calendar 6.17.3 활성화
  • 클래식 테마 (Twenty Twenty-One). 블록 테마는 tec_is_full_site_editor()를 통해 Template_Bootstrap::filter_template_include를 건너뛰므로 do_blocks가 댓글 HTML을 절대 보지 못합니다
  • tribe_events_calendar_options showComments=yes이므로 tribe_events가 댓글을 지원합니다
  • comment_status=open인 게시된 tribe_events 게시물 lab-event
  • comment_registration=0, 첫 댓글 보류 (unapproved + moderation-hash)
  • mu-plugin 함수 poc_witness_78159가 POCWitness78159를 출력 (랩 카나리아, 가젯 체인 아님)
  • V2 뷰/위젯 활성화 (6.17.3에서 항상 true)

증거(Witness)

검토 미리보기 GET의 HTTP 본문에 POCWitness78159가 포함됩니다. 해당 문자열이 없는 일반 이벤트 HTML은 아닙니다. debug.log에도 POCWitness78159가 추가될 수 있습니다.

성공 아님

  • POCWitness78159가 없는 일반 200 이벤트 HTML
  • Location을 따르지 않은 wp-comments-post.php 200/302
  • 블록이 없는 댓글 409/중복
  • 증거가 없는 403/404
  • 리버스 셸 또는 아웃바운드 연결
  • system()/exec()/wp_update_user 비밀번호 재설정 페이로드

패치 / 완화

먼저 이것을 하십시오: The Events Calendar를 6.17.3.1 이상으로 업데이트하십시오 (Wordfence는 CVE-2026-78006도 함께 커버하려면 6.17.4.1을 권장합니다).

업그레이드 후 검증

  • 패치된 빌드에 대해 CVE-2026-78159-Abraxas-Labs.py를 다시 실행하십시오: 매핑된 증거가 나타나지 않아야 합니다.
  • 배포된 트리에서 벤더 권고 / 변경 집합(changeset)을 확인하십시오 (참조 참조).
  • WAF 시그니처는 패치가 아니라 지연입니다.

즉시 업데이트할 수 없는 경우

  • 영향을 받는 컴포넌트를 비활성화하거나 격리하십시오.
  • 프로덕션에서 증거 조건을 탐색하십시오 (새로운 권한 사용자, 예상치 못한 파일, 주입된 행 — 이 CVE의 맵이 명시하는 모든 것).

재현 (승인된 랩)

오직 http://127.0.0.1:8088 (또는 바인딩한 루프백)만 대상으로 하십시오. 이 스크립트를 인터넷을 향해 지정하지 마십시오.

root@kitploit:~
python3 CVE-2026-78159-Abraxas-Labs.py

성공은 응답 본문에 위의 증거가 있는 것입니다. 일반 200 HTML은 아닙니다.


랩 이미지

재현에 사용된 루프백 스택. 이 폴더의 Dockerfile이 소스에서 빌드하지 않는 한 공식 이미지입니다.

  • lab/docker-compose.yml
  • lab/docker-compose.override.yml
  • lab/Dockerfile
root@kitploit:~
cd lab
docker compose up --force-recreate

YAML이 로컬 디렉터리를 마운트하는 경우 (버전 표의 플러그인 zip / 소스 태그) 취약한 제품 트리를 Compose 옆에 바인딩하십시오. 127.0.0.1 외에는 아무것도 게시하지 마십시오.


참조

  • CVE-2026-78159 · NVD

  • CVE-2026-78159 · CVE.org

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/common/src/Tribe/Utils/Element_Classes.php#L211

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Template_Bootstrap.php#L214

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Widgets/Service_Provider.php#L279

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/views/v2/components/messages.php#L30

  • plugins.trac.wordpress.org/changeset?reponame=&old=3667866%40the-events-calendar&new=3667866%40the-events-calendar

  • plugins.trac.wordpress.org/changeset?reponame=&old=3667867%40the-events-calendar&new=3667867%40the-events-calendar

  • www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve

  • github.com/advisories/GHSA-9c57-9fxg-8x9j

  • nvd.nist.gov/vuln/detail/CVE-2026-78159

  • Plugin directory: the-events-calendar

  • Trac browser: plugins.trac.wordpress.org/the-events-calendar

  • SVN tags: plugins.svn.wordpress.org/the-events-calendar

  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null


레코드 (구조화)

root@kitploit:~
# CVE-2026-78159  (structured records)

- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-78159`
- CWE: CWE-94
- published: 2026-09-12T08:16:24.377

## NVD description

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

## MITRE description

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

## Affected

- stellarwp The Events Calendar 0 affected

## References (JSON sources only)

- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/common/src/Tribe/Utils/Element_Classes.php#L211
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Template_Bootstrap.php#L214
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Widgets/Service_Provider.php#L279
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/views/v2/components/messages.php#L30
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667866%40the-events-calendar&new=3667866%40the-events-calendar
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667867%40the-events-calendar&new=3667867%40the-events-calendar
- https://www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
- https://github.com/advisories/GHSA-9c57-9fxg-8x9j
- https://nvd.nist.gov/vuln/detail/CVE-2026-78159

## GitHub advisory

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all...

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

라이선스

이 공개 팩은 GNU Affero General Public License v3.0에 따라 라이선스가 부여됩니다. LICENSE를 참조하십시오.


면책 조항

이 팩은 벤더, 사이트 소유자, 라이선스된 랩을 위한 것입니다. 스크립트는 127.0.0.1과 통신합니다. 소유하지 않은 시스템에 대해 사용하는 것은 Abraxas Labs에 의해 승인되지 않습니다. 보증은 없습니다.

abraxaslabs.tech · github.com/abraxas · @abraxas_null

도구 다운로드