
استشارة وإثبات مفهوم لثغرة حقن 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). يمكن للمهاجم حقن دوال تأخير زمني (مثل SLEEP) لملاحظة تأخيرات استجابة الخادم واستنتاج سلوك قاعدة البيانات، مما يؤكد وجود نقطة حقن SQL عن بُعد.
ملاحظة: يستبعد هذا التقرير عمدًا حمولة استغلال قابلة للتشغيل. تمت مشاركة تفاصيل الإثبات المفاهيمي بشكل خاص مع المطوّر للسماح بالمعالجة.
/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
إخلاء مسؤولية: يحذف هذا التقرير العام الحمولات القابلة للاستغلال لحماية المستخدمين. التفاصيل الفنية الكاملة والإثبات المفاهيمي متاحة للبائع عند الطلب بموجب سياسة إفصاح مسؤولة متفق عليها.