Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
forgejo-keys-idor — Forgejo 16.0.5 - عالي - عن بُعد - IDOR - GET /api/v1/user/keys/{id} يعيد مفاتيح SSH ومفاتيح النشر الخاصة بمستخدمين آخرين | Kitploit
أدوات/GitHubGitHub/abraxas/forgejo-keys-idor
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراقأمن واجهات برمجة التطبيقاتمختبرات وتدريب عملي
GitHubabraxas/forgejo-keys-idor

forgejo-keys-idor

Forgejo 16.0.5 - عالي - عن بُعد - IDOR - GET /api/v1/user/keys/{id} يعيد مفاتيح SSH ومفاتيح النشر الخاصة بمستخدمين آخرين

21منذ 8 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - forgejo-keys-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  forgejo-keys-idor

التحليل المكتوب: https://abraxaslabs.tech/research/forgejo-keys-idor

forgejo-keys-idor

الفئة: IDOR الوصول: عن بُعد

Forgejo 16.0.5 (8d24b7d) - Forgejo

GET /api/v1/user/keys/{id} يقع ضمن مجموعة المستخدم الحالي (reqToken، نطاق المستخدم). لا يزال المعالج يحمّل public_key بواسطة المعرّف الرقمي دون أي تحقق من المالك. يحتوي الجدول نفسه على مفاتيح المستخدمين، ومفاتيح النشر (deploy keys)، والكيانات الأساسية (principals). أما GPG في هذا الإصدار فيفعلها بشكل صحيح: GetGPGKeyForUserByID(ctx, ctx.Doer().ID, id). الحقول الإضافية الخاصة محمية. أما مادة المفتاح العام والعنوان والبصمة فليست محمية. المعرّفات متسلسلة.

رمز read:user يتنقل عبر 1، 2، 3 ويحصي مفاتيح SSH ومفاتيح النشر الخاصة بالآخرين.

المعرّفلا يوجد CVE بعد
الفئةIDOR
الوصولعن بُعد (مصادَق عليه عبر read:user / جلسة)
CWECWE-639
CVSSعالٍ: 7.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
المنتجForgejo
المتأثرحتى v16.0.5 (8d24b7d)
المصادقةمصادَق عليه (رمز read:user أو جلسة)
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

يسجّل أو يستخدم أي حساب، ويصدر رمز read:user (أو يستخدم ملف تعريف ارتباط الجلسة)، ويتنقل عبر /api/v1/user/keys/{id}. يحصل على العناوين والبصمات ومادة المفتاح العام لمفاتيح لا يملكها. لا يحصل على المفتاح الخاص. لا يحصل على صدفة (shell). يحصي من يملك الوصول إلى ماذا.

الصلاحيةالطريقة / نقطة الوصولالاستطلاع / السلامة / التوافرمُثبت مختبريًا أو مُستنتج
قراءة عنوان مفتاح SSH العام لمستخدم آخر وبصمته ومادة المفتاحGET /api/v1/user/keys/{id} بصفة مالك أجنبياستطلاع (سرية جرد المفاتيح العامة)مُثبت مختبريًا. عنوان الشاهد FORGEJO-KEYS-IDOR-WITNESS على المعرّف 1؛ قائمة المهاجم لا تحتوي إلا على المعرّف 2
جرد مفاتيح النشر بالطريقة نفسهاالمعالج نفسه، صفوف KeyTypeDeploy في public_key (OwnerID 0)استطلاعمُستنتج من الجدول. زرع المختبر مفتاح SSH لمستخدم، وليس مفتاح نشر
قراءة الكيانات الأساسية لشهادات SSHالمعالج نفسه، صفوف KeyTypePrincipal. يستبعد ListPublicKeys هذا النوعاستطلاعمُستنتج من الجدول
رؤية المفاتيح التي تنتمي إلى مستخدمين محدودين أو خاصينلا يوجد تحقق من الظهور في هذا البحثاستطلاعمُستنتج من المعالج
JSON إضافي (user، key_type، read_only)appendPrivateInformation فقط إذا كان مديرًا أو مالكًااستطلاعمُثبت مختبريًا مغلق: استجابة غير المالك لم تحتوِ على حقل user

مغلق على هذا المسار: مادة المفتاح الخاص، صدفة (shell)، GET /users/{username}/keys (قائمة عامة مرتبطة باسم المستخدم)، GPG GET /api/v1/user/gpg_keys/{id} (404 على معرّف أجنبي)، DeletePublicKey (403 للمالك/المدير). GET /repos/{owner}/{repo}/keys/{id} عبر المستودعات يعيد 404 عندما لا يتطابق RepoID.

تصحيحات الأمان في v16.0.5 (#14370) كانت RCE عبر git-apply وCSRF في OpenID. لم تغلق هذا البحث. من الفئة نفسها مثل gitea-user-keys-idor، ولا يزال مفتوحًا هنا بشكل مستقل.

كيف وجدته

ثبّتت Forgejo v16.0.5 بعد موجة 2026-09. كان Gitea 1.27.3 لا يزال يحتوي على هذا البحث. لقد تباعدت Forgejo، لذا أعدت قراءة معالج مفاتيح المستخدم الحالي بجانب GPG بدلًا من نسخ حزمة Gitea. GPG يعيد 404 على معرّف أجنبي. أما SSH فلا.

المسارات الخاطئة المسجّلة بالفعل: التعامل مع قائمة المهاجم نفسه على أنها التسريب (وهي ليست كذلك - القائمة محدودة النطاق، بينما GET-by-id ليس كذلك)؛ التعامل مع DISABLE_REGISTRATION=true على المثبّت على أنه إغلاق (أي حساب موجود يكفي)؛ صدفة عكسية. مسرح.

المختبر

python3 forgejo-keys-idor-Abraxas-Labs.py

أو:

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19310. الصورة codeberg.org/forgejo/forgejo:16.0.5. حسابان. الشاهد FORGEJO-KEYS-IDOR-WITNESS.

IOC planted victim-id=1 attacker-id=2
IOC attacker-list status=200 ... title=attacker-own-key
IOC get id=1 status=200 ... FORGEJO-KEYS-IDOR-WITNESS
IOC gpg-neg id=1 status=404
SUCCESS forgejo-keys-idor victim-id=1 get-http=200 list-has-id=no gpg-http=404 FORGEJO-KEYS-IDOR-WITNESS

الإصلاح

404 ما لم يكن key.OwnerID == ctx.Doer().ID (أو مسؤول الموقع). ارفض KeyTypeDeploy / KeyTypePrincipal على هذا المسار. طابِق GetGPGKeyForUserByID.

المراجع

  • codeberg.org/forgejo/forgejo وسم v16.0.5
  • GetPublicKey
  • نفس الفئة على Gitea: gitea-user-keys-idor
  • قريب مُرقَّع (ليس هذا الاستعلام): تصحيحات أمان v16.0.5
  • CWE-639

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة