链式PHP2Shell漏洞利用成功获取25台服务器root权限,包括美国政府服务器

Hacker News Top 新闻

摘要

Dream研究人员发现了一起由AI辅助的中国攻击活动,该活动将自定义的PHP2Shell远程代码执行漏洞利用与内核提权漏洞进行链式攻击,成功获取了25台服务器的root权限——其中包括美国政府相关系统——随后横向渗透进入Active Directory,进行凭据提取并建立持久化访问。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/10/29 13:34

# 链式 PHP2Shell 漏洞利用攻陷 25 台服务器,包括美国政府服务器 来源:https://dreamgroup.com/blog/chained-php2shell-exploit-roots-25-servers *自定义 PHP2Shell 漏洞利用链配合内核权限提升漏洞,在野外攻陷防火墙* 10 月 25 日,Dream 研究人员发现了疑似一场中国 AI 辅助攻击行动的痕迹,该行动攻陷了 25 台服务器,包括美国政府关联环境中的系统。攻击者将 PHP2Shell 与内核权限提升漏洞利用相结合,入侵了暴露的系统。 受影响的设备运行的是某大型厂商防火墙软件的特定版本。出于安全考虑,我们不披露厂商名称和受影响的版本号,但已通知该厂商。 随后,攻击者针对 Active Directory 发起了进一步攻击。恢复的工件证实了凭据提取和目录枚举行为。 这次攻击行动表明,一个暴露的管理界面如何成为通往组织身份基础设施的路径。对于政府防御者而言,发现漏洞只是开始,真正的挑战在于从识别易受攻击的系统,延伸到理解并遏制入侵所带来的访问权限。 *以下研究使用 Dream 的自主网络研究产品 **Hero** 进行主动威胁狩猎完成。*(https://dreamgroup.com/blog/hercules-on-premises-ai-vulnerability-model-ranked-1-on-cybergym) ## 发现 Dream 研究人员发现了一个完整的攻击行动,包括对 PHP2Shell 漏洞利用链(CVE-2026-109618 / CVE-2026-109619)的自定义武器化构建、与 Fragnesia 内核权限提升漏洞(CVE-2026-46300)的组合、目标列表、利用日志以及约 40 个自定义后渗透脚本。 其中包含一场攻陷了美国、日本、台湾和韩国境内 25 台服务器的攻击行动的工件。一旦获取 root 权限,攻击者便将目标锁定在美国政府关联环境中的三台特定服务器上。 发现的工件揭示了一次行动,始于实验室环境中的漏洞利用开发,最终实现了对美国政府组织内部 Active Directory 域的持久访问。 ### 攻击中的 AI 使用 我们还观察到攻击基础设施中存在 AI 辅助工具使用的证据: - 已安装 Claude Code - 一个名为 aiscan 的 AI 驱动攻防安全平台,配置了中国大语言模型 DeepSeek 和 Kimi - 存在中国网络空间测绘平台 FOFA 的 API 密钥 虽然我们没有直接证据表明这些 AI 工具被专门用于编写漏洞利用代码或后渗透脚本,但代码结构、注释风格以及约 40 个脚本之间的一致性表明存在 AI 辅助开发。不过,这次行动似乎并非完全自主的国家级攻击(https://dreamgroup.com/blog/inside-a-multi-agent-ai-framework-used-to-compromise-government-entities-in-asia)。 ## 漏洞利用:两个漏洞链入一个请求 攻击者开发了两个独立的漏洞利用程序并将它们串联起来,在单个 HTTP 请求中、无需任何凭据即可获取运行某大型厂商特定版本防火墙软件的任意防火墙的 root 权限。 ### PHP2Shell(CVE-2026-109618 / CVE-2026-109619)— 远程代码执行 我们恢复的实现是一个自定义的非公开构建版本,并非任何已知公开 PHP2Shell 漏洞利用的副本。它遵循相同的底层原理,但似乎是独立开发的,专为特定防火墙平台量身定制。 该漏洞针对防火墙 appweb 管理服务器上的 PHP `session.upload_progress` 机制。防火墙操作系统使用 PHP 8.0.30,具有较高的内存限制,使攻击的内存损坏阶段成为可能。 攻击分为四个精心编排的阶段: - **A1 — 内存耗尽(约 383MB):** 攻击者用精心构造的 multipart POST 请求轰炸服务器,每个请求包含巨大的文件名和会话进度数据。这将 PHP 的内存分配器推至极限,迫使系统进入可预测的内存布局。 - **B1 — 信息泄露:** 第二个请求伪造 A1 遗留的过期会话 ID 长度,强制触发越界读取。服务器的 `Set-Cookie` 响应头携带泄露的指针值——使攻击者获得运行进程中 `libphp.so` 的基址。 - **A2 — 过期引用构建(约 500MB):** 另一轮内存压力初始化一个会话,使 `http_session_vars` 保持为活跃的 `zend_reference`,然后触发第二次 OOM,使 `mod_data=NULL`——创建一个攻击者可在 B2 中伪造的过期引用。 - **B2 — 代码执行:** 最终请求在已释放的内存区域中伪造一个 PHP HashTable 条目。伪造条目的 `pDestructor` 回调指向 `zif_system`(PHP 的 `system()` 函数),其数据指向一个 shell 命令字符串。当 PHP 的清理处理器遍历 HashTable 时,会调用伪造的析构函数——以 `nobody` 用户身份执行任意命令。 ### Fragnesia(CVE-2026-46300)— 内核权限提升 以 `nobody` 身份获得代码执行还不够,因为 SELinux 将 `httpd_t` 限制在无法修改系统文件的范围内。为了完成提权,攻击者链入了第二个漏洞利用:Linux 内核 XFRM ESP-in-TCP 子系统中的一个漏洞。 Fragnesia 使用页缓存写入来覆写 `/etc/pam.d/su`——将其认证规则替换为 `pam_permit.so`(接受所有请求)。由于 PAM 文件仅有 774 字节,该漏洞利用使用逐字节拼接变体来精确写入。覆写完成后,无需密码即可执行 `su root`。 两个漏洞利用均在单个 B2 HTTP 请求中运行。完整漏洞链——从未经认证的 HTTPS 连接到持久化的 root webshell——在 15 分钟内完成。 ## 实验室:大规模版本画像 该漏洞利用并非一次性发射的载荷。它需要精确的内存偏移量,而这些偏移量因防火墙操作系统版本不同而异——`zval_ptr_dtor` 的地址、`zif_system` 的地址、HashTable 结构体大小,以及控制每个阶段堆布局的内存几何参数。 在恢复的工件中,我们发现了 11 个 JSON 版本配置文件——每个对应一个已测试的防火墙操作系统版本: | 防火墙版本 | 发布分支 | PHP | 配置文件 | 备注 | |---|---|---|---|---| | 已隐去 | 旧分支 | 7.4.33 | 2 个临时配置 | PHP 7.4——在实验室中已验证以 nobody 身份实现 RCE,但完整漏洞链未校准(基础构建加一个热修复变体) | | 已隐去 | 新分支 | 8.0.30 | 1 个校准,8 个临时配置 | 一个基础配置已完成实验室全面测试;其余继承其几何参数或与相邻构建共享偏移量 | 每个配置文件包含从该版本 `libphp.so` 二进制文件中提取的精确偏移量——包括每个库的 SHA256 哈希、ELF 构建 ID,以及通过实验室测试调优的精确内存几何参数(块大小、填充计数、排水计数、喷射偏移量)。 "校准"和"临时"配置之间的差异值得注意——校准意味着攻击者在该版本的运行虚拟机上测试了漏洞利用,并确认内存布局有效。临时意味着他们从二进制文件中计算了偏移量,但尚未在实际实例上验证。 ## 攻击行动漏斗:从发现 19,000 个目标到攻陷 25 台 从 10 月 8 日到 10 月 24 日,攻击行动时间线涵盖设置、利用、横向移动和后渗透,共分十个步骤。 ***图 1:攻击行动时间线,从 10 月 8 日的设置开始,经过利用、横向移动到内网,以及 10 月 24 日的后渗透。*** 漏洞利用准备就绪、9 个可利用版本的配置文件齐备后,攻击者发起了一场遵循清晰漏斗模型的目标筛选行动: ### 阶段 1:全球发现(19,000 个目标) 攻击者使用 FOFA——一个类似于 Shodan 的中国网络空间搜索引擎——在全球范围内识别了约 19,000 台面向互联网的目标厂商防火墙。这些设备的管理接口暴露在互联网上,可通过证书指纹和 HTTP 响应签名被发现。 ### 阶段 2:版本指纹识别(5,000 台存活) 一个自定义版本扫描器以 200 个并发线程对所有 19,000 个目标运行,识别哪些设备实际在线以及运行的操作系统版本。约 5,000 台返回了版本信息。 ### 阶段 3:地理和版本过滤(240 个目标) 从 5,000 台存活设备中,攻击者筛选出位于美国、日本、台湾和韩国境内的服务器。随后进一步筛选出与其漏洞利用配置文件匹配的版本(运行 PHP 8.0.30 的新发布分支)。最终得到 240 台防火墙的目标列表。 由于美国、日本、台湾和韩国是中国国家级网络行动在太平洋战区的四个主要战略对手和情报目标,这表明可能存在国家级对手的行动。 ### 阶段 4:自动化利用(24 台被攻陷) 这 240 个目标被输入自动批量运行器,每次同时利用 5 个目标,每个目标的超时时间为 1800 秒(30 分钟)。对于每个成功目标,批量执行器: - 运行完整的 PHP2Shell + Fragnesia 漏洞链 - 在防火墙的公开可访问目录中植入一个 103 字节的 PHP root webshell - 通过 webshell 执行 `id` 命令来验证 root 权限 - 将目标的主机名和 IP 记录到成功 CSV 文件中 - 转向下一个目标 至此,24 台防火墙已被成功攻陷。 ### 阶段 5:分类(2 台防火墙被优先处理) 在 24 台被攻陷的防火墙中,攻击者对其中 22 台除了植入 webshell 外未做任何操作。没有持久化,没有隧道,没有后渗透工具。这些服务器实际上处于**被控制并停放**状态,攻击者可在任何时候通过 webshell 回来。 两台看似属于同一目标的服务器超越了这一阶段。两者似乎都属于美国政府关联环境。 ### 阶段 6:横向移动(从防火墙到域) 在 24 台被攻陷的防火墙中,两台属于一家美国政府关联组织。从第一台防火墙提取的运行配置显示了一个具有政府关联特征的环境:CAC(通用访问卡)认证、特定的命名前缀、以及标准化的政府风格资产命名。该配置文件包含了该组织完整的内部网络拓扑:域控制器、中央防火墙管理服务器、Keycloak SSO 服务器、GitLab 实例、VPN 网关和 Active Directory 域。 第一台防火墙于 10 月 23 日 18:14 UTC 在自动批量执行期间被攻陷。但它随后很快崩溃——可能是由于约 900MB 的漏洞利用流量——再也没能恢复上线。攻击者在两小时内用 240 次自动探测监控它,等待其恢复。它没有恢复。第二台防火墙的证书数据明确将其与目标组织关联,在最初的批量执行期间超时。 通过第一台防火墙的配置认识到该组织的价值后,攻击者创建了一个单独的专项行动,并于 10 月 24 日 10:09 UTC 成功利用了它。 数小时内,攻击者: **构建了通往内网的持久化隧道。** 一个 8 端口反向 SSH 隧道将被攻陷的防火墙连接回操作者的基础设施,转发以下访问: - 域控制器(LDAP、LDAPS、RDP) - 内部防火墙管理服务器 - VPN 基础设施 - 用于任意内网访问的 SOCKS5 代理 该隧道被包装为 systemd 服务和 `rc.local` 启动钩子——它可在重启后存活并自动重连。 **通过隧道利用了管理服务器。** 在 11:35 UTC,攻陷第二台防火墙后不到 90 分钟,攻击者利用新获得的服务器访问权限,使用同样的 PHP2Shell + Fragnesia 漏洞链攻击了第三台政府服务器——即仅可通过隧道访问的内部防火墙管理服务器。该服务器集中管理该组织的所有防火墙。攻陷它使攻击者获得了每台受管防火墙的配置、凭据和网络设置的访问权限。这使被利用服务器总数达到 25 台。 **从管理服务器发起了 AD 攻击行动。** 由于管理服务器已有到 Active Directory 的 LDAP 连接(它需要此连接来认证 VPN 用户),攻击者将其用作域攻击的发射平台: - 解密了 LDAP 服务账户密码——设备配置中存储的是加密形式,但拥有 root 权限的攻击者持有主密钥。他们以明文形式提取并硬编码到每个后续脚本中。 - 通过 LDAP 查询枚举了域中的每个用户和组。 - 使用组织主题密码对每个用户账户进行密码喷洒。该域设置了 `lockoutThreshold=0`——即无账户锁定,允许无限次喷洒尝试。 - 尝试创建后门 AD 账户——包括一个用户账户(尝试在每个 OU 中创建)和一个机器账户(利用默认的 `MachineAccountQuota` 设置)。 - 分析 AD ACL 链以寻找权限提升路径。 - 尝试从 Keycloak IdP 配置中提取 SAML 签名密钥。 - 探测 Keycloak SSO 寻找认证绕过。 攻击结果——密码喷洒是否找到有效凭据、后门账户是否创建成功、SAML 密钥是否被提取——保存在管理服务器的本地文件系统中,并未出现在我们恢复的工件中。这意味着我们无法确定入侵的完整程度。 从攻击者跨越互联网到达边界防火墙,通过隧道进入防火墙管理服务器,再到达域控制器的攻击路径。 ***图 2:攻击路径。PHP2Shell 和 Fragnesia 获取了边界防火墙的 root 权限,反向 SSH 隧道抵达内部管理服务器,解密的 LDAP 服务账户打开了 Active Directory。*** ### 管理服务器 → Active Directory | 状态 | 活动 | |---|---| | ✓ | 从配置中解密 LDAP 密码 | | ✓ | 完整的用户和组枚举 | | ? | 密码喷洒(所有用户,无锁定) | | ? | 后门用户 + 机器账户创建 | | ? | SAML 签名密钥提取 | ## 攻击者现在拥有什么 从恢复的工件中,我们可以确认攻击者拥有: - 通过重启存活的反向隧道和 SOCKS 代理,对组织内网的持久远程访问——可能仍然活跃 - 两台防火墙和防火墙管理服务器上的 root webshell——可能仍然活跃 - 完整的 Active Directory 用户和组列表——完整的组织架构蓝图 - 解密后的 LDAP 服务账户凭据——可在任何时候直接查询 AD - 从防火墙文件系统中提取的私钥——HA 复制密钥、SSL/TLS 证书密钥和设备认证密钥 - 完整的网络拓扑——所有 IP、主机名、子网、服务器角色和 VPN 网关 - 安全设置薄弱的 SAML IdP 配置(`validate-idp-certificate: no`) - 分布在美国、日本、台湾和韩国的另外 22 台停放的防火墙——随时可被利用 我们无法确定的是密码喷洒、后门账户创建或 SAML 密钥提取是否成功。如果这些攻击中的任何一项成功,入侵范围将远远超出边界防火墙,延伸至组织的身份基础设施。 ## 归因指标 我们未将此活动归属于具名威胁组织。然而,多个指标指向一场与中国有关联的行动: | 指标 | 详情 | |---|---| | 目标选择 | 仅限美国、日本、台湾、韩国。这些是中国国家级行动在太平洋地区的主要战略情报目标 | |

