🇰🇷 한글 설명
WordPress용 Tour Booking Manager 플러그인의 [ttbm-hotel-map] 숏코드에서 width, height, zoom 속성 값이 충분히 검증·이스케이프되지 않아 저장형 XSS가 발생합니다. 기고자(Contributor) 이상 권한을 가진 공격자가 악성 스크립트를 삽입할 수 있으며, 해당 페이지를 방문한 사용자의 브라우저에서 스크립트가 실행됩니다. 영향 버전은 2.3.6 이하입니다.
💡 쉬운 설명
웹사이트에 글을 올릴 수 있는 권한이 있는 사람이 페이지 안에 몰래 악성 코드를 심을 수 있는 취약점입니다. 이 페이지를 열어본 다른 방문자의 정보가 탈취될 수 있습니다.
🇺🇸 원문 (English)
The Tour Booking Manager plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'width', 'height' and 'zoom' shortcode attributes of the [ttbm-hotel-map] shortcode in versions up to, and including, 2.3.6 This is due to insufficient input sanitization and output escaping on user supplied attributes in the ttbm_hotel_map_shortcode() function, which concatenates the raw attribute values into double-quoted HTML attributes of an <iframe> tag. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
📍 영향받는 시스템
WordPress Tour Booking Manager 플러그인 2.3.6 이하 버전
⚔️ 공격 벡터
기고자 이상 권한의 인증된 공격자가 [ttbm-hotel-map] 숏코드의 width/height/zoom 속성에 악성 스크립트를 삽입하여 저장형 XSS 실행
🛡️ 대응 방법
Tour Booking Manager 플러그인을 2.3.7 이상 최신 버전으로 업데이트하고, 입력값 검증 및 출력 이스케이프가 적용되었는지 확인
🔧 검증 코드
출력된 버전이 2.3.6 이하이면 취약하며 즉시 업데이트가 필요하고, 2.3.7 이상이면 패치가 적용된 상태입니다. 아무 결과도 없으면 플러그인이 설치되지 않았거나 경로가 다른 것입니다.
wp plugin list --name=tour-booking-manager --fields=name,version,status 2>/dev/null || grep -rE "Version:" wp-content/plugins/tour-booking-manager/*.php 2>/dev/null | head -1