PhpMailer Hack Prevention -- php campo con security campo con email camp codereview Relacionados El problema

PHPMailer hack prevention


0
vote

problema

Español

He estado en conversación con un compañero desarrollador web en cuyos servidores estoy haciendo un trabajo de cliente. Parte del proyecto actual es agregar un sistema de envío de correo electrónico desde un formulario basado en web a mi correo electrónico a través de phpmailer.

He usado phpmailer repetidamente sin problemas, sin embargo, este desarrollador me ha dicho que no desean que Phpmailer en el servidor debido a haber encontrado instancias anteriores en su servidor de phpmailer que se está "hackeado".

Tenga en cuenta que con todos los formularios a los sistemas de correo electrónico que utilizo, creo que me escape completamente y limpie las cadenas de entrada en la medida de lo posible.

Estoy preguntando aquí:

  1. está pirateando phpmailer versión 5.2.8 específicamente posible?
  2. ¿Cómo es esto posible?
  3. ¿Qué se puede hacer para asegurar phpmailer en estos casos?

¿Hay una manera clara a medio camino de que el script anterior podría ser hackeado o secuestrado por un hacker o similar?

Tenga en cuenta: todos $(".bootstrap-tagsinput")5 Los valores de matriz son de una base de datos y ya se han precado.

  $(".bootstrap-tagsinput")6  
Original en ingles

I have been in conversation with a fellow web developer on whose servers I am doing some client work. Part of the current project is to add an email sending system from a web based form to my clients email via PHPMailer.

I have used PHPMailer repeatedly with no issues whatsoever, however, this developer has said to me that they do not want PHPMailer on the server due to having found previous instances on their server of PHPMailer being 'hacked'.

Please note that with all form to email systems I use I do believe I fully escape and clean the input strings as far as possible.

I'm asking here:

  1. Is hacking PHPMailer version 5.2.8 specifically even possible?
  2. How is this possible?
  3. What can be done to secure PHPMailer in these instances?

Is there a halfway clear way that the above script could be hacked or otherwise hijacked by a hacker or similar?

Please note: all $member array values are from a database and have already been pre-cleaned.

require "PHPMailerAutoload.php"; ///version 5.2.8          $message = "The following enquiry about " . $member['bizname'] . " was sent to " . $member['contname'] . " :     Enquirer's Name: " . $name . ",     Enquirer's Address:           " . $addr1 . "          " . $addr2 . "          " . $addr3 . "          " . $postcode . "     Telephone Number: " . $tel . ",     Email address: " . $email . ",     Dates they are interested in: " . $dates . ",     Comments: " . $comments . ".      NOTE: This is an automatic notification email for your records.     Please do not reply to this email.         ";           $mail           = new PHPMailer();         $mail->Host     = "localhost";         $mail->WordWrap = 78;         $mail->Mailer   = "smtp";          $mail->From     = "server@website.co.uk";         $mail->FromName = "Website Server";  ///this is the client email and would not change.         $mail->AddAddress("static@email-address.co.uk");          $mail->Subject = $member['bizname'] . " Website Enquiry";         $mail->Body    = $message;         if (!$mail->Send()) {             $dispmsg = "Mailer 1 error: " . $mail->ErrorInfo;         } else {             $dispmsg = "Your email has been sent to " . $member['bizname'] . " who will be in touch with you shortly.";         }     ////////////end email 1 
        

Lista de respuestas

1
 
vote

está pirateando phpmailer versión 5.2.8 específicamente posible? ¿Cómo es esto posible?

Eso es muy difícil de decir. Si usa bibliotecas externas, siempre hay una posibilidad de que contengan vulnerabilidades, pero lo mismo es cierto para su código personalizado (y nadie lo verá para verificar las vulnerabilidades).

No encontré ninguna divulgación pública para esa versión, así que eso es bueno.

Los últimos también parecen ser bastante viejos ( problemas de validación de entrada en 1.7. 3 , Código EXEC en 1.7 , dos en 1.7.2 , inyección de correo electrónico en 2012 ).

¿Qué se puede hacer para asegurar phpmailer en estas instancias?

  • Podría mirar el código PHPMailer usted mismo, e intente encontrar vulnerabilidades (la clase principal es de solo 3.5K líneas, y muchos de ellos son comentarios).
  • Solo debe poner esos archivos en un directorio abierto que sean necesarios (es decir, no incluya los archivos de prueba / Ejemplo).
  • También podría usar un sistema de detección de firewall / intrusión de aplicaciones, como MOD_SECURITY para evitar la explotación de las posibles vulnerabilidades.
  • y siempre debe usar la última versión, que parece ser 5.2.9, no 5.2.8.

