
استغلال Python PoC لثغرة CVE-2025-8110، يُظهر كتابة ملف عشوائي إلى تنفيذ أوامر عن بُعد (RCE) في Gogs عبر التلاعب بالروابط الرمزية وإساءة استخدام واجهة API. مُصمم لأغراض البحث الأمني التعليمي وبيئات المختبرات المصرح بها.
يحتوي هذا المستودع على برنامج نصي لإثبات المفهوم (PoC) بلغة بايثون لتوضيح وتحليل الثغرة المسجلة باسم CVE-2025-8110 في خدمة Git الذاتية الاستضافة Gogs (الإصدارات 0.13.3 والإصدارات الأقدم).
[!WARNING] يتم توفير هذا البرنامج فقط للأغراض التعليمية والبحث الأمني. استخدام هذه المواد ضد أهداف دون الحصول على موافقة مسبقة وخطية من مالكيها يعتبر غير قانوني تمامًا. مؤلف هذا المستودع غير مسؤول عن أي أضرار أو خسائر أو سوء استخدام ناتج عن استخدام هذا الكود. استخدمه دائمًا على مسؤوليتك الخاصة وفي بيئات محكمة أو محاكاة مصرح بها (مثل مختبرات CTF).
CVE-2025-8110 هو ثغرة خطيرة في كتابة ملفات تعسفية ناتجة عن التحقق غير الكافي عند معالجة الروابط الرمزية (symlinks) عبر API PutContents الخاصة بـ Gogs.
يمكن للمهاجم الموثق (المصادق عليه) القيام بما يلي:
.git/config للخادم نفسه).root، فيمكن تصعيد كتابة الملفات إلى تنفيذ عن بُعد للكود (RCE) عن طريق حقن الأمر المطلوب في خاصية sshCommand لملف إعدادات Git.exploit.py)يقوم البرنامج النصي بأتمتة عملية الاستغلال بأكملها باستخدام بيانات اعتماد صالحة ورمز API تم إنشاؤه مسبقًا يدويًا من واجهة الويب الخاصة بـ Gogs:
┌──────────────────────────────────────────────┐
│ Máquina del Atacante (Kali) │
└──────────────────────┬───────────────────────┘
│
(1) Crea Repositorio │ (3) Sube Symlink (.git/config)
Malicioso vía API │ vía git push
▼
┌──────────────────────────────────────────────┐
│ Túnel SSH Local (puerto 8080) │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Servidor Víctima Gogs │
│ (Puerto 3001) │
└──────────────────────┬───────────────────────┘
│
│ (4) API PUT "contents"
│ Sigue Symlink y escribe
│ "sshCommand" en .git/config
▼
┌──────────────────────────────────────────────┐
│ Ejecución del Payload como ROOT │
└──────────────────────────────────────────────┘
create_malicious_repo: يرسل طلب POST إلى API الخاصة بـ Gogs (/api/v1/user/repos) ويصادق باستخدام رمز الوصول المقدم لإنشاء مستودع جديد باسم عشوائي يتم إنشاؤه ديناميكيًا.upload_malicious_symlink:
/tmp/..git/config (ملف إعدادات Git للخادم).git push).exploit: يعرّف الحمولة (payload) باستخدام خدعة حقن خاصية sshCommand في Git. من خلال تحديث المحتوى عبر API، يُجبر Gogs على إعادة كتابة ملف .git/config الخاص به على الخادم. عند تنشيط الجزء الأخير من عملية Git، ينفذ نظام Gogs أمر الطرفية (shell عكسي في Bash) ويعيد الاتصال بالمستمع الخاص بك في Netcat.تأكد من تعيين بيانات الهوية العامة في Git قبل تشغيل البرنامج النصي لتجنب الأخطاء عند إجراء الـ commit التلقائي:
git config --global user.email "[email protected]"
git config --global user.name "estudiante"