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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-76564 — XSS مخزّن عبر User-Agent في عرض الطلبات في لوحة إدارة PhocaCart | Kitploit
أدوات/GitHubGitHub/toanln-cov/cve-2026-76564
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبأمن الويبالأوراق والأبحاث
GitHubtoanln-cov/cve-2026-76564

CVE-2026-76564

XSS مخزّن عبر User-Agent في عرض الطلبات في لوحة إدارة PhocaCart

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

الأكثر شعبية

عرض الكل →

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

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

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

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

ثغرة XSS مخزنة عبر User-Agent في عرض الطلبات بلوحة إدارة PhocaCart

PhocaCart ≤ 6.1.7 — مهاجم غير مصادَق يخزّن حمولة XSS عبر عملية الدفع. وتُستهدف بيئة متصفح المسؤول

CVE CVSS v4.0 CWE-79 Affected Researcher


الملخص

يخزّن PhocaCart 6.1.7 لنظام Joomla ترويسة HTTP User-Agent الخام الواردة من طلبات الدفع في جدول قاعدة بيانات الطلبات عندما يكون خيار الإعداد store_user_agent مفعّلًا. تُعرض القيمة المخزنة لاحقًا دون ترميز HTML في عرض تحرير الطلب الخاص بالمسؤول عبر itemText() الموجودة في Adminview.php.

يمكن لمهاجم غير مصادَق أن يقدّم طلبًا يحمل User-Agent معدًا يحتوي على حمولة JavaScript. وعندما يفتح المسؤول الطلب في الواجهة الخلفية، تُنفَّذ الحمولة في سياق متصفح المسؤول — ما يتيح اختطاف الجلسة أو سرقة بيانات الاعتماد أو تنفيذ إجراءات إدارية غير مصرّح بها.

تنزيل الأداة

تتطلب الثغرة تفعيل store_user_agent = 1 (وهي قيمة غير افتراضية). ولأن هذا الخيار قرار إداري متعمّد لجمع إحصائيات المتصفح، فإن المتاجر المتأثرة هي تلك التي فعّل فيها مالك المتجر الميزة — ما يجعل الاستغلال صامتًا تمامًا من منظور المهاجم.


النسخ المتأثرة

COMPONENTVULNERABLETESTED ONFIXED
PhocaCart (com_phocacart)5.0.0 – 6.1.7Joomla 5.4.7 + PhocaCart 6.1.7 + MariaDB 10.66.1.8

تفاصيل الثغرة

النوع: XSS مخزنة (CWE-79) — تستهدف المسؤول المصادقة المطلوبة: لا شيء للحقن. المسؤول للتفعيل رمز CSRF مطلوب: نعم (رمز Joomla CSRF القياسي مطلوب لعملية الدفع) الملف: administrator/components/com_phocacart/libraries/Phoca/Render/Adminview.php:382

السبب الجذري

عند تعيين store_user_agent = 1، تعيد الدالة PhocacartUtils::getUserAgent() قيمة $_SERVER['HTTP_USER_AGENT'] دون أي تعقيم. تُخزَّن هذه السلسلة الخام في #__phocacart_orders (تُقتطع عند 200 حرف — وهو عدد غير كافٍ لمنع XSS). وعندما يعرض المسؤول الطلب في الواجهة الخلفية، تدمج itemText() القيمة المخزنة مباشرةً في استجابة HTML دون استدعاء htmlspecialchars().

مسار البيانات:

root@kitploit:~
Attacker sends checkout request:
  User-Agent: <script>alert(document.domain)</script>

    utils.php:334   PhocacartUtils::getUserAgent()
    └─ return (string) $_SERVER['HTTP_USER_AGENT']   // raw, no sanitization
        order.php:413  $d['user_agent'] = substr($user_agent, 0, 200)
        └─ INSERT INTO #__phocacart_orders (user_agent) VALUES ('<script>...</script>')

Admin opens order in backend:
    edit.php:84    echo $r->itemText($this->itemcommon->user_agent, ...)
    Adminview.php:382  '<div class="controls >' . $item . '</div>'
                                           // → NO htmlspecialchars()
    → Browser renders: <div><script>alert(document.domain)</script></div>
    → XSS fires in administrator's browser

ORDER.PHP — مرحلة التخزين (المصدر الهش)

administrator/components/com_phocacart/libraries/phocacart/order/order.php:424

root@kitploit:~
$user_agent = PhocacartUtils::getUserAgent(); // reads $_SERVER['HTTP_USER_AGENT'] raw
$d['user_agent'] = substr($user_agent, 0, 200); // stored in DB unfiltered

ADMINVIEW.PHP:382 — مرحلة العرض (نقطة التصريف الهشة)

root@kitploit:~
// No htmlspecialchars() applied:
$output .= '  <div class="controls ' . $class . '">' . $item . '</div>' . "\n";

تُستدعى من administrator/components/com_phocacart/views/phocacartorder/tmpl/edit.php:84:

root@kitploit:~
echo $r->itemText($this->itemcommon->user_agent, Text::_('COM_PHOCACART_USER_AGENT'), '', 'user_agent');

