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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Gitea-template-sync-Path-Traversal-Privilege-Escalation-CVE-2026-38526- — PoC وشرح لتصعيد الصلاحيات في HackTheBox "Nexus": خدمة مزامنة قوالب Gitea التي تعمل بصلاحيات root ومعرضة لاجتياز المسار عبر كائنات Git المزورة. للاستخدام التعليمي فقط. | Kitploit
أدوات/GitHubGitHub/shirouuu/gitea-template-sync-path-traversal-privilege-escalation-cve-2026-38526-
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبما بعد الاستغلالCTFاختبار الاختراقالتعلم والتعليمتطوير الحمولات

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
مختبرات وتدريب عملي
GitHubshirouuu/gitea-template-sync-path-traversal-privilege-escalation-cve-2026-38526-

Gitea-template-sync-Path-Traversal-Privilege-Escalation-CVE-2026-38526-

PoC وشرح لتصعيد الصلاحيات في HackTheBox "Nexus": خدمة مزامنة قوالب Gitea التي تعمل بصلاحيات root ومعرضة لاجتياز المسار عبر كائنات Git المزورة. للاستخدام التعليمي فقط.

عرض المستودع
منذ 6س 45دلم تتم المراجعة بعد

Nexus — إثبات مفهوم تصعيد الصلاحيات المحلية

اجتياز مسار مزامنة قوالب Gitea عبر كائنات Git المزوّرة → root

إثبات مفهوم لاستغلال تصعيد الصلاحيات لجهاز HackTheBox Nexus. تقوم خدمة systemd مملوكة لـ root بمزامنة مستودعات القوالب في Gitea إلى القرص دون تعقيم أسماء المدخلات، مما يسمح لمستخدم مصادَق عليه ذي صلاحيات منخفضة بكتابة ملفات عشوائية بصلاحيات root عبر اجتياز المسار — يُستخدم هنا لزرع مفتاح SSH في /root/.ssh/authorized_keys.


⚠️ إخلاء المسؤولية

يُقدَّم هذا الكود لأغراض تعليمية واختبار أمني مصرّح به فقط — أي بيئات المختبرات مثل HackTheBox، أو الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الاستخدام غير المصرّح به ضد أنظمة لا تتحكم بها غير قانوني. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.

إذا كان جهاز Nexus لا يزال نشطًا على HackTheBox، فلا تنشر أو تشارك هذا الاستغلال — قواعد HTB تحظر توزيع الحلول للأجهزة النشطة.


ملخص الثغرة

الفئةاجتياز المسار (CWE-22) → تصعيد الصلاحيات المحلية
المكوّنgitea-template-sync.service (ملف مخصص /etc/gitea/template-sync.py)
يعمل بصلاحياتroot، يُشغَّل كل ~60 ثانية بواسطة gitea-template-sync.timer
السبب الجذريos.path.join() على أسماء غير معقّمة مأخوذة من كائنات شجرة Git
التأثيرمستخدم مصادَق عليه ذو صلاحيات منخفضة → root

يقرأ سكربت المزامنة الملفات من المستودعات المُعلَّمة كـ قوالب في Gitea ويكتبها إلى نظام الملفات المحلي. يُبنى مسار الوجهة تقريبًا كما يلي:

root@kitploit:~
dest = os.path.join(base_dir, name)   # name comes straight from the Git tree
open(dest, "w").write(content)

لا يقوم os.path.join() بـ تحييد تسلسلات ... لذلك فإن مدخلة شجرة يكون اسمها مسار اجتياز (مثل ../../../../../root/.ssh/authorized_keys) تجعل العملية ذات الصلاحيات العالية تكتب خارج الدليل المقصود.


لماذا كائنات Git المزوّرة؟

يخزّن Git المحتوى والأسماء بشكل منفصل:

  • blob يحمل المحتوى الخام للملف (بدون اسم)؛
  • tree يربط name → object (هنا يوجد اسم الملف)؛
  • commit يشير إلى شجرة عليا.

اسم الملف في مدخلة الشجرة هو مجرد نص، لذا يمكن أن يكون .. — لكن عميل Git القياسي يرفض إنشاء مثل هذه المدخلة، تحديدًا لمنع هذا الهجوم.

يتجاوز إثبات المفهوم هذا الفحص من جانب العميل عبر كتابة كائنات Git خام مباشرةً في .git/objects/ (بحساب معرّفات SHA-1 يدويًا) وصياغة refs/heads/main يدويًا. يحتوي المستودع المدفوع بعد ذلك على مدخلة شجرة باسم ..، والتي تحلّها عملية المزامنة ذات صلاحيات root وتتبعها.


