
CVE-2025-55816 HotelDruid 3.0.7
CVE-2025-55816 HotelDruid 3.0.7
La vulnérabilité est un simple Stored Cross Site Scripting (XSS) dans l'endpoint /modifica_app.php.
L'attaquant peut insérer un payload javascript déguisé en URL dans la fonctionnalité 'New Photo Url' en raison du manque de mesures de sécurité.
Le code vulnérable est disponible dans HotelDruid <= 3.0.7, dans le fichier www\modifica_app.php à l'adresse :
if (!empty($aggurlfoto)) {
$mostra_form_modifica = "NO";
$dest = "#aggfoto";
$errore = "";
if (@get_magic_quotes_gpc()) {
$n_urlfoto = stripslashes($n_urlfoto);
}
$lowurl = strtolower($n_urlfoto);
if (
substr($lowurl, -4) != ".jpg" &&
substr($lowurl, -5) != ".jpeg" &&
substr($lowurl, -4) != ".gif" &&
substr($lowurl, -4) != ".png" &&
substr($lowurl, -5) != ".webp"
) {
$errore = "SI";
}
if (
str_replace("<", "", $n_urlfoto) != $n_urlfoto ||
str_replace(">", "", $n_urlfoto) != $n_urlfoto ||
str_replace("\"", "", $n_urlfoto) != $n_urlfoto
) {
$errore = "SI";
}
La vulnérabilité peut mener à une exploitation plus poussée. Un peu d'analyse de code et de développement de payload est disponible dans l'article de blog.
Vous pouvez soumettre le payload en utilisant la requête POST suivante :
POST /modifica_app.php HTTP/1.1
Host: 127.0.0.1:57146
....
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=----geckoformboundaryae028810ee8a343ef5708f8da08a7d1d
Content-Length: 1121
....
------geckoformboundaryae028810ee8a343ef5708f8da08a7d1d
Content-Disposition: form-data; name="anno"
[year]
------geckoformboundaryae028810ee8a343ef5708f8da08a7d1d
Content-Disposition: form-data; name="id_sessione"
[sessionid]
------geckoformboundaryae028810ee8a343ef5708f8da08a7d1d
Content-Disposition: form-data; name="idappartamenti"
[apartmentid]
------geckoformboundaryae028810ee8a343ef5708f8da08a7d1d
Content-Disposition: form-data; name="aggurlfoto"
SI
------geckoformboundaryae028810ee8a343ef5708f8da08a7d1d
Content-Disposition: form-data; name="n_urlfoto"
[payload]
------geckoformboundaryae028810ee8a343ef5708f8da08a7d1d--