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
php-cve-2026-10961x-lab-poc — PHP CVE-2026-109618/109619 — RCE non autenticato self-contained su PHP 8.5.11 stock (divulgazione in memoria in-band PS(id)→cookie + catena UAF), scale di controllo complete, controllo negativo su versione corretta in 8.5.12 | Kitploit
Strumenti/GitHubGitHub/dinosn/php-cve-2026-10961x-lab-poc
Memory ForensicsAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebBypass WAFSicurezza WebFuzzingPaper e RicercaBinary Exploitation

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
Lab e Pratica
GitHubdinosn/php-cve-2026-10961x-lab-poc

php-cve-2026-10961x-lab-poc

PHP CVE-2026-109618/109619 — RCE non autenticato self-contained su PHP 8.5.11 stock (divulgazione in memoria in-band PS(id)→cookie + catena UAF), scale di controllo complete, controllo negativo su versione corretta in 8.5.12

Vedi RepositorySito web
6616259h 36m faNon ancora revisionato

php2shell lab — PHP CVE-2026-109618 / CVE-2026-109619

Pacchetto di riproduzione in laboratorio e di ricerca sulle vulnerabilità per la classe php2shell di PHP 8.5.11 (CVE-2026-109618, CVE-2026-109619), ottobre 2026. Stato: Dimostrato — RCE self-contained (quattro richieste HTTP in chiaro, nessun debugger, nessun accesso locale), più i risultati su amplificazione, lacune nelle patch e stato obsoleto di FPM riportati di seguito.

Contenuti: Risultati · Catene · Amplificazione · Lacune nelle patch · Stato obsoleto di FPM · Bypass WAF · Ambiente · Avvio rapido · Disciplina della dimostrazione · Struttura · Contesto pubblico · Dichiarazione


Risultati in sintesi

