对比
PHP2Shell 与 Log4Shell 对比
两者都是存在于互联网大量基础软件中的无需认证远程代码执行。最大的区别是:Log4Shell 极易利用但很难排查;PHP2Shell 更难利用但更容易排查。
最后核实 2026-10-22
| PHP2Shell | Log4Shell | |
|---|---|---|
| 是什么 | PHP 解释器中的两个内存安全漏洞 | Java 日志库 Log4j 2 中的 JNDI 查找注入 |
| CVE | CVE-2026-109618、CVE-2026-109619 | CVE-2021-44228(及后续 CVE) |
| 披露时间 | 2026 年 10 月 21 日(10 月 20 日泄露) | 2021 年 12 月 9 日(当天即有公开利用) |
| 评分 | CVSS 4.0 9.2 | CVSS 3.1 10.0 |
| 是否需要认证 | 不需要 | 不需要 |
| 利用难度 | 较难:构造 multipart 请求,需多次尝试以适配每个目标的内存布局 | 极易:只要一个 ${jndi:ldap://…} 字符串出现在任何会被记录日志的地方 |
| 影响面 | 运行有漏洞 PHP 的所有网站——互联网的很大一部分 | 使用 Log4j 2.0–2.14.1 记录攻击者输入的所有 Java 应用——服务器、设备、游戏 |
| 排查受影响系统 | 相对容易:它就是 PHP 运行环境,逐台服务器或容器检查版本即可 | 很难:Log4j 作为传递依赖藏在各种 JAR 包和厂商产品里 |
| 修复方式 | 升级 PHP 并重启 worker | 升级 Log4j(经历多轮:2.15 → 2.16 → 2.17)并重新构建每个受影响的应用 |
| 由谁修复 | 管理服务器的人:你、你的主机商或云服务商 | 每个打包了 Log4j 的厂商,以及所有运行这些应用的人 |
| 攻击态势 | 发布当天已有早期攻击报告;尚无公开的已证实入侵 | 数小时内即出现大规模利用;被列入 CISA KEV |
| 不执行代码也能窃取数据 | 能——通过内存泄露路径 | 间接可以(通过 DNS 查询外泄环境变量) |
相似之处
- 无需登录、无需用户交互——只需网络请求。
- 都是大多数网站所有者从未关注过的底层软件,所以大量系统会在很长时间内保持未修复。
- 升级应用没有用,有漏洞的是更底层的那一层。
不同之处
- 利用成本。Log4Shell 只需复制粘贴一个字符串;PHP2Shell 是一条需要针对每个目标调整的内存破坏利用链。预计一开始攻击者数量更少但能力更强——一旦可靠的工具扩散开来,滥用就会更广泛。
- 资产盘点。“哪些服务器在跑 PHP、是什么版本?”几小时内就能回答清楚。而找出 Log4j 曾让很多机构花了好几周。
- 长尾。PHP 的长尾是虚拟主机,以及仍在运行 PHP 7.x 和 8.0 / 8.1、无人维护的服务器——这些版本不会再有新版本。
常见问题
PHP2Shell 和 Log4Shell 一样严重吗?+
影响面相近,最坏后果也相同(无需认证的远程代码执行),但更难利用:Log4Shell 只要在任何被记录的字段里放一个字符串就能生效,而 PHP2Shell 的利用必须针对每个目标调整。PHP2Shell 也更容易盘点和修复,因为它位于 PHP 运行环境中,而不是藏在应用依赖里。
针对 Log4j 的修复或扫描工具对 PHP2Shell 有用吗?+
没用。两者毫无关系:Log4Shell 在 Java 日志库里,PHP2Shell 在 PHP 解释器里。扫描工具不同,修复方式也不同。