[Postfix-es] Spam por formulario web

jmas jmaslibre en gmail.com
Mie Mayo 16 00:05:46 CEST 2007


El 15/05/07, Gorka <gorkapostfix en yahoo.es> escribió:
>
>
> > -----Mensaje original-----
> > De: postfix-es-bounces en lists.wl0.org
> > [mailto:postfix-es-bounces en lists.wl0.org] En nombre de Jorge
> > Armando Medina
> > Enviado el: martes, 15 de mayo de 2007 2:24
> > Para: postfix-es en lists.wl0.org
> > Asunto: Re: [Postfix-es] Spam por formulario web
> >
> > On Monday 14 May 2007 16:43:38 jmas wrote:
> > > Buenas lista, me he dado cuenta de que mi servidor está
> > enviando spam,
> > > y estoy practicamente seguro que es a través de un
> > formulario web.  De
> > > entrada, estoy quitando el formulario web, espero que con eso tenga
> > > suficiente.  Pero mi duda es?, donde debería corregir esto?.  Es un
> > > error de configuración de mi servidor o es un error de
> > programación en
> > > PHP.
> >
> > En tu caso con formas web el metodo de envio es definido
> > dependiendo de la funcion que se use en PHP, yo siempre trato
> > de usar Pear-Mail para usar smtp-auth en las formas, pero
> > mucha gente simplemente usa mail() y esta funcion hace uso
> > del comando /usr/bin/sendmail por lo el servicio «pickup» es
> > quien envia el correo, en este caso obedece las restricciones
> > para localhost,
> >
> > algo como
> >
> > smtpd_recipient_restrictions = permit_mynetwors
> >
> > en este caso no hay mucho que filtrar si permites todo lo del
> > localhost, entonces o arreglas tus php formas para prevenir
> > injeccion smtp o bloqueas el usuario que ejecuta tu servidor web,
> >
> > https://help.webstrikesolutions.com/index.php?_m=knowledgebase
> > &_a=viewarticle&kbarticleid=130&nav=0
> >
> > en esa liga hay algo de informacion acerca de injeccion smtp
> > en formas web, y algo basico para prevenirlo.
> >
> > aqui algo mas
> >
> > http://www.nyphp.org/phundamentals/email_header_injection.php
> >
> > Si no quieres permitir que ciertos users como el usuario que
> > ejeucte apache envie correo puedes hacer algo asi:
> >
> > Para Postfix 2.2 o mas nuevo:
> >
> > /etc/postfix/main.cf:
> > authorized_submit_users = !www, static:all
> >
> >
> > >
> > > Estoy usando ubuntu 6.06.1 LTS, postfix 2.2.10, sasl y
> > squirrel mail.
> > >
> > > Gracias por sus opiniones.
> > >
> > > Soy nuevo en la lista, y no sé si los siguientes datos
> > debería postearlos:
> > >
...
> > >
> > > *********Código de php (solo por referencia)  mail.php  <?php
> > >         $nombre= $HTTP_POST_VARS["Nombre"];
> > >         $email= $HTTP_POST_VARS["Email"];
> > >         $mensaje= $HTTP_POST_VARS["Mensaje"];
> > >         $estado = 0;
> > >         $todo = "Mensaje de: ".$nombre."\nEmail:
> > ".$email."\n\n".$mensaje;
> > >         if (mail("webmaster en bibliteca.asuc.edu.gt","Mensaje de
> > >Comentario",$todo,"From:".$email."\nReply_TO:webmaster en biblio
> > teca.asuc.edu.
> > >gt\nX-Mailer:PHP/" . phpversion()))
> > >                 //echo "mensaje enviado con exito 2";
> > >                 $estado = 1;
> > >         else
> > >                 //echo "mensaje no enviado 2";
> > >                 $estado = 0;
> > > ?>
> > > ...
>
> Hola. A mí me pasó lo mismo hace poco. Finalmente lo que hice fue comprobar
> que mi función era llamada desde mi web (y no desde cualquier otro sitio).
> Hay variables PHP con las que puedes controlar la procedencia de una
> petición web. No lo recuerdo de memoria, pero busca algo así como REFERER.
> Espero que te sirva. Un saludo.
>

Gracias a los dos por su ayuda.
Pues siguiendo el par de links sugeridos, le agregué esto previo al mail,
/**Detección de inyección smtp**/
        /*metodo 1*/
        if (eregi("(\r|\n)", urldecode($email)))
        {
        die("SMTP error");
        }
/*metodo 2*/
$emailPattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i';
if (!preg_match($emailPattern, $email))
{
  print 'Error en el email';
}

/*metodo3*/
$email = str_ireplace(array( "\r", "\n", "%0a", "%0d",
"Content-Type:", "bcc:","to:","cc:" ), "", $email );

/**/

Exitos.
-- 
Josué M. Abarca S.
GNU/Linux User #396058
Vos mereces Software Libre.


Más información sobre la lista de distribución Postfix-es