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-2025-61505 — Deserializzazione non sicura in e107 CMS install.php | Kitploit
Strumenti/GitHubGitHub/pescada-dev/cve-2025-61505
Analisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza WebPaper e RicercaApprendimento e Formazione
GitHubpescada-dev/cve-2025-61505

CVE-2025-61505

Deserializzazione non sicura in e107 CMS install.php

Vedi Repository
16 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-2025-61505 – Iniezione di oggetti PHP in e107 CMS 2.x

Segnalato: 18 settembre 2025
CVE Assegnato: 9 ottobre 2025
Pubblicato: 2 febbraio 2026
ID CVE: CVE-2025-61505
Scopritore: Anas Abderrahman Benbarek

Riepilogo

Una vulnerabilità di Iniezione di oggetti PHP (CWE-502: Deserializzazione di dati non attendibili) è stata scoperta nello script di installazione (install.php) di e107 CMS versione 2.3.3.

La vulnerabilità consente a un attaccante remoto non autenticato di creare dati serializzati malevoli, potenzialmente portando a esecuzione di codice arbitrario, manipolazione dei dati o altre azioni dannose — a seconda della presenza di classi gadget sfruttabili nel codebase di e107 o nelle sue dipendenze.

Questo problema deriva dall'uso non sicuro della funzione unserialize() di PHP su input controllati dall'utente senza alcuna restrizione (come l'opzione allowed_classes). Sebbene limitato alla fase di installazione, rappresenta un rischio significativo durante la configurazione su server esposti, poiché il programma di installazione gestisce operazioni sensibili come la creazione di database e la scrittura di file.

Software Interessato

  • Prodotto: e107 CMS
  • Versioni: ≤ 2.3.3
  • Componente: Script di installazione (install.php)

Dettagli della Vulnerabilità

Il processo di installazione di e107 CMS è multi-fase. Gli input dell'utente (lingua, credenziali del database, dettagli dell'amministratore, ecc.) vengono persistiti tra i passaggi utilizzando un array serializzato memorizzato nel parametro POST previous_steps. Questi dati sono codificati in base64 per la trasmissione e decodificati/diserializzati sul server.

Il problema principale è il passaggio diretto dell'input utente decodificato a unserialize() senza validazione, sanificazione o whitelist delle classi. Questo avviene in due punti:

1. Ambito Globale (Gestione Iniziale dell'Override)

php if(isset($_POST['previous_steps'])) { $tmp = unserialize(base64_decode($_POST['previous_steps'])); $override = (isset($tmp['paths']) && isset($tmp['paths']['hash'])) ? array('site_path'=>$tmp['paths']['hash']) : array(); unset($tmp); }

Approfondimento:

Lo script presuppone che previous_steps contenga dati serializzati attendibili dai passaggi precedenti del modulo. Ma poiché si tratta di un semplice parametro POST, un attaccante lo controlla completamente. base64_decode() converte l'input in binario e unserialize() lo ricostruisce in oggetti o array PHP. Se l'input contiene una notazione di oggetto (che inizia con O:), PHP istanzia quelle classi se esistono nell'ambito corrente o vengono caricate automaticamente (autoload). Questo può attivare immediatamente __wakeup() o altri metodi magici, causando potenzialmente effetti collaterali come scritture di file o chiamate al database impreviste, se sono presenti catene di gadget (gadget chain).

Nota sulla sfruttabilità: Il successo dipende dalle classi gadget disponibili. Senza queste, l'impatto può essere limitato a crash o corruzione dei dati.

2. Costruttore della classe e_install (Ripristino principale dello stato)

PHPif(isset($_POST['previous_steps'])) { $this->previous_steps = unserialize(base64_decode($_POST['previous_steps'])); // ... (filtering and password restoration logic) unset($_POST['previous_steps']); }

Approfondimento:

Questa istanza è più pericolosa perché i dati deserializzati diventano parte dello stato dell'oggetto ($this->previous_steps) e influenzano le successive azioni del programma di installazione (configurazione di MySQL, creazione dell'amministratore, generazione del file di configurazione). L'iniezione di oggetti qui può persistere per l'intero processo di installazione e compromettere operazioni ad alto privilegio. Inoltre, l'assenza della restrizione allowed_classes significa che qualsiasi classe caricata automaticamente (core, handler, plugin, librerie) può essere istanziata.

Nota sulla sfruttabilità: Lo sfruttamento nel mondo reale richiede tipicamente di concatenare più oggetti (una "gadget chain") per raggiungere comportamenti pericolosi come l'esecuzione di codice. Ad esempio, il __wakeup() di una classe potrebbe chiamare un altro metodo che valuta stringhe controllate dall'utente. Senza tali concatenazioni, l'impatto potrebbe rimanere a livello di denial-of-service (ad es., esaurimento delle risorse nei distruttori). Il contesto ad alto privilegio del programma di installazione (scrittura di e107_config.php, creazione di directory) amplifica i rischi, ma la rimozione dello script dopo l'installazione riduce l'esposizione a lungo termine.

La vulnerabilità è raggiungibile tramite richieste HTTP POST non autenticate a /install.php durante qualsiasi fase di configurazione.

Mitigazione

Rimuovere install.php — Eliminare o rinominare lo script subito dopo l'installazione. Limitare l'accesso — Utilizzare regole .htaccess, nginx o spostare il file al di fuori della web root durante la distribuzione. Raccomandazione di patch — Sostituire unserialize() con json_decode() per la persistenza dello stato, o come minimo utilizzare:

unserialize($data, ['allowed_classes' => false]);

Aggiungere firma/validazione HMAC dei dati per un'integrità aggiuntiva.

Riferimenti

Sito ufficiale e107 CMS: https://e107.org Repository GitHub di e107 CMS: https://github.com/e107inc/e107 Record CVE: CVE-2025-61505 (verrà aggiornato una volta pubblicato) CWE-502: Deserializzazione di dati non attendibili: https://cwe.mitre.org/data/definitions/502.html

Scarica lo strumento