Back Sploitus Exploit for Improperly Controlled Sequential Memory Allocation in Php
Projeto educativo e defensivo de portfólio, por **João Vitor Sampaio**. Reúne um relatório de hardening, um laboratório Docker local (antes e depois do patch) e uma ferramenta de leitura passiva de cabeçalhos sobre a PHP2Shell, divulgada e corrigida em 21/10/2026.
> **Este repositório NÃO contém prova de conceito (PoC) ofensiva, exploit, payload nem passos de exploração.**
> O laboratório só verifica versão e configuração do PHP, roda apenas em `127.0.0.1` e não deve ser usado contra sistemas de terceiros.
São duas vulnerabilidades críticas no runtime do PHP que permitem **execução remota de código (RCE) sem autenticação** em instalações que atendem requisições web:
| [CVE-2026-109618]( | Corrupção de memória por out-of-memory (OOM) / `longjmp` | 9.2 |
| [CVE-2026-109619]( | Estado obsoleto entre requisições (use-after-free / stale global state) | 9.2 |
- **Quem é afetado:** qualquer PHP que atenda HTTP, como Apache `mod_php`, PHP-FPM, php-cgi, FrankenPHP e LiteSpeed. O risco está no runtime, então atinge WordPress, Drupal, Joomla e aplicações customizadas.
- **Versões corrigidas:** **8.5.12**, **8.4.27**, **8.3.36** e **8.2.35**.
- **PHP 8.1 e anteriores:** afetados e fora de suporte. A CISA recomenda isolar da internet até atualizar.
- **Situação em 21/10/2026:** houve **tentativas** de exploração em sensores e honeypots, e há PoC público circulando. A CISA **não havia observado exploração bem-sucedida** na publicação do alerta.
| [`RELATORIO-HARDENING-PHP2SHELL.md`](./RELATORIO-HARDENING-PHP2SHELL.md) | Relatório técnico de hardening (peça central) |
| [`lab/`](./lab/) | Laboratório Docker defensivo: PHP 8.3.35 → 8.3.36, só em localhost |
- **Ameaça e evidência:** as duas CVEs, IDs GHSA e o que cada fonte oficial confirma, separando *tentativa* de *exploração bem-sucedida*.
- **Sistemas afetados** e a armadilha de inventário baseada em cabeçalho.
- **Mecanismo técnico em alto nível** (sem detalhe explorável), incluindo o papel de `session.upload_progress`.
- **Correção em ordem de prioridade:** patch (a única correção completa), validação da versão no worker HTTP e mitigações parciais para `php.ini`, PHP-FPM, WAF e sistemas fora de suporte.
- **Detecção e monitoramento:** sinais a observar nos logs e nos processos.
- **Resposta pós-incidente:** isolar, preservar evidências, rotacionar segredos, restaurar ou reconstruir.
- **Checklist operacional** e priorização (P0).
subgraph HOST["Sua máquina (somente 127.0.0.1:8080)"]
subgraph BEFORE["A) Antes: docker-compose.vulnerable.yml"]
V["php:8.3.35-apachemod_php (pré-patch)"]
subgraph HARD["B) Hardening parcial: php.ini"]
H["session.upload_progress.enabled = 0(mitigação parcial, não substitui patch)"]
subgraph AFTER["C) Depois: docker-compose.patched.yml"]
P["php:8.3.36-apachemod_php (corrigido)"]
H -. "montado como zz-hardening.ini" .-> V
H -. "montado como zz-hardening.ini" .-> P
V --> E1[("evidence-before.txtPHP_VERSION 8.3.35")]
P --> E2[("evidence-after.txtPHP_VERSION 8.3.36")]
Pré-requisitos: Docker, Docker Compose e a porta `8080` livre. **Não** exponha o lab a um IP público, túnel (ngrok etc.) ou à LAN.
docker compose -f docker-compose.vulnerable.yml up -d --build
curl -sS | tee evidence-before.txt
curl -sS | tee evidence-config-before.txt
docker compose -f docker-compose.vulnerable.yml down
docker compose -f docker-compose.patched.yml up -d --build
curl -sS | tee evidence-after.txt
docker compose -f docker-compose.patched.yml down
O passo B (comparar a configuração com e sem o `php.ini` de hardening) e os detalhes estão em [`lab/README.md`](./lab/README.md).
## ⚠️ `X-Powered-By` não é prova de vulnerabilidade
O cabeçalho `X-Powered-By: PHP/x.y.z` (ou `Server`) **não prova** que um site está vulnerável, nem que está seguro:
- Debian, RHEL e outras distribuições aplicam o patch por **backport** sem mudar o número exibido.
- Muitos sites **ocultam** ou **falseiam** a versão, ou ficam atrás de CDN/proxy.
Use o cabeçalho só para priorizar uma revisão. O diagnóstico real exige verificar a versão no worker que atende HTTP, com acesso autorizado.
- Este material é **educativo e defensivo**. Não autoriza varredura, teste ou exploração de sistemas de terceiros.
- No Brasil, acesso não autorizado a dispositivo informático pode configurar o **art. 154-A do Código Penal** (Lei 12.737/2012).
- Avaliar a exposição real de um cliente exige **contrato e autorização por escrito** do responsável pelo sistema, com escopo definido (domínios, IPs e janela de tempo).
1. **PHP Foundation**: [Today's PHP Security Release and How We're Strengthening PHP Security]( (21/10/2026)
2. **CISA**: [Critical Vulnerabilities in PHP Require Immediate Patching]( (21/10/2026)
3. **JFrog Security Research**: [PHP2Shell: All You Need to Know CVE-2026-109618 and CVE-2026-109619](
4. **Sansec**: [PHP2Shell: Critical PHP RCE](
5. **NVD**: [CVE-2026-109618]( · [CVE-2026-109619](
O crédito pela descoberta, análise e correção é dos pesquisadores e mantenedores citados. Este repositório organiza o material para fins de hardening e aprendizado.
**PHP2Shell** (CVE-2026-109618 and CVE-2026-109619, CVSS 9.2) is a pair of critical flaws in the PHP runtime. They allow **unauthenticated remote code execution** on PHP installations that serve web requests (Apache `mod_php`, PHP-FPM, php-cgi, FrankenPHP, LiteSpeed). Fixed versions: **8.5.12, 8.4.27, 8.3.36, 8.2.35**. PHP 8.1 and older are affected and end-of-life. As of 21 Oct 2026, exploitation **attempts** and a public PoC were reported, but CISA had not observed successful exploitation when it published its alert.
This is an **educational, defensive portfolio project** by João Vitor Sampaio. It contains a hardening report (in Portuguese), a localhost-only Docker lab that shows PHP 8.3.35 before and 8.3.36 after the patch. **It contains no offensive PoC or exploit.** The `X-Powered-By` header does not prove a site is vulnerable, because distros backport fixes and sites hide their versions. Any assessment of third-party systems requires a written contract and authorization.
[MIT](./LICENSE)
The full story
This article is one source in a clustered incident — the cluster page carries the summary, timeline and every other outlet covering it.
