Ho una piccola applicazione web. Poiché è necessario caricare alcuni file, controllo le estensioni di file con una lista bianca (tgz, jpg, png, pdf, zip, rar, txt, gif, py, c, rb). In aggiunta a ciò, ho cancellato i nomi dei file con md5 quindi ad es. quando l'utente carica il file "exploit.php.jpg" viene rinominato in "526a8f9f3497b5a69bc4523ba0c6aacd.jpg".
Non esiste una verifica del tipo MIME né una funzione "getimagesize ()" o ridimensiona, se si tratta di un'immagine. Per questo è possibile caricare un file php che è stato appena rinominato in exploit.jpg
Anche se questo sembra essere molto rischioso e l'utente sa anche, dove questo file esiste sul mio server ( /images/526a8f9f3497b5a69bc4523ba0c6aacd.jpg
), non sono in grado di eseguire questo file come .php.
Quando provo ad aprire /images/526a8f9f3497b5a69bc4523ba0c6aacd.jpg%00
o /images/526a8f9f3497b5a69bc4523ba0c6aacd.php
e così via .. Ottengo solo "file non trovato" (.php) o "immagine non può essere visualizzata" (jpg, gif).
Qualcuno sa se e come è possibile sfruttare quel fileupload?