|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2005
Città: Roseto Degli Abruzzi
Messaggi: 11727
|
[PHP] Problema Sicurezza (Bypass Upload Form)
Ciao a tutti, ho un piccolo problemino.
Con il seguente codice filtro i file accettati : Codice PHP:
Ora viene il ma, Facendo un paio di prove, il sistema risulta vulnerabile se ad esempio uplodo nel form un file con estensione .php con codice maligno(c99 e simili) inserendo sulla prima riga la dicitura GIF89aP Il filtro crede sia un file GIF e quindi il codice maligno bypassa il filtro. Ovviamente uplodando il solo codice maligno senza GIF89aP il filtro blocca il file.. E' possibile risolvere la cosa senza ricorrere ad un filtro estensioni? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non credo sia possibile fare qualcosa di diverso dal ricorrere ad un filtro sulle estensioni. Magari ragiona in maniera diversa: non permettere l'upload se il file ha estensione .php o comunque una delle estensioni supportate dall'interprete php.
Ultima modifica di cionci : 05-01-2009 alle 13:40. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2005
Città: Roseto Degli Abruzzi
Messaggi: 11727
|
Ciao cionci, come va?
![]() Purtroppo immaginavo che l'unico metodo fosse questo. Proverò con una soluzione del genere : Quote:
![]() Ultima modifica di Alessio.16390 : 28-01-2009 alle 00:57. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Tutto bene
![]() Credo che sia l'unica strada percorribile. |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Jan 2009
Messaggi: 2
|
capisco il problema ma a livello funzionale non basta settare un .htaccess che blocca l'accesso alla directory a tutti e non far eseguire il codice php se non alla directory dove sta l'index
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Non dovresti mai usare il mimetype che trovi nell'array $_FILES, perchè viene fornito dal browser (e quindi è falsificabile). Prova ad usare mime_content_type($path) oppure exec("file -bi $path", $output), probabilmente è più accurato.
L'altra soluzione è usare getimagesize(), se ritorna false il file non è un'immagine (ma questa soluzione funziona solo se vuoi uploadare immagini). |
![]() |
![]() |
![]() |
#7 | |
Junior Member
Iscritto dal: Jan 2009
Messaggi: 2
|
Quote:
cmq ci sono gli scanner per le shell....te ne passo qualcuno appena posso |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Il primo se non sbaglio necessita dell'estensione mime_magic e guardate cosa ho trovato sulla documentazione php: This function has been deprecated as the PECL extension Fileinfo provides the same functionality (and more) in a much cleaner way. http://it2.php.net/manual/en/ref.fileinfo.php Da PHP 5.3 è incluso ed abilitato di default. |
|
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Puoi leggere l'header del file e verificare se si tratta di un "gif", "jpg", "jpeg", "bmp" o "png".
In PHP non so come si fa. Posso mostrarti un esempio in C. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' già tutto implementato...perché mettersi a leggere l'header ? FileInfo e mime_content_type vanno a leggersi l'header
|
![]() |
![]() |
![]() |
#11 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Oct 2005
Città: Roseto Degli Abruzzi
Messaggi: 11727
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:03.