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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-68147-OSPOS-Stored-XSS — مستودع PoC لـ CVE-2025-68147: تخزين نص برمجي عبر المواقع (XSS) في OpenSourcePOS. تسمح الثغرة بتصعيد الامتيازات عبر حقن جافاسكربت خبيث في وحدة إعدادات المتجر (Store Config). يتضمن تفاصيل الحمولة والتحقق من التصحيح (v3.4.0). باحث أمني: Aditya Singh (Nixon-H). | Kitploit
أدوات/GitHubGitHub/nixon-h/cve-2025-68147-ospos-stored-xss
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubnixon-h/cve-2025-68147-ospos-stored-xss

CVE-2025-68147-OSPOS-Stored-XSS

مستودع PoC لـ CVE-2025-68147: تخزين نص برمجي عبر المواقع (XSS) في OpenSourcePOS. تسمح الثغرة بتصعيد الامتيازات عبر حقن جافاسكربت خبيث في وحدة إعدادات المتجر (Store Config). يتضمن تفاصيل الحمولة والتحقق من التصحيح (v3.4.0). باحث أمني: Aditya Singh (Nixon-H).

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-68147: ثغرة البرمجة النصية عبر المواقع المخزّنة (XSS) في OpenSourcePOS

البيانات الوصفيةالتفاصيل
معرّف CVECVE-2025-68147
الخطورةعالية CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
نوع الثغرةالبرمجة النصية عبر المواقع المخزّنة (CWE-79)
الإصدارات المتأثرةOpenSourcePOS v3.4.0, v3.4.1
الإصدار المُصحَّحv3.4.2
المكوّن المعرّض للثغرةوحدة إعدادات المتجر (حقل Return Policy)
المُبلِّغAditya Singh (Nixon-H)

📝 الملخص التنفيذي

تم اكتشاف ثغرة البرمجة النصية عبر المواقع المخزّنة (XSS) في وحدة إعدادات المتجر في OpenSourcePOS. فشل التطبيق في تنظيف المدخلات المقدمة من المستخدم بشكل صحيح في حقل "سياسة الإرجاع" قبل تخزينها في جدول قاعدة البيانات ospos_app_config.

سمح هذا العيب لمهاجم مصادَق يتمتع بصلاحيات التكوين (أو مهاجم يستغل سلسلة هجمات CSRF منفصلة) بحقن حمولات JavaScript عشوائية. ونظرًا لأن "سياسة الإرجاع" تُعرض ديناميكيًا على كل إيصال بيع، فإن الحمولة المحقونة تُنفَّذ تلقائيًا في متصفح أي مستخدم—بما في ذلك أمناء الصندوق ذوو الصلاحيات المنخفضة، أو المسؤولون الآخرون، أو العملاء—كلما تم إنشاء إيصال أو عرضه.


🕵️‍♂️ التحليل الفني للسبب الجذري

1. المنطق المعرّض للثغرة

تكمن الثغرة في قالب عرض الإيصال: app/Views/sales/receipt_default.php.

يسترجع التطبيق سلسلة "سياسة الإرجاع" من مصفوفة التكوين العامة ($this->config['return_policy']) ويجهزها للعرض.

  • الخطأ: استخدم المطورون دالة PHP الأصلية nl2br() لتحويل الأسطر الجديدة إلى فواصل أسطر HTML (<br>).
  • السبب في الفشل: دالة nl2br() لا تنظّف الأحرف الخاصة في HTML. فهي تترك وسومًا مثل <script> و`` وخصائص onload سليمة تمامًا.

الكود المعرّض للثغرة (قبل التصحيح):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br($this->config['return_policy']); ?>
</div>

2. الاستمرارية في قاعدة البيانات

عندما يحفظ المسؤول التكوين، تُخزَّن الحمولة خام في قاعدة البيانات.

  • الجدول: ospos_app_config
  • المفتاح: return_policy
  • القيمة: Policy Text... <script>alert('XSS')</script>

نظرًا لعدم وجود تنظيف للمدخلات في جانب وحدة التحكم (Config.php) ولا هروب للمخرجات في جانب العرض (receipt_default.php)، فإن التطبيق معرّض لثغرة XSS المخزّنة.


💥 إثبات المفهوم (PoC)

ناقل الهجوم

يستهدف الهجوم لوحة إعدادات المتجر لكنه يؤثر على وحدة المبيعات/الإيصالات.

  1. نقطة الدخول: http://[TARGET]/config (طلب POST لحفظ التكوين)
  2. نقطة التنفيذ: http://[TARGET]/sales/receipt/[SALE_ID]

الاستغلال خطوة بخطوة

الخطوة 1: الحقن

قمنا بتسجيل الدخول كمسؤول وانتقلنا إلى إعدادات المتجر -> عام. في منطقة النص الخاصة بـ "سياسة الإرجاع"، حقنّا الحمولة المحددة التالية:

root@kitploit:~
Standard Return Policy: No Refunds.
<script>alert('XSS_BY_NIXON_SUCCESSFUL')</script>

الخطوة 2: الاستمرارية

