elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ya no envía mas correos vía mail()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ya no envía mas correos vía mail()  (Leído 3,037 veces)
SrTrp


Desconectado Desconectado

Mensajes: 327


Script/C#


Ver Perfil
Ya no envía mas correos vía mail()
« en: 23 Octubre 2020, 19:25 pm »

Bueno estaba en mi servidor probando enviar correos, probaba de 1 en 1, si me los enviaba correctamente con el archivo que deseaba, pero después cuando implemente esto en mi sistema cree un bucle donde me envió demasiados correos para ser exactos 500, y me los envió con el archivo y todo, después de esto obviamente me percate que había algo mal, lo solucione para que ya no se ciclara pero ya no envía correos ni manualmente de 1 en 1, después revise desde mi bandeja de entrada de correos del servidor y había un mensaje que decía algo así "llego al limite de 500/500 (100%) de correos por hora" aquí les dejo mi código si tienen alguna idea aun que al parecer mi código esta bien no le moví nada al de envió de correos en si me sigue arrogando true.
Código
  1. <?php
  2. $to = $_POST['email'];
  3.  
  4. $from = 'atencionclientes@dominio.com';
  5. $fromName = 'TESTING';
  6.  
  7. $subject = 'ASUNTO';
  8.  
  9. $file = "pdfs_tick/".$_POST['token'].".pdf";
  10.  
  11. $htmlContent = '<h1>Hola '.$_POST['nombre'].'! tu Folio/Referencia es: <strong>'.$_POST['token'].'</strong></h1>';
  12.  
  13. $headers = "De: $fromName"." <".$from.">";
  14.  
  15. $semi_rand = md5(time());
  16. $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
  17.  
  18. $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
  19.  
  20. $message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
  21. "Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n";
  22.  
  23. //preparación de archivo
  24. if(!empty($file) > 0){
  25.    if(is_file($file)){
  26.        $message .= "--{$mime_boundary}\n";
  27.        $fp =    @fopen($file,"rb");
  28.        $data =  @fread($fp,filesize($file));
  29.  
  30.        @fclose($fp);
  31.        $data = chunk_split(base64_encode($data));
  32.        $message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" .
  33.        "Content-Description: ".basename($files[$i])."\n" .
  34.        "Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" .
  35.        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
  36.    }
  37. }
  38. $message .= "--{$mime_boundary}--";
  39. $returnpath = "-f" . $from;
  40.  
  41. $mail = @mail($to, $subject, $message, $headers, $returnpath);
  42.  
  43. echo $mail?"<h1>Correo enviado.</h1>":"<h1>El envío de correo falló.</h1>";
  44.  


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Ya no envía mas correos vía mail()
« Respuesta #1 en: 23 Octubre 2020, 19:46 pm »

- Tienes un LFI (Local File Inclusion) en tu codigo. No compruebas nunca si la ruta es valida, solo si el archivo existe. Si te pasan un $_POST['token'] tipo: ../../../../../../../../home/usuario/extracto-bancario podrian sacar cualquier archivo pdf... luego con nullbyte pueden conseguir saltar el .pdf y pillar otros archivos.

Puedes leer más sobre esto aquí:

https://www.php.net/manual/en/security.filesystem.nullbytes.php

- XSS en la línea 12. No escapas $_POST['nombre'].

https://www.php.net/manual/en/function.htmlentities.php

- La variable "$semi_rand" de "rand" tiene más bien poco xD
- El nombre de la variable "$returnpath" no tiene ningún sentido. Son cabeceras (headers)..


Citar
aquí les dejo mi código si tienen alguna idea aun que al parecer mi código esta bien no le moví nada al de envió de correos en si me sigue arrogando true.

No hay mucho que hacer. Has causado SPAM y tu hosting te ha suspendido el servicio temporalmente/permanentemente. La función mail() sigue devolviendo true porque como tal se ejecuta y el correo se envía localmente pero no pasa por los demás nodos.

PD: Linea 33 usas "$files[$i]"... eso imagino es de tu bucle anterior... Pero ya no lo tienes así que eso no se cumple. Te tirará Notice/Warning de index & variable inexistente.

Saludos


« Última modificación: 23 Octubre 2020, 19:50 pm por #!drvy » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Formulario php no se envia al e-mail
PHP
Clavo Oxidado 2 3,514 Último mensaje 20 Octubre 2009, 14:57 pm
por Mr. Crowley
Gmail envía correos basura a cientos de miles de usuarios
Noticias
wolfbcn 0 1,914 Último mensaje 27 Agosto 2010, 22:02 pm
por wolfbcn
¿como se envia mail?
Programación C/C++
franfis 6 3,971 Último mensaje 7 Diciembre 2010, 05:26 am
por Littlehorse
Fallo en HootSuite, envía por e-mail notificaciones repetidas y con datos de ...
Noticias
wolfbcn 0 1,275 Último mensaje 11 Noviembre 2012, 01:23 am
por wolfbcn
mail no me envía correo electrónico
GNU/Linux
kakalott 0 1,861 Último mensaje 9 Abril 2013, 03:50 am
por kakalott
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines