跳到主内容
@wquguru
精选65GitHub 新爆发仓库(GitHub)行业动态多源精选 ×8

PHP曝CVE-2026-109618/109619高危漏洞含利用链

ikow/php2shell-poc: CVE-2026-109618/109619 — 5 RCE chains + detection rules (Suricata, Sigma, ModSecurity). PHP session.upload_progress pre…

原文
发到 X

CVE-2026-109618/109619 — 5 RCE chains + detection rules (Suricata, Sigma, ModSecurity). PHP session.upload_progress pre-auth exploit research.

GitHub repository created 2026-10-21 · 1086 stars in 0.8 days (about 1086 a day) · Python

php2shell

CVE-2026-109618 & CVE-2026-109619 — PHP Pre-Auth RCE Exploit & Detection Toolkit

Exploits · Detection · Lab · Writeup

Five independent RCE chains exploiting PHP's `session.upload_progress` and the Zend engine's OOM bailout. 14 years of vulnerable code — PHP 5.4.0 (2012) through 8.5.11. Pre-auth. No application vulnerability required for some chains.

Impacts 78% of all websites — including WordPress (43%), Joomla, Drupal, Laravel, Magento, and every default PHP installation.

Author: Qi Deng | Writeup: Substack | Date: 2026-10-21

CVE Details

CVEGHSACVSSDescription
CVE-2026-109618GHSA-w8hw-w9fx-j79w9.2OOM → `longjmp()` leaves Zend engine state invalid → RCE
CVE-2026-109619GHSA-6wmf-4rv5-p3rp9.2Stale global state across FPM worker requests → UAF → RCE

Patch: Commit 3584a98 — 300 files changed across the Zend engine.

Attack Chains

ChainVectorPre-authConditionsSAPI
ASession injection + LFIYesApp has any LFI sinkAll
Bvar_destroy UAF → handler overwriteNoApp calls `unserialize()`All
CHandler mismatch → `__destruct`YesTwo dirs with different serialize_handlerFPM
DOOM corruption → stale `EG()`YesNone — any endpointmod_php
EFPM session OOM → stale `BG()`YesProducer: any `session_start()` endpoint; Consumer: any endpointFPM

Chain D is the most critical: zero-dependency pre-auth RCE against any Apache mod_php installation.

Chain E is nearly as broad on FPM: the producer needs any endpoint that calls `session_start()` (near-universal — WordPress, Laravel, Joomla, Drupal all do), and the consumer can be any PHP endpoint — the `rfc1867` upload_progress handler runs during SAPI startup before application code. Verified: `nosession.php` (no `session_start()` in code) triggers 502 crash when consuming stale `BG(unserialize)` state.

Exploits

Three RCE exploits (Chains A, B, C) are included in `exploit/`:

FileChainWhat It Does
`chain_a_session_lfi.py`AInjects PHP code via upload filename → LFI includes session file → RCE
`chain_b_uaf_rce.php`Bvar_destroy UAF → discovers `zif_system` via EG() → overwrites `var_dump` handler via `/proc/self/mem` → RCE
`chain_c_mismatch_rce.py`CPollutes FPM worker `PS(serializer)` → injects serialized object via filename → `__destruct` fires on decode failure → RCE

Chains D and E exploits are available to paid subscribers.

Detection Rules

Pre-built IDS / WAF / SIEM rules in `detection/`:

FileFormatSignatures
`php2shell.rules`Suricata / Snort13 rules — request, response, and recon
`php2shell.yaml`Sigma5 rules — web logs, process creation, file events
`modsecurity.conf`ModSecurity v2/v37 rules — drop-in for Apache/Nginx
`php2shell.lua`OpenResty LuaLightweight reverse proxy module

Fastest mitigation: block `PHP_SESSION_UPLOAD_PROGRESS` in multipart POST bodies. Near-zero legitimate use, covers the primary attack vector for both CVEs.

Quick Start

Repository Structure

Mitigation

> The only complete fix is patching PHP to 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12+. The OOM corruption (Chain D) is in the Zend engine core — no INI setting fixes it.

Downstream Impact

Wiz has demonstrated pre-auth RCE on stock container images:

PlatformVulnerableNotes
WordPressYesCore doesn't use PHP sessions, but WooCommerce and many plugins do
JoomlaYesUses native PHP sessions by default
DrupalYesUses native PHP sessions by default
MagentoYesVulnerable even in maintenance mode
LaravelYes`PendingBroadcast` is a known `__destruct` gadget

References

  • PHP Security Advisory - GHSA-w8hw-w9fx-j79w — CVE-2026-109618 - GHSA-6wmf-4rv5-p3rp — CVE-2026-109619 - Patch commit 3584a98 — 300 files, Zend engine + extensions - Cloudflare WAF coverage - Sansec analysis — PHPSESSID heap leak discovery - Wiz downstream impact - Corelight detection — Zeek + Suricata community rules

Disclaimer

This repository is for authorized security testing and educational purposes only. Exploit code for Chains D and E (zero-dependency RCE) is available to paid subscribers of the writeup.

License

MIT

Keywords: php2shell, CVE-2026-109618, CVE-2026-109619, PHP RCE, PHP exploit, session.upload_progress, pre-auth RCE, PHP vulnerability, PHP session injection, PHP deserialization, PHP OOM, PHP memory corruption, use-after-free, GHSA-w8hw-w9fx-j79w, GHSA-6wmf-4rv5-p3rp, WordPress RCE, Joomla RCE, Drupal RCE, PHP security, WAF rules, Suricata rules, ModSecurity rules, IDS signatures, PHP 8.2.35, PHP 8.4.27, session upload progress, PHP session fixation, rfc1867, longjmp, zend_bailout, Snort rules, Sigma rules, detection rules, PHP patch, PHP critical vulnerability

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →