🇰🇷 한글 설명
Easy!Appointments는 자체 호스팅 예약 스케줄러입니다. 1.6.0 이전 버전에서는 관리자가 예약 설정 페이지에서 정의한 '예약 비활성화' 메시지가 이스케이프나 정화 없이 공개 예약 페이지에 출력되어, 인증된 관리자가 삽입한 HTML/JavaScript가 방문자에게 저장형 XSS로 실행될 수 있습니다. 1.6.0 버전에서 수정되었습니다.
💡 쉬운 설명
관리자가 예약 중지 안내 문구에 악성 스크립트를 넣으면, 예약 페이지를 여는 모든 방문자의 브라우저에서 그 스크립트가 실행될 수 있습니다. 이 취약점은 관리자 권한이 필요하므로 위험도는 낮습니다.
🇺🇸 원문 (English)
Easy!Appointments is a self hosted appointment scheduler. Versions prior to 1.6.0 allow administrators to define a custom "booking disabled" message through the booking settings page. That value is stored in the `disable_booking_message` setting via a rich-text editor and later passed directly to the public `booking_message` view without escaping or sanitization. An authenticated administrator can store HTML or JavaScript in this field, enable disabled-booking mode, and trigger stored XSS in every unauthenticated visitor who opens the public booking page. Version 1.6.0 fixes the issue.
📍 영향받는 시스템
Easy!Appointments 1.6.0 미만 버전
⚔️ 공격 벡터
인증된 관리자가 예약 비활성화 메시지에 악성 HTML/JS를 저장하고 예약 비활성화 모드를 켜면, 공개 예약 페이지 방문자에게 저장형 XSS가 발생합니다.
🛡️ 대응 방법
Easy!Appointments를 1.6.0 이상으로 업그레이드하고, 관리자 계정 보호 및 권한 관리를 강화합니다.
🔧 검증 코드
출력된 버전 문자열이 1.6.0 미만이면 취약한 것이며, 1.6.0 이상이면 수정된 버전입니다. 경로가 다르면 설치 디렉터리에 맞게 조정하세요.
grep -rn "version" /var/www/html/config.php 2>/dev/null || cat /var/www/html/VERSION 2>/dev/null