#RisultatoClassificazione
1RCE self-contained end-to-end su PHP 8.5.11 — quattro richieste HTTP in chiaro, reperimento degli indirizzi in-band tramite divulgazione PS(id)→cookie, entrambe le basi da un'unica fuga di 512 byte di PHPSESSID; 12/12 esecuzioni riuscite, uid=33, 8 generazioni ASLRDimostrato — RCE self-contained
2Amplificazione di memoria 52x tramite header multipart duplicati da 6 byte — aggira post_max_size (un corpo da 2,57 MB causa OOM su un limite di 128M) su PHP 7.4–8.5.11Dimostrato — laboratorio, tutte e quattro le versioni
3Tre percorsi di exploit sopravvivono alla patch di sicurezza 8.5.12 (UAF da rientro in var_destroy a n=1015, mancata corrispondenza del gestore di serializzazione, iniezione dell'avanzamento di upload)Dimostrato — ASAN su 8.5.12 verificato con GPG
4Stato obsoleto BG(unserialize) in FPM: il worker sopravvive a un OOM di decodifica della sessione, lo stato obsoleto viene consumato dalla finestra rfc1867 della richiesta successiva, un consumo modellato sull'heap causa SIGSEGV del workerDimostrato — meccanismo + DoS; RCE non dimostrata
5Bypass del separatore Content-Type (multipart/form-data, boundary=X) — ogni firma WAF pubblicata basata su Content-Type è aggirabileDimostrato — comportamento del parser SAPI.c
6Entrambe le catene CVE sono inefficaci sulla 8.5.12 corretta (configure identico a livello di token, sorgente verificato con GPG)Dimostrato — controllo negativo
7La teoria pubblica della "zval in cache per session.upload_progress" — confutata su 4 versioni stock di PHP + 3 build del fornitore LiteSpeed, in tutti gli angoli di pulizia/concorrenzaConfutata — esaustivamente

Catene

Due catene indipendenti di corruzione della memoria raggiungono chiamate indirette controllate dall'attaccante sull'immagine stock php:8.5.11-apache; il wrapper end-to-end combina il meccanismo della Catena B con una nuova divulgazione in-band per un'esecuzione completamente remota.

Catena A — bucket obsoletoCatena B — riferimento pendente
MeccanismoIl bailout per OOM lascia un bucket di HashTable pubblicato ma non inizializzato; lo shutdown lo consuma come zval fittizia → array fittizio → pDestructorUn OOM pre-RINIT lascia PS(http_session_vars) con un zend_reference pendente; una stringa viva di 31 byte lo recupera; riferimento contraffatto → pDestructor di zend_hash_destroy
Allocatoretracked/system (USE_ZEND_ALLOC=0)Zend MM predefinito stock
Terminalesystem() di libc (indirizzi calibrati con gdb)zif_system @ libphp+0x5996e0 (senza libc)
Debugger al momento dell'esecuzionesolo calibrazionenessuno — FIRE_GDB=0
Riproducibilità2 generazioni parent randomizzateripetuta, anche tra esecuzioni diverse

Ricevuta end-to-end (12/12 esecuzioni riuscite, 8 generazioni ASLR, nessun debugger, nessun accesso locale)

Leak-A arma un PS(id) pendente (la 1001ª variabile fa scattare max_input_vars → headers_sent=1; il fallimento di reset_id con cookie vuoto mantiene send_cookie=1; un campo da 24 MiB causa OOM prima del RINIT). Leak-B piazza un array di 257 elementi il cui zend_array si sovrappone a PS(id)−0x10: ZSTR_LEN legge nTableSize=512 e il cookie codificato in URL trasporta pDestructor (→ base libphp) più nove puntatori heap arData (voto di maggioranza → base del chunk). Il delta misurato chunk−libphp non è costante tra le generazioni (−0x1a00000 / +0x3600000 / −0x1c00000), quindi la divulgazione è genuinamente portante. Il fire viene quindi eseguito con gli indirizzi divulgati. Prerequisiti: display_errors=On, post_max_size superiore al campo OOM, memory_limit inferiore ad esso, prefork a worker singolo.

A status='HTTP/1.1 200 OK'   → OOM fatal, worker survives, PS(id) armed
B Set-Cookie: PHPSESSID=<512-byte encoded disclosure>
FIRE → MARKER=uid=33(www-data) gid=33(www-data) groups=33(www-data)
FIRE_OK   (×12 across 8 distinct ASLR layouts)

Ricevuta completa e scala di controllo: docs/END-TO-END.md.

Amplificazione di memoria 52x

Amplificazione ottimizzata tramite header duplicati: header corti X: a (6 byte sulla rete) sfruttano la dimensione fissa di 256 byte di SMART_STR_START_SIZE di PHP per ogni header salvato (~314 B di memoria per 6 B sulla rete). Misurato tramite bisezione esatta della soglia OOM su 8.5.11; identico su 7.4.33 / 8.1.34 / 8.4.26 (51–52x):

memory_limitcorpo minimo per OOMamplificazione
8M153 KB54.8x
32M636 KB52.8x
128M2.57 MB52.3x
256M5.14 MB52.2x

Tutti i corpi rientrano in un post_max_size=8M predefinito — la barriera pratica all'upload viene aggirata su ogni versione non corretta. Il framing chunked aggira inoltre il pre-controllo su Content-Length (8.85 MB in chunked analizzati e mandati in OOM dove lo stesso corpo con Content-Length veniva rifiutato). La patch 8.5.12 chiude entrambi i vettori (filtro degli header sconosciuti + applicazione di post_max_size in streaming). La forma "bomba" ad array annidati non si riproduce come esponenziale (max 9.6x, 1.16 MiB — non può mandare in OOM nemmeno 8M). Dettagli: docs/RELEASE-RECONCILIATION-2026-10-21.md.

Lacune nella patch su 8.5.12

Verificato su una build ASAN 8.5.12 verificata con GPG e identica per token — le due CVE sono corrette, ma tre percorsi distinti verso l'impatto sopravvivono alla patch:

  1. UAF da rientro in var_destroy (CWE-416) — confine invariato a n=1015, identico a 8.5.11 (fault a var_unserializer.c:906:67); le guardie ZEND_HAS_OOM della patch sono inerti su questo percorso; BG(serialize_lock) non viene ancora acquisito attorno al dispatch di __destruct.
  2. Mismatch tra handler di serializzazione — una sessione con chiave | scritta da php_serialize e decodificata dall'handler php dopo una session_start() in fase applicativa istanzia il gadget sia su mod_php php_value sia su FPM .user.ini; la guardia incomplete_classes_only della patch è limitata alla sola finestra di upload pre-RINIT.
  3. Iniezione del progresso di upload — chiave controllata dall'attaccante memorizzata verbatim nel file di sessione.

Stato obsoleto di BG(unserialize) in FPM

Scarica lo strumento