HotelDruid mostra_sorgente.php 文件读取漏洞复现

Wayyt  4小时前

HotelDruid mostra_sorgente.php 文件读取漏洞复现

0x00 漏洞概述

HotelDruid 是由 DigitalDruid.Net 开发的开源酒店管理(物业管理)系统,基于 PHP 实现,凭借高度灵活的 Web 界面,适用场景覆盖从少量客房的家庭旅馆到拥有数百间客房的酒店。

该系统内置一个名为 mostra_sorgente.php 的页面(意大利语意为"显示源码"),其本意应是面向开发调试的辅助功能,但页面未做访问控制与参数约束:通过 file_sorgente 参数指定站点内文件路径即可读取对应文件内容,甚至在不传参数的情况下,页面也会泄露网站根目录下的文件信息。依据技术分析资料,该问题会泄露源码、数据库配置文件等敏感内容,攻击者可借此获取网站服务器的 Web 路径等关键信息,为进一步攻击提供帮助,使网站敏感信息面临暴露风险。

该漏洞无 CVE、CNVD、CNNVD 公开编号,公开漏洞库曾以"任意文件读取、高危"分类登记该问题。无官方 CVSS 评分,按无官方评分规则自评 6.5 分(中危),依据是:攻击效果为敏感文件批量泄露(可读取数据库配置)、利用门槛低(匿名 HTTP 请求即可)、影响对象为自建部署的酒店管理系统实例(单实例影响范围有限但信息价值高)。

0x01 复现环境与影响范围

影响范围

  • 影响产品:HotelDruid(DigitalDruid.Net 出品)。
  • 受影响版本:无公开编号与官方公告,无法精确圈定版本区间,以实测该页面行为为准。
  • 暴露条件:mostra_sorgente.php 对外可匿名访问即成立,无需登录状态。
  • 公开编号:无 CVE / CNVD / CNNVD;公开漏洞库另有登记条目(见 0x05 参考资料)。

需要特别区分:HotelDruid 历史上存在 SQL 注入、XSS、SSRF、远程代码执行等其他类型的公开漏洞条目,均与本条"mostra_sorgente.php 文件读取"无关,不能混用结论。

环境搭建

复现环境使用隔离的实验内网段(192.168.x.x),部署一套 HotelDruid 实例(常见安装路径为 Web 目录下的 hoteldruid/ 子目录),验证机与目标同网段。整个过程仅需一个 HTTP 客户端,无需认证凭据,不涉及任何破坏性操作。

0x02 漏洞复现

第一步:确认目标指纹。

访问系统任意页面,若响应体中出现 HotelDruid 字样或指向 inizio.php 的链接,即可确认目标为 HotelDruid 部署。

第二步:触发文件读取与目录泄露。

直接请求源码展示页面,file_sorgente 参数留空:

GET /hoteldruid/mostra_sorgente.php?file_sorgente= HTTP/1.1
Host: 192.168.1.20

判定条件:返回 HTTP 200,且响应体中同时出现 inizio.phpcreadb.php 字样。两者均为站点根目录下的脚本文件,同时以源码展示形式出现在响应中,说明页面正在把站点根目录下的文件内容直接输出给匿名访问者。

第三步:指定路径读取文件。

通过 file_sorgente 参数给定站点内相对路径,页面返回对应文件的源码内容,例如数据库配置文件、功能脚本等。结合第二步泄露的文件清单,攻击者可以逐个拉取根目录下的文件,还原整套源码结构并提取数据库连接凭据。

预期结果

  • 匿名请求(无任何 Cookie)即可获得 HTTP 200 响应,服务端不存在登录拦截。
  • 响应体包含 inizio.phpcreadb.php 等站点文件内容,文件读取成立。
  • 泄露内容包括源码与数据库配置文件,可进一步推导服务器 Web 路径。

0x03 漏洞分析

从功能设计看,mostra_sorgente.php 属于典型的"调试后门"类页面:它把"读取并展示站点文件"这一本应仅存在于开发期的能力保留在了生产代码中,且没有叠加任何一层防护。具体薄弱点有三:

1. 无认证。页面可被匿名直接访问,任何能触达 Web 服务的客户端都能调用,认证与授权检查整体缺失。

2. 参数未约束file_sorgente 参数未做目录限定与白名单校验,调用者可以指定站点内任意路径,等同于把文件系统的一个可读子集完全交出。

3. 默认即泄露。参数留空时页面仍会输出站点根目录下的文件信息,这意味着哪怕攻击者不了解参数细节,一次空参数请求也足以暴露站点结构。

危害传导路径非常清晰:空参数请求获取文件清单 → 定位数据库配置文件 → 读取源码获得连接串、密钥等凭据 → 结合数据库配置进一步攻击数据层。由于泄露内容包含数据库配置文件,该漏洞虽然交互简单,实际风险可以逐级放大,公开登记将其定级为高危、分类为任意文件读取是合理的。

0x04 修复建议

1. 核查公网、办公网边界及第三方托管环境中的 HotelDruid 部署,确认相关接口的暴露范围和版本。

2. 核对厂商公告中的受影响范围,升级至官方修复版本或更高版本;升级前备份配置和数据。

3. 暂不能升级时,关闭调试和示例接口,禁止配置文件直接访问,通过 ACL 或 VPN 限制访问来源。

4. 检查 Web 访问日志,发现敏感文件访问后立即轮换密码、密钥、会话等泄露凭据。

针对本漏洞的直接修复方式是:删除或禁用 mostra_sorgente.php;若业务确需保留源码查看能力,则必须限定可读取目录,并以白名单方式限定可读取路径,同时强制管理员会话认证。

0x05 参考资料

1. HotelDruid 厂商官网:https://www.hoteldruid.com/

2. 公开漏洞库登记条目(HotelDruid mostra_sorgente.php 文件读取,高危,任意文件读取分类;详情需登录查看,登记地址见技术分析资料留档)

3. 公开安全媒体历史登记页(原登记条目,链接当前已失效,返回 404):https://nosec.org/home/detail/6277.html

最新评论

昵称
邮箱
提交评论