
استشارة وإثبات مفهوم لثغرة حقن SQL أعمى قائمة على الوقت في نظام تسوق عبر الإنترنت، بما في ذلك التفاصيل الفنية وتحليل الأثر والتوصيات العلاجية.
CVE: CVE-2025-52021
العنوان: حقن SQL أعمى قائم على الوقت عبر معامل product_id في edit_product.php
البائع / المستودع: PuneethReddyHC — https://github.com/PuneethReddyHC/online-shopping-system-advanced
الإصدار المتأثر: 1.0 (الفرع/الوسم master وقت الاختبار)
مكتشف الثغرة: Hafiz Pradana Gemilang
حالة الإفصاح: تم إخطار البائع بشكل خاص. تم حجب كود الإثبات الكامل (PoC) عن الإفصاح العام حفاظًا على سلامة المستخدمين.
تم اكتشاف ثغرة حقن SQL أعمى قائم على الوقت في admin/admin/edit_product.php ضمن نظام التسوق عبر الإنترنت المتقدم الإصدار 1.0. يتم إدراج معامل product_id من نوع GET في استعلام SQL دون تحقق مناسب أو استخدام معاملات مُجهزة (parameterization). يمكن للمهاجم حقن دوال تأخير زمني (مثل ) لملاحظة تأخيرات استجابة الخادم واستنتاج سلوك قاعدة البيانات، مما يؤكد وجود نقطة حقن SQL عن بُعد.
SLEEPملاحظة: يستبعد هذا التقرير عمدًا حمولة استغلال قابلة للتشغيل. تمت مشاركة تفاصيل الإثبات المفاهيمي بشكل خاص مع المطوّر للسماح بالمعالجة.
/admin/admin/edit_product.php?product_id=<value>
مثال لرابط اختبار محلي:
http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0
product_id (GET)admin/admin/edit_product.phpproduct_id وتضمينه في جملة SQL دون معالجة مُجهزة.أسفرت محاولات الحقن القائمة على التوقيت باستخدام دلالات SLEEP() في قاعدة البيانات عن تأخيرات قابلة للقياس من جانب الخادم تتوافق مع حقن ناجح:
SLEEP(6) → تأخير الاستجابة الملاحظ ≈ 6.01 ثانيةSLEEP(15) → تأخير الاستجابة الملاحظ ≈ 15.00 ثانيةSLEEP(0) → تأخير الاستجابة الأساسي ≈ 0.01 ثانيةتشير هذه النتائج إلى وجود نقطة حقن SQL أعمى تسمح بالاستدلال القائم على الوقت. اسم قاعدة البيانات الملاحظ أثناء الاختبار: onlineshop.
الاستغلال الناجح لهذه الثغرة يسمح للمهاجمين بـ:
التقدير الخطورة: عالية
product_id يتضمن تركيبات SQL ذات تأخير زمني (تم الاختبار باستخدام متغيرات SLEEP()).تم حذف الإثبات المفاهيمي خطوة بخطوة من التقرير العام — تواصل مع المُبلّغ للحصول على الإثبات المشفر بموجب شروط الإفصاح المسؤول.
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$product_id]);
product_id كعدد صحيح وتحقق منه وفقًا لذلك (مثل filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT)).DROP وALTER وGRANT أو حقوق إدارية).(مُدرج لراحة البائع/المطوّر — لا تنشر حمولات الإثبات علنًا)
sqlmap -u "http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0" --dbms=mysql --batch --level=5 --risk=3 --technique=T --time-sec=6
مكتشف الثغرة: Hafiz Pradana Gemilang
البائع / المستودع: https://github.com/PuneethReddyHC/online-shopping-system-advanced
إخلاء مسؤولية: يحذف هذا التقرير العام الحمولات القابلة للاستغلال لحماية المستخدمين. التفاصيل الفنية الكاملة والإثبات المفاهيمي متاحة للبائع عند الطلب بموجب سياسة إفصاح مسؤولة متفق عليها.