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-2023-45878 — Exploit Python automatizzato per CVE-2023-45878, una vulnerabilità di upload file non autenticato in Gibbon CMS, che consente l'esecuzione remota di codice tramite il deployment di webshell PHP con shell interattiva e capacità di trasferimento file. | Kitploit
Strumenti/GitHubGitHub/can0i0ever0enter/cve-2023-45878
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingStrumento di Accesso Remoto
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

Exploit Python automatizzato per CVE-2023-45878, una vulnerabilità di upload file non autenticato in Gibbon CMS, che consente l'esecuzione remota di codice tramite il deployment di webshell PHP con shell interattiva e capacità di trasferimento file.

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
31 anno faNon ancora revisionato

Exploit Gibbon CMS (CVE-2023-45878)

Questo script Python sfrutta CVE-2023-45878, una vulnerabilità di caricamento arbitrario di file non autenticato in Gibbon CMS versioni 25.0.1 e precedenti, che porta all'esecuzione remota di codice (RCE).

Descrizione della vulnerabilità

CVE-2023-45878 esiste nell'endpoint rubrics_visualise_saveAjax.php di Gibbon CMS. Questo endpoint è vulnerabile perché non richiede autenticazione e permette scritture arbitrarie di file.

La vulnerabilità deriva da quanto segue:

  • Accesso non autenticato: L'endpoint modules/Rubrics/rubrics_visualise_saveAjax.php è accessibile senza alcuna autenticazione.
  • Scrittura arbitraria di file: L'endpoint accetta i parametri POST img, path e gibbonPersonID.
    • Il parametro img dovrebbe contenere dati formattati in modo speciale, dove la parte dopo la virgola è una stringa codificata in base64.
    • Il parametro path, se fornito, viene utilizzato come nome del file di destinazione per il file caricato, relativo alla directory di installazione di Gibbon.
    • Lo script decodifica il contenuto codificato in base64 dal parametro img e lo scrive in un file specificato dal parametro path.
  • Esecuzione remota di codice: Creando un parametro img malevolo contenente codice PHP codificato in base64 (ad esempio, <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>) e specificando un path che risulti in un file .php accessibile tramite il server web, un attaccante può caricare una webshell PHP e ottenere l'esecuzione remota di codice sul server vulnerabile.

Funzionalità dello script

Questo script Python automatizza lo sfruttamento di CVE-2023-45878. Esegue le seguenti azioni:

  1. Caricamento webshell PHP: Costruisce una richiesta POST malevola a modules/Rubrics/rubrics_visualise_saveAjax.php per caricare una webshell PHP. Il payload della webshell è <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>, dove {VERIFY_TAG} è un tag personalizzabile. Il payload è codificato in base64 e inviato all'interno del parametro img.
  2. Verifica della shell: Può verificare se la shell caricata è accessibile e funzionale inviando una richiesta GET con un comando semplice (ad esempio, cmd=echo) e controllando la presenza del VERIFY_TAG nella risposta. Esegue anche un controllo preliminare per una shell esistente se vengono utilizzate opzioni come --verify o --interactive.
  3. Modalità shell interattiva: Se la shell viene caricata e verificata (o trovata durante un controllo preliminare), lo script può entrare in una modalità interattiva. Questa modalità presenta:
    • Rilevamento del sistema operativo remoto (Windows/Linux) per adattare i comandi.
    • Un prompt dinamico che mostra l'utente corrente, l'hostname e la directory di lavoro remota (ad esempio user@host:cwd$).

Utilizzo

root@kitploit:~
python3 exploit.py <target_url> [options]

Argomenti:

  • target_url: L'URL di base dell'istanza Gibbon CMS di destinazione. Lo script anteporrà http:// se non viene fornito alcuno schema e garantirà una barra finale (ad esempio http://example.com/gibbon o example.com/gibbon).

Opzioni:

  • -s <shell_path>, --shell-path <shell_path>: Specifica il percorso e il nome file desiderato per la shell caricata (ad esempio shell.php, uploads/shell.php). Se omesso, verrà generato un nome file casuale di 8 caratteri con estensione .php nella directory base di Gibbon. Attenzione: assicurati che il percorso specificato sia scrivibile dal server web e accessibile tramite il web.
  • -v, --verify: Dopo aver tentato di caricare la shell, verifica se funziona. Questa opzione attiva anche un controllo preliminare per vedere se esiste già una shell con il nome e il tag specificati; in tal caso, il caricamento viene saltato.
  • -i, --interactive: Entra nella modalità shell interattiva. Se la shell non è già presente (verificata tramite controllo preliminare), verrà prima caricata e verificata.
  • -t <tag>, --tag <tag>: Specifica un tag statico personalizzato utilizzato nel payload della webshell a scopo di verifica. (Predefinito: ExploitGibbon).

Esempi:

  • Exploit di base con nome shell casuale nella directory principale di Gibbon e tag predefinito:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/
    
  • Exploit, specifica nome file shell my_shell.php nella directory principale di Gibbon e tag predefinito:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s my_shell.php
    
  • Exploit, carica file shell backdoor.php in uploads/, verificalo e usa un tag personalizzato:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MySecretTag123
    
  • Exploit, carica shell ed entra in modalità interattiva con tag predefinito e timeout di 30 secondi:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
    
  • Entra in modalità interattiva con una shell esistente (lo script ne verificherà la presenza):

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
    
  • Verifica solo se una shell chiamata existing_shell.php con il tag predefinito è attiva (tenterà il caricamento se non trovata):

Requisiti

  • Python 3.7+ (a causa di f-string, type hinting, uso di dataclasses, pathlib)
  • Libreria requests: Installare con pip install requests
  • Libreria rich: Installare con pip install rich
  • Libreria prompt_toolkit (opzionale, per modalità interattiva avanzata): Installare con pip install prompt_toolkit

Disconoscimento

Questo script è fornito solo a scopo educativo e di test di sicurezza. Usalo a tuo rischio e solo contro sistemi per cui hai esplicita autorizzazione al test. L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo script. Sfruttare vulnerabilità senza autorizzazione è illegale e non etico.

Riferimenti

  • CVE-2023-45878 su NVD
  • Advisory di sicurezza Herolab USD-2023-0025
  • Codice sorgente GibbonEdu Core (rubrics_visualise_saveAjax.php versione interessata v25.0.01)
Scarica lo strumento
  • Gestione integrata per il comando cd per cambiare la directory di lavoro remota.
  • Comandi speciali lato client:
    • !help: Mostra l'aiuto per i comandi interattivi.
    • !upload <percorso_locale> [percorso_remoto]: Carica un file locale sul server di destinazione tramite la webshell.
    • !download <percorso_remoto> [percorso_locale]: Scarica un file dal server di destinazione.
    • !lcd <percorso>: Cambia la directory di lavoro locale corrente.
    • !ldir [percorso]: Elenca file e directory nella directory di lavoro locale corrente o nel percorso specificato.
  • Utilizza la libreria prompt_toolkit se disponibile per un'esperienza a riga di comando migliorata (cronologia, modifica avanzata), altrimenti ricade sul input() integrato di Python.
  • Operazioni sui file: Il comando interattivo !upload riutilizza l'endpoint vulnerabile per scrivere file arbitrari, mentre !download utilizza comandi di sistema eseguiti tramite la webshell (come base64 o [Convert]::ToBase64String di PowerShell) per recuperare il contenuto del file.
  • --timeout <timeout>: Imposta il timeout delle richieste HTTP in secondi. (Predefinito: 20).
  • root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v