Newsgroup: it.comp.www.php
Titolo: email injection

salve,
ho un form usato per inviare una email ad un determitato indirizzo di posta elettronica.
Anche l''oggetto è una costante, cio' che varia è il messaggio, preso dalla
texarea attraverso il metodo post ed inviato con la funzione mail() del PHP.
Praticamente: mail ('
em...@miosito.it
','il mio oggetto',$_POST['msg']);
Domanda: secondo voi sono soggetto alla email injection?
Grazie.

 Domanda: secondo voi sono soggetto alla email injection?
E sarebbe ?

 Domanda: secondo voi sono soggetto alla email injection?
No.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it





In teoria no. In pratica puo' dipendere dal server di posta... se per
esempio uno nel messaggio ti ci scrivesse
Just testing...
. 
MAIL FROM: <spamfrom>
RCPT TO: <victim>
...
secondomessaggio
...
io sospetto che almeno un mailer la' fuori invii DUE messaggi. Questo
semplicemente perche' m'e' capitato di trovare nei log messaggi fatti
proprio come t'ho scritto li' sopra; ora, o chi li ha mandati era una
fava e usa exploit che non funzionano mai, oppure in certi casi forse
funzionano.
Forse esagero, e Apache2.x+PHP4+postfix non si fa fregare di sicuro -
ho provato - pero' da allora, se in un messaggio uno mi ci scrive sia
un MAIL FROM che un RCPT TO (ed e' costretto a scriverli in chiaro, o
il server non gli da' retta), il messaggio NON lo faccio partire.
Tanto, due strpos mi costano poco a fronte di un invio di mail.
Un altro trucco e' che metto un campo "email" nascosto, e valorizzato
con una seconda mail valida. Mi serve a una cosa sola... se quando il
form arriva al PHP, nel campo email c'e' qualcos'altro, allora so per
certo di avere a che fare con uno spammer - e non faccio nessun altro
controllo, butto via tutto e basta. I falsi positivi sono zero, visto
che un campo hidden dovrebbe passare sano.
Leonardo
-- 
There is nothing makes a man suspect much, more than to know little,
and therefore men should remedy suspicion by procuring to know more,
and not keep their suspicions in smother.            (Francis Bacon)

 io sospetto che almeno un mailer la' fuori invii DUE messaggi. [...]
In questo caso, che andrebbe dimostrato, la responsabilita' non sta nel
programmatore PHP... :-)


 che un campo hidden dovrebbe passare sano.
In che senso ?
Ci metti una email che stabilisci tu per poi confrontarla ? Non 
basterebbe una qualsiasi parola chiave ? Lo spammer non usa il form 
aggirando così il problema alla radice ?

aggirando così il problema alla radice ?
La mia teoria e' che gli spammer utilizzino strumenti automatici per
trovare i form... forse addirittura con query di Google.
Una volta che li trovano, li exploitano usando test standard rivolti
a individuare rapidamente quel 10% di form stupidamente vulnerabili;
non e' economicamente conveniente indagare "a mano" per sfondare uno
per uno i form del restante 90%... non quando puoi ottenere un nuovo
form al giorno (o all'ora!) a costo prossimo allo zero.
Percio' mettendo un campo
	<input type="hidden" name="email" value="
ser...@tin.it
" />
io mi assicuro che la prima batteria dei test si concentri tutta sul
medesimo punto. Di sicuro, mi attiro addosso piu' cacca del normale;
questo lo so - e' un prezzo che posso pagare. La piu' stupida regexp
usata dallo spammer finisce certamente agganciata da quel campo. E a
quel punto, posso bloccare tutta quella famigliola di bot con appena
due righe:
	if (empty($_POST['email'])||$_POST['email']!='
ser...@tin.it
')
		die('551 We do not relay');
Se lo spammer passa dal form in modo legittimo, la mail la manda una
volta sola, legittimamente, a me. C'e' chi lo fa e infatti trovo una
marea di viagra, cialis, rolex, paypal account suspended, eccetera -
ma quello e' il funzionamento "normale". Uso (stupido), non abuso.
Invece una volta che so che un certo indirizzo remoto e' uno spammer
posso bloccarlo comunque per le successive due ore, forwardando ogni
attivita' a un'altra casella dove vedo arrivare trucchi via via piu'
complessi, che forse sarebbero pure passati se l'autore non si fosse
tradito dal suo primo post...
Nella peggiore delle ipotesi, chiudo in pari e m'illudo di essere un
furrrrbo, un'illusione simpatica che mi costa poco :-)


programmatore PHP... :-)
Senz'altro: e si puo' discutere la "giustezza" di mettere una pezza
inutile a quello che, uno, forse non si verifichera' mai, e due non
e' colpa tua quando si verifica.
In pratica, nel mondo reale, troppo spesso e' "colpa tua" qualsiasi
cosa succeda che avresti potuto impedire lavorando come uno schiavo
fino a stianta' ed essendo paragnosta in primo luogo. Sicche', come
abitudine preventiva, se mi costa poco io metto anche pezze inutili
- poi lascio voragini altrove: ma quello e' perche' sono fesso io e
non me ne accorgo, e si entra in un altro discorso.
Diciamo che e' l'equivalente di far la fatica di suonare al vicino,
e dirgli che si e' scordato la chiave nella toppa, mentre in cucina
ho lasciato la porta-finestra aperta sul giardino :-)