سلسلة الهجوم (سياق الجهاز الكامل)

  1. الوصول الأولي — رفع ملفات غير مقيّد في Krayin CRM (CVE-2026-38526) → تنفيذ أوامر عن بُعد بصلاحيات www-data.
  2. الحركة الجانبية — بيانات اعتماد نصية صريحة في ملف .env الخاص بالإنتاج، مُعاد استخدامها ككلمة مرور نظام → SSH كمستخدم ذي صلاحيات منخفضة.
  3. تصعيد الصلاحيات — إثبات المفهوم هذا → root.

الموضوع المتكرر عبر المراحل الثلاث: عملية ذات صلاحيات عالية تثق ببيانات يتحكم بها المهاجم دون تحقق (نوع MIME مزوّر، كلمة مرور مُعاد استخدامها، اسم ملف غير معقّم).


المتطلبات

  • التشغيل على الجهاز الهدف، كمستخدم مصادَق عليه ذي صلاحيات منخفضة.
  • Gitea متاح على http://localhost:3000.
  • توفر git وpython3 وcurl وssh (افتراضيًا على الجهاز).

الاستخدام

root@kitploit:~
chmod +x nexus_privesc.sh
./nexus_privesc.sh -t <TARGET_IP> -u <GITEA_USER> -p <GITEA_PASS> [-d DEPTH]

مثال:

root@kitploit:~
./nexus_privesc.sh -t 10.129.21.192 -u jones -p 'REDACTED' -d 5

ما الذي يفعله السكربت

  1. يولّد زوج مفاتيح SSH من نوع ed25519 (/tmp/.exploit_key).
  2. يطلب رمز Gitea API عبر المصادقة الأساسية.
  3. ينشئ مستودعًا ويعلّمه كـ قالب.
  4. يزوّر كائنات Git خام تُرمّز شجرة اجتياز .. التي تُطابق /root/.ssh/authorized_keys، مع المفتاح العام للمهاجم كمحتوى.
  5. يدفع المستودع المسموم.
  6. ينتظر مؤقّت المزامنة المملوك لـ root (~60 ثانية).
  7. يسجّل الدخول كـ root بالمفتاح المزروع.

راقب المزامنة على الهدف باستخدام:

root@kitploit:~
tail -f /var/log/template-sync.log

تسجّل عملية ناجحة سطرًا مثل:

root@kitploit:~
synced: ../../../../../root/.ssh/authorized_keys

ضبط DEPTH

DEPTH هو عدد مستويات .. اللازمة للصعود من دليل المزامنة/التجهيز إلى جذر نظام الملفات (/). إذا نجحت المزامنة في السجل لكن فشل SSH بصلاحيات root، فهذا يعني أن الاجتياز وصل إلى المستوى الخاطئ — أعد المحاولة بـ -d 4 أو -d 6. يمكن تأكيد القيمة الدقيقة بقراءة مسار التجهيز في /etc/gitea/template-sync.py.


المعالجة

  • لا تبنِ مسارات نظام الملفات من أسماء غير موثوقة باستخدام os.path.join() وحدها. طبّع المسارات واحصرها، مثل:

    root@kitploit:~
    base = os.path.realpath(base_dir)
    dest = os.path.realpath(os.path.join(base, name))
    if not dest.startswith(base + os.sep):
        raise ValueError("path traversal blocked")
    
  • ارفض أسماء مدخلات الشجرة التي تحتوي على .. أو مسارات مطلقة أو فواصل مسارات.

  • شغّل خدمة المزامنة تحت حساب مخصص ذي صلاحيات منخفضة، وليس root.

  • فعّل receive.fsckObjects = true في Gitea لرفض الكائنات المدفوعة المشوّهة.


المراجع

  • CWE-22 — التقييد غير السليم لاسم المسار إلى دليل محصور (اجتياز المسار)
  • CVE-2026-38526 — رفع ملفات غير مقيّد في Krayin CRM (مرحلة الوصول الأولي)
  • Git internals — objects (blob / tree / commit): https://git-scm.com/book/en/v2/Git-Internals-Git-Objects
  • MITRE ATT&CK — T1068 Exploitation for Privilege Escalation

المؤلف

<your name / handle> — للاستخدام التعليمي على HackTheBox.

تنزيل الأداة
الخيارالوصفالافتراضي
-tعنوان IP الهدف (لجلسة SSH النهائية بصلاحيات root)— (مطلوب)
-uاسم مستخدم Gitea— (مطلوب)
-pكلمة مرور Gitea— (مطلوب)
-dعدد مستويات .. للوصول إلى / من دليل المزامنة5