CVE-2026-109618影响PHP 5.x至8.5.12以下所有版本,包括8.1.26;安全版本为8.2.35、8.3.36、8.4.27、8.5.12及以上,PHP 8.1及更早分支已停止官方维护。

PHP 8.1.26 本身不是受 php2shell(CVE-2026-109618/109619)影响的版本,但需注意:该漏洞影响 PHP 8.1 以前的所有版本(含 8.1.x 全系列),而 8.1.26 属于 8.1.x 分支,未在官方修复列表中(修复版仅从 8.2.35 起),因此 8.1.26 实际处于受影响范围。
不过,关键点在于:php2shell 并非传统意义上的“反序列化漏洞”,它不依赖 unserialize()、__wakeup() 或 phar:// 等反序列化入口。它的核心触发机制是 session.upload_progress 功能引发的 use-after-free 内存破坏,攻击流量特征与反序列化无直接关联。
所以,若你在实际流量中观察到疑似“PHP 8.1.26 反序列化利用”,大概率存在以下两种情况之一:
- 误判:把其他组件(如 Laravel、Symfony、ThinkPHP 的反序列化链)或第三方扩展(如某些自定义 session handler、缓存驱动)的利用行为,错误归因于 PHP 8.1.26 自身;
- 混合利用:攻击者在利用 php2shell 获取初始执行权限后,再通过
eval()、system()等函数加载并执行一段反序列化载荷(此时反序列化发生在应用层,非 PHP 解释器内核行为)。
如何识别真实 php2shell 利用流量(而非反序列化)
HTTP 请求中高频出现的标志性字段:
立即学习“PHP免费学习笔记(深入)”;
-
Content-Type: multipart/form-data; boundary=...(必须,因涉及文件上传进度) - URL 路径中含
?PHPSESSID=或 Cookie 中含PHPSESSID=(会话依赖) - POST Body 中包含
upload_progress_前缀的字段名,例如:upload_progress_12345UPLOAD_PROGRESS_abc
- 同时携带
X-Progress-ID或X-Progress-Id请求头(部分框架或中间件添加,非必需但常见) -
session.upload_progress.name参数被显式设置(如name=upload_progress_foo),且值被用于构造恶意键名
⚠️ 注意:合法文件上传也可能含上述字段。真正可疑的是——
- 多次快速发送结构畸形的 multipart 请求(boundary 错乱、字段名超长、嵌套空字节或
\x00);upload_progress_*键名中混入 PHP 特殊符号(如;,{,$,->)或内存地址特征(如0x7fff...);- 请求体大小极小(Content-Length(用于触发内存分配异常)。
如果你确实想监控反序列化相关行为(应用层)
尽管 php2shell 不靠反序列化,但很多基于 PHP 的 CMS/框架(WordPress 插件、Laravel Session、ThinkPHP 缓存)仍存在独立的反序列化风险。可关注以下通用流量特征:
- 请求中出现
O:开头的字符串(如O:8:"stdClass":1:{s:3:"foo";s:3:"bar";}),尤其是出现在 Cookie、POST body、GET 参数中; -
phar://、compress.zlib://、data://等伪协议出现在参数中(如?file=phar://xxx.phar/test.txt); - Cookie 中
remember_web_...(Laravel)、PHPSESSID对应的 session 数据经 base64_decode 后含O:或a:字符串; - 请求头
User-Agent、Referer中嵌入序列化字符串(常见于日志写入+反序列化 RCE 链); - 出现典型 gadget 链关键词:
__destruct、__wakeup、__toString、call_user_func、system(、exec(等函数名出现在响应或日志中。
实操建议:WAF/IDS 规则可参考方向
# 检测 php2shell 关键模式(推荐启用) alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"PHP php2shell upload_progress abuse"; content:"upload_progress_"; pcre:"/Content-Type\s*:\s*multipart\/form-data/i"; content:"PHPSESSID"; distance:0; within:200; classtype:web-application-attack; sid:1000001; rev:1;) # 检测常见反序列化载荷(补充防护) alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"PHP serialized object detected in URI"; content:"O:"; depth:100; within:200; content:"s:"; distance:-10; within:50; classtype:web-application-attack; sid:1000002; rev:1;)
PHP 8.1.26 的风险本质是 内核级内存破坏漏洞,不是反序列化漏洞。盯准 upload_progress 行为比搜 O: 更有效。真正需要防反序列化的,是上层框架和业务代码,而不是 PHP 版本本身。



















