Newsgroup: it.comp.www.php
Titolo: Aiuto dai professionisti

Non sono un professionista e chiedo aiuto a voi che lo siete:
Ho creato un sito gratis per un'associazione di volontariato che ultimamente 
mi viene bucato da haker i quali mi inseriscono sul server del codice che 
quando qualcuno tramite motore di ricerca trova il collegamento al sito, 
cliccandoci sopra viene reindirizzato a delle pagine di un blog.
Se ci date un'occhiata e riuscite a capire dove sbaglio mi fate un grosso 
favore. il sito è 
www.museomonfalcone.it
Ciao a tutti 

 grosso favore. il sito è 
www.museomonfalcone.it
quali sono e dove stanno nel sito i posti dove si puo' inserire testo?

 ha scritto nel messaggio 
news:pan.2008.09.02....@inwind.it...


 ha scritto nel messaggio 
news:pan.2008.09.02....@inwind.it...


> Il codice di uno dei file che si chiama  .htaccess è questo:
ok, ti creano un htaccess.
http://server.html.it/articoli/leggi/934/i-file-htaccess-in-apache/
è quello che ti fa un redirect quando arrivi da uno dei motori di ricerca
(grazie alle linee con HTTP_REFERER )
come questo possa accadere dipende da svariati fattori, possono averti
bucato il server in: ftp,ssh,o quant'altro.
oppure possono aver fatto qualche sorta di code injection sfruttando
qualche falla del tuo sito installando uno script che crea quel file.
com'è configurato il server?
che controlli fai sui dati inseriti nei form dai visitatori?
hai modo di cotrollare i processi che girano sul server (accesso ssh)?
ps: quota per bene  
http://wiki.news.nic.it/QuotarBene

 ha scritto nel messaggio 
news:pan.2008.09.02....@inwind.it...


> ps: quota per bene  
http://wiki.news.nic.it/QuotarBene
evito di sprecare ulteriori bytes
ciao

Che succede se uno scrive nel campo mess (che dovrebbe contenere un 
indirizzo email) una cosa del tipo (invento, non se funzionerebbe, 
probabilmente no :-p):
') or (delete * from email)--
La query diventerebbe (se non ci fossero controlli):
"INSERT INTO email (ind) values('') or (delete * from email)--')"
o simili insomma. Non sono un'esperto di sql_injection ma credo che 
questo codice sia abbastanza aperto a tutti coloro che vogliono far 
pratica di cancellazione di Db...
Detto questo, probabilmente allo stesso modo, sarebbe possibile 
recuperare i dati di accesso del db, o peggio ancora, poter scaricare la 
pagina in questione dove c'è la query, e ci sono anche le pw!
Ti consiglio:
1) di non mettere i dati di connessione al db di mysql in quella stessa 
pagina (magari mettila in una cartella dove solo tu hai i permessi di 
scrittura e lettura)
2) di effettuare maggiori controlli su ciò che scrive l'utente. funzioni 
come addslahes(); o html_entities(); o simili sono molto utili in questi 
casi
3) di non usare lo stesso nome per le variabili che catturi dal post.
con register Global On si potrebbe scrivere $mess per riferirsi 
direttamente alla casella di testo "mess" se non ricordo male. Ma questo 
vale per vecchie versioni di php con server configurati male. 
Probabilmente non è il tuo caso con un server come aruba, ma non so, 
forse per eccesso di sicurezza, io metterei una cosa del tipo:
$casella=$_POST[mess];
Considera che di php ne mastico solo quando leggo i manuali, ma nella 
pratica.. beh sono scarsino, quindi prendi quello che ti ho detto con le 
pinze.
Sicuramente gli utenti del forum sapranno consigliarti meglio di me.
Ciao! Spero di esserti stato utile.
Kevin77
Magno ha scritto:


 ha scritto nel messaggio 
news:48bd3316$0$11372$5fc...@news.tiscali.it...


') or (delete * from email)--
Cosi' non funzionerebbe... ma con qualche modifica funzionerebbe, eccome.
E' possibile, con un po' di accorgimenti complicati, scrivere un file e/o
far eseguire codice con i permessi del webserver.
Come minimo, sempre usare mysql_real_escape.
Altrimenti, rallenta un po' ma e' sicurissimo,
	$crypted_value	= md5($_REQUEST['valore']);
	DELETE FROM table WHERE MD5(campo)='$crypted_value';
Leonardo
-- 
IN NO EVENT SHALL MICROSOFT [] BE LIABLE FOR [] FAILURE TO MEET ANY DUTY
INCLUDING OF GOOD FAITH OR OF REASONABLE CARE, FOR NEGLIGENCE [] EVEN IN
THE EVENT OF [] BREACH OF CONTRACT OR BREACH OF WARRANTY OF MICROSOFT...
                              -- EULA di Windows Media VCM 9, articolo 8

 ha scritto nel messaggio 
news:gcmqb4hsgguonrr3s...@4ax.com...