تمرّر الدالة itemText() قيمة $item (قيمة user_agent المخزنة) مباشرةً إلى مخرجات HTML دون أي ترميز، ما يجعلها نقطة التصريف الأساسية. وإصلاحها على مستوى نقطة التصريف يحمي جميع مستدعي itemText().


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

يتطلب الهجوم إكمال عملية دفع كاملة مع ترويسة User-Agent خبيثة. يجب الحصول على رمز CSRF أولًا لأن وحدة التحكم في الدفع في Joomla تتحقق من صحته.

0. المتطلب الأساسي — تفعيل تخزين معلومات User-Agent

في لوحة إدارة Joomla، انتقل إلى Components → Phoca Cart → Options → التبويب Main → Statistics Options. اضبط Store User Agent Information = Yes واحفظ.

المتطلب الأساسي: تخزين معلومات User-Agent = نعم

1. الحصول على رمز CSRF

يزور المهاجم الواجهة الأمامية للمتجر لاستخراج رمز Joomla CSRF صالح تتطلبه وحدة التحكم في الدفع. يظهر الرمز في مصدر HTML أو في إعدادات JavaScript لأي صفحة من صفحات المتجر.

الخطوة 1: يحصل المهاجم على رمز CSRF من الواجهة الأمامية للمتجر عبر Burp Suite

2. إضافة منتج إلى السلة

يضيف المهاجم منتجًا إلى السلة عبر نقطة نهاية الدفع AJAX باستخدام User-Agent غير ضار. يؤدي هذا إلى انتقال جلسة الدفع إلى الحالة التالية.

الخطوة 2: إضافة منتج إلى السلة — POST checkout.add

3. حفظ عنوان الفوترة

يُرسل المهاجم معلومات الفوترة للتقدم في آلة حالات الدفع.

الخطوة 3: حفظ عنوان الفوترة — Burp Suite

4. حفظ طريقة الشحن

يختار المهاجم طريقة شحن للمتابعة إلى الدفع.

الخطوة 4: حفظ طريقة الشحن — Burp Suite

5. حفظ طريقة الدفع

يختار المهاجم طريقة دفع (مثل: الدفع عند الاستلام).

الخطوة 5: حفظ طريقة الدفع — Burp Suite

6. حقن الحمولة — تقديم طلب يحمل User-Agent خبيثًا

خطوة الحقن الحاسمة. يقدّم المهاجم الطلب النهائي عبر task=checkout.order مع ضبط ترويسة User-Agent على حمولة XSS. تقرأ مهمة checkout.order قيمة HTTP_USER_AGENT الخام وتخزّنها دون تهريب في #__phocacart_orders.user_agent.

root@kitploit:~
POST /index.php/shop/checkout HTTP/1.1
Host: TARGET
User-Agent: <script>alert(document.domain)</script>
Content-Type: application/x-www-form-urlencoded

phcheckouttac=1&task=checkout.order&option=com_phocacart&return=&<CSRF_TOKEN>=1

النتيجة: تم إنشاء الطلب. تخزّن قاعدة البيانات user_agent = '<script>alert(document.domain)</script>'.

الخطوة 6: تقديم الطلب مع User-Agent خبيث — تم حقن الحمولة في قاعدة البيانات

7. عرض المسؤول لقائمة الطلبات

ينتقل المسؤول إلى Components → Phoca Cart → Orders. يظهر الطلب المحقون في القائمة. لم يتم تفعيل XSS بعد في هذه المرحلة.

الخطوة 7: قائمة طلبات المسؤول في الواجهة الخلفية لـ Joomla — الطلب المحقون ظاهر

8. تنفيذ XSS — يفتح المسؤول تفاصيل الطلب

عندما ينقر المسؤول على الطلب لفتح عرض التحرير، تُعرض قيمة user_agent المخزنة دون تهريب عبر itemText(). يتم تنفيذ JavaScript فورًا.

عنوان URL المُشغِّل:

root@kitploit:~
/administrator/index.php?option=com_phocacart&view=phocacartorder&layout=edit&id=<ORDER_ID>

الخطوة 8: تنفيذ حمولة XSS في متصفح المسؤول — alert(document.domain) يؤكد سياق التنفيذ


الأثر

  1. اختطاف جلسة المسؤول — يمكن لحمولة XSS سرقة ملف تعريف ارتباط الجلسة الخاص بالمسؤول، ما يمنح وصولًا كاملًا إلى الواجهة الخلفية دون بيانات اعتماد.
  2. إجراءات إدارية غير مصرّح بها — نظرًا لتنفيذها في سياق متصفح المسؤول، يمكن للحمولة تنفيذ أي إجراء في الواجهة الخلفية: إنشاء حسابات بصلاحيات مرتفعة، أو تثبيت إضافات خبيثة، أو تعديل المحتوى.
  3. باب خلفي دائم — الحمولة التي تثبّت قشرة ويب أو تنشئ حساب مسؤول مارق تستمر في العمل بعد حدث XSS نفسه، ما يمنح المهاجم وصولًا دائمًا إلى الخادم.

المراجع

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-76564
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-76564
  • إشعار GitHub الأمني: https://github.com/advisories/GHSA-98mw-pj3j-99v2
  • مستودع البائع: https://github.com/PhocaDesign/PhocaCart