
PoC لتصعيد الامتيازات المحلية (LPE) مع QlikView
التطبيق المتأثر: QlikView المنصة: Windows المشكلة: تصعيد الامتيازات المحلية عبر مثبّت MSI (حالة سباق لاختطاف DLL) اكتشفها وأبلغ عنها: Pawel Karwowski و Julian Horoszkiewicz (Eviden Red Team)
التفاصيل: على الأنظمة التي تم تثبيت QuikView12 عليها، يمكن للمستخدمين العاديين تشغيل المثبّت في وضع "الإصلاح" عن طريق إصدار الأمر التالي: msiexec.exe /fa PATH_TO_INSTALLER_FILE.msi
يؤدي هذا إلى تشغيل خدمة msiexec، التي تنفّذ عملية الإصلاح، وتُشغّل إجراءات متعددة، ومن بين أمور أخرى، تنشئ ملفات داخل مجلد C:\Users\pk\AppData\Local\Temp، حيث تُولَّد أسماء ملفاتها ديناميكيًا وفق القالب التالي: "wac<أربعة أحرف أو أرقام عشوائية>.tmp"، على سبيل المثال wac98DF.tmp.
ثم تستخدم العملية ملف wac****.tmp المُولَّد (وهو ملف تنفيذي) وتعمل بصلاحيات NT AUTHORITY/SYSTEM للكتابة إليه وتحميل صورة من نفسها.
بما أن المجلد C:\Users\pk\AppData\Local\ مملوك للمستخدم العادي، فإن المجلد C:\Users\pk\AppData\Local\Temp\ يرث الصلاحيات، مما يتيح للمستخدم العادي العبث بمحتويات المجلد، على سبيل المثال عن طريق استبدال ملفات DLL المُولَّدة ديناميكيًا. يخلق هذا حالة سباق (race condition). وإذا تمكن من تحديد موقع ملف DLL، فيمكنه محاولة استبدالها بملفه الخاص. إذا نجحوا في إجراء الاستبدال في النافذة الزمنية الصحيحة (الضيقة جدًا) - مباشرة بعد كتابة المثبّت للملف الأصلي وإغلاق واصف الملف، ولكن قبل أن يستدعي المثبّت الدالة LoadLibrary() عليه - يمكنهم جعل ملف DLL الخاص بهم يُنفَّذ بصلاحيات NT AUTHORITY/SYSTEM، مما يؤدي إلى تصعيد الامتيازات محليًا.
يتم الاستغلال باستخدام سكربت PowerShell يقوم بتشغيل ملف .MSI، ويتحقق من وجود وإنشاء ملف EXE الشرعي المطلوب، ويكرر نسخ ملف إثبات المفهوم (PoC) EXE الخاص بي إلى مجلد Appdata\Local\Temp، مما يستبدل فعليًا ملف EXE الشرعي. بعد تحميله، يقوم ملف PoC EXE بإنشاء ملف poc.txt في C:\Users\Public، بالإضافة إلى سطر الأوامر الذي استدعاه، ومخرجات أمر whoami.
مجموع SHA256 لملف MSI: 0267324393384ED2B0746D6CEBDD0FD7D8DBD26853BDA58F875F20F40EBBB898