
مجموعة أدوات Python لقراءة الملفات غير المصادق عليها في GitLab CVE-2026-85706: استغلال مسلّح مع loot وshell وفحص جماعي، بالإضافة إلى تدقيق وإعداد تقارير SafeChecker غير التدخلي.

** للاستخدام الأخلاقي فقط – اختبار أمني مصرح به**
يوفر هذا المستودع أدوات لمتخصصي الأمن المصرح لهم، والفرق الزرقاء، ومختبري الاختراق فقط.
الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني بموجب CFAA (الولايات المتحدة)، وقانون إساءة استخدام الحاسوب (المملكة المتحدة)، وTCK 243/244 (تركيا)، وقوانين مماثلة في جميع أنحاء العالم.
CVE‑2026‑85706 هي ثغرة حرجة لقراءة الملفات المحلية التعسفية دون مصادقة في GitLab CE/EE المُدار ذاتيًا (الإصدارات 18.7 حتى 19.3.1) تسمح لمهاجم غير مصادق عليه بقراءة أي ملف على الخادم عبر طلب HTTP واحد إلى واجهة برمجة تطبيقات الالتزامات (commits API).
%63ommits./api/v4/projects/{id}/repository/commits الملف المحدد في file.path قبل فرض المصادقة.%-sequence غير صالح، يعيد Rack صدى المحتوى في جسم 400 Bad Request، مما يؤدي إلى تسريب المحتوى الكامل.| الأداة | الغرض | المستخدم المستهدف |
|---|---|---|
exploit.py | مجموعة أدوات مسلحة كاملة مع قراءة الملفات دون مصادقة، وتعداد الغنائم، واستخراج رمز المسؤول المميز، والمسح الجماعي، وصدفة تفاعلية، وتدوير الوكيل، ووضع التخفي، وإعداد تقارير متعددة التنسيقات. | الفرق الحمراء / مختبري الاختراق المصرح لهم |
safechecker.py | مدقق ثغرات غير تدخلي يكتشف إصدار GitLab، ويتحقق من التعرض، ويدقق رؤوس الأمان، ويقيّم المخاطر دون قراءة أي ملف. ينشئ تقارير JSON/CSV/HTML. | الفرق الزرقاء / مدققو الأمن |
| الميزة | exploit.py | safechecker.py |
|---|---|---|
| اكتشاف الثغرة | [+] | [+] |
| اكتشاف الإصدار | [+] | [+] |
| قراءة الملفات دون مصادقة | [+] | [-] |
| تعداد الغنائم | [+] | [-] |
| استخراج رمز المسؤول المميز | [+] | [-] |
| صدفة تفاعلية | [+] | [-] |
| المسح الجماعي (متعدد الخيوط) | [+] | [+] |
| تدقيق رؤوس الأمان | [-] | [+] |
| فحص TLS/الشهادة | [-] | [+] |
| تعيين MITRE ATT&CK | [+] | [+] |
| دعم الوكيل | [+] | [+] |
| تدوير الوكيل | [+] | [-] |
| تدوير User‑Agent (OPSEC) | [+] | [-] |
| Jitter / تأخير (OPSEC) | [+] | [-] |
| محدد معدل تكيفي | [+] | [+] |
| وضع التخفي | [+] | [-] |
| انتحال TLS عبر curl_cffi | [+] | [-] |
| وضع غير تدخلي (آمن) | [-] | [+] |
| إخراج JSON / JSONL / CSV / HTML | [+] | [+] |
| إخراج قاعدة بيانات SQLite | [+] | [-] |
| إشعار Webhook | [+] | [+] |
| الفرق مقابل المسح السابق | [+] | [+] |
| تنظيف السجلات (مضاد للطب الشرعي) | [+] | [-] |
| User‑Agent مخصص | [+] | [+] |
| التحكم في التحقق من SSL | [+] | [+] |
| السيناريو | الأداة الموصى بها |
|---|---|
| الفريق الأزرق – التحقق مما إذا كان GitLab الخاص بك معرضًا للثغرة | safechecker.py |
| التدقيق الأمني – تقييم ثغرات غير تدخلي | safechecker.py |
| الفريق الأحمر – اختبار اختراق مصرح به مع استغلال كامل | exploit.py |
| Bug Bounty – اختبار الإفصاح المسؤول | safechecker.py |
| المسح الجماعي – فحص أهداف متعددة بحثًا عن الثغرة | exploit.py (كشف فقط) |
| الاستجابة للحوادث – التحقق مما إذا كانت الأنظمة مخترقة | safechecker.py |
git clone https://github.com/tc4dy/CVE-2026-85706-PoC-Toolkit
cd CVE-2026-85706-PoC-Toolkit
pip install -r requirements.txt
requests
urllib3
curl_cffi
rich
pyyaml
exploit.py| المعامل | الوصف |
|---|---|
-u, --url | عنوان URL لهدف واحد (مثل https://gitlab.example.com) |
-f, --file | ملف يحتوي على قائمة الأهداف (واحد في كل سطر) |
--pipe | قراءة الأهداف من stdin (خط أنابيب subfinder/httpx) |
--read | مسار (مسارات) مطلق لقراءته، مفصولة بفواصل |
--wordlist | ملف يحتوي على مسارات لقراءتها (واحد في كل سطر) |
--project-id | فرض معرف مشروع محدد |
--max-projects | الحد الأقصى لمعرفات المشاريع التي يجب تجربتها (افتراضي: 8) |
--auto | جمع ملفات GitLab عالية القيمة تلقائيًا |
--loot | نفس --auto |
--shell | صدفة تفاعلية بعد الاستغلال |
--force | المسح حتى لو كانت بصمة GitLab ضعيفة |
-t, --threads | خيوط لعدة أهداف (افتراضي: 8) |
--timeout | مهلة HTTP (افتراضي: 15 ثانية) |
--retry | عدد مرات إعادة المحاولة (افتراضي: 3) |
--retry-on | رموز HTTP لإعادة المحاولة (افتراضي: 429,500,502,503,504) |
--proxy | وكيل HTTP/HTTPS |
--proxy-list | ملف يحتوي على وكلاء للتدوير |
--proxy-rotate | استراتيجية التدوير: round-robin، random، sticky |
--jitter | إضافة jitter عشوائي بين الطلبات |
--jitter-range | الحد الأدنى، الأقصى للـ jitter بالثواني (افتراضي: 0.1,2.0) |
--delay | تأخير ثابت بين الطلبات |
--stealth | تمكين وضع التخفي (تدوير UA + X-Forwarded-For) |
--curl-cffi | استخدام curl_cffi لانتحال بصمة TLS |
--user-agent-file | ملف يحتوي على سلاسل User-Agent |
--max-body | الحد الأقصى لحجم جسم الاستجابة (0 = غير محدود) |
--concurrent-per-host | الحد الأقصى للطلبات المتزامنة لكل مضيف |
--rate-limit | الحد الأقصى للطلبات في الثانية (0 = غير محدود) |
--exclude | مضيفون مفصولون بفواصل لاستبعادهم (أنماط glob) |
--grep | إظهار التسريبات المطابقة للتعبير النمطي فقط |
--resume | الاستئناف من ملف الحالة |
--notify | عنوان URL للإشعار (slack:, discord:, telegram:) |
--db | حفظ النتائج في قاعدة بيانات SQLite |
--output-format | تنسيق الإخراج: json، jsonl، csv، html |
-o, --output | مسار ملف الإخراج |
-v, --verbose | إخراج مطوّل |
-q, --quiet | وضع صامت |
--no-color | تعطيل الألوان |
--no-banner | بدون لافتة |
--config | ملف تكوين YAML/JSON |
--dry-run | إظهار الخطة دون إجراء طلبات |
--safe-mode | قراءة /etc/hostname فقط للتحقق |
--timeout-profile | aggressive، normal، stealth |
--mitre | تضمين تعيين MITRE ATT&CK |
--fingerprint | بصمة GitLab مفصلة |
--cve-check | التحقق من CVEs ذات الصلة |
--json-schema | الإخراج بمخطط JSON لـ SIEM |
--progress | إظهار شريط التقدم (يتطلب rich) |
safechecker.py