È possibile sfruttare PHP unserialize senza classi? [duplicare]

3

Sto valutando la sicurezza di un portale web per un cliente e ho trovato una vulnerabilità. Il codice in pratica sta facendo questo:

$var = unserialize($_REQUEST['something']);

Ho il controllo completo sulla variabile. Ma non ci sono classi nel codice del server, non ha oggetti __destruct , __wakeup etc. controllabili.

Posso fare ancora qualcosa con questo? Come forse impostare una variabile $_SESSION ? È possibile? Qualsiasi RCE o BoF o qualcosa del genere?

    
posta GMX Rider 15.01.2018 - 21:23
fonte

1 risposta

1

Dipende dalla tua versione di PHP. L'utilizzo di unserialize per trovare punti deboli nell'applicazione dipende dall'applicazione con classi vulnerabili. Se non hanno classi, l'applicazione non è vulnerabile.

Tuttavia, potresti essere fortunato! In realtà non utilizzo la serializzazione PHP perché in passato è stato molto buggato, con gravi vulnerabilità della sicurezza di PHP stesso . Non conosco personalmente i dettagli esatti, e dipende dalla versione di PHP (che ovviamente non si conosce), ma c'è un rischio abbastanza elevato che per qualcuno che esegue il controllo di sicurezza, la risposta è legittima " MAI passa i dati utente in unserialize ". Per le versioni sbagliate di PHP, il risultato può essere un grave disastro.

Devi sapere veramente cosa stai facendo per trarre vantaggio da tali vulnerabilità, ma quello che ti ritrovi è una vulnerabilità legata all'esecuzione di codice in modalità remota nell'interprete PHP stesso, che conferisce all'attaccante un premio molto più grande. Ecco una descrizione dettagliata della vulnerabilità in PHP 7. Questo ovviamente non è direttamente applicabile a te, ma mostra che la vulnerabilità è reale e non dipende dall'avere definito classi:

link

Anche alcune informazioni di base:

link

    
risposta data 15.01.2018 - 22:10
fonte

Leggi altre domande sui tag