
إثبات مفهوم لاستغلال CVE-2026-29000، وهو تجاوز للمصادقة في pac4j-jwt عبر PlainJWT متداخل مع alg:none داخل حاوية JWE.
يحتوي هذا المستودع على إثبات مفهوم (POC) لثغرة تجاوز المصادقة في pac4j-jwt (CVE-2026-29000). تسمح هذه الثغرة للمهاجم بتجاوز التحقق من التوقيع عن طريق تضمين PlainJWT (باستخدام alg: none) داخل حاوية JWE (تشفير JSON للويب).
يعمل الهجوم من خلال استغلال استعداد الخادم لفك تشفير JWE المشفر بمفتاحه العام ثم الثقة في JWT الداخلي دون التحقق من توقيعه، بشرط استخدام خوارزمية none.
تأكد من تثبيت Python 3 مع التبعيات المطلوبة:
pip install requests jwcrypto
استخدم exp.py لجلب المفتاح العام للهدف من نقطة نهاية JWKS، وإنشاء رمز خبيث بصلاحيات ، وتغليفه في JWE.
ROLE_ADMINpython3 exp.py <TARGET_URL> --user admin --role ROLE_ADMIN
مثال:
python3 exp.py http://localhost:8080
بمجرد حصولك على الرمز المزور، استخدم app.py للتفاعل مع نقاط نهاية واجهة برمجة التطبيقات المحمية.
python3 app.py <TARGET_URL> <FORGED_TOKEN>
اختبار نقطة نهاية محددة:
python3 app.py http://localhost:8080 <FORGED_TOKEN> --endpoint /api/users
exp.py: سكربت الاستغلال الرئيسي الذي يجلب JWKS، وينشئ PlainJWT، ويزور JWE.app.py: سكربت مساعد لاختبار الرمز المزور ضد نقاط نهاية واجهة برمجة التطبيقات المكتشفة (/api/dashboard, /api/users, /api/settings).إثبات المفهوم هذا مخصص لأغراض تعليمية واختبار الأمان المصرح به فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.