عند النقر على "إرسال"، أرسل التطبيق طلب POST إلى /config/save. تم حفظ الحمولة بنجاح في قاعدة البيانات.

الخطوة 3: التشغيل

للتحقق من التأثير على المستخدمين الآخرين:

  1. سجّلنا الخروج ثم سجّلنا الدخول مجددًا كـ أمين صندوق (حساب منخفض الصلاحيات).
  2. انتقلنا إلى وحدة المبيعات.
  3. أضفنا عنصرًا اختباريًا إلى السلة ثم نقرنا على "إتمام البيع".
  4. النتيجة: يعيد التطبيق التوجيه إلى عرض الإيصال (مثل: http://localhost/sales/receipt/1). يحلّل المتصفح عنصر return_policy div، ويصادف وسم <script>، وينفّذ JavaScript فورًا.

النتيجة الملاحظة: ظهرت نافذة تنبيه في المتصفح تحمل الرسالة: XSS_BY_NIXON_SUCCESSFUL.

📷 إثبات مرئي

لقطة الشاشة 1: تشغيل التنبيه

لقطة الشاشة 2: الحمولة في التكوين

🎥 عرض فيديو توضيحي: انقر للتحميل / مشاهدة فيديو PoC


⚠️ سيناريوهات التأثير

هذه ثغرة تغيير النطاق (S:C) لأن الهجوم يُخزَّن على الخادم لكنه يُنفَّذ في سياق متصفح الضحية.

  1. تصعيد الصلاحيات والاستيلاء على الحساب:
  • السيناريو: يحقن المهاجم حمولة JavaScript مصممة لسرقة ملفات تعريف الارتباط الخاصة بالجلسة.
  • التنفيذ: يعرض مسؤول فائق إيصالًا سابقًا (مثل: /sales/receipt/105). يُنفَّذ السكربت بصمت، ويرسل document.cookie (الذي يحتوي على معرّف ospos_session) إلى خادم المهاجم.
  • التأثير: يختطف المهاجم جلسة المسؤول الفائق، ويحصل على تحكم كامل في النظام دون الحاجة إلى كلمة مرور.
  1. إنشاء مسؤول قابل للانتشار (Wormable):
  • السيناريو: الحمولة عبارة عن سكربت يستخدم AJAX (XMLHttpRequest) لتنفيذ إجراءات إدارية.
  • التنفيذ: عندما يعرض مسؤول مسجّل الدخول الإيصال، يجبر السكربت متصفحه على إرسال طلب POST مخفي إلى /employees/save.
  • التأثير: يتم إنشاء حساب مسؤول جديد (مثل: hacker / password123) فورًا في الخلفية. لا يرى الضحية سوى الإيصال، بينما يحصل المهاجم على باب خلفي دائم.
  1. التشويه والتصيد:
  • السيناريو: يعدّل المهاجم بنية DOM لتغيير المعلومات المالية في الإيصال.
  • التنفيذ: يعيد سكربت "سياسة الإرجاع" كتابة التذييل أو تعليمات الدفع.
  • التأثير: تعرض الإيصالات تفاصيل بنكية احتيالية أو عناوين محافظ العملات الرقمية ("يرجى تحويل الدفعة إلى...")، مما يؤدي إلى احتيال مالي ضد العملاء أو النشاط التجاري.

🛡️ المعالجة

تم إصلاح الثغرة في OpenSourcePOS v3.4.2.

طبّق القائم على الصيانة تصحيحًا ينفّذ ترميز المخرجات المراعي للسياق (Context-Aware Output Encoding). أصبحت قيمة التكوين الآن مغلّفة في دالة المساعدة العامة esc() الخاصة بـ CodeIgniter قبل تمريرها إلى nl2br().

التصحيح (Commit 22297a):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br(esc($this->config['return_policy'])); ?>
</div>

التحقق: بعد الترقية إلى v3.4.2، يتم عرض نفس الحمولة كنص غير ضار:

Standard Return Policy: No Refunds. &lt;script&gt;alert('XSS_BY_NIXON_SUCCESSFUL')&lt;/script&gt;


📅 الجدول الزمني للإفصاح

  • 2025-12-12: تم اكتشاف الثغرة بواسطة Aditya Singh (Nixon-H) أثناء تدقيق أمني يدوي.
  • 2025-12-13: تم إرسال تقرير الإفصاح المسؤول إلى القائم على الصيانة (Jeroen Peelaerts) عبر البريد الإلكتروني/GitHub.
  • 2025-12-14: تم تأكيد الثغرة من قبل القائم على الصيانة. تم حجز CVE-2025-68147.
  • 2025-12-14: تم تطوير التصحيح (Commit 22297a) والتحقق منه من قبل الباحث.
  • 2025-12-19: تم إصدار التصحيح في الإصدار 3.4.2.
  • 2025-12-19: إفصاح عام عبر نشرة GitHub الأمنية.

🔗 المراجع

  • النشرة الأمنية: GHSA-xgr7-7pvw-fpmh
  • التصحيح: Commit 22297a
  • المُبلِّغ: Aditya Singh (Nixon-H)
تنزيل الأداة