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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/strikoder-premium/cve-2026-29000-pac4j-jwt
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراق
GitHubstrikoder-premium/cve-2026-29000-pac4j-jwt

CVE-2026-29000-pac4j-jwt

# CVE-2026-29000 PoC: تجاوز المصادقة PlainJWT-in-JWE في pac4j-jwt

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
3منذ 3 أشهرلم تتم المراجعة بعد

pac4j-jwe-forge (CVE-2026-29000)

إثبات المفهوم لـ CVE-2026-29000. يستهدف إصدارات pac4j-jwt الأقدم من 4.5.9 و5.7.9 و6.3.3.

الثغرة واضحة ومباشرة: المكتبة تقبل PlainJWT (غير موقّع، alg=none) طالما أنه مغلّف داخل JWE صالح. وبما أن الخادم يعرض مفتاحه العام RSA عبر نقطة نهاية JWKS، يمكن لأي شخص تشفير JWT غير موقّع بشكل تعسفي إلى JWE سيثق به الخادم — بما في ذلك واحد يحمل ROLE_ADMIN.


كيف تعمل

  1. جلب المفتاح العام RSA من نقطة نهاية JWKS الخاصة بالهدف
  2. بناء JWT غير موقّع (alg=none) مع أي ادعاءات تريدها
  3. تشفيره باستخدام المفتاح العام للخادم باستخدام
  4. إرسال JWE الناتج كرمز Bearer

يقوم الخادم بفك تشفيره، ويثق بالادعاءات الموجودة بداخله، ولا يتحقق أبدًا من أن JWT الداخلي غير موقّع.


المتطلبات

Python 3.13+ مع uv، أو قم بتثبيت التبعيات يدويًا:

root@kitploit:~
pip install jwcrypto requests

الاستخدام

root@kitploit:~
[uv run / python3] CVE-2026-29000.py --url <base_url> --jwks <jwks_path> [options]

إلزامي:

flagالوصف
--urlعنوان URL الأساسي للهدف، على سبيل المثال http://10.10.11.x:8080
--jwksالمسار أو عنوان URL الكامل لنقطة نهاية JWKS

اختياري:

أمثلة:

root@kitploit:~
python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks

python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks --user john --role ROLE_ADMIN

python3 exploit.py --url http://10.10.11.x:8080 --jwks /.well-known/jwks.json --enc A128GCM

العثور على نقطة نهاية JWKS

ليست واضحة دائمًا. أماكن جيدة للبحث:

  • /robots.txt — غالبًا ما يسرد المسارات المقيدة أو الداخلية
  • /api/auth/jwks
  • /.well-known/jwks.json
  • /.well-known/openid-configuration

العثور على alg/enc الصحيح

إذا تم رفض الرمز المميز، فقد يتوقع التطبيق خوارزمية تشفير محددة. تحقق من /static/js/app.js بحثًا عن شيء مثل:

root@kitploit:~
const JWE_ALG = "RSA-OAEP-256";
const JWE_ENC = "A128GCM";

ثم أعد التشغيل مع --enc A128GCM.

طريقة تخزين الرمز المميز موجودة أيضًا عادةً هناك:

root@kitploit:~
class TokenManager {
    static getToken() {
        return sessionStorage.getItem('auth_token');
    }
}

إذا كان sessionStorage، فاستبدل الرمز المميز مباشرة في DevTools تحت Application > Session Storage.


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

  • pac4j-jwt < 4.5.9
  • pac4j-jwt < 5.7.9
  • pac4j-jwt < 6.3.3

تم إصلاحها في 4.5.9 و5.7.9 و6.3.3.

تنزيل الأداة
flagالافتراضيالوصف
--useradminقيمة ادعاء sub
--roleROLE_ADMINالدور المراد تزويره (ROLE_ADMIN، ROLE_MANAGER، ROLE_USER)
--issuerprincipal-platformقيمة ادعاء iss
--encA256GCMتشفير محتوى JWE (A256GCM أو A128GCM)