SharePoint零日漏洞“ToolShell”在野利用攻击企业服务器

本文详细分析了Microsoft SharePoint服务器中的零日漏洞CVE-2025-53770(ToolShell)及其在野利用情况,包括攻击时间线、技术细节、不同攻击集群的行为分析以及防御建议。

SharePoint ToolShell | 零日漏洞在野利用攻击企业服务器

观察到的目标

我们观察到初始的ToolShell利用针对高价值组织,受害者主要涉及技术咨询、制造业、关键基础设施以及与敏感架构和工程组织相关的专业服务。早期目标表明,该活动最初是经过精心选择的,旨在针对具有战略价值或提升访问权限的组织。

本报告中描述的 attacks 具有针对性,发生在漏洞公开披露之前,这刺激了更广泛行为者的大规模利用努力。我们预计,由国家关联和财务动机的行为者驱动的更广泛利用尝试将加速,以利用未修补的系统。

SentinelOne观察到多个与国家结盟的威胁行为者(与第一波利用无关)开始进行侦察和早期利用活动。此外,我们还识别出可能建立诱饵蜜罐环境以收集和测试漏洞利用实现的行为者,以及在已知共享平台上共享工具和技巧。随着这些社区内的 awareness 传播,我们预计将进一步武器化和持续 targeting 易受攻击的SharePoint基础设施。

技术概述

先前修补的CVE(49704/49706)首次在Pwn2Own Berlin披露。后来发现这两个缺陷可以配对在一起,产生完整的RCE“ToolShell”攻击链。名称“ToolShell”指的是初始滥用SharePoint的/ToolPane.aspx(CVE-2025-49704),这是一个用于网站配置和管理的系统页面。

此漏洞链通过向URI /layouts/15/ToolPane.aspx?DisplayMode=Edit发送精心制作的POST请求,利用Referer头验证中的逻辑缺陷,实现未经身份验证的远程代码执行。此绕过允许攻击者无需身份验证即可访问SharePoint的ToolPane功能,最终通过上传或内存中的Web组件导致代码执行。

xxx.aspx

2025年7月18日09:58 GMT,SentinelOne观察到一次利用尝试,攻击者丢弃了一个名为xxx.aspx的自定义密码保护ASPX webshell。此活动似乎是手动和探索性的,可能由人工操作员而非自动化脚本执行。

webshell写入以下路径: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\xxx.aspx

此webshell提供基本HTML界面,允许三个主要功能:

  • 通过嵌入式表单设置cookie进行身份验证。
  • 通过GTaRkhJ9wz参数提交命令,通过cmd.exe运行并返回客户端。
  • 通过多部分表单使用字段0z3H8H8atO(文件)和7KAjlfecWF(目标路径)进行文件上传。

shell利用基本混淆和验证机制,包括基于cookie的身份验证和硬编码SHA512哈希以限制访问。密码检查逻辑表明行为者预期重复或远程使用shell。

丢弃webshell后,攻击者发出以下命令: cmd.exe /c whoami > c:\progra~1\common~1\micros~1\webser~1\16\template\layouts\info.js

首次尝试重定向whoami输出失败 due to a typo (\templa),表明活动可能是手动和探索性的。纠正后的第二个命令成功将whoami输出写入Web可访问的.js文件,这是验证命令执行和 potentially 通过浏览器检索输出的常见策略。

虽然此活动仅限于单个观察实例,但定制工具和交互行为表明威胁行为者 deliberate 后利用尝试,测试或准备更广泛操作。

spinstall0.aspx

SentinelOne观察到两波不同的活动,涉及一致的最终有效载荷spinstall0.aspx,于2025年7月18日和19日从不同攻击者基础设施丢弃 across SharePoint环境。虽然初始 dropper 脚本在波次之间略有不同,但两者都导致部署相同的webshell,旨在提取和暴露主机中的敏感加密材料。

第一波 – 2025年7月18日(14:54–18:44 GMT) 源IP:107.191.58[.]76 此初始波涉及基于PowerShell的有效载荷交付。base64编码的blob被解码并写入SharePoint LAYOUTS目录:

1
2
3
4
5
$base64String = [REDACTED]
$destinationFile = "C:\PROGRA~1\COMMON~1\MICROS~1\WEBSER~1\16\TEMPLATE\LAYOUTS\spinstall0.aspx"
$decodedBytes = [System.Convert]::FromBase64String($base64String)
$decodedContent = [System.Text.Encoding]::UTF8.GetString($decodedBytes)
$decodedContent | Set-Content -Path $destinationFile -ErrorAction Stop

生成的文件spinstall0.aspx不是传统的命令webshell,而是侦察和持久性实用程序:

1
2
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>

此代码提取并打印主机的MachineKey值,包括ValidationKey、DecryptionKey和加密模式设置——这些信息对于攻击者寻求在负载平衡的SharePoint环境中保持持久访问或伪造身份验证令牌至关重要。

第二波 – 2025年7月19日(03:06–07:59 GMT) 源IP:104.238.159[.]149 大约12小时后,第二波使用几乎相同的逻辑交付相同的spinstall0.aspx有效载荷。关键区别在于PowerShell暂存脚本:

