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-100671-poc — Verificatore proof-of-concept solo locale per CVE-2026-100671, che riproduce la divulgazione e il replay del cookie di sessione della cache delle pagine Twig di Grav su target loopback. | Kitploit
Strumenti/GitHubGitHub/canhieu/cve-2026-100671-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebVirtualizzazione per la SicurezzaSicurezza WebPenetration Testing
GitHubcanhieu/cve-2026-100671-poc

cve-2026-100671-poc

Verificatore proof-of-concept solo locale per CVE-2026-100671, che riproduce la divulgazione e il replay del cookie di sessione della cache delle pagine Twig di Grav su target loopback.

Vedi Repository
62 giorni 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

CVE-2026-100671 — Divulgazione del cookie di sessione tramite Twig in Grav

Verificatore minimale, solo locale, per la compromissione della sessione tramite content-Twig/page-cache di Grav, corretta in Grav 2.0.25.

Avvisi:

  • CVE-2026-100671
  • GHSA-pp89-h475-7gj6
  • Rilascio di Grav 2.0.25

Ambito

exploit.py è deliberatamente limitato a target di loopback:

  • 127.0.0.1
  • ::1
  • localhost

Rifiuta host remoti, segue solo redirect di loopback, utilizza client HTTP della libreria standard di Python, applica timeout alle richieste e non stampa mai bearer token, cookie o corpi delle risposte.

Utilizzare solo contro un'istanza Grav di propria proprietà o per cui si è esplicitamente autorizzati a eseguire test. Lo script crea una pagina di prova pubblica nel laboratorio locale. Rimuovere tale pagina dopo i test se il laboratorio conserva i contenuti tra un'esecuzione e l'altra.

Catena di vulnerabilità

  1. Un autore di pagine con privilegi bassi pubblica contenuto che include Twig in sandbox.
  2. get_cookie() legge lato server il cookie di sessione dell'amministratore in visita.
  3. Grav memorizza l'output della pagina post-Twig in una cache senza identità di sessione.
  4. Una richiesta non autenticata riceve il valore del cookie memorizzato nella cache.
  5. Il replay di tale valore contro l'API locale autentica come amministratore.

L'account di scrittura delle pagine necessita solo del percorso di scrittura documentato a bassi privilegi. Non necessita di api.pages.read, admin.* o accesso super-admin. L'amministratore vittima deve solo visitare la pagina pubblica una volta.

Versioni interessate

  • Grav da 2.0.19 a 2.0.24: vulnerabile con la configurazione predefinita di content-Twig fornita.
  • Grav da 2.0.0 a 2.0.18, e 1.7.x: interessate solo quando il Twig dei contenuti era esplicitamente abilitato.
  • Grav 2.0.25: corretta.

Requisiti del laboratorio

Eseguire un laboratorio Grav locale con:

  • plugin Grav API abilitato;
  • plugin Grav Login abilitato;
  • un account writer a bassi privilegi in grado di ottenere un token API e creare pagine;
  • un account amministratore;
  • la route della pagina di destinazione leggibile pubblicamente.

Questo repository di due file non fornisce Grav, PHP, plugin o account.

Esecuzione

Impostare le credenziali tramite variabili d'ambiente in modo che non entrino mai nel controllo di versione:

export GRAV_BASE_URL=http://127.0.0.1:8080
export GRAV_WRITER_USERNAME=low
export GRAV_WRITER_PASSWORD='local-writer-password'
export GRAV_ADMIN_USERNAME=admin
export GRAV_ADMIN_PASSWORD='local-admin-password'

python3 exploit.py

L'URL di base deve rimanere di loopback. La route predefinita è casuale. È possibile selezionare una route fissa quando si confrontano le esecuzioni:

python3 exploit.py --route /cookie-proof-24

Risultato vulnerabile atteso:

page_create_status=201
admin_login_status=200
victim_page_status=200
attacker_page_status=200
cached_victim_cookie_visible_to_attacker=yes
admin_cookie_value_match=yes
replayed_cookie_api_status=200
result=VULNERABLE

Il comando esce con 0 quando il risultato atteso viene riprodotto, 1 quando non viene riprodotto e 2 per un errore di configurazione o di trasporto.

Verifica della versione corretta

Eseguire lo stesso comando contro Grav 2.0.25:

python3 exploit.py --expect fixed

Comportamento corretto atteso: nessun valore di sessione visibile all'attaccante e nessun replay di sessione riuscito. Un risultato corretto pulito esce con 0 con --expect fixed.

Remediation

Aggiornare a Grav 2.0.25 o successivo. Per distribuzioni più vecchie, l'avviso elenca questi controlli temporanei:

  • disabilitare il Twig dei contenuti con security.twig_content.process_enabled: false; oppure
  • impostare system.pages.never_cache_twig: true;
  • svuotare le cache esistenti di Grav;
  • ruotare le sessioni degli amministratori.

Non considerare HttpOnly, Secure o SameSite come una correzione: la lettura vulnerabile del cookie avviene lato server durante il rendering di Twig.

Divulgazione

Segnalato da canhieu. Questo repository è un supporto alla riproducibilità per l'avviso già pubblico, non uno scanner remoto né uno strumento di raccolta di credenziali.

Scarica lo strumento