misc

  • Su sangría y espacio está apagado, lo que hace que su código sea un poco más difícil de leer.
  • no acortar nombres de variables. Por ejemplo, displayMessage es más fácil de leer que dispmsg .
  • No incluyó el eco real de $dispmsg , pero si 9988776655544333 es suministrado por el usuario y 9988776655544334 no desinfectado, su código sería Abierto a XSS.
  • Tener // end something Comentarios es un signo de mal diseño. Su código debe organizarse de una manera que sea obvio cuando algo termina. Eso significa extraer funcionalidad en funciones, y evitar la anidación profunda.
 

is hacking PHPMailer version 5.2.8 specifically even possible? How is this possible?

That's really hard to say. If you use external libraries there is always a chance that they contain vulnerabilities, but the same is true for your custom code (and nobody is going to check that for vulnerabilities).

I didn't find any public disclosures for that version, so that's good.

The last ones also seem to be quite old (input validation issues in 1.7.3, code exec in 1.7, DOS in 1.7.2, email injection in 2012).

what can be done to secure PHPMailer in these instances?

  • You could look at the PHPMailer code yourself, and try to find vulnerabilities (the main class is only 3.5k lines, and a lot of it are comments).
  • You should only put those files in an open directory that are needed (ie don't include the test/example files).
  • You could also use an application firewall/intrusion detection system such as mod_security to prevent the exploitation of possible vulnerabilities.
  • And you should always use the latest version, which seems to be 5.2.9, not 5.2.8.

Misc

  • your indentation and spacing is off, which makes your code a bit harder to read.
  • don't shorten variable names. For example, displayMessage is easier to read than dispmsg.
  • you didn't include the actual echoing of $dispmsg, but if $member['bizname'] is user supplied and $dispmsg not sanitized, your code would be open to XSS.
  • having // end something comments is a sign of bad design. Your code should be organized in a way that it is obvious when something ends. That means extracting functionality into functions, and avoiding deep nesting.
 
 
     
     

Relacionados problema

3  CSV Email eficiencia de guión  ( Csv email script efficiency ) 
Estoy encargado de obtener correos electrónicos de un archivo .csv y usarlos para enviar un formulario. Estoy usando el CSV y mecanogimen las bibliotecas de P...

2  PHP - Ahorro de correo electrónico entrante y su accesorio  ( Php saving inbound email and its attachment ) 
Tengo por debajo del código, que básicamente está manejando los correos electrónicos entrantes en mi solicitud, guarde el contenido de correo electrónico real...

7  Conexión API de contactos de Gmail  ( Gmail contacts api connection ) 
He creado esta clase que se conecta a los contactos de Gmail y le permite agregar / editar / eliminar el contacto. Tengo curiosidad por ver lo que otros pie...

7  Cifrar y carpeta de copia de seguridad para enviar un correo electrónico diariamente, cuando está en línea  ( Encrypt and backup folder to email daily when online ) 
Tengo un script de copia de seguridad que debe hacer una copia de seguridad de una carpeta y enviarla al correo electrónico. Esto debe hacerse una vez al día....

2  Plantilla de correo electrónico HTML  ( Html email template ) 
Basado en varias fuentes diferentes, he compilado lo siguiente como mi plantilla de correo electrónico HTML básica. Por favor, hágamelo saber si me he perdido...

3  Formulario de contacto que va a varias direcciones basadas en la selección desplegable  ( Contact form that goes to multiple addresses based on drop down selection ) 
I Siguió un tutorial para crear un formulario de contacto PHP que envía a varios correos electrónicos dependiendo de la selección de campo desplegable. ¿Está ...

4  Compruebe si la dirección de correo electrónico contiene uno de los muchos dominios de una mesa, ignorando el subdominio  ( Check if email address contains one of many domains from a table ignoring the s ) 
Estoy tratando de validar las direcciones de correo electrónico como de ciertas universidades. Tengo una mesa, 9988776655544333 , que está lleno de dominios ...

2  Solicitud de correo electrónico para E-Store  ( Mailsending application for e store ) 
Este es un programa de envío de correo electrónico ficticio para una tienda electrónica que he hecho con fines de práctica. EmailsenderProgram es un programa ...

1  Rake Tarea para enviar a los usuarios un recordatorio para publicar con condiciones  ( Rake task to send users a reminder to post with conditions ) 
Estoy implementando una característica que recuerda a los usuarios que realicen una publicación por correo electrónico si El usuario ha establecido recorda...

13  Enviando un mensaje SMS en C  ( Sending an sms message in c ) 
Recientemente he estado jugando con la idea de enviar un mensaje de texto usando C. Mirando algunas opciones, pensé que usando libcurl para enviar un correo...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos