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 ومفاتيح النشر الخاصة بمستخدمين آخرين

5منذ 4 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - forgejo-keys-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 على المثبّت إغلاقًا (أي حساب موجود يكفي)؛ وreverse shell. مسرحيات.

المختبر

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 فقط. لا ضمان.

تنزيل الأداة