🔍 CVE-2026-120741

5.4
CVSS Score
MEDIUM
2026-11-07
2026-11-07 03:17
✅ 완료

🇰🇷 한글 설명

MotoPress Appointment Booking Lite 플러그인 2.4.8 이하 버전에서 공개 REST 엔드포인트 '/motopress/appointment/v1/customers/create'의 name 파라미터가 살균되지 않고 저장되며, 관리자 목록 출력 시 이스케이프되지 않아 인증되지 않은 공격자가 저장형 XSS를 수행할 수 있습니다. 악성 스크립트는 해당 페이지에 접근하는 사용자 브라우저에서 실행됩니다.

💡 쉬운 설명

예약 플러그인의 고객 등록 기능에 로그인 없이 접근할 수 있는데, 이름 입력란에 악성 코드를 넣어 저장할 수 있습니다. 관리자가 예약 목록을 열면 그 코드가 실행됩니다.

🇺🇸 원문 (English)

The MotoPress Appointment Booking Lite plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 2.4.8 via the public '/motopress/appointment/v1/customers/create' REST endpoint. The route is registered with permission_callback => '__return_true' and the handler's 'name' parameter is not sanitized before being written to the custom wp_mpa_customers table via $wpdb->insert, nor is it escaped on output in the admin bookings list when the viewing user lacks the 'mpa_edit_customer' capability (such as the plugin-defined Appointment Employee role). This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.

📍 영향받는 시스템

WordPress MotoPress Appointment Booking Lite 플러그인 2.4.8 이하 버전

⚔️ 공격 벡터

인증 없이 공개 REST API 엔드포인트에 name 파라미터로 스크립트를 담은 고객 생성 요청을 보내 저장형 XSS를 유발

🛡️ 대응 방법

MotoPress Appointment Booking Lite 플러그인을 2.4.8보다 높은 패치 버전으로 업데이트하고, 패치 전까지 해당 REST 엔드포인트를 차단하거나 플러그인을 비활성화

🔧 검증 코드

출력된 version 값이 2.4.8 이하이고 status가 active이면 취약한 상태이며, 2.4.8보다 높은 버전이면 이 CVE에 대해 패치된 것입니다. 명령 결과가 없으면 플러그인이 설치되지 않은 것입니다.

Shell / Script
wp plugin list --name=motopress-appointment --fields=name,version,status 2>/dev/null || grep -rh "Version:" /var/www/html/wp-content/plugins/motopress-appointment*/motopress-appointment.php 2>/dev/null

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N

💻 영향받는 소프트웨어

WordPress