Newsgroup: it.comp.www.php
Titolo: sito php attaccato da spammer

Ciao a tutti,
il sito di un mio cliente è stato attaccato da uno spammer evoluto che pare
abbia sfruttato qualche vulnerabilità del codice per inviare migliaia di
mail dal server dove è ospitato il suo sito.
Il gestore del server ha contattato il mio cliente dicendogli di aver
sospeso la directory contenente gli script php incriminati (chmoddati a 644)
e diffidandolo dal ripubblicare script esposti a tali attacchi.
Dato che il codice era stato scritto parecchi anni fa da autore a me
sconosciuto, come mi consigliate di procedere per individuare il file
"difettoso" e prevenire altri eventuali bug sparsi in giro?
Dove posso trovare informazioni circa questo tipo di attacco sfruttato per
inviare mail a sbafo per riuscire eventualmente a riprodurlo?
Grazie per la pazienza
Bye!

 mail dal server dove è ospitato il suo sito.
Una precisazione: ho spulciato nei log e nel codice e mi pare che sia
estremamente insicuro:
in pratica alla index.php viene passato il nome del file da includere nella
index stessa.
In questo modo questi malintenzionati hanno passato alla index.php l'URL di
diverse pagine sparse su vari server che probabilmente eseguono codice
dannoso.
Penso che modificherò la index.php in modo che impedisca l'include di pagine
esterne.
Avete qualche altro suggerimento da darmi?
Grazie
Bye!

 migliaia di mail dal server dove è ospitato il suo sito.
Probabilmente e banalmente fai una cosa del genere:
$subject = $_POST/$_GET/$_REQUEST['subject']
o passi qualche altro dato proveniente dall'esterno direttamente
negli header. Per uno spammer è semplice exploitare uno
script del genere.
Non ho capito perché un chmod 644 fermi uno script in php, a meno
che non giri come cgi :-/
-- 
ValeRyo

ValeRyo Saeba ha scritto:

Perchè molto probabilmente non è come ha suggerito l'op che avviene 
l'invio .. ma lo spammer ha messo on line un suo script e quindi ora è 
quello che usa .. quindi ora con il 644 non dovrebbe poter funzionare .. 
  mi era gia capitato .. con uno script uppato da un mio amico in buona 
fede che l'aveva reperito in giro e per mancanza di tempo non l'aveva 
controllato .. alla fine trovammo che grazie ad un buco era riuscito a 
mettere su un suo script che uppava e mandava mail .. ;)
Io consiglierei di provare a guardare eventuali file strani che non 
conosce o cartelle strane create non dal cliente .. magari controllando 
questo file che nel log compare associato come inclusione alla index ;)
facci sapere
-- 
SEZIONE DIVERTIMENTO & AFFINI: "Qual è il poliziotto più sfortunato? 
Quello che muore al posto di  blocco. E quello più fortunato? Blocco!"
[CapoBecchino] - hotmail/msn: capobecchino [@] hotmail [.] com

Generale Cluster ha scritto:

E' un problema molto comune dovuto a una disattenzione da parte del
programmatore.
Infatti, quando permetti agli utenti di interagire con un include,
DOVRESTI controllare la richiesta tramite un switch.
SBAGLIATO (non c'è nemmeno l'estensione del file...):
include $_GET['pagina'];
CORRETTO:
switch($_GET['pagina'])
{
  case "forum":
    $pagina = "forum";
  case "guestbook":
    $pagina = "guestbook";
  default:
    $pagina = "benvenuto";
}
include $pagina.".php";
Tra l'altro, è importante anche definire un valore di default, in modo
da non visualizzare errori agli utenti.
Ciao ;)

 mail dal server dove è ospitato il suo sito.
Ciao, grazie a tutti per i suggerimenti. Il problema era proprio causato 
da un include che in maniera imprudente includeva una pagina il cui nome 
era passato come parametro nella request.
Passando nel nome della pagina una stringa del tipo 
http://www.nomesito.com/pagina/blablabla
 si poteva includere codice 
dall'esterno.
Ho inserito un controllo che impedisce di includere indirizzi http.
Mi è stato poi detto che il sito era stato fatto dal "figlio dell'amico 
del macellaio" che aveva 15 anni ed era alle prime armi all'epoca.
bye!
-- 
elimina carraro per rispondere via email

 del macellaio" che aveva 15 anni ed era alle prime armi all'epoca.
Non ci si improvvisa in questo campo ^_^