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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-1362 — تحليل CVE-2020-1362 | Kitploit
أدوات/GitHubGitHub/asdyxcyxc/cve-2020-1362
تصعيد الامتيازاتتحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةالتعلم والتعليماستغلال الملفات الثنائية
GitHubasdyxcyxc/cve-2020-1362

CVE-2020-1362

تحليل CVE-2020-1362

عرض المستودع
374منذ 6 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

استغلال ثغرة تصعيد الامتيازات في ويندوز 10 (CVE-2020-1362)

استغلال ثغرة تلف الذاكرة - تحليل CVE-2020-1362

قامت WalletService بإصلاح ثغرات تصعيد الامتيازات في آخر تحديث Patch Tuesday، وقد خُصصت إحدى هذه الثغرات بـ CVE-2020-1362. تستغل هذه الثغرة خللاً في الوصول خارج الحدود في الخدمة. نشارك هنا تقنياتنا لاستغلالها.

تحليل السبب الجذري

أجرينا تحليلًا ثنائيًا للدوال التالية في walletservice.dll:

  • Wallet::WalletCustomProperty::SetGroup

تكتب دالة SetGroup بيانات يتحكم فيها المستخدم في عنوان ذاكرة يتحكم فيه المستخدم.

root@kitploit:~
signed __int64 __fastcall Wallet::WalletCustomProperty::SetGroup(__int64 this, int a2, int a3, int a4)
{
  signed __int64 result; // rax

  result = 0i64;
  if ( a2 == 1 )
  {
    if ( a3 & 0xFFFFFFDF )
      return 0x80070057i64;
  }
  else if ( a3 == 0x20 )
  {
    return 0x80070057i64;
  }
  if ( a4 == -1 )
  {
    *(_DWORD *)(this + 8i64 * a2 + 0x74) = 0;
    *(_DWORD *)(this + 8i64 * a2 + 0x78) = 0x7FFFFFFF;
  }
  else
  {
    *(_DWORD *)(this + 8i64 * a2 + 0x74) = a3;
    *(_DWORD *)(this + 8i64 * a2 + 0x78) = a4;
  }
  return result;
}

يمكننا ملاحظة أن الدالة لا تتحقق من نطاق الإزاحة التي يمكن للمستخدم التحكم بها. وهنا يقع الخلل.

من كتابة الذاكرة خارج الحدود إلى WWW (write-what-where)

يمكننا الآن كتابة ذاكرة خارج الحدود. وبالملاحظة نجد أن هناك دالتين لتعيين واسترجاع BSTR في نفس الكلاس:

  • Wallet::WalletCustomProperty::SetLabel
  • Wallet::WalletCustomProperty::GetLabel

لذلك يمكننا بسهولة تعديل المؤشر إلى BSTR عبر oobw للحصول على القدرة على قراءة وكتابة أي عنوان.

من WWW إلى تنفيذ تعليمات برمجية عشوائية

بمجرد حصولنا على WWW (write-what-where)، يمكننا كتابة جدول الوظائف الافتراضية (vtable) لكائنات Wallet::WalletCustomProperty في الكومة للتحكم في RIP. في البداية، حاولنا تعديله مباشرة عبر oobw، لكننا وجدنا أن oobw ليس محاذيًا لـ 8 بايت. لذا كان علينا الكتابة مرتين لتحقيق اختطاف vtable باستخدام حالة سباق (race condition). لكن هذا قد يجعل الاستغلال غير مستقر. توجد طرق أخرى لتجاوز ذلك. لكن في برهان المفهوم (POC) الخاص بنا استخدمنا ثغرة تسريب معلومات أخرى (CVE-2020-1361) لتسريب عنوان الكومة واستخدمنا www لكتابة vtable مباشرة. على فكرة، على الرغم من أن CVE-2020-1361 مصنفة كثغرة تسريب معلومات، إلا أنها في الواقع يمكن استخدامها لتحقيق EOP. سننشر تحليلًا لها في المستقبل.

وجدنا الدالة ATL::CComObject<CDXGIAdapter>::`vector deleting destructor في dxgi.dll لمساعدتنا في الانتقال من تنفيذ دوال عشوائية إلى تنفيذ تعليمات برمجية عشوائية. تستدعي هذه الدالة الدالة loadlibraryEx وتستخدم مؤشرًا عامًا كوسيط أول لـ loadlibraryEx. وبذلك يمكننا تحقيق تنفيذ تعليمات برمجية عشوائية عبر تحميل مكتبة DLL مخصصة.

يتم توفير مثال لبرهان المفهوم (POC) في مجلد POC.

تأثيرات الثغرة

من خلال هذه الثغرة، يمكننا تحقيق تصعيد الامتيازات من مستوى متوسط إلى NT AUTHORITY\system.

اختُبرت على Windows 10.0.18363.815، x64

نص الصورة

الاعتمادات

  • Haoran Qin
  • Zhiniang Peng (@edwardzpeng) من Qihoo 360

الجدول الزمني

10 أبريل 2020: تم الإبلاغ عن الثغرات

21 أبريل 2020: قام MSRC بالتحقيق وتأكيد الخلل

14 يوليو 2020: تم إصدار التصحيح

17 يوليو 2020: نُشر التحليل

تنزيل الأداة