Newsgroup: it.comp.www.php
Titolo: sito bucato

Ho un problemino abbastanza serio...
stamattina mi sono trovato il sito defaced, sto guardando nei log per
vedere se riesco a saltarci fuori, ma ho il sospetto che sia un
qualche bug mio nella configurazione del php
ho trovato nella document_root questo file che immagino sia stato
usato in qualche modo per scrivere un nuovo index.php
<?php
$bug = $_GET['bug'];
include($bug);
?>
ho un apache 2.0.50 con php 4.3.9 che gira sotto os2, register_globals
e' ON (sto ancora cercando di sistemare tutte le variabili)
ho trovato anche un file manager (cigaretteV.php) che tranquillamente
visualizza il contenuto delle cartelle e mostra il sorgente dei file
.php, si insomma con tutte le password in chiaro, una bellezza...
Sinceramente non saprei da dove cominciare.. probabilmente tutto il
sito è un colabrodo.... ma qualcosa devopur fare... si accettano tutti
i consigli, compreso quello di cambiare mestiere...
daniele
(posto da google perchè qua al lavoro ho un newsserver diverso e sto
usando il portatile configurato per il newsserver di casa)
daniele

 .php, si insomma con tutte le password in chiaro, una bellezza...
:-O
Ciao
Marco

>.php, si insomma con tutte le password in chiaro, una bellezza...
scusa ma a che serve tale codice; cioč chi lo ha usato per cosa?

Gli passi il nome di un file e lui lo include.
vorrei appunto evitare questo :-)

scusa ma a che serve tale codice; cioè chi lo ha usato per cosa?
problema mio..
ho index.php?file=<nome include>
se qualcuno piazza nell'url qualcosa di strano questo viene eseguito..
ci puoi infilare qualsiasi cosa a quanto vedo, anche da siti esterni,
e questo mi hafregato.. e aesso mi piacerebbe avere una soluzione

 e questo mi hafregato.. e aesso mi piacerebbe avere una soluzione
- Prima di tutto evita che possano essere inclusi file esterni. Puoi 
usare una regular expression per escludere tutti i file che iniziano con 
http/https/ftp/...
- Potresti introdurre una white-list dei file a cui è consentito 
l'accesso. Ti basterebbe un array e la funzione in_array() per 
determinare se il file a cui si vuole accedere è consentito. Con questa 
soluzione non hai nemmeno bisogno di implementare il primo punto.
- Se i file che puoi includere sono moltissimi e/o cambiano di frequente 
e la soluzione della white-list diventa poco praticabile, puoi 
implementare una black-list con lo stesso sistema ma indicando solo i 
file a cui vuoi proibire l'accesso. Questa soluzione deve essere 
implementata assolutamente insieme alla prima.
- Per concludere potresti mettere tutti i file che si possono includere 
(e solo quelli) in una cartella specifica e appendere il parametro file 
al percorso della cartella... qualcosa come:
include('/percorso/alla/mia/cartella/'.file.'.php');
In questo modo dovresti evitare un po' di potenziali problemi....

daniele calanca wrote:

azz complimenti ;) comincia allora a fare qualche controllo su questa 
variabile

>>?>
Ma hai fatto tu questa follia?
O l'ha messa il defacciatore?
Con un simile script potresti mostrare a video qualsiasi cosa sul 
server, ad esempio i file con le password.
Lascia perdere o al massimo usa un bello switch oppure ancora fai un 
array di file permessi.
ad esempio
$permessi = array("/home/httpd/docs/uno.php"
		"/home/httpd/docs/due.php"
		"/home/httpd/docs/tre.php"
		);
$file = (in_array($_GET['bug'],$permessi)) ? $_GET['bug'] : die("addio 
mio bel venezuelano");
da testare
Marcello

http/https/ftp/...
mai avuto feeling con le regular expression... come dovrebbe funzionare?
ciao,
daniele

 
Prova a dare un'occhiata a questo documento.
Ho dato solo un'occhiata, ma credo che illustri almeno i principi 
essenziali.
Ciao

essenziali.
EHm..quale documento?
ciao,
daniele


Ops ! Mi è scappato il link
http://www.webb.it/filemanager/download/1787/
Ciao.