相似文章

AI 网络军备竞赛正在迅速升级。PHP2Shell 引发了数百万次漏洞利用尝试。与中国有关联的黑客利用 AI 智能体攻击逾 2,250 个云租户,在某些情况下不到 3 小时就获得了特权访问权限。CrowdStrike 又披露了四起由 AI 驱动的黑客攻击活动。

Reddit r/singularity

AI 驱动的网络攻击正在迅速升级:PHP2Shell 引发了数百万次漏洞利用尝试,与中国有关联的黑客利用 AI 智能体攻陷了超过 2,250 个云租户,CrowdStrike 则发现了另外四起由 AI 驱动的黑客攻击活动。

黑客在严重的 PHP2Shell 漏洞上抢占了四天先机

Ars Technica

黑客提前四天就开始利用由 OpenAI、Calif 和 Wiz 发现的严重 PHP 漏洞。这些漏洞影响全球多达 70% 的网站,并促使美国国家安全局(NSA)、英国国家网络安全中心(NCSC)和白宫发布紧急警报。

黑客在漏洞修复前数日便已开始利用 PHP 漏洞

Wired

AWS 威胁情报显示,攻击者在关键的 PHP2Shell 漏洞公开披露和补丁发布前四天便已开始利用该漏洞,凸显出 AI 加速漏洞利用开发正在不断缩短从补丁发布到可运行利用程序之间的时间窗口。

有多少“无法利用”的漏洞即将变得可以利用?

Reddit r/artificial

Wiz 披露了 PHP2Shell,其中涉及两个存在了十年之久的 PHP 严重漏洞。研究人员在 Gemini 和 GPT 模型的帮助下,用大约一周的时间将其转化为可用的漏洞利用程序,促使相关方紧急修补漏洞,也引发了人们对利用 AI 攻击遗留代码的担忧。