1
2
3
4
5
6
$b = [REDACTED]
$c = "C:\PROGRA~1\COMMON~1\MICROS~1\WEBSER~1\15\TEMPLATE\LAYOUTS\spinstall0.aspx"
$d = [System.Convert]::FromBase64String($b)
$e = [System.Text.Encoding]::UTF8.GetString($d)
$e | Set-Content -Path $c -ErrorAction Stop
Start-Sleep -s 3

虽然编码有效载荷形式略有不同,但解码为相同的spinstall0.aspx shell。目标目录从16\TEMPLATE更改为15\TEMPLATE,可能反映跨不同SharePoint版本或环境的测试。

与此活动中观察到的更交互式webshell不同,spinstall0.aspx不支持命令执行或文件上传。相反,其单一目的似乎是信息收集, specifically targeting 加密秘密,这些秘密可能被重用以跨SharePoint实例伪造身份验证或会话令牌。

鉴于此shell收集的MachineKey数据的独特性和战略价值,我们评估此集群是建立持久访问高价值SharePoint部署的更广泛努力的一部分。

“no shell”

此活动集群,跟踪为“no shell”,代表此活动中更高级和 stealthy 的方法。SentinelOne观察到该集群在2025年7月17日10:35:04 GMT至2025年7月18日03:51:29 GMT之间操作,使其成为我们已知最早的CVE-2025-53770在野利用。

与其他集群不同,没有持久webshell写入磁盘。相反,遥测和行为指标表明攻击者依赖内存中的.NET模块执行,完全避免传统的基于文件的工件。此方法 significantly 复杂化检测和取证恢复,强调无文件后利用技术带来的威胁。

此集群中所有观察到的活动源自单个IP地址:96.9.125[.]147。尽管缺乏文件系统工件,受感染主机表现出与SharePoint利用一致的模式,随后通过PowerShell或本机.NET反射进行编码有效载荷交付和动态程序集加载。

鉴于时间(公共概念验证 chatter 开始后仅几天)和无文件执行链的 sophistication,我们评估此集群要么是熟练红队模拟练习,要么是专注于规避访问和凭据收集的有能力威胁行为者的工作。

防御者应特别警惕SharePoint利用尝试后的内存驻留活动,并应 employ EDR解决方案 capable of 检测异常.NET执行模式和程序集加载。

结论

现代威胁行为者通过快速采用最大化补丁差异、n-day采用和漏洞利用的迭代开发收益。SharePoint服务器对威胁行为者具有吸引力,因为它们很可能存储敏感组织数据。除了作为知识存储的价值外,易受攻击的SharePoint服务器可用于暂存和交付额外攻击组件给受害组织,用于内部水坑攻击。利用的容易性和这些服务器上托管数据的潜在价值使“ToolShell”成为强大而危险的攻击链。

截至撰写时,Microsoft 0365的SharePoint Online不受影响。我们的研究团队提供了开箱即用的平台检测规则和狩猎查询,以协助发现和隔离相关行为。我们建议易受攻击的组织应用Microsoft发布的安全更新(2025年7月21日发布)以尽快缓解相关漏洞。SentinelOne正在积极监控其客户群的影响,并在识别时通知受影响者。

危害指标(IOC)

SHA-1

  • f5b60a8ead96703080e73a1f79c3e70ff44df271 - spinstall0.aspx webshell
  • fe3a3042890c1f11361368aeb2cc12647a6fdae1 - xxx.aspx webshell
  • 76746b48a78a3828b64924f4aedca2e4c49b6735 - App_Web_spinstall0.aspx.9c9699a8.avz5nq6f.dll, spinstall0.aspx的编译版本

IP地址

  • 96.9.125[.]147 - “no shell”集群的攻击者IP
  • 107.191.58[.]76 - spinstall0.aspx集群第一波使用的攻击者IP
  • 104.238.159[.]149 - spinstall0.aspx集群第二波使用的攻击者IP

新SentinelOne平台检测规则

  • LAYOUTS目录中的Web Shell创建
  • LAYOUTS目录中检测到Web Shell文件
  • SharePoint IIS工作进程产生的可疑进程

SentinelOne平台狩猎查询

1
2
3
4
5
//可疑SharePoint活动
dataSource.name = 'SentinelOne' and endpoint.os = "windows" and event.type = "Process Creation" and src.process.parent.name contains "svchost.exe" and src.process.name contains "w3wp.exe" and tgt.process.name contains "cmd.exe" and src.process.cmdline contains "SharePoint"

//spinstall0.aspx执行痕迹
dataSource.name = 'SentinelOne' and endpoint.os = "windows" and event.type = "Process Creation" and src.process.name contains "csc.exe" and tgt.file.path contains "App_Web_spinstall0.aspx"

免责声明

本出版物中提到的所有第三方产品名称、徽标和品牌均为其各自所有者的财产,仅用于识别目的。使用这些名称、徽标和品牌并不意味着与第三方有 affiliation、endorsement、sponsorship 或 association。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计