Accesso non autorizzato al database ed esfiltrazione di dati.
🧾 Descrizione dettagliata
CVE-2025-10175 — Accesso non autorizzato al database ed esfiltrazione di dati
Componente interessato: wplf_update_from_previous() ($wpdb->get_results("SELECT * FROM $table WHERE id = $id ..."))
Vettore di attacco: Blind SQL Injection basata su AJAX, autenticata (richiede nonce) (parametro id)
Attivazione: Inviando una richiesta appositamente costruita con un nonce valido a /wp-admin/admin-ajax.php, è possibile osservare un ritardo temporale:
root@kitploit:~
POST /wp-admin/admin-ajax.php
Content-Type: application/x-www-form-urlencoded
action=wplf_update_from_previous&nonce=<valid_nonce>&id=1 AND SLEEP(5)
Impatto: Gli attaccanti possono estrarre gradualmente i contenuti del database (account utente, email, valori di configurazione) e ottenere gli hash delle password degli amministratori, portando a un'escalation dei privilegi. La divulgazione delle informazioni sullo schema e del numero di record indebolisce la riservatezza e facilita successivi attacchi mirati contro l'intera installazione WordPress.
PoC:
Un utente autenticato invia una richiesta POST a /wp-admin/admin-ajax.php con un nonce valido.
Il parametro id viene iniettato con un payload basato sul tempo come 1 AND SLEEP(5).
La risposta del server viene ritardata, confermando la presenza di Blind SQL Injection.
❓Motivo della vulnerabilità
Il parametro id viene prelevato direttamente da $_REQUEST e passato solo attraverso sanitize_text_field(), che non impedisce l'iniezione SQL. Il valore viene poi concatenato direttamente nella query SQL senza prepared statements né un corretto binding dei parametri.
Correzione proposta:
Utilizzare $wpdb->prepare()
Nota
Anche se il plugin stesso presenta una vulnerabilità di SQL injection, ci sono parecchi casi in cui il core di WordPress esegue l'escaping. Tuttavia, in questo caso non sono stati usati né Prepare né Bind, e non è stata usata nemmeno la serie esc, quindi la Blind SQL è stata possibile.
Ne ho approfittato per studiare la sintassi della Blind SQL, ma non la condividerò per paura di incorrere in problemi legali.
🔍 Scopritore
Nome: MooseLove Ruolo: Ricercatore di sicurezza indipendente / bug hunter Contatto: Disponibile su richiesta