
CVE-2025-55816 HotelDruid 3.0.7
CVE-2025-55816 HotelDruid 3.0.7
La vulnerabilidad es un simple Stored Cross Site Scripting (XSS) en el endpoint /modifica_app.php.
El atacante puede insertar un payload de JavaScript disfrazado de URL en la función 'New Photo Url' debido a la falta de medidas de seguridad.
El código vulnerable está disponible en HotelDruid <= 3.0.7 en el archivo www\modifica_app.php en:
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 vulnerabilidad puede dar lugar a una explotación adicional. Un poco de análisis de código y desarrollo de payloads está disponible en la entrada del blog.
Puede enviar el payload mediante la siguiente petición POST:
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--