spazio per inserire codice!
Beata ingenuita' :-)
Non ho dubbi che tu abbia un campo SQL di solo, poniamo, sei caratteri. E
che nell'HTML ci sia un campo TEXT con SIZE=6 MAXCHARS=6.
Il fatto e' che il mio browser, essendo mio da' retta a me; e se gli dico
di inviartene sessanta, di caratteri, sta' pur certo che te li invia.
A questo punto, tu POTRESTI avere un filtro in .htaccess, o hardware, che
mi castra gli ultimi 54 caratteri. Ma ce l'hai? Io dico di no.
E quindi al tuo codice PHP arrivano tutti e sessanta i caratteri.
Ora consideriamo il codice PHP (questo e' un exploit cosi' noto che penso
di poterlo descrivere senza che l'appuntato Catarella mi arresti, inoltre
si trova ovunque su Internet, basta cercare la cosa ovvia con Google):
	mysql_query("delete from email where ind='$valore'", ...
Supponiamo che invece di "
ser...@tin.it
", io mandi come indirizzo di mail
 
ser...@tin.it
'or'puppa'='puppa
...il codice SQL diventa l'ordine di cancellare quei record per cui email
vale "
ser...@tin.it
", OPPURE quelli per cui "puppa" vale "puppa". E, dato
che questo e' sempre vero, *BLAM* hai appena perso _tutta_ la tabella.
(Non ci credi? Prova: fai il backup della tabella prima, pero').
E fin qui e' una cosa cosi' risaputa che ci fanno su i fumetti, e tutti i
programmatori capiscono la battuta e ridono: 
http://xkcd.com/327/
 .
Pero', volendo uno puo' essere ANCORA piu' carogna, e fare in modo che il
server MySQL (da solo o a mezzo sendmail, uno prova e guarda) installi un
vero e proprio trojan sul server Web. Ci vogliono altre falle aperte tipo
l'inclusione di un file remoto eccetera, ma... non e' raro che succeda.


>c'č


Hai altri suggerrimenti?
Direi di no; potresti anche validare l'input (verificare che le mail siano
del tipo no...@dominio.tld), ma non so se valga la pena; se escapi tutto, a
quel punto di li' non si passa piu', email valida o meno.
Casomai potresti stare attento nel caso che tu pubblicassi automaticamente
i commenti degli iscritti, oppure inviassi in automatico delle email; dato
che potrebbe esserci modo di usare quelle funzioni per spammare.
(E li' addirittura c'e' gente che ha da fare solo quello tutto il giorno -
lo fanno proprio come lavoro).
In quel caso potresti dare un'occhiata alle funzioni CAPTCHA e simili.


 ha scritto nel messaggio 
news:hoftb4tvu1f1o9b0c...@4ax.com...


 fare tutto il giorno e perdono tempo a rovinare il lavoro di altri.
Un po' come fare porte blindate per hobby, non posso mica
assicurare che siano a prova di ladro :-/
Purtroppo hai scoperto nel modo peggiore che di gente dedita
ad usare il lavoro altrui per i propri scopi ce n'è troppa.
-- 
ValeRyo
CBR600F "Cerbero" - 
http://www.slimmit.com/go.asp?6YT

 ha scritto nel messaggio 
news:g9oa9q$jpf$1...@alix.livenet.it...


 Attaccano i deboli e si sentono intelligentissimi!
Anche fuori da internet i ladri rubano dov'č piů facile.


 
ciò non li autorizza a farlo..
è come se io mi metto in pubblica piazza a parlare e qualcuno mi rubasse 
le parole..
Io faccio un sito, usando un linguaggio che non è mio ne di nessun altro 
(parlando di php, ma non è del tutto vero), ma ciò che dico sono affari 
miei. Chi con l'idea di voler apprendere tutto ruba il codice degli 
altri non fa altro che ascoltare illecitamente le mie parole. Il 
discorso non sta più nei professionisti che lo fanno di mestiere. C'è 
chi crea codice e chi ha il compito di rubarlo per mestiere, perchè 
sotto pagamento gli ordinano di farlo.. Ma chi lo fa per il solo gusto 
di farlo.. per me non dimostra altro di avere poca fantasia.. Scusate lo 
sfogo. Chiudo l'O.T. dicendo che al massimo, una cosa giusta la fanno, 
essendoci loro, ti spingono a saperne sempre di più e migliorare la 
qualità dei tuoi prodotti, dei tuoi "discorsi" di codice, sia come 
presentazione che come sicurezza.
Ciao

 ciò non li autorizza a farlo..
Ok, ma visto che i ladri ci sono (sia su internet che in real life)
allora è necessario prendere i provvedimenti necessari.
Mi spiace, davvero, ma è così :-(


 associazioni incasinandogli la vita sul web mi fa proprio incazzare.
Non funziona così. Sbagli se pensi che la natura più o meno umanitaria
di un sito possa fare la differenza così come se pensi che il
substrato dei "cattivi" sia rivolto a "incasinare la vita" a qualcuno.
La grande maggioranza degli attacchi informatici sono fatti tramite
tool automatici per cui il tuo sito è solo un numerino come tanti
altri, il cui scopo è quello di rastrellare host violati di cui poter
disporre per ottenere profitto illegalmente, e dietro ci sono vere e
proprie organizzazioni criminali più o meno grandi e strutturate.
Pure le cassette delle elemosine in chiesa sono chiuse a chiave, e
allo stesso modo un sito web di un'associazione noprofit deve essere
costruito e gestito con il minimo di accuratezza necessario a farlo
sopravvivere. Se l'associazione non ha le capacità o i soldi per
farlo, meglio se rinuncia proprio. Se un prete non ha neanche i soldi
per mettere il lucchetto alla cassetta, secondo me non mette neanche
la cassetta ;^)
bye!